我正在尝试将具有1个视频流和多个音频流的单个视频文件转码为具有不同比特率/大小的相同视频流的文件,同时使用正确的填充。
我使用的命令是:
ffmpeg -y -ss 600 -t 600 -i "INPUT.mkv" -map_chapters -1 -map 0:0 -c:v libx264 -keyint_min 48 -g 96 -bufsize 350k -b:v 350k -minrate 300k -maxrate 400k -profile:v baseline -level 3.0 -preset slow -vf "scale=iw*min(480/iw\,272/ih):ih*min(480/iw\,272/ih),pad=480:272:(480-iw)/2:(272-ih)/2" -map 0:0 -c:v libx264 -keyint_min 48 -g 96 -bufsize 650k -b:v 650k -minrate 500k -maxrate 800k -profile:v baseline -level 3.1 -preset slow -vf "scale=iw*min(640/iw\,360/ih):ih*min(640/iw\,360/ih),pad=640:360:(640-iw)/2:(360-ih)/2" -map 0:1 -c:a libfaac -b:a 32k -ar 44100 -f mpegts OUTPUT.m2ts
ffmpeg会创建两个视频流,但所有这些视频流的比特率和分辨率都来自最后一个视频参数 - 即两个流都是640x360:
Output #0, mpegts, to 'OUTPUT.m2ts': Stream #0:0(eng): Video: h264, yuv420p, 640x360 [SAR 559:560 DAR 559:315], q=-1--1, 650 kb/s, Stream #0:1(eng): Video: h264, yuv420p, 640x360 [SAR 559:560 DAR 559:315], q=-1--1, 650 kb/s, 90k tbn, 23.98 tbc (default) Stream #0:2(rus): Audio: aac, 44100 Hz, 5.1, s16, 32 kb/s (default) Stream mapping: Stream #0:0 -> #0:0 (h264 -> libx264) Stream #0:0 -> #0:1 (h264 -> libx264) Stream #0:1 -> #0:2 (aac -> libfaac) Press [q] to stop, [?] for help
是否几乎可以将转码转换为几个比特率到同一个文件?
答案 0 :(得分:2)
您正在映射您的输入,但不是您的输出。尝试指定输出比特率,如下所示:-b:v:0 350k
和-b:v:1 650k
。其他流和变量如编解码器也可以这种方式定义。有关详细信息和示例,请参阅FFmpeg map wiki。
答案 1 :(得分:0)
尝试以下命令:
ffmpeg -y -ss 600 -t 600 -i "INPUT.mkv" -map_chapters -1 -map 0:0 -map 0:0 -map 0:1 -c:v:0 libx264 -keyint_min 48 -g 96 -bufsize 350k -b:v0 350k -minrate 300k -maxrate 400k -profile:v:0 baseline -level 3.0 -preset slow -vf "scale=iw*min(480/iw\,272/ih):ih*min(480/iw\,272/ih),pad=480:272:(480-iw)/2:(272-ih)/2" -c:v:1 libx264 -keyint_min 48 -g 96 -bufsize 650k -b:v1 650k -minrate 500k -maxrate 800k -profile:v:1 baseline -level 3.1 -preset slow -vf "scale=iw*min(640/iw\,360/ih):ih*min(640/iw\,360/ih),pad=640:360:(640-iw)/2:(360-ih)/2" -c:a libfaac -b:a 32k -ar 44100 -f mpegts OUTPUT.m2ts