再生リスト API は MediaItem
インスタンスをベースとしており、簡単に構築できます。
MediaItem.Builder
を使用します。プレーヤー内で、MediaItem
が
MediaSource.Factory
で再生可能な MediaSource
。なし
カスタム設定
この変換は DefaultMediaSourceFactory
によって行われます。
サイトのプロパティに対応する複雑なメディアソースを
指定します。メディア アイテムに設定できるプロパティの一部について、
ご覧ください
シンプルなメディア アイテム
ストリーム URI のみで構成されるメディア アイテムは、fromUri
で作成できます。
メソッド:
Kotlin
val mediaItem = MediaItem.fromUri(videoUri)
Java
MediaItem mediaItem = MediaItem.fromUri(videoUri);
それ以外の場合は MediaItem.Builder
を使用できます。次の例では、
メディア アイテムは、ID といくつかの添付メタデータを使用して作成されます。
Kotlin
val mediaItem = MediaItem.Builder().setMediaId(mediaId).setTag(myAppData).setUri(videoUri).build()
Java
MediaItem mediaItem = new MediaItem.Builder().setMediaId(mediaId).setTag(myAppData).setUri(videoUri).build();
メタデータの添付は、 アプリの UI を更新する 再生リストの遷移が発生したとき。
画像
画像を再生するには、メディア アイテムで再生時間を指定する必要があります 再生中に画像を表示する必要があります。詳しくは、 詳細については、イメージのガイドページをご覧ください。 モーション フォト 画像読み込みライブラリ (例: Glide)。
Kotlin
val mediaItem = MediaItem.Builder().setUri(imageUri).setImageDurationMs(3000).build()
Java
MediaItem mediaItem = new MediaItem.Builder().setUri(imageUri).setImageDurationMs(3_000).build();
アダプティブ メディアの標準以外のファイル拡張子
ExoPlayer は、DASH、HLS、ML に対応したアダプティブなメディアソースを提供 SmoothStreamingそのようなアダプティブ メディア アイテムの URI の末尾が標準の 対応するメディアソースが自動的に作成されます。もし URI に標準以外の拡張子があるか、拡張子がない場合、MIME タイプは メディア アイテムのタイプを指定するように明示的に設定します。
Kotlin
val mediaItem = MediaItem.Builder().setUri(hlsUri).setMimeType(MimeTypes.APPLICATION_M3U8).build()
Java
MediaItem mediaItem = new MediaItem.Builder().setUri(hlsUri).setMimeType(MimeTypes.APPLICATION_M3U8).build();
プログレッシブ メディア ストリームの場合、MIME タイプは必要ありません。
保護されたコンテンツ
保護されたコンテンツについては、メディア アイテムの DRM プロパティを設定する必要があります。UUID は必須ですが、それ以外のプロパティはすべて省略可能です。
Widevine DRM で保護されたアイテムを再生する設定の例を以下に示します。 ライセンス URI がメディア(DASH プレイリストなど)で直接利用できない場合、かつ 複数のセッションが必要な場合(鍵のローテーションなど):
Kotlin
val mediaItem = MediaItem.Builder() .setUri(videoUri) .setDrmConfiguration( MediaItem.DrmConfiguration.Builder(C.WIDEVINE_UUID) .setLicenseUri(licenseUri) .setMultiSession(true) .setLicenseRequestHeaders(httpRequestHeaders) .build() ) .build()
Java
MediaItem mediaItem = new MediaItem.Builder() .setUri(videoUri) .setDrmConfiguration( new MediaItem.DrmConfiguration.Builder(C.WIDEVINE_UUID) .setLicenseUri(licenseUri) .setMultiSession(true) .setLicenseRequestHeaders(httpRequestHeaders) .build()) .build();
Google の
DefaultMediaSourceFactory
はこれらのプロパティを
DrmSessionManagerProvider
で DrmSessionManager
を取得します。その後、
作成された MediaSource
に挿入されます。DRM の動作は、
カスタマイズされ
カスタマイズが可能です。
字幕トラックのサイドローディング
字幕トラックをサイドローディングするには、次の場合に MediaItem.Subtitle
インスタンスを追加します。
メディア アイテムの作成:
Kotlin
val subtitle = SubtitleConfiguration.Builder(subtitleUri) .setMimeType(mimeType) // The correct MIME type (required). .setLanguage(language) // The subtitle language (optional). .setSelectionFlags(selectionFlags) // Selection flags for the track (optional). .build() val mediaItem = MediaItem.Builder().setUri(videoUri).setSubtitleConfigurations(listOf(subtitle)).build()
Java
MediaItem.SubtitleConfiguration subtitle = new MediaItem.SubtitleConfiguration.Builder(subtitleUri) .setMimeType(mimeType) // The correct MIME type (required). .setLanguage(language) // The subtitle language (optional). .setSelectionFlags(selectionFlags) // Selection flags for the track (optional). .build(); MediaItem mediaItem = new MediaItem.Builder() .setUri(videoUri) .setSubtitleConfigurations(ImmutableList.of(subtitle)) .build();
内部的には、DefaultMediaSourceFactory
は MergingMediaSource
を使用して以下を行います。
コンテンツ メディア ソースをそれぞれの SingleSampleMediaSource
と組み合わせる
サブタイトル トラックです。DefaultMediaSourceFactory
はサイドローディングをサポートしていません
複数期間 DASH のサブタイトルです。
メディア ストリームのクリップ
メディア アイテムが参照するコンテンツをクリップするには、カスタム 開始位置と終了位置:
Kotlin
val mediaItem = MediaItem.Builder() .setUri(videoUri) .setClippingConfiguration( MediaItem.ClippingConfiguration.Builder() .setStartPositionMs(startPositionMs) .setEndPositionMs(endPositionMs) .build() ) .build()
Java
MediaItem mediaItem = new MediaItem.Builder() .setUri(videoUri) .setClippingConfiguration( new ClippingConfiguration.Builder() .setStartPositionMs(startPositionMs) .setEndPositionMs(endPositionMs) .build()) .build();
内部的には、DefaultMediaSourceFactory
は ClippingMediaSource
を使用してラップします。
コンテンツメディアソースを指定します他にもクリップ プロパティがあります。詳しくは、
MediaItem.Builder
Javadoc をご覧ください。
広告の挿入
広告を挿入するには、メディア アイテムの広告タグ URI プロパティを次のように設定する必要があります。
Kotlin
val mediaItem = MediaItem.Builder() .setUri(videoUri) .setAdsConfiguration(MediaItem.AdsConfiguration.Builder(adTagUri).build())
Java
MediaItem mediaItem = new MediaItem.Builder() .setUri(videoUri) .setAdsConfiguration(new MediaItem.AdsConfiguration.Builder(adTagUri).build()) .build();
内部的には、DefaultMediaSourceFactory
はコンテンツ メディアソースを
AdsMediaSource
: 広告タグの定義に従って広告を挿入します。そのためには、
プレーヤーには DefaultMediaSourceFactory
も必要です。
適切に構成されている必要があります。