ExoPlayer では、すべてのメディアが MediaItem
で表現されます。ただし、
内部では、コンテンツを再生するためにプレーヤーに MediaSource
インスタンスが必要です。「
プレーヤーは、MediaSource.Factory
を使用してメディア アイテムからこれらを作成します。
デフォルトでは、プレーヤーは DefaultMediaSourceFactory
を使用します。これにより、
次のコンテンツ MediaSource
実装のインスタンス:
- DASH の場合は
DashMediaSource
。 - SmoothStreaming の場合は
SsMediaSource
。 HlsMediaSource
: HLS。ProgressiveMediaSource
: 通常のメディア ファイル。RtspMediaSource
: RTSP。
DefaultMediaSourceFactory
では、必要に応じて、より複雑なメディアソースを作成することもできます。
対応するメディア アイテムのプロパティを設定します。詳しくは、
詳細が表示されます。
メディア アイテム ページ。
プレーヤーのデフォルト構成を設定するために、 カスタマイズが可能です。
メディアソースの作成のカスタマイズ
プレーヤーをビルドするときに、MediaSource.Factory
を注入できます。たとえば
アプリが広告を挿入し、CacheDataSource.Factory
を使用してサポートする場合
DefaultMediaSourceFactory
のインスタンスをキャッシュへの保存用に構成すると、
プレーヤー作成中に挿入されます。
Kotlin
val mediaSourceFactory: MediaSource.Factory = DefaultMediaSourceFactory(context) .setDataSourceFactory(cacheDataSourceFactory) .setLocalAdInsertionComponents(adsLoaderProvider, playerView) val player = ExoPlayer.Builder(context).setMediaSourceFactory(mediaSourceFactory).build()
Java
MediaSource.Factory mediaSourceFactory = new DefaultMediaSourceFactory(context) .setDataSourceFactory(cacheDataSourceFactory) .setLocalAdInsertionComponents(adsLoaderProvider, /* adViewProvider= */ playerView); ExoPlayer player = new ExoPlayer.Builder(context).setMediaSourceFactory(mediaSourceFactory).build();
「
DefaultMediaSourceFactory
JavaDoc
では、使用可能なオプションについて詳しく説明します。
次の目的でカスタムの MediaSource.Factory
実装を挿入することもできます。
カスタム メディアソース タイプの作成をサポートする例を示します。工場の
createMediaSource(MediaItem)
が呼び出され、それぞれのメディアソースが作成されます。
指定のメディア アイテムです。
再生リストに追加された。
メディアソース ベースの再生リスト API
ExoPlayer
インターフェースは、受け入れ可能な追加の再生リスト メソッドを定義します。
メディア アイテムではなくメディアソースです。これにより、
プレーヤーの内部 MediaSource.Factory
を使用し、メディアソース インスタンスを
直接実行します。
Kotlin
// Set a list of media sources as initial playlist. exoPlayer.setMediaSources(listOfMediaSources) // Add a single media source. exoPlayer.addMediaSource(anotherMediaSource) // Can be combined with the media item API. exoPlayer.addMediaItem(/* index= */ 3, MediaItem.fromUri(videoUri)) exoPlayer.prepare() exoPlayer.play()
Java
// Set a list of media sources as initial playlist. exoPlayer.setMediaSources(listOfMediaSources); // Add a single media source. exoPlayer.addMediaSource(anotherMediaSource); // Can be combined with the media item API. exoPlayer.addMediaItem(/* index= */ 3, MediaItem.fromUri(videoUri)); exoPlayer.prepare(); exoPlayer.play();
高度なメディアソースの構成
ExoPlayer は、変更と作成のための複数の MediaSource
実装を提供する
他の MediaSource
インスタンス。この方法は、複数のゾーンに
カスタマイズを組み合わせる必要があり、シンプルなセットアップ パスはいずれも
十分です
ClippingMediaSource
: 指定したタイムスタンプ範囲でメディアをクリップできます。 これが唯一の変更である場合は、MediaItem.ClippingConfiguration
をご利用ください。FilteringMediaSource
: 指定されたタイプで使用可能なトラックをフィルタします。 両方の音声を含むファイルから動画トラックを公開する場合、 動画。これが唯一の変更である場合は、 トラッキング選択パラメータを使用してください。MergingMediaSource
: 複数のメディアソースを結合して並行して再生します。イン ほとんどのケースでは、adjustPeriodTimeOffsets
とclipDurations
を true に設定して、 ソースの開始と終了が同時になります。この変更を行って サイドローディングされた字幕がある場合は、MediaItem.SubtitleConfiguration
をご利用ください。ConcatenatingMediaSource2
: 複数のメディアソースを結合して再生します。 できます。ユーザーに表示されるメディア構造は、1 つのTimeline.Window
: 単一のアイテムのように見えます。もし 想定外の複数のアイテムが再生されるように変更が行われる 次のような playlist API メソッドを使用することをおすすめします。 代わりにPlayer.addMediaItem
を使用してください。SilenceMediaSource
: 指定された時間の間、無音を生成します。 ギャップを埋めるのに役立ちますAdsMediaSource
: クライアントサイドの広告挿入でメディアソースを拡張します 提供します詳しくは、広告挿入ガイドをご覧ください。ServerSideAdInsertionMediaSource
: メディアソースをサーバーサイド広告で拡張します。 挿入機能も備えています詳しくは、広告挿入ガイドをご覧ください。