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 では、ソフトウェア デコーダを のライブラリ AV1、 VP9、 FLAC、 Opus、 および 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 タイプのデコーダで
そのプロファイルがコーデック リストの上位に表示されます。その結果
ソフトウェア デコーダの選択において、デコーダの選択において、
機能が異なるため、