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