メディア移行元

ExoPlayer では、すべてのメディアが MediaItem で表現されます。ただし、 内部では、コンテンツを再生するためにプレーヤーに MediaSource インスタンスが必要です。「 プレーヤーは、MediaSource.Factory を使用してメディア アイテムからこれらを作成します。

デフォルトでは、プレーヤーは DefaultMediaSourceFactory を使用します。これにより、 次のコンテンツ MediaSource 実装のインスタンス:

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: 複数のメディアソースを結合して並行して再生します。イン ほとんどのケースでは、 adjustPeriodTimeOffsetsclipDurations を true に設定して、 ソースの開始と終了が同時になります。この変更を行って サイドローディングされた字幕がある場合は、 MediaItem.SubtitleConfiguration をご利用ください。
  • ConcatenatingMediaSource2: 複数のメディアソースを結合して再生します。 できます。ユーザーに表示されるメディア構造は、1 つの Timeline.Window: 単一のアイテムのように見えます。もし 想定外の複数のアイテムが再生されるように変更が行われる 次のような playlist API メソッドを使用することをおすすめします。 代わりに Player.addMediaItem を使用してください。
  • SilenceMediaSource: 指定された時間の間、無音を生成します。 ギャップを埋めるのに役立ちます
  • AdsMediaSource: クライアントサイドの広告挿入でメディアソースを拡張します 提供します詳しくは、広告挿入ガイドをご覧ください。
  • ServerSideAdInsertionMediaSource: メディアソースをサーバーサイド広告で拡張します。 挿入機能も備えています詳しくは、広告挿入ガイドをご覧ください。