在对多个输出文件执行 2-Pass 编码时,我收到了错误
ratecontrol_init: can't open stats file 1 ffmpeg2pass-2.log
我的设置是执行一次第一遍,然后进行多次第二遍编码,以使用相同的第一遍结果输出具有不同目标比特率的文件。
ffmpeg -y -i $INPUT_FILE -an -vcodec libx264 -pass 1 -b:v 700k -f rawvideo /dev/null
ffmpeg -y -i $INPUT_FILE -i out-aud.mp4 \
$AUDIO_OPTIONS_P2 -vcodec libx264 -pass 2 -b:v 250k -f mp4 out-250.mp4 \
$AUDIO_OPTIONS_P2 -vcodec libx264 -pass 2 -b:v 500k -f mp4 out-500.mp4 \
$AUDIO_OPTIONS_P2 -vcodec libx264 -pass 2 -b:v 700k -f mp4 out-700.mp4
此序列导致上面列出的错误。我通过代码检查发现的是 ffmpeg/x264 为每个第二遍编码路径寻找一组不同的第一遍文件。第一个编码路径使用最初创建的文件集
ffmpeg2pass-0.log
ffmpeg2pass-0.log.mbtree
第二个编码路径需要具有名称的第一遍文件
ffmpeg2pass-2.log
ffmpeg2pass-2.log.mbtree
第三个编码路径需要名字以 ffmpeg2pass-4* 等开头的 first-pass 文件。
我的解决方案是在运行第二遍命令之前使用每次通过所需的新名称创建指向最初创建的文件集的软链接。
ln -s ffmpeg2pass-0.log ffmpeg2pass-2.log
ln -s ffmpeg2pass-0.log.mbtree ffmpeg2pass-2.log.mbtree
ln -s ffmpeg2pass-0.log ffmpeg2pass-4.log
ln -s ffmpeg2pass-0.log.mbtree ffmpeg2pass-4.log.mbtree
这似乎有效,因为它产生了我需要的输出编码。但是,我不知道这种方法是否合法。通过使用一个比特率(700k)的第一遍输出作为其他比特率的第二遍编码的输入,我是否获得了次优的编码结果?