如何使用ffmpeg / x264进行2通道编码以生成多个比特率的输出文件

4
在将视频编码转换为多个输出文件时,我执行了2遍编码,但是遇到了错误。
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 *开头的第一遍文件。
我的解决方案是在运行第二遍命令之前,为每个通道创建软链接,将原始创建的文件集的新名称与所需的名称相匹配。
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)用作其他比特率的第二遍编码的输入,我是否得到了次优的编码结果?
1个回答

1

使用passlogfile选项并在第一遍设置日志文件名称。您可以在第二遍中使用相同的选项,并将同一日志文件用于多个第二遍。但是,您需要考虑像第一遍一样的fps和bframes之类的事情。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接