FFMPEGを使用してFLVをMP4に変換し、品質を維持する

FFMPEGを使用してFLVをMP4に変換し、品質を維持する

iOS デバイスで再生するために、ffmpeg を使用して flv ファイルを mp4 に変換しようとしていますが、変換されたビデオの品質は元のビデオよりもかなり悪くなります。

私が使用するコマンドは次のとおりです:

ffmpeg -i input.flv -ar 22050 output.mp4

flv から mp4 への変換に最適な設定を教えていただければ幸いです。

答え1

FLVで使用されているコーデックによっては、mp4コンテナに再ラップするだけで済む場合があります。ビデオとH.264オーディオが必要です。ソースファイルに関する情報は、MPEG4 simple profileAACffmpeg -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冒頭で提案したコマンドから、元の素材のサンプル レートに関する情報を取得できるはずです。

関連情報