LoginSignup
6
7

More than 5 years have passed since last update.

ExoPlayerでサポートされるフォーマット

Posted at

https://google.github.io/ExoPlayer/supported-formats.html の日本語訳です

ExoPlayerでサポートされるフォーマットといっても、実際には様々なレベルでの「メディアフォーマット」が定義されることに注意してください。高レベルなものから低レベルなものまで、次のようなものがあります。

  • 個別のメディアサンプルのフォーマット(ビデオフレームやオーディオフレーム等)。これらのフォーマットはサンプルフォーマットと呼びます。通常の映像ファイルは最低2種類のサンプルフォーマットを内包することに注意してください。一つは動画(H.264等)で、もう一つは音声(AAC等)です。
  • メディアサンプルと関連するメタデータを格納するフォーマット。これらのフォーマットはコンテナーフォーマットと呼びます。メディアファイルは一つのコンテナーフォーマット(MP4等)を持ち、これは通常ファイルの拡張子で表されます。いくつかの音声のみのフォーマット(MP3等)では、サンプルフォーマットとコンテナーフォーマットは同じになります。
  • DASH、SmoothStreaming、HLS等のアダプティブストリーミング技術。これらはメディアフォーマットではありませんが、どのレベルのサポートをExoPlayerが提供するかを定義するのに必要です。

次のセクションはExoPlayerサポートをそれぞれのレベルで定義します。高レベルから低レベルまで。

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

DASH

ExoPlayerはFMP4、WebM、MatroskaコンテナーフォーマットでのDASHをサポートします。メディアストリームはdemuxedされている必要があります。これは映像、音声、テキスト(字幕)はDASHマニフェストのAdaptationSet要素に定義される必要があるということです。内包されるサンプルフォーマットもサポートされているものである必要があります(詳しくはサンプルフォーマットセクションを見てください)。

Feature Supported Comment
コンテナー
FMP4 YES Demuxed ストリームのみ
WebM YES Demuxed ストリームのみ
Matroska YES Demuxed ストリームのみ
MPEG-TS NO サポートされる予定はありません
字幕
TTML YES Raw, or embedded in FMP4 according to ISO/IEC 14496-30
WebVTT YES Raw, or embedded in FMP4 according to ISO/IEC 14496-30
Tx3g YES FMP4に埋め込み
SubRip YES WebMに埋め込み
コンテンツ保護
Widevine CENC YES API 19以上、"cenc" スキームのみ
PlayReady SL2000 YES Android TVのみ

SmoothStreaming

ExoPlayerはFMP4コンテナーフォーマットでのSmoothStreamingをサポートします。メディアストリームはdemuxedされている必要があります。これは映像、音声、テキスト(字幕)はSmoothStreamingマニフェストのStreamIndex要素に定義される必要があるということです。内包されるサンプルフォーマットもサポートされているものである必要があります(詳しくはサンプルフォーマットセクションを見てください)。

Feature Supported Comment
コンテナー
FMP4 YES Demuxed ストリームのみ
字幕
TTML YES FMP4に埋め込み
コンテンツ保護
PlayReady SL2000 YES Android TV のみ

HLS

ExoPlayerはMPEG-TS、ADTS、MP3コンテナーフォーマットでのHLSをサポートします。内包されるサンプルフォーマットもサポートされているものである必要があります(詳しくはサンプルフォーマットセクションを見てください)。可能であればHLSよりもDASH(かSmoothStreaming)を使うことをお勧めします。DASHの利点はこちら(英語)で読むことができます。

Feature Supported Comment
コンテナー
MPEG-TS YES
ADTS (AAC) YES
MP3 YES
字幕
EIA-608 YES
WebVTT YES
Metdata
ID3 metadata YES
コンテンツ保護
AES-128 YES
Sample AES-128 NO

スタンドアローンコンテナーフォーマット

次のコンテナーフォーマットのメディアファイルはExoPlayerで直接再生することができます。内包されるサンプルフォーマットもサポートされているものである必要があります(詳しくはサンプルフォーマットセクションを見てください)。

コンテナーフォーマット サポートされている コメント
MP4 はい
M4A はい
FMP4 はい
WebM はい
Matroska はい
MP3 はい
Ogg はい Vorbis、Opus、Flacを含む
WAV はい
MPEG-TS はい シーク不可*
MPEG-PS はい シーク不可*
FLV はい シーク不可*
ADTS (AAC) はい シーク不可*
Flac はい Flac拡張機能のみ

*コンテナーが効率的なシークを行うためのメタデータ(サンプルインデックス等)を含まないため、シークはサポートされません。シークが必要なら、より適切なコンテナ形式を使用することをお勧めします。

サンプルフォーマット

デフォルトでExoPlayerはAndroidのプラットフォームデコーダーを使用します。したがって、サポートされているサンプル形式は、ExoPlayerではなくプラットフォームに依存します。Android端末によってサポートされるサンプルフォーマットはここに記載されています。個別の端末はここに載っていない追加のフォーマットをサポートする可能性があることに注意してください。

Androidのプラットフォームデコーダーを使用するのに加えて、ExoPlayerはソフトウェアデコーダー拡張機能を利用することもできます。これらは手動で作成し、使用したいプロジェクトに含める必要があります。ソフトウェアデコーダー拡張機能は現在VP9FlacOpusFFmpeg用に提供しています。

FFmpeg拡張機能

FFmpeg拡張機能は様々な種類の音声サンプルフォーマットのデコードをサポートします。どのデコーダーを含めるかはFFmpegのconfigureスクリプトへのコマンドライン引数で選ぶことができます。

サンプルフォーマット configureへの引数
Vorbis –enable-decoder=vorbis
Opus –enable-decoder=opus
FLAC –enable-decoder=flac
MP3 –enable-decoder=mp3
AMR-NB –enable-decoder=armnb
ARM-WB –enable-decoder=armwb
AAC –enable-decoder=aac
AC-3 –enable-decoder=ac3
E-AC-3 –enable-decoder=eac3
DTS, DTS-HD –enable-decoder=dca
TrueHD –enable-decoder=mlp –enable-decoder=truehd

configureのコマンドラインの例は拡張機能のREADME.mdを見てください。

6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7