playlist API, kolayca oluşturulabilen MediaItem
örneklerini temel alır
MediaItem.Builder
kullanılıyor. Oynatıcının içindeki bir MediaItem
,
MediaSource.Factory
tarafından oynanabilir MediaSource
. Yok:
özel yapılandırma kullanıyorsanız
Bu dönüşüm, DefaultMediaSourceFactory
tarafından gerçekleştirilir.
özelliklerine karşılık gelen karmaşık medya kaynakları oluşturabilme
medya öğesi. Medya öğelerinde ayarlanabilecek bazı özellikler
bölümüne göz atın.
Basit medya öğeleri
fromUri
ile yalnızca akış URI'sından oluşan bir medya öğesi oluşturulabilir
kolaylık yöntemi:
Kotlin
val mediaItem = MediaItem.fromUri(videoUri)
Java
MediaItem mediaItem = MediaItem.fromUri(videoUri);
Diğer tüm durumlarda MediaItem.Builder
kullanılabilir. Aşağıdaki örnekte,
medya öğesi, bir kimlik ve bazı ekli meta verilerle oluşturulur:
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();
Meta veri eklemek şu konularda faydalı olabilir: uygulamanızın kullanıcı arayüzünü güncelleme oynatma listesi geçişleri gerçekleştiğinde söz konusu olabilir.
Resimler
Resimlerin oynatılması için medya öğesinde ne kadar süreyle bir süre belirtilmesi gerektiğinin belirtilmesi gerekir oynatma sırasında resim gösterilir. Bkz. Daha fazla bilgi için Görseller rehber sayfası Hareketli Fotoğraflar ve Resim Yükleme Kitaplıkları (örneğin, Glide).
Kotlin
val mediaItem = MediaItem.Builder().setUri(imageUri).setImageDurationMs(3000).build()
Java
MediaItem mediaItem = new MediaItem.Builder().setUri(imageUri).setImageDurationMs(3_000).build();
Uyarlanabilir medya için standart olmayan dosya uzantıları
ExoPlayer; DASH, HLS ve SmoothStreaming. Bu tür bir uyarlanabilir medya öğesinin URI'sı bir standart dosya uzantısını yüklediğinizde ilgili medya kaynağı otomatik olarak oluşturulur. Öğe URI'nin standart dışı bir uzantısı varsa veya hiç uzantısı yoksa MIME türü değeri açıkça medya öğesinin türünü belirtecek şekilde ayarlanmalıdır:
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();
Progresif medya akışları için MIME türü gerekli değildir.
Korumalı içerik
Korunan içerik için medya öğesinin DRM özellikleri ayarlanmalıdır. UUID gerekliyse, diğer tüm özellikler isteğe bağlıdır.
Widevine DRM ile korunan bir öğenin oynatılması için örnek yapılandırmada Lisans URI'si doğrudan medyada kullanılamaz (ör. bir DASH oynatma listesinde) ve birden fazla oturum gerekli (ör. anahtar rotasyonu nedeniyle):
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();
İç mekan
oynatıcıya gönderilirse DefaultMediaSourceFactory
bu özellikleri
DrmSessionManager
almak için DrmSessionManagerProvider
. Bu durumda
, oluşturulan MediaSource
öğesine eklendi. DRM davranışı,
daha fazla özelleştirilmiş
seçin.
Altyazı parçalarını başka cihazdan yükleme
Altyazı parçalarını başka cihazdan yüklemek için aşağıdaki durumlarda MediaItem.Subtitle
örnek eklenebilir:
medya öğesi oluşturma:
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
dahili olarak MergingMediaSource
kullanarak
içerik medya kaynağını her biri için bir SingleSampleMediaSource
ile birleştirin
altyazı parçası. DefaultMediaSourceFactory
başka cihazdan yüklemeyi desteklemiyor
çok dönemli DASH altyazıları.
Medya akışı oluşturma
Bir medya öğesinin atıfta bulunduğu içerikten klip oluşturmak için başlangıç ve bitiş konumları:
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
dahili olarak sarmalamak için ClippingMediaSource
kullanır
içerik medya kaynağı. Başka kırpma özellikleri var. Bkz.
Ayrıntılı bilgi için MediaItem.Builder
Javadoc.
Reklam ekleme
Reklam eklemek için bir medya öğesinin reklam etiketi URI özelliği ayarlanmalıdır:
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
, dahili olarak içerik medya kaynağını
Reklamları reklam etiketinde tanımlanan şekilde eklemek için AdsMediaSource
. Bunun işe yarayabilmesi için
oyuncunun DefaultMediaSourceFactory
olması da gerekir
uygun şekilde yapılandırılmalıdır.