本文へ
ハクソク

世界を動かす技術を、日本語で。

H.264は魔法です (2016)

元記事: 原文(sidbala.com)

概要

H.264 は、現代のほぼすべての映像機器で使われる 動画圧縮標準。 生データの帯域問題 を解決するために30年以上かけて開発。 PNGとの比較 でH.264の圧縮効率の高さを説明。 情報量の削減 や 色情報の間引き、 動き補償 など多彩な圧縮手法を採用。 これらの技術はH.264だけでなく、映像圧縮全般に通じる基礎。

H.264とは何か

  • H.264 は、インターネット動画・Blu-ray・スマートフォン・防犯カメラ・ドローンなどで広く使われる 動画圧縮コーデック標準。
  • 30年以上の研究開発 の成果で、 フルモーション映像の伝送帯域を削減 することを目的に設計。
  • 技術的にも非常に興味深い 仕組みを持つ。
  • 本記事では、 H.264や動画圧縮の基本的な仕組み を高い視点から解説。

なぜ圧縮が必要か

  • 非圧縮の動画ファイル は、各フレームごとに2Dバッファの配列(3D配列)としてピクセルデータを保持。
  • 例: 1080p@60Hz の場合、 1920x1080x60x3 ≒ 370MB/秒 の生データとなり、取り扱いがほぼ不可能。
  • 50GBのBlu-ray でも約2分しか保存できず、SSDでもRAMから直接書き出すのは困難。
  • このため、 圧縮が不可欠。

H.264圧縮の実力

  • Appleホームページのスクリーンショット(PNG) :1015KB。
  • 同じ画面の5秒間60fps H.264動画 :175KB。
  • PNGは1フレームで1015KBだが、 H.264動画は300フレームで175KB。 圧縮効率はPNGの約1500倍。

圧縮のトリック:情報の取捨選択

  • 不要なデータを削除して軽量化 する手法= ロッシー圧縮。
  • H.264はロッシーコーデック で、重要でないビットを捨てて容量を削減。
  • PNGはロスレス圧縮 で、元データを完全に復元可能。

重要なビットの見極め

  • 画像の一部(例:右上の四分の一区画)を単純に削除する方法もあるが、 H.264は詳細情報を削除 する手法を採用。
  • 拡大しない限り違いが分からない程度に細部を省略 し、データ量を大幅削減。

情報エントロピーとエントロピー符号化

  • 情報エントロピー :データの情報量を表す指標。最小限必要なビット数。
  • 例:コイントスの結果は1回で1ビット、2回で2ビット。
  • 冗長な記述を短縮することで圧縮 が可能(例:「10回連続表」→「10 tosses, all heads」)。
  • エントロピー符号化 は、どんなデータにも適用可能なロスレス圧縮技術。

周波数領域への変換(Frequency Domain)

  • 画像や映像データを 周波数領域 に変換し、 高周波成分(細部情報)を削除 することで圧縮。
  • 低周波成分(滑らかな変化)は中央、高周波成分(細かいディテール)は端 に分布。
  • マスク処理で高周波成分を除去 し、元に戻すと見た目はほぼ変わらず容量は大幅減。
  • この過程を 量子化(Quantization) と呼ぶ。

クロマサブサンプリング(Chroma Subsampling)

  • 人間の目は色の細部より明るさの変化に敏感。
  • RGB信号をY(輝度)+Cb/Cr(色差)に変換 し、 色成分は解像度を1/4に間引き。
  • これにより 帯域が半分に削減 されるが、見た目の違いはほとんどなし。
  • クロマサブサンプリング はH.264に限らず、広く使われている技術。

動き補償(Motion Compensation)

  • 時間軸方向の圧縮 も活用。
  • 例:テニスの試合映像では、 背景は静止・ボールだけが動く。
  • H.264は画像を16x16ピクセルのマクロブロックに分割し、動きを推定。
  • Iフレーム(完全な静止画) を基準に、 Pフレーム(予測)・Bフレーム(双方向予測) で動きベクトルのみを記録。
  • これにより、 ほとんど変化しない部分を繰り返し保存せずに済む。

まとめ

  • H.264は、多層的な圧縮技術(空間・時間・色・エントロピー)を組み合わせ、極めて高い圧縮効率を実現。
  • これらの手法は、 H.264だけでなく映像圧縮全般の基礎 となっている。

提供: ハクソク · 要約更新:

AIによる日本語要約です。内容は原文とあわせてご確認ください。

Hacker Newsの議論を読む

Hackerたちの意見

10年後、2026年のマジック: AV1 https://engineering.fb.com/2026/06/22/video-engineering/adop... そしてすぐにAV2も https://av2.aomedia.org/

└

さらに10年経てば、十分なハードウェアがサポートして、主流になるかもね。

└

最後のビデオコーデックが必要だね。そうじゃないと、こんなことになる: https://xkcd.com/927/

└

AIがすぐにこれらを一掃しちゃう気がする。そしたら、AIがデザインしたハードウェアコーデックが出てくるだろうね。

└

それはそれでいいけど、テレビのフロントエンド用にハードウェアデコーディングができる50ドルの中古NUCやRaspberry Piが買えるようになったら教えてね。

└

2018年のAV1デモ https://news.ycombinator.com/item?id=16796127

以前の議論: 2016年11月4日 https://news.ycombinator.com/item?id=12871403 219件のコメント 2022年3月17日 https://news.ycombinator.com/item?id=30710574 219件のコメント 2019年5月24日 https://news.ycombinator.com/item?id=19997813 180件のコメント 2024年6月14日 https://news.ycombinator.com/item?id=40681306 205件のコメント

└

まだ魔法だね。

これを見て思い出したけど、3Blue1Brownの「Compression is Intelligence」の『パート2』まだ見てないや。YouTubeのおすすめ、これに関しては全然ダメだった。

PNGもひどいから、BMPみたいに消えてもいいと思う。この記事が書かれた時にはWebPがすでにあったしね: PNG: 1039993バイト - ベースライン最適化*: 541539 WebP: 398974 - 無劣化モード、もちろん。JPEG XL: 310778 - 無劣化、速い、簡単。*膨大な計算努力の後; まだ改善の余地はあるけど、その努力は馬鹿げてる。

└

WebPはそのままで十分だけど、Pop OS 22.04の時点で、GnomeのEyeでなくFirefoxで開かなきゃいけないのが本当に面倒。こういう互換性の問題があちこちに散らばってる。WebPのサポートが怠慢なのが、PNGの使用が続く大きな理由だね。

└

完全性のために言うと、私の最高のPNG圧縮のバックグラウンドジョブは最適化されて、528313バイトになったよ。数分しかかからなかった…

Hacker Newsで議論の続きを見る