ffmpeg 一次进行 2pass 编码

ffmpeg 一次进行 2pass 编码

我使用 ffmpeg 编码视频文件,如下所示。

$ ffmpeg -i input.avi -pass 1 -an output.mp4
$ ffmpeg -i input.avi -pass 2 -ab 128k -y output.mp4

所以我总是输入 2 次,有没有办法一次通过 2 遍对视频进行编码?

我经常更改选项,当然输入和输出文件名每次都不同。

答案1

您可以在一个命令行上运行它们,而不是作为 2 个单独的命令运行它们,如下所示:

$ ffmpeg -i input.avi -pass 1 -an output.mp4 && \
    ffmpeg -i input.avi -pass 2 -ab 128k -y output.mp4

区别在于&&仅当第一个命令成功时才会运行第二个命令(第二遍)的符号。它们仍然是 2 个独立的操作,但这将允许您运行一个命令行,而不是之前必须执行的 2 个命令行。

此外,这还有一个好处,就是在完成第一个遍后立即运行第二个遍,按照你的方式,你必须等待第一个遍完成才能开始第二个遍。

答案2

我使用 mencoder 但我确信可以使用 fifo 设备通过 ffmpeg/avconv 完成类似的操作:

$ mkfifo passlog

$ mencoder infile.flv -passlogfile passlog ........... pass=1 &

$ mencoder infile.flv -passlogfile passlog ........... pass=2

相关内容