FFMPEGはflvを品質を損なうことなくmp4に変換します[複製]


55

この質問にはすでに答えがあります:

現在、.flvフラッシュファイルを.webmおよび.mp4ファイルに変換して、HTML5ビデオプレーヤーで使用しています。

_

私はこのffmpegコマンドをWEBMに使用します。ffmpeg -i filename.flv -vcodec libvpx -acodec libvorbis filename.webm これは非常にうまく機能し、ファイルサイズは比較的同じままです(重要ではありません)。

_

MP4の場合、次を使用しています。 ffmpeg -i filename.flv -sameq -ar 22050 filename.mp4

.mp4に変換され、品質の低下を防ぎますが、ファイルサイズはほぼ3倍になります。

どのffmpeg公式を使用してMP4に変換しても、品質をあまり損なうことなく、ファイルサイズの大幅な増加を防ぐことができますか?

回答:


57
ffmpeg -i filename.flv -c:v libx264 -crf 19 -strict experimental filename.mp4

使用するビデオコーデックを指定する必要があります。コマンドで指定しない-vcodec-c:v、ffmpegはMP4のデフォルトのコーデック(mpeg4)を使用しますが、これは圧縮効率があまり良くありません。代わりにlibx264を使用して、CRFを設定してみてください。CRFは品質レベルです(低い方が良い、デフォルトは23、正気の値は18から28)。

libx264でのエンコードは複雑なため、H.264エンコードガイドをご覧ください

また、指定する必要があり-strict experimental、「あなたはそれを使用したい場合は『-strictを-2』を追加、エンコーダ『AAC』は、実験が、実験的なコーデックが有効になっていないです。」:そうあなたが得るかもしれません


1
これには非常に時間がかかり、結果のmp4は非常に歪んでいます。ピクセルが失われているなどです。:/
trainoasis

mp4形式のデフォルトのビデオコーデックは必ずしも必要ではありませんmpeg4ffmpeg --help muxer=mp4私のマシンの出力によると、ffmpegはmp4のデフォルトのビデオコーデックとしてh264を使用します。
doubleDown

1
@doubleDown私の答えは古いです-2011年から。おそらくそれ以降のある時点でデフォルトを変更しました。
sashoalm

43

このコマンドは、再エンコードせずにコンテナのみを変更します

ffmpeg -i input.flv -codec copy output.mp4

同じフォルダ内の多くのビデオをバッチ変換するためのスクリプトを作成する方法を知っていますか?
ttoine

はい、windowsでファイルconvert.batを作成しfor %%a in ("*.flv") do ffmpeg -i "%%a" -codec copy "%%~na.mp4"、次のコードを挿入します:、*。
flv

1
私にとって、これは出力ファイル#0のヘッダーを書き込めませんでした(コーデックパラメータが正しくない?):引数が無効です。何か案は?:/
trainoasis

2
@trainoasis .flvにはH.264ビデオとAACオーディオが含まれていません。そのままのオーディオ/ビデオデータを-codec copy.mp4ファイルにコピーすることは、オーディオとビデオがすでに H.264とAACでエンコードされている非常にまれなケースでのみ機能します。superuser.com/a/1009539/390946およびaddpipe.com/blog/flv-to-mp4を参照してください。
オクタヴィアンナイチュ16年

3

avconvffmpeg本質的に同じものです。[ごく最近では、いくつかの相違点がありますが、自分でコンパイルする場合、実際に書くことはあまりffmpegありません。ビデオのプロポーションが間違っていることを伝える]]が、ffmpegコンパイルガイドを読んでgitからコンパイルするのが面倒な場合、ほとんどのOSに搭載されている古いバージョンの問題はありません。参照する減価償却費の警告はavconv、彼らがしようとすると交換する新しいUTILを作成したことを語っているffmpegが、されてSO広く、我々はすべてのソフトリンクを作成することになるオフ、彼らがしようとした場合でも、それをカットすることを使用avconvしますffmpeg とにかく、彼らは仕事を止めて落とすつもりはない。]]

使用するのは悪いことではありませんavconv。私は、本質的に空のメッセージである減価償却の警告に言及している1つの返信を見ました.ffpmegの代替として、ここでより真実なavconvを試すことができます

avconv -i inputfile.flv -map 0 -c:v libx264 -c:a copy outputfile.mp4

本当に同じです

ffmpeg -i filename.flv -vcodec libvpx -acodec libvorbis

本質的には、最初は短い手持ちのオプションを使用しており、2番目はより書かれた多様性です。

また-map 0、オーディオトラックを参照しているため、mp4aマルチオーディオトラックを適切に処理できるものを使用する場合は、これをオフにしてすべてのオーディオストリームを結果ファイルにコピーできます。これは、同じファイル内の複数のオーディオトラックをサポートしないコーデックを使用する場合にのみ必要です。すべてではなく、必要なオーディオをマッピングする必要があります。もちろん、使用するスペースを最小限に抑えようとする場合は、1つだけを指定して、ファイルから少しサイズをノックすることができます[オーディオは、ビデオトラックの1/3のサイズのようです(これは寛大です)。

-c:v = codec(video)so:-c:v libx264使用と同じ-vcodec libx264です:FYI; この例と同じ:-c:v copy = -vcodec copy

さらに、FLVファイルの場合、flvファイルはaviと同じであることに注意してください。これは、ビデオまたはオーディオの任意の数のコーデックを含むことができるコンテナです。ビデオおよび/またはオーディオストリームをコピーするか、新しいものに変換するかを選択する前に、まず選択したメディア検査ユーティリティを使用して、ファイル自体で使用されているものを確認します。したがって、あるFLVで最適に機能するコマンドは、別のFLVと同じではない場合があります[もちろん、同じソースから複数のFLVを取得する場合、同じ方法でエンコードされますが、保証はありません]。

ピックを編集しようとしていないのは、ウェブ検索でこれに出くわし、人々のために少し物事を明確にするのを助けたいと思っただけです。

繰り返しますが、この回答ではこの1つ下の応答について述べているように、ffmpegを実行しているYESは常にこのメッセージを投稿します。ほとんどの場合、どちらのコマンドを使用してもまったく同じ結果が得られます。これは必ずしも完全な再トランスコードをもたらすとは限りません、なぜですか?A、必要ない場合は膨大な時間を節約し、Bファイルをビデオコーデックに既に圧縮されているファイルを再トランスコードする場合、本質的に既に圧縮されているものに対して圧縮ルーチンを実行し、常に結果が得られますソースよりも低品質で。AVIのようなFLVは他のコーデックの単なるコンテナであるため、FLVが技術的にFLVラッパー内のMP4である可能性があるように、最新のコーデックのほとんどは相互互換性があります。そう、ソースflvがビデオおよびausioコーデックに対して持っているものと、変換する必要があるかどうかを変換するものに依存します。FLV内でオーディオにH264 MP4ビデオとMP4aを使用した場合、それをコピーしてファイルヘッダーを調整するだけで、MP4ビデオではなく真のMP4として読み取られるように再トランスコードする必要はありません。 FLVファイル内。


3

このガイドによると、AV再コーディングなしでFLVをMP4に変換する適切なコマンドは次のとおりです。

ffmpeg -i input.flv -c copy -copyts output.mp4

私にとっては、AVCビデオとAACまたはMP3オーディオのすべてのケースで完璧に機能しました。


-1

ffmpegを使用しているとき、avconvを使用することを推奨する警告が表示されました。avconvを使用すると、良い結果が得られました。

avconv -i inputfile.flv -map 0 -c:v libx264 -c:a copy outputfile.mp4

詳細をお読みman avconvください。


1
ffmpegそれ自体は非推奨ではありません。見栄えが良いのは、品質の優れたデフォルト設定を持つx264エンコーダーを指定するためです。
slhck

-2

video_flv_to_mp4次の内容で呼び出されるシェルスクリプトを作成することをお勧めします。

ffmpeg -i $1 -sameq -ar 22050 -vcodec libx264 $1.mp4 

次に、次のように実行します。

$ video_flv_to_mp4 video.flv

video.flv.mp4ファイルが提供されます。


4
-sameqffmpegの有効なオプションではなくなりました。また、「同じ品質」を意味するものでもありません。この投稿も参照してください。
slhck
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.