web-dev-qa-db-ja.com

FFMPEGを使用したFLVからMP4への変換と品質の維持

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

これが私が使用するコマンドです:

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

FLVからMP4への変換に最適な設定を誰かに提供してもらえれば幸いです。

26
erfanria

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

-copytscopy timestampsであり、オーディオの同期に役立ちます。

それがうまくいかない場合は、オーディオとビデオのコーデックを強制してみてください。これにより、ファイルが再エンコードされます。

ffmpeg -i input.flv -c:v libx264 -crf 23 -c:a aac -b:a 160k output.mp4

ビデオ品質を向上させるために、より低いCRF値を使用できます。 18までのすべて。小さいファイルを取得するには、より高いCRFを使用しますが、これにより品質が低下することに注意してください。

オーディオ品質を向上させるには、より高いビットレート(上記の例では160k)を選択します。

FFMPEG aacエンコーディングの詳細 (私はffmpegサイトで説明されている「ネイティブ」エンコーダーを参照しています)。


質問で提案されたffmpegコマンドに関するいくつかの考えを以下に示します。

-arは、オーディオサンプルレートを表します。あなたが物事をよりよく理解するまで、私はこれをいじらないことをお勧めします。オーディオエンコーディングで再生する場合は、ビットレートを調整し(例:-b:a 160k)、エンコーダーがそれに基づいて何をするかを選択します。

あなたがこの道を行くことになるなら...

CDの品質は44100Hzのサンプリングです。典型的なビデオは48000Hzを使用します。

元の質問の例の22050は、cd品質のサンプルレートの1/2であることに注意してください。 CD素材をダウンコンバートする場合、これは良い選択です。 48KHzソース(これはおそらくそうですが、これもビデオファイルでは44100よりもはるかに一般的です)から始めている場合は、代わりに24Khzを使用します。それはおそらく大した問題ではないでしょうが、少し良い音になり、変換を行うために少しCPUを使うかもしれません。

42
Dan Pritts