プログレッシブ

次のコンテナ形式のストリームは、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 ライブラリ エクストラクタを使用します。

MediaItem の使用

プログレッシブ ストリームを再生するには、メディア URI を指定して MediaItem を作成し、 プレーヤーに渡します。

Kotlin

// Create a player instance.
val player = ExoPlayer.Builder(context).build()
// Set the media item to be played.
player.setMediaItem(MediaItem.fromUri(progressiveUri))
// Prepare the player.
player.prepare()

Java

// Create a player instance.
ExoPlayer player = new ExoPlayer.Builder(context).build();
// Set the media item to be played.
player.setMediaItem(MediaItem.fromUri(progressiveUri));
// Prepare the player.
player.prepare();

ProgressiveMediaSource を使用する

その他のカスタマイズ オプションについては、ProgressiveMediaSource を作成し、 MediaItem ではなくプレーヤーに直接渡す。

Kotlin

// Create a data source factory.
val dataSourceFactory: DataSource.Factory = DefaultHttpDataSource.Factory()
// Create a progressive media source pointing to a stream uri.
val mediaSource: MediaSource =
ProgressiveMediaSource.Factory(dataSourceFactory)
    .createMediaSource(MediaItem.fromUri(progressiveUri))
// Create a player instance.
val player = ExoPlayer.Builder(context).build()
// Set the media source to be played.
player.setMediaSource(mediaSource)
// Prepare the player.
player.prepare()

Java

// Create a data source factory.
DataSource.Factory dataSourceFactory = new DefaultHttpDataSource.Factory();
// Create a progressive media source pointing to a stream uri.
MediaSource mediaSource =
    new ProgressiveMediaSource.Factory(dataSourceFactory)
        .createMediaSource(MediaItem.fromUri(progressiveUri));
// Create a player instance.
ExoPlayer player = new ExoPlayer.Builder(context).build();
// Set the media source to be played.
player.setMediaSource(mediaSource);
// Prepare the player.
player.prepare();

再生のカスタマイズ

ExoPlayer は、ユーザーの視聴環境に合わせて再生エクスペリエンスを調整するための複数の方法を提供しています。 提供します。例については、カスタマイズのページをご覧ください。