iOS デバイスで再生するために、ffmpeg を使用して flv ファイルを mp4 に変換しようとしていますが、変換されたビデオの品質は元のビデオよりもかなり悪くなります。
私が使用するコマンドは次のとおりです:
ffmpeg -i input.flv -ar 22050 output.mp4
flv から mp4 への変換に最適な設定を教えていただければ幸いです。
答え1
FLVで使用されているコーデックによっては、mp4コンテナに再ラップするだけで済む場合があります。ビデオとH.264
オーディオが必要です。ソースファイルに関する情報は、MPEG4 simple profile
AAC
ffmpeg -i input.flv
H.264/MPEG4 Simple + AAC だけで十分なのか、それともサポートされているコーデックに特定のオプションがあるのかはわかりません。テストするのは簡単です:
使ってみる
ffmpeg -i input.flv -c copy -copyts output.mp4
-copyts
ですcopy timestamps
。オーディオの同期に役立ちます。
それでもうまくいかない場合は、オーディオおよびビデオ コーデックを強制してみてください。これにより、ファイルが再エンコードされます。
ffmpeg -i input.flv -c:v libx264 -crf 23 -c:a aac -b:a 160k output.mp4
オーディオのみ、またはビデオ コーデックのみを変更する場合は、-c:a copy
または-c:v copy
を使用して、保持したいコーデックをコピーできます。
トランスコード時に使用されるビデオ品質を向上させるには、18 までの低い CRF 値を使用できます。ファイルを小さくするには、高い CRF を使用しますが、品質が低下することに注意してください。
オーディオ品質を向上させるには、より高いビットレート (上記の例では 160k) を選択します。
オーディオとビデオの品質の両方において、結果はソースの品質によって異なります。元のソースでできることは限られていることに注意してください。せいぜい、ソースと同じ品質になります。さまざまな品質レベルやビットレートを試してみる価値は間違いなくあります。
FFMPEG aac エンコーディングの詳細情報(私は、ffmpeg サイトで説明されている「ネイティブ」エンコーダーについて言及しています)。
質問で提案されているffmpegコマンドに関して...
-ar
オーディオのサンプル レートを指します。このパラメータをまったく変更しないことをお勧めします。オーディオ エンコーディングを試したい場合は、ビットレート (-b:a 160k
上記) を調整し、それに基づいてエンコーダーが何を行うかを選択できるようにします。
ただし、背景として、CD 品質は 44100Hz のサンプリングであり、一般的なビデオでは 48000Hz が使用されます。
元の質問の例の 22050 は、CD 品質のサンプル レートの 1/2 であることに気付くかもしれません。CD 素材をダウンコンバートする場合は、これが適切な選択です。48KHz のソースから始める場合は、代わりに 24Khz を使用します。(ただし、ターゲット ビットレートを選択し、必要に応じてエンコーダーでサンプル レートを変更することをお勧めします。)
ffmpeg -i
冒頭で提案したコマンドから、元の素材のサンプル レートに関する情報を取得できるはずです。