我使用 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