サポートされている形式

ExoPlayer がサポートする形式を定義する際に重要なのは、 "メディア形式"複数のレベルで定義されます。最下位レベルから 最高レベルの要件は次のとおりです。

  • 個々のメディア サンプルの形式(動画のフレーム、フレーム あります。これらはサンプル フォーマットです。一般的な動画ファイルでは、 サンプル形式のメディアを 2 つ以上含む。1 つ目は動画用(H.264 など)で、 1 つ目は音声用(AAC など)です。
  • メディア サンプルと関連付けられたメディア サンプルを格納するコンテナの形式。 提供します。これらはコンテナ形式です。メディア ファイルにはコンテナが 1 つ含まれている 形式(MP4 など)で識別されます。これは通常、ファイル拡張子で示されます。備考 一部の音声のみの形式(MP3 など)、サンプル形式とコンテナ形式が 同じかもしれません。
  • アダプティブ ストリーミング テクノロジー(DASH、SmoothStreaming、HLS など)。これらの メディア形式ではありませんが、 ExoPlayer が提供するサポートレベルです

以下のセクションでは、最高レベルからレベルまで、レベルごとに ExoPlayer のサポートを定義します。 最低料金になります。最後の 2 つのセクションでは、スタンドアロンの字幕形式のサポートについて説明します。 HDR 動画再生などが可能です

アダプティブ ストリーミング

DASH

ExoPlayer は、複数のコンテナ形式の DASH をサポートしています。メディア ストリームは つまり、動画、音声、テキストはそれぞれ別の DASH マニフェストの AdaptationSet 要素(CEA-608 は例外です) 下表の説明をご覧ください)。含まれている音声と動画のサンプル形式は、 も使用できます(詳しくは、 サンプル形式のセクションをご覧ください)。

機能 サポート対象 コメント
コンテナ
FMP4 はい 分離ストリームのみ
WebM はい 分離ストリームのみ
マトロスカ はい 分離ストリームのみ
MPEG-TS いいえ サポートの予定なし
字幕
TTML はい 未加工、または ISO/IEC 14496-30 に従って FMP4 に埋め込み
WebVTT はい 未加工、または ISO/IEC 14496-30 に従って FMP4 に埋め込み
CEA-608 はい SCTE Accessibility 記述子を使用して通知された場合は FMP4 に埋め込みます
CEA-708 はい SCTE Accessibility 記述子を使用して通知された場合は FMP4 に埋め込みます
メタデータ
EMSG メタデータ はい FMP4 に埋め込み
コンテンツの保護
Widevine はい 「cenc」スキーム: API 19 以降「cbcs」スキーム: API 25 以降
PlayReady SL2000 はい Android TV、「cenc」スキームのみ
ClearKey はい API 21 以降、「cenc」スキームのみ
ライブ再生
通常のライブ再生 はい
超低レイテンシの CMAF ライブ再生 はい
Common Media Client Data(CMCD) はい 統合ガイド

スムーズなストリーミング

ExoPlayer は、FMP4 コンテナ形式で SmoothStreaming をサポートしています。メディア ストリーム 分離する必要があります。つまり、動画、音声、テキストはそれぞれ異なる SmoothStreaming マニフェストの StreamIndex 要素含まれる音声と 動画のサンプル形式もサポートしている必要があります( サンプル形式のセクションをご覧ください)。

機能 サポート対象 コメント
コンテナ
FMP4 はい 分離ストリームのみ
字幕
TTML はい FMP4 に埋め込み
コンテンツの保護
PlayReady SL2000 はい Android TV のみ
ライブ再生
通常のライブ再生 はい
Common Media Client Data(CMCD) はい 統合ガイド

HLS

ExoPlayer は、複数のコンテナ形式で HLS をサポートしています。含まれる音声と 動画のサンプル形式もサポートしている必要があります( サンプル形式のセクションをご覧ください)。水 HLS コンテンツ制作者に対し、高品質な HLS ストリームの生成 説明どおり こちらをご覧ください。

機能 サポート対象 コメント
コンテナ
MPEG-TS はい
FMP4/CMAF はい
ADTS(AAC) はい
MP3 はい
字幕
CEA-608 はい
CEA-708 はい
WebVTT はい
メタデータ
ID3 はい
SCTE-35 いいえ
コンテンツの保護
AES-128 はい
サンプル AES-128 いいえ
Widevine はい API 19 以降(「cenc」スキーム)と 25 以降(「cbcs」スキーム)
PlayReady SL2000 はい Android TV のみ
サーバー コントロール
差分更新 はい
再生リストの再読み込みをブロックしています はい
プリロード ヒントのロードのブロック はい 長さが未定義のバイト範囲を除く
ライブ再生
通常のライブ再生 はい
低遅延 HLS(Apple) はい
低レイテンシ HLS(コミュニティ) いいえ
Common Media Client Data(CMCD) はい 統合ガイド

プログレッシブ コンテナ形式

次のコンテナ形式のストリームは、ExoPlayer で直接再生できます。 含まれる音声と動画のサンプル形式もサポートされている必要があります( サンプル形式のセクションをご覧ください)。 画像コンテナと形式のサポートについては、以下をご覧ください。 画像:

コンテナ形式 サポート対象 コメント
MP4 はい
M4A はい
FMP4 はい
WebM はい
マトロスカ はい
MP3 はい 一部のストリームは固定ビットレート シークを使用してのみシーク可能**
Ogg はい Vorbis、Opus、FLAC を含む
WAV はい
MPEG-TS はい
MPEG-PS はい
FLV はい シーク不可*
ADTS(AAC) はい 固定ビットレートのシーク使用時のみシーク可能**
FLAC はい FLAC ライブラリまたは ExoPlayer ライブラリの FLAC エクストラクタを使用***
AMR はい 固定ビットレートのシーク使用時のみシーク可能**

* コンテナではメタデータ(例: サンプル インデックスなど)を使用して、メディア プレーヤーが効率的にシークを実行できるようにします。 シークが必要な場合は、より適切なコンテナ形式を使用することをおすすめします。

** これらのエクストラクタには、FLAG_ENABLE_CONSTANT_BITRATE_SEEKING 固定ビットレートを前提とした近似シークを有効にします。この デフォルトでは有効になっていません。これを実現する最も簡単な方法は サポートするすべての extractor の機能で、 DefaultExtractorsFactory.setConstantBitrateSeekingEnabled(説明どおり) こちらをご覧ください。

*** FLAC ライブラリのエクストラクタは未加工の音声を出力しますが、これは処理可能です。 すべての API レベルで適用されます。ExoPlayer ライブラリの FLAC エクストラクタの出力 FLAC オーディオ フレームは、FLAC デコーダ(MediaCodec (API レベル 27 以降で必須)、または FLAC を有効にした FFmpeg ライブラリ)。DefaultExtractorsFactory は、 拡張機能エクストラクタ(アプリが FLAC ライブラリを使用してビルドされている場合) それ以外の場合は、ExoPlayer ライブラリ エクストラクタを使用します。

RTSP

ExoPlayer は、ライブとオンデマンドの両方の RTSP をサポートしています。サポートされているサンプル形式と ネットワークの種類を以下に示します。

サポートされているサンプル形式

  • H264(SDP メディアの説明では、fmtp に SPS/PPS データを含める必要があります デコーダの初期化用の属性など)を指定します。
  • AAC(ADTS ビットストリームを使用)。
  • AC3.
で確認できます。

サポートされているネットワークの種類

  • RTP over UDP ユニキャスト(マルチキャストはサポートされていません)。
  • Interleaved RTSP、RTP over RTSP(TCP を使用)。

サンプル形式

デフォルトでは、ExoPlayer は Android のプラットフォーム デコーダを使用します。したがって、サポートされている サンプル形式は、ExoPlayer ではなく、基盤となるプラットフォームに依存します。 サポートされているメディア形式を参照 Android デバイスでサポートされているサンプル形式のドキュメント。注: デバイスによっては、上記以外の形式に対応している場合があります。

ExoPlayer は、Android のプラットフォーム デコーダに加えて、 ソフトウェア デコーダの拡張機能です。これらは手動で作成して、 利用したいプロジェクトがある場合です現在 Google Cloud では、ソフトウェア デコーダを のライブラリ AV1VP9FLACOpus、 および FFmpeg

FFmpeg ライブラリ

FFmpeg ライブラリは、 さまざまな形式の音声サンプルをデコードします。どのモデルを使用するかは デコーダが含まれています。詳しくは、 ライブラリの README.md に指定する必要があります。「 次の表に、オーディオ サンプル形式から対応する FFmpeg デコーダ名。

サンプル形式 デコーダ名
Vorbis Vorbis
Opus オーパス
FLAC FLAC
ALAC Alac
PCM μ-law pcm_mulaw
PCM A-law pcm_alaw
MP1、MP2、MP3 mp3
AMR-NB アムンブ
AMR-WB AMRWB
AAC AAC
AC-3 AC3
E-AC-3 eAC3
DTS、DTS-HD DCA
TrueHD MLP truehd

画像

ExoPlayer は、次の画像形式をサポートしています。詳しくは、 画像読み込みライブラリ のサポートを提供する外部ライブラリとの統合方法については、 使用できます。

イメージの形式 サポート対象
BMP はい
GIF いいえ extractor のサポートなし
JPEG はい
JPEG モーション フォト はい 静止画像と動画に対応
JPEG ウルトラ HDR Android 14 以前の SDR にフォールバックする 非 HDR ディスプレイ
PNG はい
WebP はい
HEIF/HEIC はい
HEIC モーション フォト 一部のみ 静止画像のみ対応*
AVIF(ベースライン) はい Android 14 以降でのみデコードされる

* HEIC モーション フォトの動画部分は、 MetadataRetriever 独立したファイルとして再生できます

スタンドアロンの字幕形式

ExoPlayer は、さまざまな形式のスタンドアロンの字幕ファイルをサポートしています。字幕 ファイルは、メディア アイテムのページで説明されているようにサイドローディングできます。

コンテナ形式 サポート対象 MIME タイプ
WebVTT はい MimeTypes.TEXT_VTT
TTML / SMPTE-TT はい MimeTypes.APPLICATION_TTML
SubRip はい MimeTypes.APPLICATION_SUBRIP
SubStationAlpha(SSA/ASS) はい MimeTypes.TEXT_SSA

HDR 動画再生

ExoPlayer は、さまざまなフォーマットでハイ ダイナミック レンジ(HDR)動画を抽出 (例: MP4 のドルビー ビジョン、Matroska/WebM の HDR10+ を含む)デコード HDR コンテンツの表示は、Android プラットフォームと ダウンロードします詳しくは、 HDR 動画再生 HDR デコード/表示機能の確認と、 Android バージョン間での HDR サポート。

特定のコーデック プロファイルのサポートが必要な HDR ストリームを再生する場合は、 ExoPlayer のデフォルトの MediaCodec セレクタは、それをサポートするデコーダを選択する 他のデコーダが、同じ MIME タイプのデコーダで そのプロファイルがコーデック リストの上位に表示されます。その結果 ソフトウェア デコーダの選択において、デコーダの選択において、 機能が異なるため、