複数の出力ファイルに 2 パス エンコードを実行しているときに、エラーが発生しました
ratecontrol_init: can't open stats file 1 ffmpeg2pass-2.log
私の設定では、最初のパスを 1 回実行してから、複数回の 2 回目のパス エンコードを行って、同じ最初のパスの結果を使用して異なるターゲット ビットレートのファイルを出力します。
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 が 2 番目のパスのエンコーディング パスごとに異なる 1 番目のパス ファイルのセットを探すことです。最初のエンコーディング パスは、最初に作成された一連のファイルを使用します。
ffmpeg2pass-0.log
ffmpeg2pass-0.log.mbtree
2 番目のエンコーディング パスには、次の名前の最初のパス ファイルが必要です。
ffmpeg2pass-2.log
ffmpeg2pass-2.log.mbtree
3 番目のエンコーディング パスには、ffmpeg2pass-4* などで始まる名前の初回パス ファイルが必要です。
私の解決策は、2 番目のパス コマンドを実行する前に、各パスに必要な新しい名前を使用して、最初に作成された一連のファイルへのソフト リンクを作成することでした。
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) の最初のパスの出力を、他のビットレートの 2 番目のパスのエンコーディングへの入力として使用すると、最適ではないエンコーディング結果が得られますか?