web-dev-qa-db-ja.com

チートシートとプリセット-FFmpeg 1.0で実際に動作する設定?

他の場所で入手可能ないくつかの「チートシート」を試しましたが、ほとんどすべてが古く、FFMpegの最新バージョンでは動作しません。

最新のFFMpegで機能する設定を誰かに教えてもらえますか?

私は主に次のコーデックに興味があります

H.264、低、中、高品質のプリセット

と同様

ProRes、低、中、高品質のプリセット

31
Bachalo

FFmpegには、libx264のテキストファイルベースのプリセットとプロファイル、つまり-vpreオプションで使用したものは含まれていません。これらは廃止され、-preset-profile:v、および-tuneオプションを使用して実際のx264プリセット、プロファイル(およびチューニング)にアクセスするために削除されました。古いテキストファイルは公式のx264プリセットとプロファイルのみをエミュレートし、いくつかの制限により、新しいシステムが提供する完全な機能を提供できませんでした。また、メンテナンスもはるかに簡単です。

さらに、多くのエンコーダには独自のオプションがあります。 「プライベートオプション」とも呼ばれます。 FFmpegオンラインドキュメントで一般的なコーデックの audio および video エンコーダオプションを確認するか、ffmpeg -h fullの出力で完全なリストを確認する必要がありますサポートされているオプション。たとえば、x264では、完全なヘルプ出力のlibx264 AVOptionsの下にオプションが一覧表示されます。

Ffmpegが-presetをサポートしている場合、テキストファイルプリセットは使用しないでください。FFmpegには、非標準のiPodプリセット以外は付属していません。テキストプリセットはどこからでもコピーでき、ffmpegで使用できるというのはよくある誤解です。これは事実ではなく、破損の原因になります。


基本的に、プリセットでは次のことができます。

品質管理

品質は、-b:v(ビデオの場合)または-b:a(オーディオの場合)を介してビットレートを指定するか、コーデックがサポートするその他のエンコード方法を指定することによって制御されます。

X264には、さまざまなエンコード方式があり、 定率係数 方式が最も洗練されています。その結果、ビットレートは変動しますが、1回のパスで全体的に高品質になります。 CRF値の範囲は0〜51ですが、適切な値は、ソースと必要な品質に応じて、19〜26の間です。デフォルトは23です。たとえば、「高品質」には18、「低品質」には28を選択できます。

ffmpeg -i input.mp4 -c:v libx264 -crf 23 output.mp4

x264 他のエンコード方法があります も同様ですが、これはここでは範囲外です。

H.264プロファイルを制限する

これらのプロファイルは、エンコーダーが特定のデコーダーの機能と一致させるために使用できる機能セットを定義します。最近のFFmpegでは、次の構文を使用してプロファイルを指定します。ここで、プロファイルはbaselinemainまたはhighです。

ffmpeg -i input.mp4 -c:v libx264 -profile:v baseline output.mp4

詳細と、どのプロファイルを使用する必要があるかについては、次を参照してください。 H.264プロファイルの違いは何ですか?

X264エンコーディングを選択preset

これらのプリセットはエンコード速度に影響します。遅いプリセットを使用すると、圧縮率またはファイルサイズあたりの品質が向上しますが、高速なプリセットを使用すると、圧縮率が低下します。一般的には、待つ余裕のあるプリセットを使用する必要があります。プリセットはultrafastsuperfastveryfastfasterfastmedium(デフォルト)、slowおよびveryslow。次に例を示します。

ffmpeg -i input.mp4 -c:v libx264 -preset slow output.mp4

ロスレスビデオをエンコードする

これは、CRFを0に指定することで可能になるため、単に-crf 0を使用します。

ffmpeg -i input.mp4 -c:v libx264 -crf 0 output.mp4

最後に、ProResについて簡単に説明します。 ProResは-b:vで固定ビットレートを受け入れるか、プロファイルを指定できます。プロファイルは 〜3の値 である必要があり、ビットレートはプロファイルに従って選択されます。高いほど良いということです:

ffmpeg -i input.mp4 -c:v prores -profile:v 0 output.mov

ffmbc Wiki は、プロファイルの名前を使用できることを示唆していますが、FFmpeg 1.0では失敗します。

51
slhck

私はトランスコーディングしたテストを行いました(libx264エンコーディングを使用して.mp4)一連のCRF値(18、21、24、および27)で全範囲のプリセット値(プラセボを除く)を使用するSonyビデオカメラからの高品質ビデオ。エンコード速度、出力品質、ファイルサイズの最適な組み合わせが何であるかを知りたいと思いました。

各CRF値について、各トランスコード操作にエンコード時間のスコアを指定しました(たとえば、CRF = 18の場合、プリセット値5.7秒の超高速の時間は1.0のスコアを取得し、非常に遅い162秒の時間は0を取得しました。他のスコアはその中間でスケーリングされます)。出力ファイルサイズのスコアも同様に計算しました。もちろん、最小のファイルに最高のスコアを与えています。次に、「組み合わせた」速度/サイズスコアの2つのスコアを追加しました。

4つのCRF値のそれぞれについて、「非常に速い」プリセットは手軽な勝者であり、1.94(CRF 18および21の場合)、1.96(CRF 24)および1.97(CRF 27)のほぼ完璧なスコアでした。 "veryfast"が毎回ほぼ最小のファイルサイズを生成し、 "veryslow"だけに失われ、決して失われないことは非常に興味深いです。

さまざまなプリセット値の中で私が気付いた1つの違いは、オペレーティングシステム(Windows 7)では異なるサムネイルが表示されることでした。速いプリセットは、サムネイルをビデオに数秒表示します。遅いプリセットのサムネイルは、ビデオの開始フレームを反映します。それは私にとって重要ではありません。私が学んだことは、「-preset veryfast」は簡単な選択のようだということです。

これが私の結果です(Excelスプレッドシートのスナップショットイメージとして)。
Excel snapshot

以下は、csvテキストとしてのExcelスプレッドシートです。

CRF,Preset,Seconds,score,MB,score,totalscore
18,1_ultrafast,5.7,1.00,59.5,0.09,1.09
18,2_superfast,8.4,0.98,62.3,0.00,0.98
18,3_veryfast,10.8,0.97,30.9,0.98,1.94
18,4_faster,16.0,0.93,33.5,0.89,1.83
18,5_fast,24.0,0.88,36.8,0.79,1.68
18,6_medium,29.1,0.85,34.9,0.85,1.70
18,7_slow,48.1,0.73,33.9,0.88,1.61
18,8_slower,84.9,0.49,33.0,0.91,1.40
18,9_veryslow,162.0,0.00,30.1,1.00,1.00
21,1_ultrafast,5.7,1.00,38.0,0.00,1.00
21,2_superfast,7.9,0.98,35.0,0.15,1.14
21,3_veryfast,10.0,0.97,19.0,0.97,1.94
21,4_faster,14.2,0.94,21.0,0.87,1.80
21,5_fast,19.9,0.89,23.0,0.77,1.66
21,6_medium,24.6,0.86,22.0,0.82,1.67
21,7_slow,43.1,0.72,21.0,0.87,1.58
21,8_slower,69.8,0.51,20.5,0.89,1.41
21,9_veryslow,137.3,0.00,18.4,1.00,1.00
24,1_ultrafast,5.5,1.00,24.9,0.00,1.00
24,2_superfast,7.5,0.98,21.4,0.27,1.25
24,3_veryfast,9.3,0.97,12.0,0.99,1.96
24,4_faster,13.2,0.93,14.0,0.84,1.77
24,5_fast,17.4,0.90,15.0,0.76,1.66
24,6_medium,21.0,0.87,14.4,0.81,1.67
24,7_slow,37.3,0.72,14.0,0.84,1.56
24,8_slower,62.2,0.51,13.0,0.92,1.42
24,9_veryslow,121.1,0.00,11.9,1.00,1.00
27,1_ultrafast,5.5,1.00,16.8,0.00,1.00
27,2_superfast,7.4,0.98,13.6,0.38,1.36
27,3_veryfast,9.0,0.97,8.4,1.00,1.97
27,4_faster,12.6,0.93,10.1,0.80,1.73
27,5_fast,15.8,0.90,10.4,0.76,1.66
27,6_medium,18.8,0.87,10.0,0.81,1.68
27,7_slow,34.1,0.73,9.8,0.83,1.56
27,8_slower,59.6,0.48,9.0,0.93,1.41
27,9_veryslow,109.7,0.00,8.4,1.00,1.00
22
Ted W