ビデオエンコーディングとは、デジタルビデオ信号を、品質低下を最小限に抑えながら保存やネットワーク伝送に適した形式に圧縮するプロセスです。エンコーディングなしでは、非圧縮の4Kビデオ1分間で約30GBを占めるため、インターネット経由の送信は不可能です。Sandvine Global Internet Phenomena(2025)のレポートによると、ビデオはインターネットトラフィック全体の65%を占めており、エンコーディングはこれを可能にする重要な技術です。
主なポイント
ビデオエンコーディングとは、圧縮アルゴリズムを使用して非圧縮のビデオ信号をデジタル形式に変換するプロセスです。ビデオコーデックに実装されたこれらのアルゴリズムは、空間領域(1フレーム内)と時間領域(連続するフレーム間)の両方で冗長な情報を削除します。
非圧縮ビデオはフレームの連続であり、各フレームはRGBまたはYUV形式のピクセル配列として保存されます。圧縮なしでは、30 FPSの1080pビデオ1秒あたり約1.5 GBのメモリが必要です。H.264コーデックはこのストリームを3~5 Mbpsに圧縮し、元のサイズの2500分の1にします。
ビデオコーデックは、フレーム内圧縮(イントラフレーム)とフレーム間圧縮(インターフレーム)の2種類の圧縮を使用します。フレーム内圧縮は各フレームに独立して適用され、JPEGと同様のアルゴリズム(離散コサイン変換(DCT)、量子化、エントロピー符号化)を使用します。
フレーム間圧縮は、連続するフレーム間の差分を分析し、変更箇所のみを符号化します。背景が静止している場合、コーデックは完全なフレームを1回だけ送信し(Iフレーム)、その後は差分のみ(PフレームとBフレーム)を送信するため、動きの少ないシーンではデータ量が大幅に削減されます。
ビデオコーデックの選択は、品質とサイズの比率、デバイスの互換性、ライセンス料を決定します。モバイルアプリケーション市場では、H.264(AVC)、H.265(HEVC)、VP9、AV1の4つの主要コーデックが支配的です。
| コーデック | 規格 | 年 | H.264との圧縮比較 | ライセンス |
|---|---|---|---|---|
| H.264/AVC | MPEG-4 Part 10 | 2003 | 1倍(基準) | ロイヤリティ(MPEG LA) |
| H.265/HEVC | MPEG-H Part 2 | 2013 | 40~50%効率的 | ロイヤリティ(2つのプール) |
| VP9 | 2013 | 30~40%効率的 | 無料 | |
| AV1 | AOM | 2018 | 50~60%効率的 | ロイヤリティフリー |
H.264(AVC — Advanced Video Coding)は、最も互換性の高いビデオコーデックであり続けています。2005年以降、すべてのモバイルデバイス、ブラウザ、スマートTVでサポートされています。ハードウェアアクセラレーションによるH.264デコードは低価格デバイスでも利用可能で、ユニバーサルストリームに最適です。
H.264の主な欠点は、最新のコーデックと比較した圧縮効率の相対的な低さです。同じビットレートでも、H.265やAV1は特にHDRや4Kコンテンツにおいて、はるかに高品質を提供します。
H.265(HEVC — High Efficiency Video Coding)は、同じ画質でH.264よりも40~50%優れた圧縮を提供します。これは、フレームをブロックに分割する際の柔軟性向上(16×16の代わりに最大64×64ピクセルのCTU)と、改良された動き予測アルゴリズムによって実現されます。
HEVCは、すべてのAppleデバイス(iPhone 6以降)、Android(ハードウェアデコード対応のバージョン5.0以降)、およびほとんどのスマートTVでサポートされています。HEVCのライセンス料はH.264よりも高く、2つのパテントプールによって管理されているため、法的な使用が複雑になっています。
AV1は、Alliance for Open Media(AOM)(Google、Netflix、Amazon、Intel、Mozillaが主導するコンソーシアム)によって開発されたビデオコーデックです。AV1はH.264より50~60%優れた圧縮を提供し、完全にロイヤリティフリーであるため、ストリーミングサービスにとって魅力的です。
AV1の主な欠点は、エンコーディングの計算の複雑さが高いことです。同じハードウェアでのAV1エンコーディングはH.264よりも5~10倍遅くなる可能性がありますが、2024~2025年のデバイス(Snapdragon 8 Gen 3、Apple A17 Pro)ではハードウェアデコードが登場し始めています。
モバイルアプリケーションにおけるオーディオコーデックは、ビデオコーデックと同様に重要です。ストリーミングビデオには、低遅延、高品質、MP4およびWebMコンテナとの互換性を備えたオーディオが必要です。3つの主要なオーディオコーデックがモバイルストリーミングアプリケーションの99%をカバーしています。
AAC(Advanced Audio Coding)はMP3の後継であり、1997年にMPEGによって開発され、iTunes、YouTube、Androidの標準オーディオコーデックになりました。AACはMP3よりも30%低いビットレートで同じ品質を提供し、最大7.1チャンネルのマルチチャンネルオーディオをサポートします。
モバイルアプリケーションでは、ステレオの場合は128~192 kbpsのAAC-LC、低ビットレート(32~64 kbps)の場合はAAC-HEが推奨されます。ハードウェアAACデコードはすべての最新デバイスで利用可能であり、電力消費を最小限に抑えます。
OpusはIETF(RFC 6716)によるオープンオーディオコーデックであり、6~510 kbpsのビットレートで、すべてのオーディオコーデックの中で最高の品質を提供します。OpusはSILK(音声用アルゴリズム)とCELT(音楽用)を組み合わせ、コンテンツに応じて自動的にモードを切り替えます。
OpusはWebRTCのビデオ通話、SpotifyやDiscordのアプリケーションで使用され、iOS 11およびAndroid 5.0以降のHLSでサポートされています。Opusの低遅延(AACの40~100 msに対して5~26 ms)は、ライブ配信やビデオ会議に最適な選択肢です。
エンコーディングパラメータは、最終的なファイルサイズ、ビデオ品質、デバイスの互換性を決定します。モバイルアプリケーション開発者は、映画、スポーツ中継、ユーザー生成コンテンツなど、コンテンツの種類ごとに最適な設定を選択する必要があります。
ビットレートとは、ビデオ1秒をエンコードするために使用されるビット数です。ライブ配信にはCBR(固定ビットレート)、アーカイブ保存には目標品質を設定するVBR(可変ビットレート)、ストリーミングにはABR(平均ビットレート)があります。
| 解像度 | H.264(推奨) | H.265/HEVC | AV1 |
|---|---|---|---|
| 360p | 400~800 kbps | 250~500 kbps | 200~400 kbps |
| 720p | 1.5~4 Mbps | 1~2.5 Mbps | 0.8~2 Mbps |
| 1080p | 3~8 Mbps | 2~5 Mbps | 1.5~4 Mbps |
| 4K(2160p) | 15~40 Mbps | 10~25 Mbps | 8~20 Mbps |
CRF(Constant Rate Factor)は、x264およびx265のエンコーディングパラメータで、固定ビットレートの代わりに目標品質を設定します。CRFスケールは0(ロスレス)から51(最低品質)までの範囲で、18~28が実用的な範囲です。モバイルアプリケーションでは、x264のCRF 23、x265のCRF 25が推奨されます。
CRF 18~20は、プレゼンテーションコンテンツやオフライン視聴に高品質を提供します。CRF 24~28は、ファイルサイズが絶対的な品質よりも重要なストリーミングやユーザー生成コンテンツに適しています。
H.264規格は、最大ビデオパラメータを制限するプロファイル(Baseline、Main、High)とレベル(Level 1~5.2)を定義しています。Baseline Profileはすべてのデバイスと互換性がありますが、Bフレームをサポートしていません。High Profileは最大品質を提供し、1080pコンテンツに使用されます。
4KストリーミングにはLevel 5.1以上が必要であり、2018年以降のほとんどのモバイルデバイスでサポートされています。コーデックレベルは、最大解像度、ビットレート、バッファサイズを決定し、認定されたすべてのデバイスで正しいデコードを保証します。
ストリーミングのためのエンコーディングは、複数の品質バリアント(ABRラダー)を作成し、ネットワーク伝送に最適化する必要がある点で、アーカイブエンコーディングとは異なります。コンテンツプロバイダーは、リアルタイムトランスコーディングまたはVOD用の事前エンコーディングを使用します。
モバイルアプリケーションの典型的なABRラダーには4~6のバリアントが含まれます:弱いネットワーク向けの144p(200 kbps)からWi-Fi向けの1080p(8 Mbps)まで。推奨解像度:144p、240p、360p、480p、720p、1080p。4Kコンテンツの場合は、1440pと2160pが追加されます。
val mediaCodec = MediaCodec.createEncoderByType(
MediaFormat.MIMETYPE_VIDEO_AVC
)
val format = MediaFormat.createVideoFormat(
MediaFormat.MIMETYPE_VIDEO_AVC,
1280, 720
).apply {
setInteger(MediaFormat.KEY_BIT_RATE, 3_000_000)
setInteger(MediaFormat.KEY_FRAME_RATE, 30)
setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, 2)
setInteger(MediaFormat.KEY_PROFILE,
MediaCodecInfo.CodecProfileLevel.AVCProfileHigh)
setInteger(MediaFormat.KEY_LEVEL,
MediaCodecInfo.CodecProfileLevel.AVCLevel31)
}
mediaCodec.configure(format, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE)
ライブ配信では、低遅延が特に重要です。エンコーディング設定はコーデックの入出力遅延を最小限に抑える必要があります:GOPサイズ1~2秒(30~60フレームごと)が推奨され、Bフレームは無効または最小化し、H.264にはBaseline Profileを使用します。
最新の低遅延プロトコル — LL-HLSおよびCMAF-Low Latency — は、1~2秒のセグメントと部分ダウンロード(Partial Segments)をサポートするフラグメント化エンコーディングを必要とします。コーデックは、フラグメント化MP4のために各セグメントでmoof-boxをサポートする必要があります。
よくある質問
ビデオエンコーディングとは、コーデックを使用してデジタルビデオ信号を圧縮し、データ量を削減するプロセスです。モバイルアプリケーションでは、エンコーディングによりビデオの送信と保存が可能になり、デバイス画面で認識できる品質低下なしにサイズを数百分の1に削減します。
H.264は古いデバイスとの最大限の互換性を提供し、H.265は同じ品質で40~50%効率的です。1080p以下のコンテンツにはH.264で十分です。4Kの場合は、デバイスがサポートしていればH.265またはAV1を推奨します。
ビットレートは、ビデオ1秒あたりのデータ量です。1080pの場合、H.264では3~8 Mbps、H.265では2~5 Mbpsが最適なビットレートです。選択はコンテンツに依存します:動的なシーン(スポーツ)はより高いビットレートを必要とし、静的なシーン(インタビュー)はより低いビットレートで済みます。
VP9はGoogleによるAV1の前身であり、H.265と同等の圧縮を提供します。AV1はVP9より20~30%効率的に圧縮しますが、5~10倍のエンコードリソースを必要とします。VP9はYouTubeに適しており、AV1はNetflixや最新のストリーミングサービスに適しています。
ライブ配信には、GOP 1~2秒、Bフレームなし、1080pで2~4 MbpsのビットレートでH.264 Baseline Profileを使用します。LL-HLS用にフラグメント化MP4(CMAF)を有効にし、MediaCodecまたはVideoToolboxを介したハードウェアエンコーディングを使用します。
まとめ
ターンキー方式のモバイルアプリケーションを開発します
IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。