web-dev-qa-db-ja.com

H.264で推奨される圧縮率は?

ベネに注意してください:これは非常に複雑な質問であり、約100万レベルのニュアンスがあり、1つの数値に削減しようとしています...

H.264エンコーディングを使用した大規模なビデオエンコーディングプロジェクトに着手しようとしています。インターネット接続、プロセッサ、デバイスなどでのストリーミングに対応するために、複数のビットレートプロファイルを作成しようとしています。

一般的に言えば、どのような種類の圧縮率を期待する必要がありますか(妥当な品質レベル内に留まる間)?

たとえば、640 x 360(16:9)ピクセルのビデオファイル@ 24フレーム/秒、16ビットカラーでは、約33 MB/sの非圧縮ファイルが生成されます。

そのファイルについては、500 Kビット/秒(または62 KB /秒)は不合理なビデオビットレートではないと言われました。 530:1以上の圧縮ですか?これは99.8%の圧縮です。私の数学は間違っていますか?

「500倍以上の圧縮はおかしい」や「400倍未満は帯域幅の無駄」など、品質に関する大まかな外部ガイドを探しています。私はいたるところを見てきましたが、どんな種類の圧縮も期待できません...

34
Nuby

H.264 Primer と呼ばれる非常に興味深いドキュメントでは、ビデオの特性に基づいて、「理想的な」出力ファイルのビットレートを計算するためのヒントとして簡単な式が与えられています。

[画像の幅] x [画像の高さ] x [フレームレート] x [モーションランク] x 0.07 = [望ましいビットレート]

ここで、画像の幅と高さはピクセルで表され、モーションランクは1から4までの整数です。1はローモーション、2はミディアムモーション、4はハイモーションです(モーションは、フレーム、詳細についてはリンクされたドキュメントを参照してください)。

したがって、たとえば、中程度の動き(遅いカメラの動き、シーンの変化が少ないムービーなど)で24 FPSで1280x720のビデオを撮影する場合、予想される理想的なビットレートは次のようになります。

1280 x 720 x 24 x 2 x 0.07 = 3,096,576 bps =>およそ3000 kbps

これは純粋にヒントであり、私の意見では、理想的なビットレートを正確に見つける唯一の方法は、試行錯誤です:)

60
SirDarius

ソースビデオのコンテンツによって大きく異なります。それについては少し後で説明します。

640x360はそれほど大きくありません。 512kbpsは非常に合理的で、ほぼ標準です。品質に本当に興味があるなら、おそらく768kbpsです。

これはどのように可能ですか?簡単な答え: ビデオ圧縮 には、これを可能にするテクニックと事実がいくつかあります。

  1. 共通のH.264(またはその他のコーデック)のすべてのビデオフレームデータ構造が完全ではない画像。代わりに、口語的にと呼ばれる2つのタイプがあります。
    1. キーフレーム:ビデオ画像全体の完全なレンダリング
    2. フレーム内:前のフレームへの変更の説明。通常、これらのフレームは、ビデオのフレームの大部分(80%〜99%)を構成します。
  2. H.264は、他の多くのコーデックと同様に、「lossyです。元のソースビデオのピクセルごと、フレームごとの正確な複製は再現されません。 :損失のあるブロック:領域内の1つを除くすべてのピクセルが同じ色の場合、CODEC 1ピクセルを「失います」。したがって、フレーム内のすべてのピクセルに関する情報を保存する代わりに、CODECは "x1、y1からx2、y2はすべて色x"とだけ言います。とても効率的です。

これを実現するために、特定のコーデック内およびコーデック間で無数の異なるアプローチ、テクニック、アルゴリズムを使用しているため、それよりもはるかに複雑です。

そのため、「ソースビデオのコンテンツに応じて劇的に変化する」コメントに戻ります。表示される圧縮率と結果の品質は、以下に大きく依存します。

  • ビデオの内容
  • アーチファクト(ブロック、色の喪失、鮮明度の喪失)に対する許容範囲
  • 設定したコーデックパラメータとその設定方法

:部屋のドアのビデオ(防犯カメラ)10分ごとに1つのキーフレームを使用すると、驚くほど高い圧縮率が得られます。私のナプキンの計算では、そのシナリオは15,000:1の圧縮になっています。

大規模なビデオエンコーディングプロジェクトを開始しているので、圧縮率を決定するためにいくつかのことをお勧めします。

  • エンコードするソースビデオのサンプルを取得します。統計的に関連する100以上。
  • さまざまなパラメータを使用して、さまざまなビットレートでエンコードし、ニーズに合った特性を決定します

エンコーダーのパラメーターを変更してビデオを小さくすると、他の影響もあります。

  • より高い再生CPU要件
  • プレーヤーのコーデックの期待。すべてのH.264エンコード動画がすべてのプレーヤーで再生できるわけではありません
  • 長いエンコード時間
  • 品質のさまざまな低下

それは大きな複雑なテーマです。幸運を。私の経験豊富な「風に吹かれて」テストでは、プロジェクトに512〜768kbpsで満足できることを示しています。

22
Stu Thompson
圧縮率の経験則
優れた品質を維持するための圧縮率:
 – JPEGを使用する一般的な画像の場合は10:1 
 – Hを使用する一般的なビデオの場合は30:1 .263およびMPEG-2 
 – H.264を使用した一般的なビデオの場合は50:1/MPEG-4 AVC 

from http://www.kanecomputing.co.uk/pdfs/compression_ratio_rules_of_thumb.pdf

8
Costa

通常の再生を忘れないでくださいMPEGはYUV 4:2:0のみを使用します。 8ビットの色深度では、各ピクセルは16ビット(または4ピクセルごとに64ビット)に相当します。カメラからのRAWファイルのみが16ビット深度を使用し、数百万米ドルの価値がある必要があります!!中程度の高フィルムDVRは12〜14ビットのみを提供できます!! H.264は最終製品用に設計されています。

640x360/24p YUV4:2:0では、ビットレートの価値は次のとおりです。

  640x360x24x(8+4+4)/8 = 10.5MB/s

500Kbpsの場合、圧縮は172:1になります。正常です

YUV4:2:0の満期については、以下をお読みください。
http://en.wikipedia.org/wiki/Chroma_subsampling

2
Wilson Luniz

H264環境でエンコードに関する知識を共有するだけ

High 5.0またはHigh 7.0でH264を使用する場合、450-512 kbits/secondの比率が最適です。まあ私はあなたに最高の品質とバランスの良い比率を得るためにあなたに提案することができます、それにとって本当に重要な鍵は解像度サイズで遊ぶことです。ビデオ解像度の結果= 3/4 *ネイティブ/ Rawビデオの解像度

H264は、フレームを少し小さい解像度に圧縮しないと、詳細が失われる傾向があります。

0
laruffii