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 個命令行。

此外,這還有一個好處,就是在完成第 1 遍後立即運行第 2 遍,按照你的方式,你必須等待第 1 遍完成才能開始第 2 遍。

答案2

我使用 mencoder 但我確信可以使用 fifo 設備透過 ffmpeg/avconv 完成類似的操作:

$ mkfifo passlog

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

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

相關內容