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


26

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

ここに私が使用するコマンドがあります:

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

flvからmp4への変換に最適な設定を誰かが提供してくれたら本当にありがたいです。

ffmpeg  flv  mp4 

回答:


42

FLVで使用されているコーデックによっては、mp4コンテナに単純に再ラップするだけで済む場合があります。あなたは必要ですH.264MPEG4 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 libfaac -q:a 100 output.mp4

ビデオ品質を改善するには、18までの低いCRF値などを使用できます。ファイルを小さくするには、高いCRFを使用しますが、品質が低下することに注意してください。

オーディオ品質を改善するには、より高い品質値を使用します。FAACの場合、100デフォルトです。


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

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

結局この道を行くことになったら...

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

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


私の答えを読み直します...上記のコマンドラインに加えて、ビデオのみまたはオーディオのみをコピーし、もう一方を再エンコードすることができます。たとえば...「ffmpeg -i input.foo -vcodec copy -acodec libfaac -ab 128k -copyts output.mp4」これにより、ビデオストリームがコピーされ、オーディオがAACに再エンコードされます。libfaacの品質は高くありませんが、機能します。
ダンプリッツ

オーディオ/ビデオコーデックを強制するコマンドについて:2019年9月の時点で、のffmpegサポートlibaac終了していることがわかりました。 この質問は、ffmpegのネイティブAACエンコーダーを使用する -c:a aacか、Fraunhofer FDK AACコーデック -c:a libfdk_aac使用することをお勧めffmpegします(サポートするにはコンパイルが必要ですlibfdk_aac)。
aresnick
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.