如何在ffmepg的帮助下将任何格式的视频转换为不同的分辨率,例如YouTube。我需要最好的命令来做到这一点。减小视频大小,更改分辨率和视频音频位。
质量是
输出将为mp4 h.264 / AVC视频格式。
使用秤过滤器:
ffmpeg -i input.mp4 -filter_complex
"[0]scale=-2:1080,format=yuv420p[1080];
[0]scale=-2:720,format=yuv420p[720];
[0]scale=-2:480,format=yuv420p[480];
[0]scale=-2:360,format=yuv420p[360];
[0]scale=-2:240,format=yuv420p[240];
[0]scale=-2:144,format=yuv420p[144]"
-map "[1080]" -map 0:a -c:v libx264 -c:a aac -movflags +faststart 1080.mp4
-map "[720]" -map 0:a -c:v libx264 -c:a aac -movflags +faststart 720.mp4
-map "[480]" -map 0:a -c:v libx264 -c:a aac -movflags +faststart 480.mp4
-map "[360]" -map 0:a -c:v libx264 -c:a aac -movflags +faststart 360.mp4
-map "[240]" -map 0:a -c:v libx264 -c:a aac -movflags +faststart 240.mp4
-map "[144]" -map 0:a -c:v libx264 -c:a aac -movflags +faststart 144.mp4
使用T型多路复用器的一种更高效但更复杂的方法,因此音频仅被编码1次,而不是6次:
ffmpeg -i input.mp4 -filter_complex
"[0]scale=-2:1080,format=yuv420p[1080];
[0]scale=-2:720,format=yuv420p[720];
[0]scale=-2:480,format=yuv420p[480];
[0]scale=-2:360,format=yuv420p[360];
[0]scale=-2:240,format=yuv420p[240];
[0]scale=-2:144,format=yuv420p[144]"
-map "[1080]" -map "[720]" -map "[480]" -map "[360]" -map "[240]" -map "[144]" -map 0:a
-c:v libx264 -c:a aac -f tee
"[select=\'v:0,a\':movflags=+faststart]1080.mp4|[select=\'v:1,a\':movflags=+faststart]720.mp4|[select=\'v:2,a\':movflags=+faststart]480.mp4|[select=\'v:3,a\':movflags=+faststart]360.mp4|[select=\'v:4,a\':movflags=+faststart]240.mp4|[select=\'v:5,a\':movflags=+faststart]144.mp4"
我将命令分成几行以帮助可视化命令。在运行命令之前将其设置为1行。