3

在对多个输出文件执行 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)的第一遍输出作为其他比特率的第二遍编码的输入,我是否获得了次优的编码结果?

4

1 回答 1

1

使用该passlogfile选项并在第一遍设置日志文件名。您可以在第二遍中使用相同的选项,并在第二遍中使用相同的日志文件。但是,您需要考虑相同的 fps 和 bframes 与第一遍相同。

于 2014-12-02T11:25:17.430 回答