モバイルアプリケーションにおけるビデオエンコーディング:コーデックとパラメータ

著者: IT Sectr 公開日: 2026-05-24 読了時間: 8 分

ビデオエンコーディングとは、デジタルビデオ信号を、品質低下を最小限に抑えながら保存やネットワーク伝送に適した形式に圧縮するプロセスです。エンコーディングなしでは、非圧縮の4Kビデオ1分間で約30GBを占めるため、インターネット経由の送信は不可能です。Sandvine Global Internet Phenomena(2025)のレポートによると、ビデオはインターネットトラフィック全体の65%を占めており、エンコーディングはこれを可能にする重要な技術です。

主なポイント

  • エンコーディング — コーデックを使用してビデオ信号を圧縮し、データ量を削減します。
  • H.264およびH.265コーデック — 主要な規格:AVCは互換性を確保し、HEVCはより優れた圧縮を提供します。
  • VP9およびAV1 — GoogleとAlliance for Open Mediaによるオープンコーデック、ロイヤリティフリー。
  • ビットレートはサイズと品質を決定します:1080pで2~5 Mbps、4Kで15~40 Mbps。
  • AACおよびOpusオーディオコーデック — 低遅延と高品質を備えたモバイルアプリケーションの標準。

ビデオエンコーディングとは?

ビデオエンコーディングとは、圧縮アルゴリズムを使用して非圧縮のビデオ信号をデジタル形式に変換するプロセスです。ビデオコーデックに実装されたこれらのアルゴリズムは、空間領域(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、H.265、VP9、AV1

ビデオコーデックの選択は、品質とサイズの比率、デバイスの互換性、ライセンス料を決定します。モバイルアプリケーション市場では、H.264(AVC)、H.265(HEVC)、VP9、AV1の4つの主要コーデックが支配的です。

コーデック規格H.264との圧縮比較ライセンス
H.264/AVCMPEG-4 Part 1020031倍(基準)ロイヤリティ(MPEG LA)
H.265/HEVCMPEG-H Part 2201340~50%効率的ロイヤリティ(2つのプール)
VP9Google201330~40%効率的無料
AV1AOM201850~60%効率的ロイヤリティフリー

H.264 — ユニバーサルスタンダード

H.264(AVC — Advanced Video Coding)は、最も互換性の高いビデオコーデックであり続けています。2005年以降、すべてのモバイルデバイス、ブラウザ、スマートTVでサポートされています。ハードウェアアクセラレーションによるH.264デコードは低価格デバイスでも利用可能で、ユニバーサルストリームに最適です。

H.264の主な欠点は、最新のコーデックと比較した圧縮効率の相対的な低さです。同じビットレートでも、H.265やAV1は特にHDRや4Kコンテンツにおいて、はるかに高品質を提供します。

H.265 — 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 — 未来のオープンスタンダード

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)ではハードウェアデコードが登場し始めています。

オーディオコーデック:AAC、MP3、Opus

モバイルアプリケーションにおけるオーディオコーデックは、ビデオコーデックと同様に重要です。ストリーミングビデオには、低遅延、高品質、MP4およびWebMコンテナとの互換性を備えたオーディオが必要です。3つの主要なオーディオコーデックがモバイルストリーミングアプリケーションの99%をカバーしています。

AAC — AppleとYouTubeの標準

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 — 最新のオーディオコーデック

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)は、ライブ配信やビデオ会議に最適な選択肢です。

エンコーディングパラメータ:ビットレート、解像度、FPS

エンコーディングパラメータは、最終的なファイルサイズ、ビデオ品質、デバイスの互換性を決定します。モバイルアプリケーション開発者は、映画、スポーツ中継、ユーザー生成コンテンツなど、コンテンツの種類ごとに最適な設定を選択する必要があります。

ビットレートとその種類

ビットレートとは、ビデオ1秒をエンコードするために使用されるビット数です。ライブ配信にはCBR(固定ビットレート)、アーカイブ保存には目標品質を設定するVBR(可変ビットレート)、ストリーミングにはABR(平均ビットレート)があります。

解像度H.264(推奨)H.265/HEVCAV1
360p400~800 kbps250~500 kbps200~400 kbps
720p1.5~4 Mbps1~2.5 Mbps0.8~2 Mbps
1080p3~8 Mbps2~5 Mbps1.5~4 Mbps
4K(2160p)15~40 Mbps10~25 Mbps8~20 Mbps

CRF — 品質制御

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が追加されます。

モバイルデバイスでのトランスコーディング

kotlin
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をサポートする必要があります。

エンコードパイプラインの最適化

  • ハードウェアエンコーディング — MediaCodec(Android)またはVideoToolbox(iOS)経由がリアルタイム処理に必須です。
  • マルチスレッドエンコーディング — サーバー上でultrafastまたはveryfastモードのlibx264/libx265を使用。
  • エンコーディングプリセット:placebo — VOD向け(最大圧縮)、ultrafast — ライブ配信向け。
  • 2パスVBR — VODに推奨されるモードで、予測可能なサイズと品質を提供します。

よくある質問

モバイルアプリケーションにおけるビデオエンコーディングとは?

ビデオエンコーディングとは、コーデックを使用してデジタルビデオ信号を圧縮し、データ量を削減するプロセスです。モバイルアプリケーションでは、エンコーディングによりビデオの送信と保存が可能になり、デバイス画面で認識できる品質低下なしにサイズを数百分の1に削減します。

どちらのコーデックが優れていますか:H.264またはH.265?

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とAV1の違いは何ですか?

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を介したハードウェアエンコーディングを使用します。

まとめ

  • エンコーディングは、非圧縮データの巨大なサイズのため、インターネット経由のビデオ伝送を不可能にする基本的な技術です。
  • H.264は互換性の標準であり、モバイルアプリケーションでのユニバーサルストリームに推奨されます。
  • H.265AV1は40~60%優れた圧縮を提供しますが、効率的なデコードにはハードウェアサポートが必要です。
  • ビットレートとCRFは重要なパラメータです:1080p H.264には3~8 Mbps、4K H.265には10~25 Mbpsを使用します。
  • AACは標準オーディオコーデックであり、Opusは最小遅延のためライブ配信に適しています。
  • ストリーミングのABRラダーには、144pから1080pまで異なるビットレートの4~6のバリアントが含まれます。
  • モバイルデバイスでのリアルタイム処理にはハードウェアエンコーディングが必須です。

ターンキー方式のモバイルアプリケーションを開発します

IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。

プロジェクトについて相談

こちらもお読みください