Medya3

Medya kullanım alanları için destek kitaplıkları.
Son Güncelleme Kararlı Sürüm Yayın Adayı Beta Sürümü Alfa Sürümü
26 Haziran 2024 1.3.1 - 1.4.0-beta01 1.4.0-alfa02

Bağımlılıkları bildirme

Media3'e bağımlılık eklemek için projenize Google Maven deposunu eklemeniz gerekir. Daha fazla bilgi için Google'ın Maven deposunu okuyun.

Uygulamanız veya modülünün build.gradle dosyasına ihtiyaç duyduğunuz yapılar için bağımlılıkları ekleyin:

Modern

dependencies {
    def media3_version = "1.3.1"

    // For media playback using ExoPlayer
    implementation "androidx.media3:media3-exoplayer:$media3_version"

    // For DASH playback support with ExoPlayer
    implementation "androidx.media3:media3-exoplayer-dash:$media3_version"
    // For HLS playback support with ExoPlayer
    implementation "androidx.media3:media3-exoplayer-hls:$media3_version"
    // For SmoothStreaming playback support with ExoPlayer
    implementation "androidx.media3:media3-exoplayer-smoothstreaming:$media3_version"
    // For RTSP playback support with ExoPlayer
    implementation "androidx.media3:media3-exoplayer-rtsp:$media3_version"
    // For MIDI playback support with ExoPlayer (see additional dependency requirements in
    // https://github.com/androidx/media/blob/release/libraries/decoder_midi/README.md)
    implementation "androidx.media3:media3-exoplayer-midi:$media3_version"
    // For ad insertion using the Interactive Media Ads SDK with ExoPlayer
    implementation "androidx.media3:media3-exoplayer-ima:$media3_version"

    // For loading data using the Cronet network stack
    implementation "androidx.media3:media3-datasource-cronet:$media3_version"
    // For loading data using the OkHttp network stack
    implementation "androidx.media3:media3-datasource-okhttp:$media3_version"
    // For loading data using librtmp
    implementation "androidx.media3:media3-datasource-rtmp:$media3_version"

    // For building media playback UIs
    implementation "androidx.media3:media3-ui:$media3_version"
    // For building media playback UIs for Android TV using the Jetpack Leanback library
    implementation "androidx.media3:media3-ui-leanback:$media3_version"

    // For exposing and controlling media sessions
    implementation "androidx.media3:media3-session:$media3_version"

    // For extracting data from media containers
    implementation "androidx.media3:media3-extractor:$media3_version"

    // For integrating with Cast
    implementation "androidx.media3:media3-cast:$media3_version"

    // For scheduling background operations using Jetpack Work's WorkManager with ExoPlayer
    implementation "androidx.media3:media3-exoplayer-workmanager:$media3_version"

    // For transforming media files
    implementation "androidx.media3:media3-transformer:$media3_version"

    // For applying effects on video frames
    implementation "androidx.media3:media3-effect:$media3_version"

    // For muxing media files
    implementation "androidx.media3:media3-muxer:$media3_version"

    // Utilities for testing media components (including ExoPlayer components)
    implementation "androidx.media3:media3-test-utils:$media3_version"
    // Utilities for testing media components (including ExoPlayer components) via Robolectric
    implementation "androidx.media3:media3-test-utils-robolectric:$media3_version"

    // Common functionality for reading and writing media containers
    implementation "androidx.media3:media3-container:$media3_version"
    // Common functionality for media database components
    implementation "androidx.media3:media3-database:$media3_version"
    // Common functionality for media decoders
    implementation "androidx.media3:media3-decoder:$media3_version"
    // Common functionality for loading data
    implementation "androidx.media3:media3-datasource:$media3_version"
    // Common functionality used across multiple media libraries
    implementation "androidx.media3:media3-common:$media3_version"
}

Kotlin

dependencies {
    val media3_version = "1.3.1"

    // For media playback using ExoPlayer
    implementation("androidx.media3:media3-exoplayer:$media3_version")

    // For DASH playback support with ExoPlayer
    implementation("androidx.media3:media3-exoplayer-dash:$media3_version")
    // For HLS playback support with ExoPlayer
    implementation("androidx.media3:media3-exoplayer-hls:$media3_version")
    // For SmoothStreaming playback support with ExoPlayer
    implementation("androidx.media3:media3-exoplayer-smoothstreaming:$media3_version")
    // For RTSP playback support with ExoPlayer
    implementation("androidx.media3:media3-exoplayer-rtsp:$media3_version")
    // For MIDI playback support with ExoPlayer (see additional dependency requirements in
    // https://github.com/androidx/media/blob/release/libraries/decoder_midi/README.md)
    implementation("androidx.media3:media3-exoplayer-midi:$media3_version")
    // For ad insertion using the Interactive Media Ads SDK with ExoPlayer
    implementation("androidx.media3:media3-exoplayer-ima:$media3_version")

    // For loading data using the Cronet network stack
    implementation("androidx.media3:media3-datasource-cronet:$media3_version")
    // For loading data using the OkHttp network stack
    implementation("androidx.media3:media3-datasource-okhttp:$media3_version")
    // For loading data using librtmp
    implementation("androidx.media3:media3-datasource-rtmp:$media3_version")

    // For building media playback UIs
    implementation("androidx.media3:media3-ui:$media3_version")
    // For building media playback UIs for Android TV using the Jetpack Leanback library
    implementation("androidx.media3:media3-ui-leanback:$media3_version")

    // For exposing and controlling media sessions
    implementation("androidx.media3:media3-session:$media3_version")

    // For extracting data from media containers
    implementation("androidx.media3:media3-extractor:$media3_version")

    // For integrating with Cast
    implementation("androidx.media3:media3-cast:$media3_version")

    // For scheduling background operations using Jetpack Work's WorkManager with ExoPlayer
    implementation("androidx.media3:media3-exoplayer-workmanager:$media3_version")

    // For transforming media files
    implementation("androidx.media3:media3-transformer:$media3_version")

    // For applying effects on video frames
    implementation("androidx.media3:media3-effect:$media3_version")

    // For muxing media files
    implementation("androidx.media3:media3-muxer:$media3_version")

    // Utilities for testing media components (including ExoPlayer components)
    implementation("androidx.media3:media3-test-utils:$media3_version")
    // Utilities for testing media components (including ExoPlayer components) via Robolectric
    implementation("androidx.media3:media3-test-utils-robolectric:$media3_version")

    // Common functionality for reading and writing media containers
    implementation("androidx.media3:media3-container:$media3_version")
    // Common functionality for media database components
    implementation("androidx.media3:media3-database:$media3_version")
    // Common functionality for media decoders
    implementation("androidx.media3:media3-decoder:$media3_version")
    // Common functionality for loading data
    implementation("androidx.media3:media3-datasource:$media3_version")
    // Common functionality used across multiple media libraries
    implementation("androidx.media3:media3-common:$media3_version")
}

Bağımlılıklar hakkında daha fazla bilgi için Derleme Bağımlılıkları Ekleme bölümüne bakın.

Geri bildirim

Geri bildiriminiz Jetpack'i iyileştirmemize yardımcı olacaktır. Sorulara, bilinen sorunlara ve özellik isteklerine yanıt bulmak ve yeni sorunları bildirmek için Media3 sorun izleyicisini kullanabilirsiniz.

Sürüm 1.4.0

Sürüm 1.4.0-beta01

26 Haziran 2024

androidx.media3:media3-*:1.4.0-beta01 yayınlandı. Sürüm 1.4.0-beta01 bu taahhütleri içerir.

  • ExoPlayer:
    • Exoplayer.release() adlı cihazın çağrılıp çağrılmadığını kontrol etmek için ExoPlayer.isReleased() ekleyin.
    • seekToPrevious() öğesinin önceki öğeye arama yapacağı maksimum konumu yapılandırmak için ExoPlayer.Builder.setMaxSeekToPreviousPositionMs değerini ekleyin (#1425).
  • Dönüştürücü:
    • ExportResult.processedInputs alanını kaldır. Bu alanı codec ayrıntıları için kullanıyorsanız bunun yerine DefaultDecoderFactory.listener değerini kullanın. Bir codec istisnası olması durumunda codec ayrıntıları ExportException.codecInfo içinde yer alır.
  • Ayıklayıcılar:
    • AVI kapsayıcılarında PCM ses biçimi ayıklama sorunu düzeltildi.
  • Resim:
    • Daha önce ayarlanmış bir ImageOutput öğesini temizlemek için ExoPlayer.setImageOutput için null parametresine izin verin.
  • Sonuç:
    • Yer paylaşımının dinamik aralığı ve karenin eşleşmesi gerektiğinden kullanılmayan OverlaySettings.useHdr öğesini kaldırın.
    • TextOverlay için HDR desteği ekleyin. Metin yer paylaşımının parlaklığı OverlaySettings.setHdrLuminanceMultiplier ile ayarlanabilir.
  • Oturum:
    • Belirli bir kumandadan gelen bir dizi oyuncu etkileşimi bittiğinde oturumları bilgilendirmek için MediaSession.Callback.onPlayerInteractionFinished ekleyin.
    • Hata hakkında daha fazla bilgi sağlamak ve mümkünse hatanın nasıl çözüleceğini sağlamak için SessionError ekleyip hata kodu yerine SessionResult ve LibraryResult içinde kullanın.
    • Medya oturumu yayınlayan uygulamalarla olan etkileşimleri test etmek için kullanılabilecek media3 denetleyici test uygulamasının kodunu yayınlayın.
    • media3'ün MediaSession[Builder].setSessionExtras() öğesine aktarılan ekstraları bir medya1 denetleyicisinin PlaybackStateCompat.getExtras() öğesine uygulayın.
    • Platform oturumu ile önemli ve önemsiz hataları eşleştirin. Bir PlaybackException, PlaybackStateCompat için önemli bir hata durumuyla eşlendi. Medya bildirim denetleyicisine MediaSession.sendError(ControllerInfo, SessionError) ile gönderilen bir SessionError, PlaybackStateCompat ürününde önemli olmayan bir hatayla eşlenir. Bu, hata kodu ve mesajın ayarlandığı ancak platform oturumunun durumunun STATE_ERROR ile farklı kaldığı anlamına gelir.
  • Kullanıcı arayüzü:
    • Bir ExoPlayer cihazına bağlandığında PlayerView için resim görüntüleme desteği ekleyin (#1144).
    • Genel geçersiz kılmalar (#1200) yerine, PlayerView örneği başına farklı çekilebilir öğelere izin vermek için PlayerControlView ile xml özellikleri arasında çeşitli simgelerin özelleştirmesini ekleyin.
  • HLS Uzantısı:
    • Birincil olmayan oynatma listelerinin canlı oynatma sırasında yenilenmemesine neden olan hatayı düzeltin (#1240).
  • Kullanımdan kaldırılan simgeleri kaldırın:
    • Bundleable arayüzünü kaldır. Bu işlem, Bundleable.Creator<Foo> CREATOR sabit değer alanlarının tümünün kaldırılmasını içerir. Arayanlar bunun yerine her tür için Bundle toBundle() ve static Foo fromBundle(Bundle) yöntemlerini kullanmalıdır.

Sürüm 1.4.0-alpha02

7 Haziran 2024

androidx.media3:media3-*:1.4.0-alpha02 yayınlandı. Sürüm 1.4.0-alpha02 bu kaydetmeleri içerir.

  • Ortak Kitaplık:
    • İşlem dışı olduğu varsayılan arama çağrılarını yoksaymak yerine korunan BasePlayer.seekTo ve SimpleBasePlayer.handleSeek yöntemlerine yönlendirin. Bu yöntemleri özel bir oynatıcıda uyguluyorsanız bu ek çağrıları mediaItemIndex == C.INDEX_UNSET ile işlemeniz gerekebilir.
    • Geliştirilmiş Java 8 kod çözme işlemine yönelik derleme bağımlılığını kaldırın (#1312).
    • MediaItem.Builder.setImageDurationMs öğesine iletilen sürenin, resim olmayan bir MediaItem için (belirtildiği gibi) yoksayıldığından emin olun.
  • ExoPlayer:
    • Önceden yükleme yöneticisi örneğini korurken tüm bekletme kaynaklarını serbest bırakmak için BasePreloadManager öğesine reset ekleyin.
    • PriorityTaskManager'de kullanılan öncelik değerini ve API 35'ten MediaCodec önemini tanımlamak için ExoPlayer.setPriority (ve Builder.setPriority) ekleyin.
    • CMCD'de (#1124) bs (arabellek eksikliği) anahtarının yanlış şekilde gösterilmesine neden olan son yeniden arabellek zamanının güncellenmesiyle ilgili sorunu düzeltin.
    • Kaynağın sonuna kadar yüklendiğini belirtmek için PreloadMediaSource.PreloadControl.onLoadedToTheEndOfSource(PreloadMediaSource) ekleyin. Bu, DefaultPreloadManager ve özel PreloadMediaSource.PreloadControl uygulamalarının bir sonraki kaynağı önceden yüklemesine veya başka işlemler yapmasına olanak tanır.
    • Öğelerin sonundaki sessiz atlama işleminin oynatma istisnasını tetikleyebileceği hatayı düzeltin.
    • Önceden yükleme süresini silmek için PreloadMediaSource alanına clear ekleyin.
    • Daha yüksek öncelikli görevler için codec kaynakları geri çekildiğinde kullanılan yeni hata kodunu (PlaybackException.ERROR_CODE_DECODING_RESOURCES_RECLAIMED) ekleyin.
    • İlk içerik medyası hazırlığı tamamlanmadan önce AdsMediaSource ürününün videodan önce gösterilen reklamları yüklemesine izin verin (#1358).
    • Orijinal dönemin manifest'ten kaldırıldıktan sonra çok dönemli DASH canlı yayını yeniden hazırlanırken oynatmanın STATE_ENDED bölümüne taşındığı hatayı düzeltin.
    • PreloadMediaSource.PreloadControl grubunda onTimelineRefreshed adlı kullanıcının adını onSourcePrepared ve onPrepared adlı kullanıcının adını onTracksSelected olarak değiştirin. Ayrıca, DefaultPreloadManager.Stage içindeki IntDef'leri de uygun şekilde yeniden adlandırın.
    • İşleri CPU uyanık kalma döngüleriyle daha iyi hizalamak ve oluşturucuların ilerlemeye devam edebileceği zamanları geciktirmek için dinamik planlama için deneysel destek ekleyin. Bunu, ExoPlayer örneğinizi ayarlarken experimentalSetDynamicSchedulingEnabled kullanarak etkinleştirebilirsiniz.
    • Renderer.getDurationToProgressMs ekleyin. Renderer, oluşturucunun ilerlemesi için oynatmanın ilerlemesi gereken süreyi ExoPlayer'a döndürmek amacıyla bu yöntemi uygulayabilir. ExoPlayer, experimentalSetDynamicSchedulingEnabled ile ayarlanırsa ExoPlayer, iş görevini planlamak için gereken süreyi hesaplarken bu yöntemi çağırır.
    • Giriş ve çıkış arabellekleri MediaCodecRenderer tarafından kullanılabilir olduğunda uyarı vermek için MediaCodecAdapter#OnBufferAvailableListener ekleyin. MediaCodecRenderer, bu geri çağırmaları alırken ExoPlayer sinyalini verir. ExoPlayer, experimentalSetDynamicSchedulingEnabled olarak ayarlanırsa ExoPlayer, oluşturucular ilerleme kaydedildikçe iş döngüsünü planlar.
    • LoadControl yöntemleri için ayrı parametreler yerine veri sınıfını kullanın.
  • Dönüştürücü:
    • PCM girişi işlenirken ses kanalı sayısının stereo olarak sınırlandırıldığı kod çözücü hatasını gidermeye çalışın.
    • ExoPlayerAssetLoader içinde parçaları seçerken, yalnızca oynatma için geçerli oldukları için ses kanalı sayısı kısıtlamalarını yoksayın.
    • androidx.media3.transformer.Muxer arayüzünü androidx.media3.muxer.Muxer ile değiştirin ve androidx.media3.transformer.Muxer öğesini kaldırın.
    • İçerik URI şemalarından HEIC resim yükleme sorunu düzeltildi. (#1373).
    • AV senkronizasyonunu iyileştirmek için ses parçası süresini AudioGraphInput uygulamasında ayarlayın.
  • Ayıklayıcılar:
    • MPEG-TS: Bir akışın son erişim birimini örnek sırasına geçirerek son karenin oluşturulmasını sağlayacak şekilde değişikliği ileri alın (#7909). Yalnızca I-Frame HLS akışlarında(#1150) ve H.262 HLS akışlarında (#1126) ortaya çıkan sorunları çözmek için düzeltmeler uygulama.
    • MP3: Temel akışın bildirdiği boyut yerine Info karesindeki veri boyutunu tercih edin (ör. dosya boyutu veya HTTP Content-Length üst bilgisi). Bu, oynatılamayan fragman verilerinin (ör. albüm posteri) sabit bit hızı arama hesaplamalarından hariç tutulmasına yardımcı olarak arama sonuçlarının daha doğru olmasını sağlar (#1376).
    • MP3: Yapay olarak küçük olabilen Info kareden (ör.PCUT kare (#1376)) sonra karenin bit hızından ayıklama yapmak yerine, sabit bit hızı sarma için ortalama bir bit hızı hesaplamak üzere Info karesindeki kare sayısını ve diğer verileri (varsa) kullanın. (#1376).
  • Ses:
    • Geçiş oynatma için DTS:X Profile 2 kodlama özelliklerini düzeltin (#1299).
    • Kaldırılan oynatma için, bekleyen tüm verilerin oynatıldığı zamanı AudioTrack.StreamEventCallback#onPresentationEnded doğru şekilde tanımlaması amacıyla, AudioTrack.stop() çağrısından önce DefaultAudioSink içindeki akış tamamlama izleme alanını sıfırlayın.
    • SilenceSkippingAudioProcessor sürümünde, farklı ses biçimleri arasındaki geçişlerin (örneğin, stereodan monoya) işlemcinin istisna yapmasına neden olabileceği hatayı düzeltin (#1352).
    • ExoPlayer'ın, ana iş döngüsünü MediaCodecAudioRenderer'ın ilerleme kaydedebileceği zamana dinamik olarak planlaması için MediaCodecAudioRenderer.getDurationToProgressUs uygulayın.
  • Video:
    • Gerekirse Dolby Vision'ın uyumlu bir AV1 kod çözücü kullanması için kod çözücü yedek mantığını düzeltin (#1389).
  • Kısa mesaj:
    • Konumu atlamadan önce başlayan altyazıların atlanmasıyla ilgili sorun düzeltildi. Bu sorun yalnızca Media3 1.4.0-alpha01 sürümünde kullanıma sunulmuştur.
    • Varsayılan altyazı ayrıştırma davranışını, oluşturma işlemi yerine ayıklama sırasında gerçekleşecek şekilde değiştirin (ayıklama ve oluşturma arasındaki fark için ExoPlayer'ın mimari şemasına bakın).
      • Bu değişiklik, her ikisi de MediaSource.Factory.experimentalParseSubtitlesDuringExtraction(false) ve TextRenderer.experimentalSetLegacyDecodingEnabled(true) çağrısı yapılarak geçersiz kılınabilir. Bu bileşenleri bir ExoPlayer örneğine nasıl yerleştireceğinizi öğrenmek için özelleştirme belgelerine bakın. Bu yöntemler (ve eski altyazı kodunu çözme için tüm destek) gelecekteki bir sürümde kaldırılacaktır.
      • Özel SubtitleDecoder uygulamaları olan uygulamaların, bunun yerine SubtitleParser (ve SubtitleDecoderFactory yerine SubtitleParser.Factory) uygulamasını kullanacak şekilde bunları güncellemesi gerekir.
    • PGS: Değişmez renk değeri yerine 0 öğesini renk dizini olarak çözümlemek için çalışma uzunluğu kod çözmeyi düzeltin (#1367).
    • CEA-708: rowLock değerini yoksayın. CEA-708-E S-2023 spesifikasyonunda, akışta bulunan değerler ne olursa olsun rowLock ve columnLock değerlerinin doğru olarak kabul edilmesi gerektiği belirtilmektedir (columnLock desteği uygulanmadığından etkin bir şekilde her zaman yanlış olduğu varsayılır).
      • Bu değişiklik, başlangıçta 1.3.0-alpha01 sürüm notlarında yer alıyordu, ancak değişiklik yanlışlıkla 1.3.0-rc01 sürümünden önce geri alındı. Bu sorun giderilmiştir ve değişiklik yeniden uygulanır.
    • CEA-708: ExoPlayer'ın "kalem konumunu ayarla" komutunu yetkisiz bir şekilde işlemesi tarafından yinelenen yeni satırlar eklenmesini önleyin (#1315).
  • Üst veri:
    • MP4 ile ID3 sıralama etiketlerinin eşlenmesi düzeltildi. Daha önce, "albüm sıralaması" (soal), "sanatçı sıralama" (soar) ve "albüm sanatçısı sıralama" (soaa) MP4 etiketleri, TSO2, TSOA ve TSOP ID3 etiketleriyle (#1302) yanlış bir şekilde eşleniyordu.
    • Değer bir bayttan uzun olduğunda MP4 (/iTunes) sayısal gnre (tür) ve tmpo (tempo) etiketlerinin okunması düzeltildi.
    • ID3 TCON karesini MediaMetadata.genre öğesine uygulayın (#1305).
  • Resim:
    • Kare olmayan DASH küçük resim ızgaraları için destek ekleyin (#1300).
    • API 34 ve sonraki sürümler için AVIF desteği ekleyin.
  • Veri Kaynağı:
    • Yapım sırasında sabit kodlanmak yerine, ByteArrayDataSource ürününün open() sırasında bir bayt dizisine URI çözümlemesine izin verin (#1405).
  • DRM:
    • DefaultDrmSessionManagerProvider üzerinde LoadErrorHandlingPolicy ayarlamaya izin ver (#1271).
  • Sonuç:
    • ExoPlayer#setVideoEffects ile kullanıldığında TimestampWrapper öğesinin kilitlendiği hatayı düzeltin (#821).
    • Varsayılan SDR renk çalışma alanını doğrusal renklerden elektrikli BT 709 SDR videoya dönüştürün. Ayrıca orijinal renk alanını korumak için üçüncü seçeneği de sağlayın.
    • EditedMediaItemSequences'ın belirsiz z sırasını tanımlamaya izin ver (#1055).
    • Farklı HDR içerik parçalarında tutarlı bir parlaklık aralığı koruyun (HLG aralığını kullanır).
    • HDR içeriklerde Ultra HDR (bit eşlem) yer paylaşımları için destek eklendi.
    • SeparableConvolution efektlerinin API 26'dan önce kullanılmasına izin ver.
  • IMA uzantısı:
    • Uygulamaların DAI reklam akışlarını oynatarak kararlı bir şekilde çalışması için gerekli olan API'yi tanıtın.
    • Çalışma zamanında reklam etiketi parametrelerinin değiştirilmesini sağlayan replaceAdTagParameters(Map <String, String>) öğesini ImaServerSideAdInsertionMediaSource.AdLoader içine ekleyin.
    • Reklam oynatma sırasında oynatıcı hatası oluştuğunda VideoAdPlayer.VideoAdPlayerCallback.onError çağrılmadığı hata düzeltildi (#1334).
    • data:// reklam etiketi URI'leri kullanırken NullPointerException sorununu düzeltmek için IMA SDK sürümünü 3.33.0'a yükseltin (#700).
  • Oturum:
    • Süreyi platform oturumu meta verilerine ayarlamayarak canlı yayınların medya bildirimlerinde sarma çubuğunu gizleyin (#1256).
    • Meta veri özelliklerini seçerken media1'deki ile aynı tercih edilen sıra ve mantığı kullanmak için MediaMetadata dönüşümünü MediaDescriptionCompat değerine hizalayın.
    • Önemli olmayan hataların Media3 denetleyicisine gönderilmesine izin veren MediaSession.sendError() ekleyin. Bildirim denetleyici kullanılırken (bkz. MediaSession.getMediaNotificationControllerInfo()) özel hata, platform oturumunun PlaybackState değerini verilen hata bilgileriyle birlikte bir hata durumuna güncellemek için kullanılır (#543).
  • Cronet Uzantısı:
    • CronetDataSource için SocketTimeoutException hatasını düzeltin. Cronet'in bazı sürümlerinde, geri arama tarafından sağlanan istek her zaman aynı olmaz. Bu durum, geri arama işleminin tamamlanmamasına ve isteğin zaman aşımına uğramasına neden olur (https://ISSUEtracker.google.com/328442628).
  • HLS Uzantısı:
    • Süreksizlik bekleyen bekleyen EMSG örneklerinin HlsSampleStreamWrapper içinde yanlış ofsetle (IndexOutOfBoundsException veya IllegalArgumentException) neden olduğu hata düzeltildi (#1002).
    • Birincil olmayan oynatma listelerinin LL-HLS akışları için yeniden yüklenmeye devam etmesiyle ilgili hatayı düzeltin (#1240).
    • Başlatma segmentleriyle CMCD'yi etkinleştirmenin Source Error ve IllegalArgumentException ile sonuçlandığı hatayı düzeltin.
  • DASH Uzantısı:
    • Çok dönemli canlı yayının yeniden hazırlanmasının neden olabileceği hata düzeltildi. IndexOutOfBoundsException (#1329).
    • dashif:Laurl lisans URL'leri için destek ekleyin (#1345).
  • Cast Uzantısı:
    • MediaQueueItem öğesinin albüm başlığını Media3 medya öğesindeki sanatçıya dönüştüren hatayı düzeltin (#1255).
  • Demo uygulama:
    • Komut satırından Intent bağımsız değişkenle tekrarlama modunu ayarlamaya izin ver (#1266).
  • Kullanımdan kaldırılan simgeleri kaldırın:
    • setContentTypePredicate(Predicate) yöntemini DefaultHttpDataSource, OkHttpDataSource ve CronetDataSource adlı uygulamalardan kaldırın. Bunun yerine her XXXDataSource.Factory için eşdeğer yöntemi kullanın.
    • OkHttpDataSource oluşturucuyu ve OkHttpDataSourceFactory öğesini kaldırın. Bunun yerine OkHttpDataSource.Factory politikasını kullanın.
    • PlayerMessage.setHandler(Handler) öğesini kaldır Bunun yerine setLooper(Looper) politikasını kullanın.
    • Timeline.Window.isLive alanını kaldır. Bunun yerine isLive() yöntemini kullanın.
    • DefaultHttpDataSource oluşturucuyu kaldırın. Bunun yerine DefaultHttpDataSource.Factory kullanın.
    • DashMediaSource.DEFAULT_LIVE_PRESENTATION_DELAY_MS öğesini kaldır Bunun yerine DashMediaSource.DEFAULT_FALLBACK_TARGET_LIVE_OFFSET_MS kullanın.
    • MediaCodecInfo.isSeamlessAdaptationSupported(Format, Format, boolean) öğesini kaldır Bunun yerine MediaCodecInfo.canReuseCodec(Format, Format) politikasını kullanın.
    • DrmSessionManager.DUMMY ve getDummyDrmSessionManager() yöntemini kaldırın. Bunun yerine DrmSessionManager.DRM_UNSUPPORTED politikasını kullanın.
    • Kaldır: AnalyticsListener.onAudioInputFormatChanged(EventTime, Format), AnalyticsListener.onVideoInputFormatChanged(EventTime, Format), AudioRendererEventListener.onAudioInputFormatChanged(Format), VideoRendererEventListener.onVideoInputFormatChanged(Format). Bunun yerine DecoderReuseEvaluation alan aşırı yüklemeleri kullanın.
    • RendererSupport.FormatSupport IntDef ve FORMAT_HANDLED, FORMAT_EXCEEDS_CAPABILITIES, FORMAT_UNSUPPORTED_DRM, FORMAT_UNSUPPORTED_SUBTYPE, FORMAT_UNSUPPORTED_TYPE sabit değerlerini kaldırın. Bunun yerine, androidx.media3.common.C içinde eşdeğer IntDef ve sabit değerleri kullanın (ör. C.FORMAT_HANDLED).

Sürüm 1.4.0-alpha01

17 Nisan 2024

androidx.media3:media3-*:1.4.0-alpha01 yayınlandı. Sürüm 1.4.0-alpha01 bu kaydetmeleri içerir.

  • ExoPlayer:
    • rankingData tarafından tanımlanan önceliklere göre birden fazla kaynağın önceden yüklemeyi koordine eden BasePreloadManager ekleyin. Bu sınıfın genişletilmesiyle özelleştirme yapılabilir. Kaynakların medya örneklerini belleğe önceden yüklemek için PreloadMediaSource ve kullanıcı arayüzündeki bir öğenin dizinini gösteren bir tam sayı rankingData kullanan DefaultPreloadManager ekleyin.
    • Birden çok oynatıcıyı desteklemek üzere LoadControl uygulamalarını etkinleştirmek için çoğu LoadControl yöntemine PlayerId ekleyin.
    • Buffer.isDecodeOnly() ve C.BUFFER_FLAG_DECODE_ONLY kaldırın. Oluşturucular ve kod çözücüler zaman damgasına göre arabellekleri atlamaya karar vereceğinden bu işareti ayarlamaya gerek yoktur. Özel Renderer uygulamaları, bir örneğin gösterilip gösterilmeyeceğine karar vermek için arabellek süresinin en az BaseRenderer.getLastResetPositionUs() olup olmadığını kontrol etmelidir. Özel SimpleDecoder uygulamaları, gerekirse isAtLeastOutputStartTimeUs öğesini kontrol edebilir veya diğer arabellekleri DecoderOutputBuffer.shouldBeSkipped ile işaretleyebilir.
    • Verilen rankingData ile MediaSource öğesinin önceden yüklenmeyeceğini belirtmek için TargetPreloadStatusControl.getTargetPreloadStatus(T) tarafından boş değer döndürülmesine izin verin.
    • remove(MediaSource) adlı yeri BasePreloadManager alanına ekleyin.
  • Dönüştürücü:
    • ExportResult öğesine, çıkış dosyasındaki ilgili parçanın nasıl oluşturulduğunu belirten audioConversionProcess ve videoConversionProcess öğelerini ekleyin.
    • Kırpma optimizasyonu H.264 düzeyi kontrollerini gevşetin.
    • SDR ve HDR giriş medyası arasında sırayla geçiş yapma desteği eklendi.
    • Beste düzeyinde ses efektleri için destek ekleyin.
    • Ultra HDR görüntülerin kodunu HDR videolara dönüştürme desteği eklendi.
    • DefaultAudioMixer öğesinin, sıfırlanıp yeniden kullanıldıktan sonra doğru bayt miktarını oluşturmaması sorunu düzeltildi.
  • Video:
    • Oynatma sırasında yüzeyler arasında geçiş yaparken Listener.onRenderedFirstFrame() ürününün çok erken gelmesi sorunu düzeltin.
  • Veri Kaynağı:
    • package öğesinin mevcut uygulamanın paketinden farklı olduğu android.resource://package/id ham kaynak URI'leri için destek uygulayın. Bu, daha önce işe yaradığı belgelenmemişti ancak başka bir paketteki kaynaklara erişmek için ada göre daha verimli bir yöntemdir.
    • url öğesinin, DataSpec kurucularında null olmadığını dikkatlice kontrol edin. Bu parametreye zaten null olmayan bir açıklama eklendi.
  • Sonuç:
    • SpeedChangeEffect içinde aynı EditedMediaItem veya Composition içinde birden fazla hız değişikliklerini destekleyin.
    • Ultra HDR bit eşlem girişinden HLG ve PQ çıkışı desteği.
    • ExoPlayer.setVideoEffect ve Transformer'ın Debug SurfaceView uygulamasında HLG yüzey çıkışını iyileştiren EGL_GL_COLORSPACE_BT2020_HLG_EXT desteği eklendi.
    • setOverlayFrameAnchor() içinde uygulanan x ve y değerlerini çevirerek Katman matrisi uygulamasını belgelerle tutarlı olacak şekilde güncelleyin. OverlaySettings.Builder.setOverlayFrameAnchor() kullanıyorsanız x ve y değerlerini -1 ile çarparak çevirin.
  • Oturum:
    • CommandButton.enabled varsayılanını true olarak değiştirin ve ilişkili komut kullanılabilir olsa bile bu değerin kumandalar için yanlış kalabileceğinden emin olun.
    • CommandButton için özel simge kaynakları yerine kullanılması gereken simge sabitleri ekleyin.
    • Uygulamaların, onTaskRemoved() ürününde hizmetin durdurulması gerekip gerekmediğini sorgulamasına izin vermek için MediaSessionService.isPlaybackOngoing() kodunu ekleyin (#1219).
    • Tüm oturumların oynatılmasını kolayca duraklatmanıza olanak tanıyan MediaSessionService.pauseAllPlayersAndStopSelf() ekleyin ve MediaSessionService yaşam döngüsünü sonlandırmak için stopSelf çağrısı yapın.
    • Oynatma devam ediyorsa veya hizmet devam ediyorsa ön planda çalışmaya devam eden güvenli bir varsayılan uygulama sağlamak için MediaSessionService.onTaskRemoved(Intent) politikasını geçersiz kılın.
  • İndirilenler:
    • DownloadHelper hizmetinin yayınlanmamış Renderer örneklerini sızdırmadığından emin olun. Bu durum, ileride bir uygulamanın IllegalStateException: Too many receivers, total of 1000, registered for pid ile kilitlenmesine neden olabilir (#1224).
  • Test Yardımcı Programları:
    • FakeRenderer içinde onInit() ve onRelease() uygulayın.
    • TestPlayerRunHelper.runUntil/playUntil yöntemlerini önemli olmayan hatalarda (ör. AnalyticsListener.onVideoCodecError için bildirilenler) başarısız olacak şekilde değiştirin. Bu davranışı devre dışı bırakmak için yeni TestPlayerRunHelper.run(player).ignoringNonFatalErrors().untilXXX() yöntem zincirini kullanın.
  • Demo uygulama:
    • Kısa biçimli demo uygulamada DefaultPreloadManager kullanın.
  • Kullanımdan kaldırılan simgeleri kaldırın:
    • CronetDataSourceFactory öğesini kaldır Bunun yerine CronetDataSource.Factory politikasını kullanın.
    • Bazı DataSpec oluşturucuları kaldırın. Bunun yerine DataSpec.Builder politikasını kullanın.

Sürüm 1.3.0

Sürüm 1.3.1

11 Nisan 2024

androidx.media3:media3-*:1.3.1 yayınlandı. Sürüm 1.3.1 bu taahhütleri içerir.

  • Ortak Kitaplık:
    • Yerelleştirilmiş veya diğer alternatif etiketlere izin vermek için Format.labels ekleyin.
  • ExoPlayer:
    • Tekrar önceden yüklendiğinde akışların PreloadMediaPeriod tarafından tutulamamasıyla ilgili sorun düzeltildi.
    • Kanal yeniden seçimlerinde oynatma dönemine karşılık gelen doğru TrackSelectionResult değerini uygulayın.
    • Erken etkinleştirilmiş oluşturucuları yalnızca medya öğeleri arasında geçiş yaparken oynatma süresini artırdıktan sonra başlatın (#1017).
    • DefaultVideoFrameProcessor.Factory.Builder.build() için ProGuard -keepclasseswithmembers kuralına eksik dönüş türünü ekleyin (#1187).
  • Dönüştürücü:
    • MediaMuxer API 30'dan önceki negatif sunum zaman damgalarını desteklemediğinden atlanan istisnaya yönelik geçici çözüm ekleyin.
  • Parça Seçimi:
    • DefaultTrackSelector: Kare hızı düşük veya ayarlanmamış kare hızına sahip videolar yerine "makul" kare hızına (>=10 fps) sahip video parçalarını tercih edin. Bu sayede oynatıcı, biri daha yüksek çözünürlüğe ancak çok az sayıda kareye sahip iki HEVC parçası içerebilen, hareketli fotoğraflardan alınan MP4'lerdeki "gerçek" video parçasını seçer (#1051).
  • Ayıklayıcılar:
    • WAV dosyalarından tek boyutlu parçalar okunurken dolgunun atlanmamasına neden olan sorunu düzeltin (#1117).
    • MP3: Format.averageBitrate öğesini XING ve VBRI gibi meta veri çerçevelerinden doldurun.
    • MPEG-TS: Bir akışın son erişim birimini örnek sırasına geçirerek son karenin oluşturulmasını hedefleyen bir değişikliği geri döndürür (#7909). Bunun nedeni, değişikliğin yalnızca I-çerçeveli HLS akışları (#1150) ve H.262 HLS akışları (#1126) ile ilgili yeni sorunlara yol açmasıdır.
  • Ses:
    • Boşaltma modunda ses parçası başlatılamazsa boşaltma işlevini devre dışı bırakarak oluşturucu kurtarmaya izin verin.
  • Video:
    • Galaxy Tab S7 FE, Google TV'li Chromecast ve Lenovo M10 FHD Plus'ta 60 fps H265 akışlarının "desteklenmiyor" olarak işaretlenmesine neden olan bir cihaz sorunu için geçici çözüm ekleyin
    • Cihaz bunu API'nin gerektirdiği şekilde otomatik olarak yapmasa bile tünel oluştururken ilk karenin her zaman oluşturulmasını sağlayan geçici bir çözüm ekleyin (#1169). (#966).
    • HDR renk bilgisi işlemenin codec yanlış davranışına neden olduğu ve SDR video kanalları için uyarlanabilir biçim geçişlerini engellediği sorunu düzeltin (#1158).
  • Kısa mesaj:
    • WebVTT: Doğrudan ardışık işaretlerin WebvttParser.parse kaynağından yapay ek CuesWithTiming örnekleri oluşturmasını engelleyin (#1177).
  • DRM:
    • Bazı Android 14 cihazlarda ResourceBusyException veya NotProvisionedException yerine MediaDrm çerçevesinin atabileceği NoSuchMethodError sorununu çözümleyin (#1145).
  • Sonuç:
    • Renk alanlarını dönüştürerek PQ'dan SDR ton eşlemeye iyileştirme.
  • Oturum:
    • Kumanda geçerli öğenin yerini aldığında geçerli konumun geri dönmesi sorunu düzeltildi (#951).
    • Medya denetleyicileri ve oturumlar arasında yalnızca boş olmayan extras içeren MediaMetadata öğesinin iletilmemesiyle ilgili sorunu düzeltin (#1176).
  • Kullanıcı arayüzü:
    • Locale, görünen adı tanımlayamazsa (#988) ses parçası dil adını eklemek için yedek kullanılır.
  • DASH Uzantısı:
    • Manifest'teki tüm Label öğelerini Format.labels öğesine doldurun (#1054).
  • RTSP Uzantısı:
    • SDP ayrıştırmasında boş oturum bilgisi değerlerini (i-etiketler) atlayın (#1087).
  • Kod Çözücü Uzantıları (FFmpeg, VP9, AV1, MIDI vb.):
    • Ek bir Maven deposunun yapılandırılmasını gerektirdiğinden MIDI uzantısını varsayılan olarak yerel bağımlılık olarak devre dışı bırakın. Bu modüle bir yerel bağımlılıktan ihtiyaç duyan kullanıcılar bunu yeniden etkinleştirebilir.

Sürüm 1.3.0

6 Mart 2024

androidx.media3:media3-*:1.3.0 yayınlandı. Sürüm 1.3.0 bu taahhütleri içerir.

  • Ortak Kitaplık:
    • package değerinin mevcut uygulamanın paketinden farklı olduğu android.resource://package/[type/]name ham kaynak URI'leri için destek uygulayın. Bu yöntemin işe yaradığı zaten belgelenmiş olsa da şimdiye kadar doğru bir şekilde uygulanmadı.
    • Uygulama kodu tarafından ayarlanan MIME türlerini normalleştirin veya medyadan tamamen küçük harf olacak şekilde okuyun.
    • AdPlaybackState içinde tek bir Uri yerine tam MediaItem içeren reklamları tanımlayın.
    • minSdk değerini 19'a (Android KitKat) yükseltin. Bu, diğer tüm AndroidX kitaplıklarıyla uyumludur ve AndroidX bağımlılıklarımızın en son sürümlerine yükseltmemiz için gereklidir.
    • En az biri null olmadığında hem artworkUri hem de artworkData öğesini MediaMetadata.Builder.populate(MediaMetadata) içinde doldurun (#964).
  • ExoPlayer:
    • Uygulamaların bir içerik medya kaynağını oynatmadan önce belirli bir başlangıç konumunda önceden yüklemesine olanak tanıyan PreloadMediaSource ve PreloadMediaPeriod özelliklerini ekleyin. PreloadMediaSource, içerik medya kaynağını Timeline almak için hazırlar, dönemi belirtilen başlangıç konumunda hazırlar ve önbelleğe alır, kanalları seçer ve dönem için medya verilerini yükler. Uygulamalar, PreloadMediaSource.PreloadControl uygulayarak önceden yüklemenin ilerleme durumunu kontrol eder ve önceden yüklenmiş kaynağı oynatma için oynatıcıya ayarlar.
    • Uygulamaların ImageRenderer.ImageOutput özelliğini ayarlamasına izin veren ExoPlayer.setImageOutput ekleyin.
    • DefaultRenderersFactory, artık oynatıcıya varsayılan olarak null ImageOutput ve ImageDecoder.Factory.DEFAULT ile bir ImageRenderer sağlıyor.
    • Ses kapatma atlandığında Player.Listener.onPositionDiscontinuity etkinliği yayınlayın (#765).
    • Ayıklama sırasında altyazıların ayrıştırılması için deneysel destek ekleyin. Bu özelliği MediaSource.Factory.experimentalParseSubtitlesDuringExtraction() kullanarak etkinleştirebilirsiniz.
    • PreloadMediaSource ile uyarlanabilir medya kaynaklarını destekleyin.
    • HttpEngine API'sini kullanarak HttpEngineDataSource, HttpDataSource uygulayın.
    • CompositeSequenceableLoader alt sınıflandırmasını engelleyin. Bu bileşen daha önce genişletilebilir hale getirilmiş ancak hiçbir zaman kitaplıkta alt sınıflandırılmamıştı. Özelleştirmeler, dekoratör kalıbı aracılığıyla bir örneği sarmalayıp özel CompositeSequenceableLoaderFactory uygulayarak yapılabilir.
    • Aynı zamanı tekrar etmenin bu öğedeki meta verilerin silinmesine neden olduğu sorunu düzeltin (#1007).
    • BundledChunkExtractor.Factory ve DefaultHlsExtractorFactory üzerindeki experimentalSetSubtitleParserFactory yöntemlerini setSubtitleParserFactory olarak yeniden adlandırın ve null yönteminin aktarılmasına izin vermeyin. Ayrıştırma davranışını kontrol etmek için yeni experimentalParseSubtitlesDuringExtraction(boolean) yöntemlerini kullanın.
    • Çıkarma sırasında kullanılan SubtitleParser.Factory öğesinin özelleştirilmesi için destek ekleyin. Bu, MediaSource.Factory.setSubtitleParserFactory() ile elde edilebilir.
    • MergingMediaSource öğesinden oluşturulan tüm Format.id alanlarına kaynak ön eki ekleyin. Bu, hangi kaynağın Format ürettiğini belirlemeye yardımcı olur (#883).
    • Özel Ortak Medya İstemci Verileri (CMCD) anahtar adlarını doğrulamak için kullanılan normal ifadeyi, yalnızca kısa çizgiyi (#1028) kontrol edecek şekilde değiştirerek düzeltin.
    • CMCD sorgu parametrelerini çift kodlamayı durdurun (#1075).
  • Dönüştürücü:
    • H.265/HEVC SEF ağır çekim videolarını düzeltmek için destek ekleyin.
    • Özellikle "video kaldır" düzenlemelerinde işlem hızını artırın.
    • Çıkış dosyasının bir video karesinde başladığından emin olmak için API ekleyin. Bu, kırpma işlemlerinin sonucunu, sunum zaman damgasına (#829) kadar ilk video karesini göstermeyen oynatıcı uygulamalarıyla daha uyumlu hale getirebilir.
    • Tek öğeli MP4 kırpma işlemlerini optimize etmek için destek eklendi.
    • Bir video karesinin çıkış dosyasında ilk zaman damgasına sahip olmasını sağlamak için destek ekleyin. iOS tabanlı oynatıcılarda siyah çerçeveyle başlayan çıkış dosyalarını düzeltir (#829).
  • Parça Seçimi:
    • Resim parçası seçimini etkinleştirmek için DefaultTrackSelector.selectImageTrack ekleyin.
    • Hem resim kanalı hem de video kanalı mevcutsa resim kanalı seçip seçmeyeceğinizi belirlemek için TrackSelectionParameters.isPrioritizeImageOverVideoEnabled ekleyin. Varsayılan değer false, video kanalı seçmeye öncelik verildiği anlamına gelir.
  • Ayıklayıcılar:
    • ColorInfo.colorSpace, ColorInfo.colorTransfer ve ColorInfo.colorRange değerlerini almak için MP4 ayıklayıcıya ek AV1C ayrıştırma işlemi ekleyin (#692).
    • MP3: Info başlığına (Xing üstbilgisinin CBR eşdeğeri) sahip dosyaları aramak için sabit bit hızı (CBR) kullanın. Daha önce arama tablosunu Info başlığından kullanıyorduk, ancak bu durum, dosyayı yoksayıp dosyanın CBR olduğunu varsaydığımıza kıyasla daha az hassas aramayla sonuçlanıyor.
    • MPEG2-TS: DTS, DTS-LBR ve DTS:X Profile2 desteğini ekleyin (#275).
    • TS tanımlayıcılarından ses türlerini ayıklayın ve rol işaretleriyle eşleyin. Böylece kullanıcılar daha bilinçli ses parçası seçimleri yapabilir (#973).
  • Ses:
    • Yumuşak ses seviyesi rampası ile sessizce atlama algoritmasını iyileştirin; minimum sessizlik ve daha doğal sessizlik süreleri korunur (#7423).
    • Atlanan sessizliği daha belirgin bir şekilde bildirin (#1035).
  • Video:
    • VideoFrameProcessor.Factory bağımsız değişkenini alan MediaCodecVideoRenderer oluşturucuyu değiştirin ve bunu, VideoSinkProvider bağımsız değişkeni alan bir oluşturucuyla değiştirin. Özel VideoFrameProcessor.Factory eklemek isteyen uygulamalar, özel VideoFrameProcessor.Factory kullanan bir CompositingVideoSinkProvider örneği oluşturabilir ve video havuzu sağlayıcısını MediaCodecVideoRenderer hizmetine iletebilir.
  • Kısa mesaj:
    • DefaultExtractorsFactory.setTextTrackTranscodingEnabled kullanılırken Tried to marshall a Parcel that contained Binder objects hatasının çözülmesi için bit eşlem ipuçlarının serileştirilmesini düzeltin (#836).
    • CEA-708: rowLock değerini yoksayın. CEA-708-E S-2023 spesifikasyonunda, akışta bulunan değerler ne olursa olsun rowLock ve columnLock değerlerinin doğru olarak kabul edilmesi gerektiği belirtilmektedir (columnLock desteği uygulanmadığından etkin bir şekilde her zaman yanlış olduğu varsayılır).
  • Resim:
    • DASH küçük resimleri için destek ekleyin. Izgara resimleri kırpılır ve ImageOutput için sunum saatlerine yakın bir zamanda ayrı küçük resimler sağlanır.
  • DRM:
  • IMA uzantısı:
    • Uygun dosya uzantısına sahip olmayan DASH ve HLS reklamlarının oynatılamadığı sorunu düzeltin.
  • Oturum:
    • TV uygulamaları için çift tıklama algılamayı devre dışı bırakın (#962).
    • Yalnızca boş olmayan ekstralara sahip MediaItem.RequestMetadata öğesinin medya denetleyicileri ve oturumlar arasında iletilmemesiyle ilgili sorunu düzeltin.
    • MediaLibrarySession.Builder öğesine MediaLibraryService yerine yalnızca Context alabilen oluşturucu ekleyin.
  • HLS Uzantısı:
    • HlsMediaPeriod değerini paket içinde gizli hale getirin. Bu tür, HLS paketinin dışından doğrudan bağlı olmamalıdır.
    • Çözüm, bir segmentin daha verimli bir şekilde başlamasını amaçlar (#1031).
  • Kod Çözücü Uzantıları (FFmpeg, VP9, AV1, MIDI vb.):
    • MIDI kod çözücü: SysEx etkinlik mesajlarını yoksayın (#710).
  • Test Yardımcı Programları:
    • TestPlayerRunHelper.playUntilPosition içinde oynatmayı duraklatma Test, oynatmayı oynatma durumunda tutar ancak test, onaylama ve başka işlemler ekleyene kadar ilerlemeyi askıya alır.
  • Demo uygulama:
    • Kısa içerik kullanım alanıyla PreloadMediaSource kullanımını göstermek için kısa biçimli bir demo modülü ekleyin.

Sürüm 1.3.0-rc01

22 Şubat 2024

1.3.0 kararlı sürümünü kullanın.

Sürüm 1.3.0-beta01

7 Şubat 2024

1.3.0 kararlı sürümünü kullanın.

Sürüm 1.3.0-alpha01

15 Ocak 2024

1.3.0 kararlı sürümünü kullanın.

Sürüm 1.2.0

Sürüm 1.2.1

9 Ocak 2024

  • ExoPlayer:
    • LiveConfiguration.min/maxOffset aralığının dışında yapılan manuel aramalar için ofseti tekrar min/maxOffset değerine ayarlamaya devam etme sorunu düzeltildi.
    • 3, 5, 6, 7 ve 8 kanalda OPUS ve VORBIS kanal düzenlerinin yanlış olması sorununu düzeltin (#8396).
    • Canlı yayında sıfıra sarıldıktan sonra parça seçimlerinin hatalı şekilde yayının varsayılan konumunda başlamasına neden olan sorunu düzeltin (#9347).
    • Yeni CmcdData.Factory örneklerinin, parça kaynaklarından bufferedDurationUs için negatif değerler almasıyla sonuçlanan sorunu düzeltin (#888).IllegalArgumentException
  • Dönüştürücü:
    • Yüksek bir çalışma hızı ayarlanması nedeniyle kodlayıcının yapılandırma sırasında gönderdiği bir soruna çözüm bulun.
  • Ayıklayıcılar:
    • JPEG hareketli fotoğraflarındaki ikincil (oynatılamayan) HEVC parçaları ROLE_FLAG_ALTERNATE olarak işaretleyin. Bu sayede, yüksek çözünürlükleri nedeniyle oynatma için otomatik olarak seçilirler.
    • TS H264 akışları için yanlış animasyon karesi algılamayı düzeltin (#864).
    • 4.7.721 saniyeden uzun TS akışlarının süre tahminini düzeltin (#855).
  • Ses:
    • Birden fazla kez çağrıldığında SilenceSkippingAudioProcessor için EOS işleminin işlenmesi düzeltildi (#712).
  • Video:
    • Galaxy Tab S7 FE, Google TV'li Chromecast ve Lenovo M10 FHD Plus'ta 60 fps AVC akışlarının desteklenmiyor olarak işaretlenmesine neden olan bir cihaz sorunu için geçici çözüm ekleyin (#693).
  • Üst veri:
    • MediaMetadata değerinin Vorbis yorumlarında yalnızca büyük harf anahtarlarla doldurulduğu hatayı düzeltin (#876).
    • Çok büyük ID3 karelerini ayrıştırırken OutOfMemoryError yakalayın. Diğer bir deyişle, oynatma tamamen başarısız olmak yerine etiket bilgileri olmadan devam edebilir.
  • DRM:
    • Sahte NetKey https://default.url lisans URL'si için geçici çözümü API 33 ve sonraki sürümleri içerecek şekilde genişletin (daha önce bu çözüm yalnızca API 33'te tam olarak uygulanıyordu) (#837).
    • Oynatıcıya bağlı bir yüzey olmadan şifrelenmiş içerikten temiz içeriğe geçiş yaparken ERROR_DRM_SESSION_NOT_OPENED hatasını düzeltin. Bu hata, temiz içeriği oynatmak için güvenli bir kod çözücünün yanlış bir şekilde kullanılmasından kaynaklanmıştır.
  • Oturum:
    • MediaMetadataCompat içindeki özel anahtarları ve değerleri MediaMetadata.extras öğesine, MediaMetadata.extras öğesine de MediaMetadataCompat öğesine (#756, #802) yerleştirin.
    • Eski kumandalarda notifyChildrenChanged yayınını düzeltin (#644).
    • Bildirimin devre dışı bırakılmış setWhen zamanlayıcısı için negatif bir zaman ayarlamanın bazı cihazlarda kilitlenmeye neden olduğu hata düzeltildi (#903).
    • İlk bildirim güncellemesi istendiğinde medya bildirim denetleyicisinin bağlanma işlemini tamamlamaması durumunda IllegalStateException sorununu düzeltin (#917).
  • Kullanıcı arayüzü:
    • BottomSheetDialogFragment içinde Materyal Tasarım ile kullanıldığında ileri ve geri sarma düğmelerinin görünmemesiyle ilgili sorun düzeltildi (#511).
    • PlayerControlView öğesinin ileri sarma düğmesindeki sayıların eşleşmemesine neden olan sorunu düzeltin (#547).
  • DASH Uzantısı:
    • DASH manifest'inde Dolby için "f800"ü kanal sayısı olarak 5 olarak ayrıştırın (#688).
  • Kod Çözücü Uzantıları (FFmpeg, VP9, AV1, MIDI vb.):
    • MIDI: İleriye sarma işleminin Program Değişikliği etkinliklerinin atlanmasıyla ilgili sorun düzeltildi (#704).
    • FFmpeg 6.0'a taşıyın ve desteklenen NDK'yı r26b olarak güncelleyin (#707, #867).
  • Cast Uzantısı:
    • Yayın cihazında medya yüklenirken uygulamanın kilitlenmemesi için Timeline oluşturma işlemini temizleyin (#708).

Sürüm 1.2.0

15 Kasım 2023

  • Ortak Kitaplık:
    • Log.Logger arayüzündeki yöntemlere @Nullable Throwable parametresi ekleyin. Bu yöntemlerin message parametresi artık Log.{d,i,w,e}() yöntemlerine aktarılan Throwable hakkında herhangi bir bilgi içermemektedir. Bu nedenle, gerekirse uygulamaların bu bilgileri manuel olarak eklemesi gerekir (büyük olasılıkla Logger.appendThrowableString(String, Throwable) kullanılarak).
    • Boş değer atanabilir genel tür parametreleri ve boş değer atanabilir dizi öğesi türlerinin boş değer olarak algılanmadığı Kotlin uyumluluk sorununu düzeltin. Örnek olarak TrackSelectorResult ve SimpleDecoder yöntem parametreleri verilebilir (#6792).
    • Oynatma geçici olarak basıldığında (ör. geçici ses odağı kaybı nedeniyle) Util.shouldShowPlayButton uygulamasındaki varsayılan kullanıcı arayüzü ve bildirim davranışını, "oynat" düğmesi gösterilecek şekilde değiştirin. Eski davranış, PlayerView.setShowPlayButtonIfPlaybackIsSuppressed(false) veya MediaSession.Builder.setShowPlayButtonIfPlaybackIsSuppressed(false) (#11213) kullanılarak korunabilir.
    • https://issuestracker.google.com/251172715'i düzeltmek için androidx.annotation:annotation-experimental numarasını 1.3.1 sürümüne yükseltin.
    • ExoPlayer.setAudioAttributes öğesini Player arayüzüne taşıyın.
  • ExoPlayer:
    • Yalnızca kod çözme örneklerinin doğru tanımlanmamasından kaynaklanan AC4 akışlarında arama sorunlarını düzeltme (#11000).
    • Bu özellik ExoPlayer.Builder.setSuppressPlaybackOnUnsuitableOutput aracılığıyla etkinleştirildiğinde uygun olmayan ses çıkış cihazlarında (ör. Wear OS cihazlardaki yerleşik hoparlör) çalmayı engelleme ekleyin. Uygun ses çıkışı olmadığında oynatma işlemi denenirse veya oynatma sırasında tüm uygun çıkışların bağlantısı kesilirse çalmayı engelleme nedeni Player.PLAYBACK_SUPPRESSION_REASON_UNSUITABLE_AUDIO_OUTPUT olarak güncellenir. Uygun bir çıkış bağlandığında engelleme nedeni kaldırılır.
    • Player.replaceMediaItem(s) üzerinden oluşturulduktan sonra MediaItem güncellemelerini kabul etmek için MediaSource.canUpdateMediaItem ve MediaSource.updateMediaItem öğelerini ekleyin.
    • Kitaplık tarafından Player.replaceMediaItem(s) aracılığıyla sağlanan tüm MediaSource sınıfları için MediaItem güncellemelerine izin ver (#33, #9978).
    • MimeTypes.TEXT_EXOPLAYER_CUES öğesinin adını MimeTypes.APPLICATION_MEDIA3_CUES olarak değiştirin.
    • Tüm PNG dosyasını gönderen ve okuyan PngExtractor öğesini TrackOutput içine tek bir örnek olarak ekleyin.
    • SequenceableLoader arayüzünde SequenceableLoader.continueLoading(long) yöntemini iyileştirerek SequenceableLoader.continueLoading(LoadingInfo loadingInfo) yapın. LoadingInfo, mevcut playbackPositionUs parametresine ek olarak playbackSpeed ve lastRebufferRealtimeMs dahil olmak üzere ek parametreler içerir.
    • ChunkSource arayüzünde ChunkSource.getNextChunk(long, long, List, ChunkHolder) yöntemini iyileştirerek ChunkSource.getNextChunk(LoadingInfo, long, List, ChunkHolder) yapın.
    • Ortak Medya İstemci Verileri (CMCD) günlük kaydına şu ek alanlar ekleyin: arabellek açma (bs), son tarih (dl), oynatma hızı (pr) ve başlatma (su) (#8699).
    • ColorInfo öğesine luma ve renk bit derinliği ekleyin (#491).
    • Ortak Medya İstemci Verileri (CMCD) günlük kaydına ek alanlar ekleyin: sonraki nesne isteği (nor) ve sonraki aralık isteği (nrr) (#8699).
    • Sorgu parametrelerini (#553) kullanarak Ortak Medya İstemci Verileri (CMCD) verilerini iletme işlevi ekleyin.
    • ExperimentalBandwidthMeter için ConcurrentModificationException hatasını düzeltin (#612).
    • CompositeMediaSource.getMediaTimeForChildMediaTime kampanyasına MediaPeriodId parametresini ekleyin.
    • ConcatenatingMediaSource2 içinde ClippingMediaSource (ve dönem/aralık zaman sapmaları olan diğer kaynaklar) desteği (#11226).
    • MediaPeriodId bağımsız değişkeni de almak için BaseRenderer.onStreamChanged() değerini değiştirin.
  • Dönüştürücü:
    • Resim girişleri için EXIF döndürme verilerini ayrıştırın.
    • TransformationRequest.HdrMode ek açıklama türünü ve ilişkili sabit değerlerini kaldırın. Bunun yerine Composition.HdrMode ve ilişkili sabit değerlerini kullanın.
    • Rotasyon sorunlarını düzeltmek için OverlaySettings öğesini basitleştirin.
    • SampleConsumer.queueInputBitmap öğesinin frameRate ve durationUs parametreleri TimestampIterator olarak değiştirildi.
  • Parça Seçimi:
    • Kesintisiz olmayan uyarlamaya açıkça izin vermek veya izin vermemek için DefaultTrackSelector.Parameters.allowAudioNonSeamlessAdaptiveness ekleyin. Varsayılan değer, şu anki true davranışında kalır.
  • Ayıklayıcılar:
    • MPEG-TS: Bir akışın son erişim birimini örnek sırasına geçirerek son karenin oluşturulmasını sağlar (#7909).
    • rotationDegrees belirlenirken yazım hatalarını düzeltin. projectionPosePitch, projectionPoseRoll olarak değiştirildi (#461).
    • Extractor örneklerinin instanceof ile doğrudan incelenebileceği varsayımını kaldırın. Bir Extractor öğesinin uygulama ayrıntılarına çalışma zamanında erişmek istiyorsanız önce Extractor.getUnderlyingInstance yöntemini çağırmanız gerekir.
    • BmpExtractor ekleyin.
    • WebpExtractor ekleyin.
    • HeifExtractor ekleyin.
    • Mp4Extractor hizmetine QuickTime klasik desteğini ekleyin.
  • Ses:
    • MP4 ve Matroska'da 24/32 bit büyük PCM desteği ekleyin ve MP4'te lpcm için PCM kodlamasını ayrıştırın.
    • MP4'te Vorbis sesini ayıklama desteği ekleyin.
    • Havuzun biçim için DefaultAudioOffloadSupportProvider aracılığıyla sağlayabileceği yük kaldırma desteği düzeyini alan AudioSink.getFormatOffloadSupport(Format) ekleyin. isFormatSupported, isGaplessSupported ve isSpeedChangeSupported içeren yeni AudioOffloadSupport değerini döndürür.
    • Ses havuzundaki yük boşaltma yapılandırmasının yapılandırılacağı AudioSink.setOffloadMode() ekleyin. AudioSink.OFFLOAD_MODE_DISABLED varsayılandır.
    • Boşaltma, TrackSelectionParameters içindeki setAudioOffloadPreference aracılığıyla etkinleştirilebilir. Ayarlanan tercih "etkinleştirme" ise cihaz, biçim için yük aktarımını destekler ve parça seçimi tek bir ses parçasıysa ses boşaltma etkinleştirilir.
    • audioOffloadModePreference, AUDIO_OFFLOAD_MODE_PREFERENCE_REQUIRED olarak ayarlanırsa DefaultTrackSelector yalnızca bir ses parçası seçer ve parçanın biçimi aktarımda destekleniyorsa seçilir. Yükleme sırasında hiçbir ses parçası desteklenmiyorsa hiçbir parça seçilmez.
    • Kanal geçişinden sonra oynatma konumu sorunu nedeniyle API düzeyi 33 öncesi sürümlerde yük boşaltma desteği devre dışı bırakılıyor.
    • enableOffload parametresini DefaultRenderersFactory.buildAudioSink yöntem imzasından kaldırın.
    • DefaultAudioSink.Builder.setOffloadMode yöntemini kaldır.
    • intdef değerini kaldırın DefaultAudioSink.OffloadMode.OFFLOAD_MODE_ENABLED_GAPLESS_DISABLED.
    • Boşaltma oynatma sırasında Opus boşluksuz meta verileri için destek eklendi.
    • İlk yazmada başarısız olursa boşaltmayı devre dışı bırakarak oluşturucu kurtarmaya izin verin (#627).
    • Boşaltma Planlaması'nı varsayılan olarak, yalnızca ses kaynağından boşaltılmış oynatma için etkinleştirin.
    • ExoPlayer.experimentalSetOffloadSchedulingEnabled ve AudioOffloadListener.onExperimentalOffloadSchedulingEnabledChanged öğelerini silin.
    • onExperimentalSleepingForOffloadChanged, onSleepingForOffloadChanged ve onExperimentalOffloadedPlayback ise onOffloadedPlayback olarak yeniden adlandırıldı.
    • Ses boşaltma moduyla ilgili TrackSelectionParameters arayüzlerini ve tanımlarını dahili bir AudioOffloadPreferences sınıfına taşıyın.
    • AnalyticsListener, AudioRendererEventListener ve AudioSink.Listener adlı kullanıcılara onAudioTrackInitialized ve onAudioTrackReleased geri çağırması ekleyin.
    • DTS Express ses arabelleği yetersizliği sorununu düzeltin (#650).
    • Özelliklerin E-AC3-JOC'nin kontrol ettiği IllegalArgumentException hatasını düzeltme (#677).
  • Video:
    • MediaCodecVideoRenderer sitesinin özel bir VideoFrameProcessor.Factory kullanmasına izin ver.
    • Ses akışı negatif zaman damgalarıyla başlıyorsa ilk karenin oluşturulamadığı hatayı düzeltin (#291).
  • Kısa mesaj:
    • ExoplayerCuesDecoder öğesini kaldır sampleMimeType = application/x-media3-cues içeren metin kanalları artık SubtitleDecoder örneğine gerek kalmadan doğrudan TextRenderer tarafından işleniyor.
  • Üst veri:
    • Uygulamanın yine de null döndürmesi gerektiğinden MetadataDecoder.decode artık "yalnızca kod çözme" örnekleri için çağrılmayacak.
  • Sonuç:
    • Zaman damgasına göre VideoFrameProcessor.queueInputBitmap(Bitmap, Iterator<Long>) sıraya ekleme bit eşlem girişini ekleyin.
    • VideoFrameProcessor.registerInputStream() değerini engellemeyecek şekilde değiştirin. Uygulamalar VideoFrameProcessor.Listener#onInputStreamRegistered().
    • VideoFrameProcessor.queueInputBitmap öğesinin frameRate ve durationUs parametreleri TimestampIterator olarak değiştirildi.
  • IMA uzantısı:
    • Oynatma listesindeki ilk öğe olmayan çok dönemli DASH canlı yayınının istisnaya neden olabileceği hatayı düzeltin (#571).
    • AdsLoader.destroy() çağrısından önce StreamManager'ı bırakın
    • IMA SDK sürümünü 3.31.0'a yükseltin.
  • Oturum:
    • DefaultMediaNotificationProvider içinde bildirimler ön plan hizmet davranışını FOREGROUND_SERVICE_IMMEDIATE olarak ayarlayın (#167).
    • Samsung cihazlarda desteği sonlandırılmış API'yle ilgili sorunları önlemek için yalnızca android.media.session.MediaSession.setMediaButtonBroadcastReceiver() API 31'in üzerinde kullanın (#167).
    • Mevcut komutları ve bildirimi ve platform oturumunu doldurmak amacıyla kullanılan özel düzeni ayarlamak için medya bildirim denetleyicisini proxy olarak kullanın.
    • MediaSessionService.onStartCommand() tarafından medya3 içinde alınan medya düğmesi etkinliklerini, platform oturumuna ve tekrar Media3'e yönlendirmek yerine dönüştürün. Bu özellikle, çağrı denetleyicisi her zaman medya bildirim denetleyicisidir ve uygulamalar, desteklenen tüm API düzeylerinde aynı şekilde bildirimden gelen çağrıları kolayca tanıyabilir.
    • Eski bir MediaSessionCompat cihazına bağlandığında MediaController.getCurrentPosition() ürününün ilerlememesi hatasını düzeltin.
    • MediaLibrarySession.getSubscribedControllers(mediaId) ekleyin.
    • Denetleyicinin abone olduğu üst kimliğin kullanılabilirliğini doğrulamak için MediaLibrarySession.Callback.onSubscribe() değerini geçersiz kılın. Başarılı olursa abonelik kabul edilir ve tarayıcıya hemen notifyChildrenChanged() çağrılır (#561).
    • Automotive OS için oturum demo modülü ekleyin ve Android Auto için oturum demosunu etkinleştirin.
    • Medya bildirim denetleyicisinde COMMAND_GET_TIMELINE kullanılamadığında çerçeve oturumunun sırasını ayarlamayın. Android Auto, çerçeve oturumundan istemci denetleyicisi olarak okuma yaptığında bu durum, Android Auto'nun kullanıcı arayüzündeki queue düğmesinin gösterilmemesine neden olur (#339).
    • SimpleBitmapLoader yerine varsayılan olarak DataSourceBitmapLoader kullanın (#271, #327).
    • Uygulamaların varsayılan medya düğmesi etkinlik işlemesini geçersiz kılmasına izin veren MediaSession.Callback.onMediaButtonEvent(Intent) ekleyin.
  • Kullanıcı arayüzü:
    • Kullanıcının uygun bir ses çıkışı (ör. Bluetooth kulaklık) bağlayabilmesi için sistem iletişim kutusunu başlatarak Wear OS cihazlara Player.PLAYBACK_SUPPRESSION_REASON_UNSUITABLE_AUDIO_OUTPUT nedeniyle oynatma engelleme işlemini yürüten bir Player.Listener uygulaması ekleyin. Dinleyici, yapılandırılabilir bir zaman aşımı süresi içinde uygun bir cihaz bağlanırsa oynatmayı otomatik olarak devam ettirir (varsayılan değer 5 dakikadır).
  • İndirilenler:
    • Android 14 uyumluluğu için DownloadService ile ilgili "veri senkronizasyonu" ön plan hizmet türünü tanımlayın. Bu hizmet kullanılırken uygulamanın manifest dosyasına dataSync öğesini foregroundServiceType olarak eklemesi ve FOREGROUND_SERVICE_DATA_SYNC iznini eklemesi gerekir (#11239).
  • HLS Uzantısı:
    • HLS canlı oynatma listesini, son yükleme işleminin tamamlandığı zaman (#663) yerine son yükleme başlangıç zamanından hesaplanan bir aralıkla yenileyin.
  • DASH Uzantısı:
    • Segment şablonu URL'sinde aynı DASH tanımlayıcısına izin verin.
    • Ayıklama sırasında altyazıların ayrıştırılması için deneysel destek ekleyin. Bu özellik, altyazı segmentleri arasında geçiş yaparken oluşan titremeleri giderme de dahil olmak üzere çakışan altyazıların birleştirilmesi için daha iyi destek sunar. Bunu DashMediaSource.Factory.experimentalParseSubtitlesDuringExtraction() kullanarak etkinleştirebilirsiniz (#288).
  • RTSP Uzantısı:
    • TCP'ye geri dönüldüğünde veya bazı durumlarda oynatmanın askıya alınması durumunda IndexOutOfBoundsException'e yol açabilecek bir yarış durumunu düzeltin.
    • RtspMediaPeriod yükleme durumunu döndürürken RTSP ayarlarında durumu kontrol edin (#577).
    • Seçenekler yanıtı herkese açık başlığında özel Rtsp isteği yöntemlerini yoksayın (#613).
    • Canlı tutma RTSP Seçenekleri isteklerinin gönderildiği zaman aralığında RTSP Kurulum Yanıtı zaman aşımı değerini kullanın (#662).
  • Kod Çözücü Uzantıları (FFmpeg, VP9, AV1, MIDI vb.):
    • Ses sentezlemek için Jsyn kitaplığını kullanarak standart MIDI dosyalarının çalınmasını destekleyen MIDI kod çözücü modülünü kullanıma sunun.
    • Sunulması gerekmeyen çıkış arabelleklerini doğrudan işaretlemek için DecoderOutputBuffer.shouldBeSkipped ekleyin. Bu, desteği sonlandırılacak C.BUFFER_FLAG_DECODE_ONLY yerine tercih edilir.
    • Kod çözücülerin yalnızca kod çözme amaçlı örnekleri başlangıç zamanından önce bırakmasına izin vermek için Decoder.setOutputStartTimeUs ve SimpleDecoder.isAtLeastOutputStartTimeUs ekleyin. Bu, desteği sonlandırılacak Buffer.isDecodeOnly tercih edilmelidir.
    • MIDI kod çözücü yapısını Maven deposuna yayınlarken yapılan hata düzeltildi. Yapı, media3-exoplayer-midi olarak yeniden adlandırılır (#734).
  • Leanback uzantısı:
    • Bir yüzeyin devre dışı bırakılmasının Leanback kodunda ArithmeticException oluşmasına neden olabileceği hatayı düzeltin (#617).
  • Test Yardımcı Programları:
    • TestExoPlayerBuilder ve FakeClock öğelerini Espresso kullanıcı arayüzü testleri ve Compose kullanıcı arayüzü testleriyle uyumlu hale getirin. Bu hata, Espresso veya Compose görüntüleme etkileşimleri sırasında oynatmanın belirsiz bir şekilde ilerlemesine neden olan hatayı düzeltir.
  • Kullanımdan kaldırılan simgeleri kaldırın:
    • Kaldır TransformationRequest.Builder.setEnableRequestSdrToneMapping(boolean) ve TransformationRequest.Builder.experimental_setEnableHdrEditing(boolean). Bunun yerine Composition.Builder.setHdrMode(int) kullanın ve Composition öğesini Transformer.start(Composition, String) öğesine iletin.
    • Desteği sonlandırılan DownloadNotificationHelper.buildProgressNotification yöntemini kaldırın. Bunun yerine, notMetRequirements parametresi alan, desteği sonlandırılmamış bir yöntem kullanın.

Sürüm 1.2.0-rc01

1 Kasım 2023

1.2.0 kararlı sürümü kullanın.

Sürüm 1.2.0-beta01

19 Ekim 2023

1.2.0 kararlı sürümü kullanın.

Sürüm 1.2.0-alpha02

29 Eylül 2023

1.2.0 kararlı sürümü kullanın.

Sürüm 1.2.0-alpha01

17 Ağustos 2023

1.2.0 kararlı sürümü kullanın.

Sürüm 1.1.0

Sürüm 1.1.1

16 Ağustos 2023

  • Ortak Kitaplık:
    • Yanlışlıkla eklenen multidex bağımlılığını tüm modüllerden kaldırın (#499).
  • ExoPlayer:
    • Oynatma listesi temizlendikten sonra sahte PlaybackStats oluşturulduğu PlaybackStatsListener sorunu düzeltildi.
    • Ortak Medya İstemci Verileri (CMCD) günlük kaydına şu ek alanları ekleyin: akış biçimi (sf), akış türü (st), sürüm (v), en üst birate (tb), nesne süresi (d), ölçülen işleme hızı (mtp) ve nesne türü (ot) (#8699).
  • Ses:
    • Çok kısa dosyalar oynatırken Player.getState() ürününün hiçbir zaman STATE_ENDED ürününe geçmemesine neden olan hatayı düzeltin (#538).
  • Ses Aktarımı:
    • RFC 7845'e uygun olarak, boşaltılmış Opus oynatma için bit akışının başına Ogg Kimliği ve Yorum Üstbilgisi Sayfalarını ekleyin.
  • Video:
    • H.265/HEVC: SPS kısa ve uzun vadeli referans resmi bilgilerini ayrıştırma sorunu düzeltildi.
  • Kısa mesaj:
    • CEA-608: İşaret kesme mantığını yalnızca görünür metinleri dikkate alacak şekilde değiştirin. Daha önce, işaret uzunluğu 32 karakterle sınırlanırken girinti ve sekme ofseti ekleniyordu (bu özellik spesifikasyonda teknik olarak doğruydu) (#11019).
  • IMA uzantısı:
    • IMA SDK sürümünü 3.30.3'e yükseltin.
  • Oturum:
    • Denetleyicinin durumuna özel düzen ekleyin ve bu düzene erişmesi için bir alıcı sağlayın. Özel düzen değiştiğinde MediaController.Listener.onCustomLayoutChanged çağrılır. Farklı Media3 denetleyicisine farklı özel düzenler göndermek isteyen uygulamalar, bağlantı tamamlandığında özel düzenin denetleyici tarafından kullanılabilmesini sağlamak için AcceptedResultBuilder kullanarak MediaSession.Callback.onConnect içinde bunu yapabilir.
    • MediaLibraryServiceLegacyStub ürününün, bu işlemi desteklemeyen bir Result öğesine UnsupportedOperationException (#78) hatası gönderdiği durumları düzeltin.
    • Hem eski komutlarla (COMMAND_ADJUST_DEVICE_VOLUME ve COMMAND_SET_DEVICE_VOLUME) hem de yeni komutlarla (COMMAND_ADJUST_DEVICE_VOLUME_WITH_FLAGS ve COMMAND_SET_DEVICE_VOLUME_WITH_FLAGS) (#554) volumeControlType değerini belirleyerek PlayerWrapper öğesinin VolumeProviderCompat oluşturma yöntemini düzeltin.

Sürüm 1.1.0

5 Temmuz 2023

  • Ortak Kitaplık:
    • Ses rotasının uygun olmaması için engelleme nedeni ekleyin ve hazır olduğunda, çok uzun süre engellenme nedenini değiştirin. (#15).
    • Oynatıcıya komut ekleyin:
      • COMMAND_GET_METADATA
      • COMMAND_SET_PLAYLIST_METADATA
      • COMMAND_SET_DEVICE_VOLUME_WITH_FLAGS
      • COMMAND_ADJUST_DEVICE_VOLUME_WITH_FLAGS
    • Player'a, kullanıcıların ses seviyesi işaretleri belirtmesine olanak tanıyan aşırı yüklenen yöntemler ekleyin:
      • void setDeviceVolume(int, int)
      • void increaseDeviceVolume(int)
      • void decreaseDeviceVolume(int)
      • void setDeviceMuted(boolean, int)
    • DeviceInfo için Builder ekleyin ve mevcut oluşturucuyu kullanımdan kaldırın.
    • Uzaktan oynatmalar için yönlendirme denetleyicisi kimliğini belirtmek üzere DeviceInfo.routingControllerId ekleyin.
    • Aynı konuma öğe ekleyip kaldırmak için kısayol olarak Player.replaceMediaItem(s) ekleyin (#8046).
  • ExoPlayer:
    • ExoPlayer'ın cihaz ses düzeyi yöntemlerini kontrol etmesine yalnızca açıkça etkinleştirilmişse izin verin. Şunlara erişmek için ExoPlayer.Builder.setDeviceVolumeControlEnabled kullanın:
      • getDeviceVolume()
      • isDeviceMuted()
      • setDeviceVolume(int) ve setDeviceVolume(int, int)
      • increaseDeviceVolume(int) ve increaseDeviceVolume(int, int)
      • decreaseDeviceVolume(int) ve decreaseDeviceVolume(int, int)
    • MediaSource kaynağından kullanılabilir kanal türlerini filtrelemeye olanak tanıyan FilteringMediaSource ekleyin.
    • DASH, HLS ve SmoothStreaming uyarlanabilir akış biçimlerinin giden isteklerine Ortak Medya İstemci Verileri'ni (CMCD) ekleme desteği ekleyin. br, bl, cid, rtp ve sid alanları dahil edilmiştir (#8699). API yapısı ve API yöntemleri:
      • CMCD günlük kaydı varsayılan olarak devre dışıdır. Etkinleştirmek için MediaSource.Factory.setCmcdConfigurationFactory(CmcdConfiguration.Factory cmcdConfigurationFactory) kullanın.
      • Tüm anahtarlar varsayılan olarak etkindir. Günlüğe hangi anahtarların kaydedildiğini filtrelemek için CmcdConfiguration.RequestConfig.isKeyAllowed(String key) öğesini geçersiz kılın.
      • Özel anahtar günlük kaydını etkinleştirmek için CmcdConfiguration.RequestConfig.getCustomData() politikasını geçersiz kılın.
    • Demo uygulamayı özel bir *.exolist.json dosyasıyla başlatmayı kolaylaştırmak için ana demonun manifest dosyasına ek işlem ekleyin (#439).
    • Video oynatma sırasında Effect kullanmak için ExoPlayer.setVideoEffects() ekleyin.
    • sourceId öğesini int yerine long olarak depolamak için SampleQueue öğesini güncelleyin. Bu işlem, SampleQueue.sourceId ve SampleQueue.peekSourceId herkese açık yöntemlerinin imzalarını değiştirir.
    • LoadControl yöntemlerine shouldStartPlayback ve onTracksSelected yöntemlerine, bu yöntemlerin ilgili MediaPeriod ile ilişkilendirilmesine olanak tanıyan parametreler ekleyin.
    • Haritada anahtar olarak kullanılan UID'lere sahip dönemleri içeren bir zaman çizelgesi parametresi ekleyerek ServerSideAdInsertionMediaSource.setAdPlaybackStates(Map<Object, AdPlaybackState>) imzasını değiştirin. Çok dönemli canlı yayınlarda eşzamanlılık sorunlarını önlemek için bu gereklidir.
    • EventDispatcher.withParameters(int windowIndex, @Nullable MediaPeriodId mediaPeriodId, long mediaTimeOffsetMs) ve BaseMediaSource.createEventDispatcher(..., long mediaTimeOffsetMs) öğelerini kullanımdan kaldırın. Bunun yerine, mediaTimeOffsetUs içermeyen yöntemlerin varyantı çağrılabilir. Kullanımdan kaldırılmış varyantlar için bile, ofsetin artık sevk görevlisi tarafından gönderilen MediaLoadData nesnelerinin startTimeUs ve endTimeUs kısmına eklenmediğini unutmayın.
    • ExoTrackSelection.blacklist alanının adını excludeTrack ve isBlacklisted adını isTrackExcluded olarak değiştirin.
    • Boş bir oynatma listesinde çağrıldığında ExoPlayer.setMediaItem(s) ile addMediaItem(s) arasındaki tutarsız davranışı düzeltin.
  • Dönüştürücü:
    • Transformer.Builder.setMediaSourceFactory(MediaSource.Factory) öğesini kaldır Bunun yerine ExoPlayerAssetLoader.Factory(MediaSource.Factory) ve Transformer.Builder.setAssetLoaderFactory(AssetLoader.Factory) kullanın.
    • Transformer.startTransformation(MediaItem, ParcelFileDescriptor) öğesini kaldır
    • Giriş karesi işlenmeyi beklerken video akışının sonunun sinyali verildiyse dönüşümün tıkanmasına (muxer zaman aşımına neden olur) yol açabilen hatayı düzeltin.
    • Desteği artırmak için findDecoder/EncoderForFormat yardımcı programlarını kullanmak yerine MediaCodecList aracılığıyla codec'leri sorgulayın.
    • Bazı cihazlarda çalışmadığından DefaultEncoderFactory içindeki B çerçeve yapılandırmasını kaldırın.
  • Parça seçimi:
    • Varsayılan olarak devre dışı olan DefaultTrackSelector.Parameters.allowInvalidateSelectionsForRendererCapabilitiesChange ekleyin. Etkinleştirildiğinde, oluşturucu özellikleri değiştiğinde DefaultTrackSelector yeni bir parça seçimini tetikler.
  • Ayıklayıcılar:
    • Ogg: Uzun süreli dosyalarda arama yaparken karşılaşılan hata düzeltildi (#391).
    • FMP4: TimestampAdjuster ürününün, emsg atom'dan meta veri örnek zamanıyla yanlış bir zaman damgası ofseti başlatması sorunu düzeltildi (#356).
  • Ses:
    • Tünel etkin ve AudioProcessors etkinken bazı oynatmaların başarısız olduğu hata düzeltildi (ör.aralıksız kırpma için). (#10847).
    • Opus karelerini, doğrudan oynatmalarda (yükleme) Ogg paketleri içinde kapsülleyin.
    • Yük boşaltma planlamasıyla uyku sırasında mevcut konumun ekstrapolasyonunu yapın.
    • Oyuncunun yaşam döngüsünün sonunda kaynakları serbest bırakmak için Renderer.release() ve AudioSink.release() ekleyin.
    • DefaultAudioSink ürününde ses özelliklerindeki değişiklikleri dinleyin. DefaultAudioSink oluşturucusuna, context adlı zorunlu parametreyi ekleyin. Bu parametreyle DefaultAudioSink, AudioCapabilitiesReceiver için dinleyici olarak kaydedilir ve özellik değişikliği olduğunda bilginin audioCapabilities özelliğini günceller.
    • AudioSink.Listener arayüzündeki yeni bir etkinlik onAudioCapabilitiesChanged ve onRendererCapabilitiesChanged etkinliklerini tetikleyen yeni arayüz RendererCapabilities.Listener ile ses özelliklerindeki değişiklikleri uygulayın.
    • Ses kanallarına ölçeklendirme/miksleme uygulamak için ChannelMixingAudioProcessor ekleyin.
    • Ses özellikleri değiştirildikten sonra atlama modunun kullanılması mümkün olduğunda ses kod çözücüyü silmek için DecoderDiscardReasons öğesine DISCARD_REASON_AUDIO_BYPASS_POSSIBLE yeni tam değer ekleyin.
    • DTS Express ve DTS:X için doğrudan oynatma desteği ekleyin (#335).
  • Video:
    • Oluşturucu devre dışı bırakıldığında MediaCodecVideoRenderer ürününün, genişliği ve yüksekliği 0 olan bir VideoSize raporu bildirmesini sağlayın. Player.getVideoSize() değiştiğinde Player.Listener.onVideoSizeChanged çağrılır. Bu değişiklikle birlikte, Player.getCurrentTracks videoyu desteklemediğinde veya desteklenen video parçasının boyutu henüz belirlenmediğinde ExoPlayer'ın MediaCodecVideoRenderer içeren video boyutunun genişliği ve yüksekliği 0 olur.
  • DRM:
    • DRM paketinin dışından çağrılması beklenmeyen bazı dahili yöntemlerin DefaultDrmSession üzerinde görünürlüğünü azaltın:
      • void onMediaDrmEvent(int)
      • void provision()
      • void onProvisionCompleted()
      • onProvisionError(Exception, boolean)
  • Muxer:
    • MP4 container dosyası oluşturmak için kullanılabilecek yeni bir muxer kitaplığı ekleyin.
  • IMA uzantısı:
    • DAI için çok dönemli canlı DASH akışlarını etkinleştirin. Mevcut uygulamanın, canlı yayınlarda arama özelliğini henüz desteklemediğini lütfen unutmayın (#10912).
    • Art arda zaman çizelgelerinde hesaplanan içerik konumu küçük farklılıklar gösterdiği için canlı yayınlara yeni bir reklam grubunun eklenmesiyle ilgili hatayı düzeltin.
  • Oturum:
    • Şu anda Player yöntemini çağıran denetleyici hakkında bilgi edinmek için MediaSession.getControllerForCurrentRequest yardımcı yöntemini ekleyin.
    • Uygulamaları, örneğin bir Bluetooth mikrofonlu kulaklık (#167) tarafından gönderilen medya düğmesi etkinlikleriyle oynatmayı devam ettirme özelliğini etkinleştirmek için androidx.media3.session.MediaButtonReceiver ekleyin.
    • LocalConfiguration (ör. URI) (#282) varsa istenen MediaItems öğesinin Player öğesine aktarılmasına izin vermek için MediaSession.Callback.onAddMediaItems öğesine varsayılan uygulamayı ekleyin.
    • Android 12 ve önceki sürümler için varsayılan olarak kompakt medya bildirimi görünümüne "öncekiye sar" ve "sonrakine git" komut düğmelerini ekleyin (#410).
    • LocalConfiguration (ör. URI) (#282) varsa istenen MediaItems öğesinin Player öğesine aktarılmasına izin vermek için MediaSession.Callback.onAddMediaItems öğesine varsayılan uygulamayı ekleyin.
    • Android 12 ve önceki sürümler için varsayılan olarak kompakt medya bildirimi görünümüne "öncekiye sar" ve "sonrakine git" komut düğmelerini ekleyin (#410).
  • Kullanıcı arayüzü:
    • Oynat/duraklat düğmesiyle özel kullanıcı arayüzü öğeleri yazmak için shouldShowPlayButton ve handlePlayPauseButtonAction Util yöntemlerini ekleyin.
  • RTSP Uzantısı:
    • MPEG4-LATM için Yanıtı Açıkla SDP mesajında yoksa varsayılan profil-düzeyinde kimlik değerini kullanın (#302).
    • AÇIKLA yanıt başlığında (#11160) mevcutsa RTSP oturumundaki göreli yol çözümlemesi için temel Uri'yi kullanın.
  • DASH Uzantısı:
    • Çok dönemli DASH akışları için MediaLoadData.startTimeMs ve MediaLoadData.endTimeMs arasındaki medya zaman farkını kaldırın.
    • Çok dönemli bir canlı Dash medya kaynağının tekrar hazırlandığı sırada IndexOutOfBoundsException oluşturulması (#10838) hatası düzeltildi.
  • HLS Uzantısı:
    • Yükleme iş parçacığının, TimestampAdjuster öğesinin başlatılmasını beklemesi için zaman aşımı belirlemek üzere HlsMediaSource.Factory.setTimestampAdjusterInitializationTimeoutMs(long) ekleyin. Başlatma, zaman aşımından önce tamamlanmazsa oynatmanın sonsuz şekilde durmasını önlemek için bir PlaybackException gönderilir. Zaman aşımı varsayılan olarak sıfıra ayarlanır (#323).
  • Test Yardımcı Programları:
    • DataSourceContractTest ürününde URI şeması büyük/küçük harfe duyarlılığını kontrol edin.
  • Kullanımdan kaldırılan simgeleri kaldırın:
    • DefaultAudioSink oluşturucuları kaldırın, bunun yerine DefaultAudioSink.Builder kullanın.
    • HlsMasterPlaylist öğesini kaldırın, onun yerine HlsMultivariantPlaylist kullanın.
    • Player.stop(boolean) öğesini kaldır Bunun yerine Player.stop() ve Player.clearMediaItems() (reset true ise) kullanın.
    • Kullanımdan kaldırılmış iki SimpleCache oluşturucuyu kaldırın ve daha iyi performans için bunun yerine DatabaseProvider kullanan, desteği sonlandırılmamış bir oluşturucu kullanın.
    • DefaultBandwidthMeter oluşturucuyu kaldırın, bunun yerine DefaultBandwidthMeter.Builder kullanın.
    • DefaultDrmSessionManager oluşturucuları kaldırın, bunun yerine DefaultDrmSessionManager.Builder kullanın.
    • Kullanımdan kaldırılmış iki HttpDataSource.InvalidResponseCodeException oluşturucuyu kaldırın ve hata günlük kaydını iyileştirmek için ek alanları(cause, responseBody) kabul eden ve desteği sonlandırılmamış bir oluşturucu kullanın.
    • DownloadHelper.forProgressive, DownloadHelper.forHls, DownloadHelper.forDash ve DownloadHelper.forSmoothStreaming öğelerini kaldırın, bunun yerine DownloadHelper.forMediaItem kullanın.
    • Kullanımdan kaldırılan DownloadService oluşturucusunu kaldırın ve channelDescriptionResourceId parametresi sağlama seçeneği içeren, desteği sonlandırılmamış bir oluşturucu kullanın.
    • Karakter kümeleri (ASCII_NAME, UTF8_NAME, ISO88591_NAME, UTF16_NAME ve UTF16LE_NAME) için desteği sonlandırılmış Dize sabitlerini kaldırın. Bunun yerine, kotlin.text paketinden Kotlin Karakter Kümelerini kullanın.java.nio.charset.StandardCharsetscom.google.common.base.Charsets
    • Desteği sonlandırılan WorkManagerScheduler oluşturucuyu kaldırın. Bunun yerine, Context parametresi sağlama seçeneği içeren ve desteği sonlandırılmamış bir oluşturucu kullanın.
    • Format sınıfını örneklendirmek için kullanılan ve desteği sonlandırılmış yöntemleri olan createVideoSampleFormat, createAudioSampleFormat, createContainerFormat ve createSampleFormat yöntemlerini kaldırın. Bunun yerine, Format örneklerini oluşturmak için Format.Builder kullanın.
    • Kullanımdan kaldırılan copyWithMaxInputSize, copyWithSubsampleOffsetUs, copyWithLabel, copyWithManifestFormatInfo, copyWithGaplessInfo, copyWithFrameRate, copyWithDrmInitData, copyWithMetadata, copyWithBitrate ve copyWithVideoSize yöntemlerini kaldırın, bunların yerine Format.buildUpon() ve belirleyici yöntemleri kullanın.
    • Desteği sonlandırılan ExoPlayer.retry() öğesini kaldırın, bunun yerine prepare() politikasını kullanın.
    • Desteği sonlandırılan sıfır bağımsız değişkenli DefaultTrackSelector oluşturucuyu kaldırın, bunun yerine DefaultTrackSelector(Context) kullanın.
    • Desteği sonlandırılan OfflineLicenseHelper oluşturucuyu kaldırın, bunun yerine OfflineLicenseHelper(DefaultDrmSessionManager, DrmSessionEventListener.EventDispatcher) kullanın.
    • Desteği sonlandırılan DownloadManager oluşturucuyu kaldırın, bunun yerine Executor kullanan oluşturucuyu kullanın.
    • Desteği sonlandırılan Cue oluşturucuları kaldırın, bunun yerine Cue.Builder kullanın.
    • Desteği sonlandırılan OfflineLicenseHelper oluşturucuyu kaldırın, bunun yerine OfflineLicenseHelper(DefaultDrmSessionManager, DrmSessionEventListener.EventDispatcher) kullanın.
    • Desteği sonlandırılmış dört AnalyticsListener yöntemini kaldırın:
      • onDecoderEnabled bunun yerine onAudioEnabled ve/veya onVideoEnabled kullanın.
      • onDecoderInitialized, bunun yerine onAudioDecoderInitialized ve/veya onVideoDecoderInitialized kullanın.
      • onDecoderInputFormatChanged bunun yerine onAudioInputFormatChanged ve/veya onVideoInputFormatChanged kullanın.
      • onDecoderDisabled bunun yerine onAudioDisabled ve/veya onVideoDisabled kullanın.
    • Kullanımdan kaldırılan Player.Listener.onSeekProcessed ve AnalyticsListener.onSeekProcessed öğelerini kaldırın, bunun yerine onPositionDiscontinuity uygulamasını DISCONTINUITY_REASON_SEEK ile kullanın.
    • ExoPlayer.setHandleWakeLock(boolean) öğesini kaldırın, onun yerine setWakeMode(int) kullanın.
    • Desteği sonlandırılan DefaultLoadControl.Builder.createDefaultLoadControl() öğesini kaldırın, bunun yerine build() politikasını kullanın.
    • Kullanımdan kaldırılan MediaItem.PlaybackProperties yerine MediaItem.LocalConfiguration kullanın. Kullanımdan kaldırılan MediaItem.playbackProperties alanı artık MediaItem.LocalConfiguration türünde.

Sürüm 1.1.0-rc01

21 Haziran 2023

1.1.0 kararlı sürümü kullanın.

Sürüm 1.1.0-beta01

7 Haziran 2023

1.1.0 kararlı sürümü kullanın.

Sürüm 1.1.0-alpha01

10 Mayıs 2023

1.1.0 kararlı sürümü kullanın.

Sürüm 1.0.0

Sürüm 1.0.2

18 Mayıs 2023

androidx.media3:media3-*:1.0.2 yayınlandı. 1.0.2 sürümü bu kaydetmeleri içerir.

Bu sürüm ExoPlayer 2.18.7 sürümüne karşılık gelir.

Bu sürüm, 1.0.1 sürümünden bu yana aşağıdaki değişiklikleri içermektedir:

  • Temel kitaplık:
    • Buffer öğesinin C.BUFFER_FLAG_LAST_SAMPLE işaretini içerip içermediğini gösteren Buffer.isLastSample() ekleyin.
    • Çerçeve içeren son örnek, "akış sonu" örneği okunmadan sıraya alınırsa son karenin oluşturulamaması sorunu düzeltildi. (#11079).
  • Ayıklayıcılar:
    • RTSP ve MP4 ayıklayıcıları tarafından halihazırda kullanılan ayrıştırma mantığını yeniden kullanarak MPEG-TS dosyalarında H.265 SPS ayrıştırmasını düzeltin (#303).
  • Kısa mesaj:
    • SSA: Bayt sıra işaretiyle başlayan UTF-16 dosyaları için destek ekleyin (#319).
  • Oturum:
    • MediaController ürününün, işlemlerini güncelleyen eski bir MediaSessionCompat öğesine bağlandığında kullanılabilir komutları güncellememesi sorunu düzeltildi.
    • API 30'da System UI'dan Callback.onGetLibraryRoot öğesine params.isRecent == true ile yapılan bir çağrı için MediaLibraryService öğesinin null döndürmesini engelleyen hatayı düzeltin (#355).
    • MediaSessionService veya MediaLibraryService bellek sızıntısını düzeltin (#346).
    • MediaSession içindeki Timeline ve konum güncellemesinin, MediaController öğesinin IllegalStateException atmasına neden olabileceği hata düzeltildi.

Sürüm 1.0.1

18 Nisan 2023

androidx.media3:media3-*:1.0.1 yayınlandı. Sürüm 1.0.1 bu kaydetmeleri içerir.

Bu sürüm ExoPlayer 2.18.6 sürümüne karşılık gelir.

  • Temel kitaplık:
    • Varsayılan konuma geçerken hedef canlı yayın geçersiz kılma ayarını sıfırlayın (#11051).
    • Medyadaki boş örnek akışların oynatmanın takılmasına neden olabileceği hatayı düzeltin.
  • Oturum:
    • Eski bir MediaSessionCompat tarafından yayınlanan birden fazla özdeş sıra öğesinin MediaController öğesinde istisnaya neden olduğu hatayı düzeltin (#290).
    • Eksik olan MediaSession.broadcastCustomCommand yönlendirmesini eski MediaControllerCompat.Callback.onSessionEvent'ye ekleyin (#293).
    • MediaSession.setPlayer çağrısının mevcut komutların güncellenmemesiyle ilgili hata düzeltildi.
    • MediaController öğesinden gönderilen TrackSelectionOverride örneğin, Format.metadata öğesini içeren bir gruba başvuruda bulunması durumunda yoksayılması sorununu düzeltin (#296).
    • Meta verilere eski MediaSessionCompat üzerinden erişmek için Player.COMMAND_GET_CURRENT_MEDIA_ITEM öğesinin kullanılabilir olması gereken sorunu düzeltin.
    • Arka plandaki bir ileti dizisindeki MediaSession örnek, MediaSessionService içinde kullanıldığında kilitlenmeye neden olan sorunu düzeltin (#318).
    • Uygulamada böyle bir amaç olmadan medya düğmesi alıcısının kitaplık tarafından bildirilmesi sorunu düzeltin (#314).
  • DASH:
    • Boş segment zaman çizelgelerinin işlenmesiyle ilgili sorunu düzeltin (#11014).
  • RTSP:
    • UDP ile RTSP Kurulumu, RTSP Hatası 461 DesteklenmeyenTransport (#11069) ile başarısız olursa TCP ile yeniden deneyin.

Sürüm 1.0.0

22 Mart 2023

androidx.media3:media3-*:1.0.0 yayınlandı. 1.0.0 sürümü bu kaydetmeleri içerir.

Bu sürüm ExoPlayer 2.18.5 sürümüne karşılık gelir.

1.0.0-rc02 tarihinden bu yana herhangi bir değişiklik yok.

Sürüm 1.0.0-rc02

2 Mart 2023

androidx.media3:media3-*:1.0.0-rc02 yayınlandı. Sürüm 1.0.0-rc02 bu kaydetmeleri içerir.

Bu sürüm ExoPlayer 2.18.4 sürümüne karşılık gelir.

  • Temel kitaplık:
    • API 33'te ağ türü algılamayı düzeltin (#10970).
    • ExoPlayer.isTunnelingEnabled numaralı telefonu ararken NullPointerException sorununu düzeltin (#10977).
  • İndirilenler:
    • SegmentDownloader ve alt sınıflarda yapılandırılabilir olacak şekilde iki segmentin başlangıç zamanındaki maksimum farkı oluşturun (#248).
  • Ses:
    • Samsung cihazlarda bozuk aralıksız MP3 çalma sorununu düzeltme (#8594).
    • Ses devre dışı bırakıldıktan hemen sonra ayarlanan oynatma hızlarının önceki bir hız değişikliği nedeniyle geçersiz kılınabileceği hatayı düzeltme (#10882).
  • Video:
    • HEVC HDR10 biçimini HEVCProfileMain10 yerine HEVCProfileMain10HDR10 ile eşleyin.
    • Google TV Yüklü Chromecast ve Lenovo M10 FHD Plus'ta, 60 fps AVC akışlarının desteklenmiyor olarak işaretlenmesine neden olan bir cihaz sorunu için geçici çözüm ekleyin (#10898).
    • Kare hızı ekran yenileme hızından çok daha yüksek olan medya oynatırken kare bırakma performansı sorunlarını düzeltin.
  • Yayınlama:
    • Medya öğeleri arasında geçiş yaparken geçici STATE_IDLE sorununu düzeltin (#245).
  • RTSP:
    • Geçersiz RTSP ayrıştırılırken atılan LegalArgumentException hatasını yakalayın Yanıt mesajlarını açıklayın (#10971).
  • Oturum:
    • Bildirim oynat/duraklat düğmesinin oynatıcı durumuyla güncellenmemesiyle ilgili hatayı düzeltin (#192).
  • IMA uzantısı:
    • İlk (ve reklamsız durumda tek) LOADED etkinliği alınmadığı için reklam olmadan DAI akışlarının başlamasını engelleyen hatayı düzeltin.

Sürüm 1.0.0-rc01

16 Şubat 2023

androidx.media3:media3-*:1.0.0-rc01 yayınlandı. Sürüm 1.0.0-rc01 bu kaydetmeleri içerir.

Bu sürüm ExoPlayer 2.18.3 sürümüne karşılık gelir.

  • Temel kitaplık:
    • Kod çözücü medyayı iyi bir şekilde oynatamadığını bildirse bile, oluşturucunun kod çözücü sıralama mantığını MediaCodecSelector tercihleri için geçerli olacak şekilde ayarlayın. Örneğin, varsayılan seçicide yalnızca işlevsel desteği olan bir donanım kod çözücü, biçimi tamamen destekleyen yazılım kod çözücüye tercih edilir (#10604).
    • Yeni bir ExoPlayer örneği için önceden mevcut bir oynatma ileti dizisi ayarlayan ExoPlayer.Builder.setPlaybackLooper ekleyin.
    • İndirme yöneticisi yardımcılarının temizlenmesine izin ver (#10776).
    • Arama için kullanılan komutu da belirtmek için BasePlayer.seekTo öğesine parametre ekleyin.
    • API 21 ve sonraki sürümlerde çizimleri yüklerken temayı kullanın (#220).
    • Birden fazla medya öğesinin tek bir pencerede birleştirilmesini sağlayan ConcatenatingMediaSource2 ekleyin (#247).
  • Ayıklayıcılar:
    • trak atomlarını ayrıştırırken örnek tabloda (stbl) gerekli bir örnek açıklaması (stsd) yoksa NullPointerException yerine ParserException kullanın.
    • fMP4'te doğrudan bir senkronizasyon karesine bakarken örnekleri doğru şekilde atlayın (#10941).
  • Ses:
    • Doğrudan oynatmalarda (geçiş reklamı) AudioTrack için minimum arabellek boyutunu hesaplamak üzere sıkıştırılmış ses biçimi bit hızını kullanın.
  • Kısa mesaj:
    • Bir altyazı dosyasında hiç işaret yoksa TextRenderer işlevinin Subtitle.getEventTime öğesine geçersiz (negatif) bir dizin iletmesi sorununu düzeltin.
    • SubRip: Bir bayt sıra işaretiyle başlayan UTF-16 dosyaları için destek ekleyin.
  • Üst veri:
    • ID3 v2.4 tarafından izin verildiği şekilde ID3 çerçevelerinden boş değerle ayrılmış birden fazla değeri ayrıştırın.
    • Meta verilerin tanımladığı içerik türünü veya klasör türünü belirtmek için MediaMetadata.mediaType ekleyin.
    • MediaMetadata.folderType yerine MediaMetadata.isBrowsable ekleyin. Bu klasör türü sonraki sürümde kullanımdan kaldırılacaktır.
  • DASH:
    • Resim uyarlama grupları için karo sayısı dahil olmak üzere tam ayrıştırma ekleyin (#3752).
  • Kullanıcı arayüzü:
    • Görünürlük değişikliklerinin kayıtlı dinleyiciye iletildiğinden emin olmak için desteği sonlandırılan PlayerView.setControllerVisibilityListener(PlayerControlView.VisibilityListener) sorununu düzeltin (#229).
    • Sağdan sola (RTL) düzeni kullanırken PlayerView içinde orta oynatıcı kontrollerinin sıralamasını düzeltin (#227).
  • Oturum:
    • Özel oynatıcılar için Player arayüzünü uygulamaya yardımcı olması için soyut SimpleBasePlayer ekleyin.
    • Platform oturum jetonunu Media3'e dönüştürmek için yardımcı yöntem ekleyin SessionToken (#171).
    • Platform medya oturumunun güncellemelerini tetiklemek için onMediaMetadataChanged işlevini kullanın (#219).
    • Medya oturumunu, DefaultMediaNotificationProvider öğesinin getMediaButtons() bağımsız değişkeni olarak ekleyin ve netlik için sabit listeler kullanın (#216).
    • Player'a ayarlamadan önce MediaItem listesini, başlangıç dizinini ve konumu oturuma göre değiştirme/ayarlama yöntemleri sağlamak için onSetMediaItems geri çağırma dinleyicisi ekleyin (#156).
    • Bluetooth olmayan medya düğmesi etkinlikleri için iki kez dokunma algılamasını önleyin (#233).
    • şüpheli bir eski oturum durumu olması durumunda QueueTimeline uygulamasını daha güçlü hale getirin (#241).
  • Üst veri:
    • ID3 v2.4 tarafından izin verildiği şekilde ID3 çerçevelerinden boş değerle ayrılmış birden fazla değeri ayrıştırın.
    • Meta verilerin tanımladığı içerik türünü veya klasör türünü belirtmek için MediaMetadata.mediaType ekleyin.
    • MediaMetadata.folderType yerine MediaMetadata.isBrowsable ekleyin. Bu klasör türü sonraki sürümde kullanımdan kaldırılacaktır.
  • Yayın uzantısı:
    • Cast SDK'sı sürümünü 21.2.0'a yükseltin.
  • IMA uzantısı:
    • İleti dizisi sorunlarını önlemek için uygulama iş parçacığında ImaServerSideAdInsertionMediaSource oynatıcı işleyicisini kaldırın.
    • TV cihazlarında atla düğmesine odaklanma isteğinde bulunmak ve bunu varsayılan olarak doğru değerine ayarlamak için ImaServerSideAdInsertionMediaSource.AdsLoader.Builder öğesine focusSkipButtonWhenAvailable özelliği ekleyin.
    • Programatik olarak atla düğmesine odaklanmayı istemek için ImaServerSideAdInsertionMediaSource.AdsLoader öğesine focusSkipButton() yöntemi ekleyin.
    • IMA SDK sürümünü 3.29.0'a yükseltin.
  • Demo uygulama:
    • Çalışma zamanında indirme bildirimleri için bildirim izni isteme (#10884).

Sürüm 1.0.0-beta03

22 Kasım 2022

androidx.media3:media3-*:1.0.0-beta03 yayınlandı. Sürüm 1.0.0-beta03 bu kaydetmeleri içerir.

Bu sürüm ExoPlayer 2.18.2 sürümüne karşılık gelir.

  • Temel kitaplık:
    • Şu anda seçili olan kanallarda tünellemenin etkin olup olmadığını kontrol etmek için ExoPlayer.isTunnelingEnabled ekleyin (#2518).
    • Tek bir MediaSource sarmalamayı kolaylaştırmak için WrappingMediaSource ekleyin (#7279).
    • Yetersiz bellek nedeniyle oynatma takılmadan önce geri arabelleği silin.
    • Boşaltma etkinleştirildiğinde İzleme "doSomeWork" blokunu kapatın.
    • PlaybackStatsListener ürününde hızlı aramalarla ilgili oturum izleme sorununu düzeltin (#180).
    • Tek öğeli bir oynatma listesinde seekToNext veya seekToPrevious çağrısı yapıldığında eksik onMediaItemTransition geri çağırmasını gönderin (#10667).
    • Videonun oluşturulduğu yüzeyin boyutunu döndüren Player.getSurfaceSize ekleyin.
    • Oynatıcının yayınlanması sırasında dinleyicileri kaldırmanın IllegalStateException (#10758) sorununa neden olabileceği hata düzeltildi.
  • Derleme:
    • Derleme hatalarını önlemek için minimum compileSdkVersion değerini zorunlu kılın (#10684).
    • Başka bir gradle derlemesine dahil edildiğinde engelleme yayınlamaktan kaçının.
  • Parça seçimi:
    • Ekran desteklemiyorsa diğer parçaları Dolby Vision'a tercih edin. (#8944).
  • İndirilenler:
    • Aynı PriorityTaskManager ile eş zamanlı indirme ve oynatmanın neden olduğu ProgressiveDownloader içindeki olası sonsuz döngüyü düzeltin (#10570).
    • İndirme bildiriminin hemen görünmesini sağlayın (#183).
    • Çok fazla ileti dizisi oluşturulmasını önlemek için paralel indirme kaldırma işlemlerini 1 ile sınırlayın (#10458).
  • Video:
    • Ekran desteklemiyorsa Dolby Vision için alternatif kod çözücüyü deneyin. (#9794).
  • Ses:
    • Aynı anda birden fazla oynatıcı yayınlarken OutOfMemory hatalarını önlemek amacıyla AudioTrack örnek serbest bırakmak için SingleThreadExecutor kullanın (#10057).
    • AudioTrack boşaltma durumu için AudioOffloadListener.onExperimentalOffloadedPlayback ekler. (#134).
    • AudioTrackBufferSizeProvider öğesini herkese açık arayüz yapın.
    • Tercih edilen ses çıkış cihazını ayarlamak için ExoPlayer.setPreferredAudioDevice ekleyin (#135).
    • androidx.media3.exoplayer.audio.AudioProcessor öğesinin adını androidx.media3.common.audio.AudioProcessor olarak değiştirin.
    • Tüm Android sürümlerinde 8 kanallı ve 12 kanallı sesi sırasıyla 7.1 ve 7.1.4 kanal maskeleriyle eşleyin (#10701).
  • Üst veri:
    • MetadataRenderer artık meta veriler kullanılabilir olduğu anda oluşturulacak şekilde yapılandırılabilir. Oluşturucunun meta verileri erkenden mi yoksa oynatıcı konumuyla senkronize olarak mı çıkaracağını belirtmek için MetadataRenderer(MetadataOutput, Looper, MetadataDecoderFactory, boolean) ile bir örnek oluşturun.
  • DRM:
    • Android 13 Temizleme Anahtarı uygulamasında, boş olmayan ancak geçersiz bir lisans URL'si döndüren hataya geçici çözüm bulunması.
    • Bir oynatma listesindeki DRM şemaları arasında geçiş yaparken (ör. Widevine'dan DeleteKey'e) setMediaDrmSession failed: session not opened hatasını düzeltin.
  • Kısa mesaj:
    • CEA-608: 2. alandaki hizmet geçiş komutlarının doğru şekilde işlendiğinden emin olun (#10666).
  • DASH:
    • EventStream.presentationTimeOffset öğesini manifestlerden ayrıştırın (#10460).
  • Kullanıcı arayüzü:
    • Oynatıcının mevcut geçersiz kılmalarını önceden ayarlanmış olarak kullanın TrackSelectionDialogBuilder (#10429).
  • Oturum:
    • Bazıları eşzamansız çözünürlük gerektirse bile komutların her zaman doğru sırada yürütüldüğünden emin olun (#85).
    • DefaultMediaNotificationProvider örneklerini derlemek için DefaultMediaNotificationProvider.Builder ekleyin. Oluşturucu; bildirim kimliğini, bildirim kanalı kimliğini ve sağlayıcı tarafından kullanılan bildirim kanalı adını yapılandırabilir. Ayrıca, bildirimler küçük simgesi ayarlamak için DefaultMediaNotificationProvider.setSmallIcon(int) yöntemini ekleyin. (#104).
    • MediaController.release() tarihinden önce gönderilen komutların atlanmadığından emin olun (#99).
    • SimpleBitmapLoader, file:// URI'lerden bit eşlem yükleyebilir (#108).
    • MediaController ürününün belirli bir süre içinde bir reklamı aramasını engelleyen onaylamayı düzeltin (#122).
    • Oynatma sona erdiğinde, MediaSessionService ön planda durdurulur ve oynatılan son medya öğesinin oynatılmasını yeniden başlatmak için bir bildirim gösterilir (#112).
    • Duraklatma niyetiyle bir ön plan hizmetini başlatmayın (#167).
    • API 26 ve API 27'de DefaultNotificationProvider tarafından oluşturulan bildirimle ilişkili "rozeti" manuel olarak gizleyin (rozet, API 28 ve sonraki sürümlerde otomatik olarak gizlenir) (#131).
    • Eski bir MediaSession'dan Media3 MediaController'a ikinci bir bağlayıcı bağlantısının Yasadışı Durum İstisnalarına neden olduğu hata düzeltildi (#49).
  • RTSP:
    • H263 parçalanmış paket işlemeyi ekleyin (#119).
    • MP4A-LATM için destek ekleyin (#162).
  • IMA:
    • IMA SDK'nın reklam yüklerken takıldığı durumları ele almak üzere reklam bilgilerini yükleme için zaman aşımı ekleyin (#10510).
    • İçeriğin sonuna doğru ilerlerken videonun ortasında gösterilen reklamların atlanmasını önleme (#10685).
    • IMA DAI gibi sunucu tarafı eklenen reklamların yer aldığı canlı yayınlar için aralık süresini doğru şekilde hesaplayın (#10764).
  • FFmpeg uzantısı:
    • FFmpeg kitaplıklarını NDK 23.1.7779620 ve sonraki sürümlere bağlamak için yeni gereken flag'leri ekleyin (#9933).
  • AV1 uzantısı:
    • En son Android Studio sürümleriyle uyumsuzlukları önlemek için CMake sürümünü güncelleyin (#9933).
  • Yayın uzantısı:
    • MediaController ile oynatmayı kontrol ederken CastPlayer öğesini tanımlayabilmek için getDeviceInfo() uygulayın (#142).
  • Dönüştürücü:
    • Çıkış örneği oluşturma işleminin çok yavaş olduğunu algılamak için muxer güvenlik zamanlayıcısı ekleyin.
  • Kullanımdan kaldırılan simgeleri kaldırın:
    • Transformer.Builder.setOutputMimeType(String) öğesini kaldır Bu özellik kaldırılmıştır. Varsayılan muxer kullanıldığında MIME türü her zaman MP4 olur.

Sürüm 1.0.0-beta02

21 Temmuz 2022

androidx.media3:media3-*:1.0.0-beta02 yayınlandı. Sürüm 1.0.0-beta02 bu kaydetmeleri içerir.

Bu sürüm ExoPlayer 2.18.1 sürümüne karşılık gelir.

  • Temel kitaplık:
    • ShuffleOrder parametresi ExoPlayer.setShuffleOrder ile değiştirildiğinde, reason=Player.TIMELINE_CHANGE_REASON_PLAYLIST_CHANGED ile Player.Listener#onTimelineChanged çağrısı yapıldığından emin olun (#9889).
    • Progresif medya için yalnızca seçilen parçaları arabelleğe alınmış konuma ekleyin (#10361).
    • Tüm ExoPlayer günlük çıkışları için özel günlükçüye izin ver (#9752).
    • Bazı durumlarda işlevsel olmayan setDataSourceFactory uygulamasını DefaultMediaSourceFactory içinde düzeltin (#116).
  • Ayıklayıcılar:
    • H265 kısa vadeli referans resim gruplarının ayrıştırılmasını düzeltin (#10316).
    • esds kutularındaki bit hızlarının ayrıştırılmasını düzeltin (#10381).
  • DASH:
    • NetKey lisans URL'sini manifestlerden ayrıştırın (#10246).
  • Kullanıcı arayüzü:
    • TalkBack'in, oynatma kontrolleri menüsünde mevcut durumda etkin olan hız seçeneğini duyurduğundan emin olun (#10298).
  • RTSP:
    • VP8 parçalı paket işleme ekleyin (#110).
  • Leanback uzantısı:
    • LeanbackAdapter içindeki playWhenReady değişikliklerini dinleyin (10420).
  • Yayınlama:
    • Oynatma listesi yöntemlerine CastTimeline içinde Window.mediaItem olarak iletilen MediaItem öğesini kullanın (#25, #8212).
    • Player.getMetadata() ve Listener.onMediaMetadataChanged() adlı kullanıcıları CastPlayer ile destekleyin (#25).

Sürüm 1.0.0-beta01

16 Haziran 2022

androidx.media3:media3-*:1.0.0-beta01 yayınlandı. Sürüm 1.0.0-beta01 bu kaydetmeleri içerir.

Bu, ExoPlayer 2.18.0 sürümüne karşılık gelir.

  • Temel kitaplık:
    • MediaMetricsManager üzerinden Android platform teşhisi desteğini etkinleştirin. ExoPlayer, oynatma etkinliklerini ve performans verilerini platforma ileterek cihazda sistem performansı ve hata ayıklama bilgilerinin sağlanmasına yardımcı olur. Bu veriler, cihazın kullanıcısı tarafından kullanım ve teşhis verilerini paylaşma özelliği etkinleştirildiyse Google tarafından da toplanabilir. Uygulamalar, ExoPlayer.Builder.setUsePlatformDiagnostics(false) ile ExoPlayer için platform teşhislerine katkıda bulunmayı devre dışı bırakabilir.
    • MergingMediaSource kullanılırken parçaların çok sık sıfırlanması hatasını düzeltin (ör. altyazıları başka bir şekilde yüklerken ve oynatma sırasında seçili altyazıyı değiştirirken) (#10248).
    • API 29 ve 30'da 5G-NSA ağ türünü algılamayı durdurun. Bu oynatmalar için 4G ağ kullanıldığı varsayılır.
    • null öğesinin MediaSource.Factory.setDrmSessionManagerProvider ve MediaSource.Factory.setLoadErrorHandlingPolicy özelliklerine iletilmesine izin verme. DefaultDrmSessionManagerProvider ve DefaultLoadErrorHandlingPolicy örnekleri, gerekirse açıkça iletilebilir.
    • Tam LocalConfiguration bilinmediğinde medya oynatmak için gereken meta verileri temsil etmesi için MediaItem.RequestMetadata ekleyin. Ayrıca bu öğe RequestMetadata paketine dahil edildiği için MediaMetadata.mediaUrl öğesini de kaldırın.
    • Oyuncuların tek bir öğe ayarlamasına izin verebilmesi için Player.Command.COMMAND_SET_MEDIA_ITEM ekleyin.
  • Parça seçimi:
    • TrackSelectionOverrides sınıfını TrackSelectionParameters olarak birleştir ve TrackSelectionOverride sınıfını üst düzey bir sınıfa yükselt.
    • TracksInfo alanının adını Tracks ve TracksInfo.TrackGroupInfo konumunu Tracks.Group olarak yeniden adlandırın. Player.getCurrentTracksInfo ve Player.Listener.onTracksInfoChanged adlı kullanıcıların adları da Player.getCurrentTracks ve Player.Listener.onTracksChanged olarak değiştirildi. Bu, farklı parametre türleriyle Player.Listener.onTracksChanged yöntem adının "kullanımdan kaldırılmasını" içerir.
    • Desteği sonlandırılan DefaultTrackSelector.ParametersBuilder yerine DefaultTrackSelector.Parameters.Builder değerini döndürecek şekilde DefaultTrackSelector.buildUponParameters ve DefaultTrackSelector.Parameters.buildUpon değerlerini değiştirin.
    • Varsayılan olarak etkin olan DefaultTrackSelector.Parameters.constrainAudioChannelCountToDeviceCapabilities değerini ekleyin. Etkinleştirildiğinde DefaultTrackSelector, kanal sayısı cihaz çıkış özelliklerini aşmayan ses parçalarını tercih eder. Avuç içi cihazlarda, çok kanallı biçim üç boyutlu (Android 12L ve sonraki sürümler) veya Dolby surround ses biçimi değilse DefaultTrackSelector çok kanallı ses biçimleri yerine stereo/mono'yu tercih eder. Ayrıca DefaultTrackSelector, ses konumlaştırmayı destekleyen cihazlarda Üç Boyutlu Oluşturucu özelliklerindeki değişiklikleri izler ve bunlar üzerinde yeni bir parça seçimi tetikler. television Kullanıcı arayüzü moduna sahip cihazlar bu kısıtlamalardan hariç tutulur ve en yüksek kanal sayısına sahip biçim tercih edilir. Bu özelliğin etkinleştirilmesi için DefaultTrackSelector örneğinin bir Context ile oluşturulması gerekir.
  • Video:
    • DummySurface listesinin adını PlaceholderSurface olarak değiştir.
    • MediaCodecVideoRenderer.getCodecMaxInputSize kanalına AV1 desteği ekleyin.
  • Ses:
    • Standart olmayan MIME türünü tanıtan LG AC3 ses kod çözücüyü kullanın.
    • API < 21'de yavaş ART doğrulamasını önlemek için android.media.AudioAttributes olan AudioAttributes.getAudioAttributesV21() döndürme türünü yeni bir AudioAttributesV21 sarmalayıcı sınıfıyla değiştirin.
    • HLS parçasız hazırlık işleminde (10204) ses kanalı sayısı ayarlanmadan bırakıldığında platformu sorgulayın (API 29+) veya ses geçişi için ses kodlama kanal sayısını varsayın.
    • Kod çözücü 12 kanallı PCM sesi (#10322) veriyorsa AudioTrack özelliğini kanal maskesi AudioFormat.CHANNEL_OUT_7POINT1POINT4 ile yapılandırın.
  • DRM
    • Biçim değişikliğinden hemen sonra arama yapıldığında DRM oturumunun her zaman doğru şekilde güncellendiğinden (10274) emin olun.
  • Kısa mesaj:
    • Player.getCurrentCues() değerini, List<Cue> yerine CueGroup değerini döndürecek şekilde değiştirin.
    • SSA: BorderStyle == 3 (ör. OutlineColour, reklam işaretinin arka planını ayarladığında) OutlineColour stil ayarını destekler (#8435).
    • CEA-708: Verileri birden fazla hizmet bloğuna ayrıştırın ve seçili olan hizmet numarasıyla ilişkili olmayan engellemeleri yoksayın.
    • Yalnızca Google'ın kendi altyazı biçimlerini işlemek için kullanılan RawCcExtractor politikasını kaldırın.
  • Ayıklayıcılar:
    • AVI için destek ekleyin (#2092).
    • Matroska: Opus parçaları için DiscardPadding ayrıştır.
    • MP4: esds kutulardan bit hızlarını ayrıştırır.
    • Ogg: Yinelenen Opus kimliği ve yorum başlıklarına izin verin (#10038).
  • Kullanıcı arayüzü:
    • useController=false olması (#9605) durumunda, PlayerView tarihinde ayarlanan OnClickListener işlemlerine etkinlik teslimini düzeltin. Ayrıca tüm görünüm yapılandırmaları için etkinliklerin OnLongClickListener hedefine teslimini de düzeltin.
    • ACTION_UP öncesinde PlayerView sınırlarından çıkan bir dokunma etkinliği dizisinin yanlış bir şekilde tıklama olarak ele alınması sorununu düzeltin (#9861).
    • Kontrolleri gizlemek yerine dokunarak oynatmayı etkinleştirme/devre dışı bırakmaya yol açabilecek PlayerView erişilebilirlik sorununu düzeltin (#8627).
    • ExoPlayer yerine Player arayüzüyle çalışacak şekilde TrackSelectionView ve TrackSelectionDialogBuilder öğelerini yeniden yazın. Bu, görünümlerin diğer Player uygulamalarıyla kullanılmasına izin verir ve kullanıcı arayüzü modülünden ExoPlayer modülüne bağımlılığı ortadan kaldırır. Bu yıkıcı bir değişiklik.
    • PlayerView kanal seçicide zorunlu metin parçalarını göstermeyin ve "Yok" seçeneği belirlenmişse uygun bir zorunlu metin parçasını seçili tutun (#9432).
  • DASH:
    • Kanal sayısını DTS AudioChannelConfiguration öğelerinden ayrıştırın. Bu, DTS akışları için ses geçişini yeniden etkinleştirir (#10159).
    • null öğesinin DashMediaSource.Factory.setCompositeSequenceableLoaderFactory öğesine iletilmesine izin verme. DefaultCompositeSequenceableLoaderFactory örnekleri, gerekirse açıkça iletilebilir.
  • HLS:
    • Oynatma listesi CODECS özelliği, ses codec'ini (#10065) içermiyorsa parçalı hazırlamaya geri dön.
    • null öğesinin HlsMediaSource.Factory.setCompositeSequenceableLoaderFactory, HlsMediaSource.Factory.setPlaylistParserFactory ve HlsMediaSource.Factory.setPlaylistTrackerFactory sürümlerine iletilmesine izin verme. DefaultCompositeSequenceableLoaderFactory ve DefaultHlsPlaylistParserFactory örnekleri veya DefaultHlsPlaylistTracker.FACTORY öğesine yapılan referans, gerekirse açıkça iletilebilir.
  • Sorunsuz canlı yayın:
    • null öğesinin SsMediaSource.Factory.setCompositeSequenceableLoaderFactory öğesine iletilmesine izin verme. DefaultCompositeSequenceableLoaderFactory örnekleri, gerekirse açıkça iletilebilir.
  • RTSP:
    • H263 için RTP okuyucu ekleyin (#63).
    • MPEG4 için RTP okuyucu ekleyin (#35).
    • HEVC için RTP okuyucu ekleyin (#36).
    • AMR için RTP okuyucu ekleyin. Şu anda yalnızca tek kanallı ve araya dahil olmayan AMR akışları desteklenmektedir. Bileşik AMR RTP yükü desteklenmiyor. (#46)
    • VP8 için RTP okuyucu ekleyin (#47).
    • WAV için RTP okuyucu ekleyin (#56).
    • RTSP temel yetkilendirme başlığını düzeltin. (#9544).
    • ExoPlayer'ın ihtiyacı olmadığından zorunlu SDP alanlarını kontrol etmeyi bırakın (#10049).
    • RTSP zamanlamasını ayrıştırırken işaretli istisnayı atın (#10165).
    • VP9 için RTP okuyucu ekleyin (#47).
    • OPUS için RTP okuyucu ekleyin (#53).
  • Veri kaynakları:
    • DummyDataSource listesinin adını PlaceholderDataSource olarak değiştir.
    • OkHttp kesme işlemeye yönelik geçici çözüm.
  • Oturum:
    • İsteklerin eşzamansız olarak çözülmesine izin vermek için MediaSession.MediaItemFiller değerini MediaSession.Callback.onAddMediaItems ile değiştirin.
    • MediaController eski bir medya oturumuna bağlandığında setMediaItems(s) yöntemlerini destekleyin.
    • MediaController.setMediaUri ve MediaSession.Callback.onSetMediaUri kaldırın. Aynı işlev, MediaController.setMediaItem ve MediaSession.Callback.onAddMediaItems kullanarak da elde edilebilir.
    • Medyayı oynatmak için eski MediaController çağrılarını onSetMediaUri yerine MediaSession.Callback.onAddMediaItems adresine yönlendirin.
    • Bildirimin özelleştirilmesi için MediaNotification.Provider ve DefaultMediaNotificationProvider ekleyin.
    • Poster resimlerini indirmek için BitmapLoader ve SimpleBitmapLoader ekleyin.
    • Eski oturumla geriye dönük uyumluluk sağlamak için MediaSession.setCustomLayout() ekleyin.
    • Eski oturumla özellik eşdeğeri sağlamak için MediaSession.setSessionExtras() ekleyin.
    • MediaSession.MediaSessionCallback öğesinin adını MediaSession.Callback, MediaLibrarySession.MediaLibrarySessionCallback adını MediaLibrarySession.Callback ve MediaSession.Builder.setSessionCallback adlı öğenin adını setCallback olarak değiştirin.
    • MediaControllerImplLegacy içindeki NPE'yi düzeltin (#59).
    • Zaman çizelgesi değişikliğinde oturum konumu bilgilerini güncelleyin(#51).
    • Kumandayı serbest bıraktıktan sonra MediaControllerImplBase içinde NPE'yi düzeltin (#74).
  • Reklam oynatma / IMA:
    • Medya Derecelendirme Konseyi'nin (MRC) önerileri doğrultusunda, reklam yoklama hızını 100 ms'den her 200 ms'ye indirin.
  • FFmpeg uzantısı:
    • AndroidStudio'nun gradle senkronizasyonunun başarısız olmasına neden olan bir CMake hatasını önlemek için CMake sürümünü 3.21.0+ olarak güncelleyin (#9933).
  • Kullanımdan kaldırılan simgeleri kaldırın:
    • Player.Listener.onTracksChanged(TrackGroupArray, TrackSelectionArray) öğesini kaldır Bunun yerine Player.Listener.onTracksChanged(Tracks) politikasını kullanın.
    • Player.getCurrentTrackGroups ve Player.getCurrentTrackSelections kaldırın. Bunun yerine Player.getCurrentTracks politikasını kullanın. Ayrıca, ExoPlayer.getCurrentTrackGroups ve ExoPlayer.getCurrentTrackSelections özelliklerini kullanmaya devam edebilirsiniz ancak bu yöntemler kullanımdan kaldırılmıştır.
    • DownloadHelper DEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_VIEWPORT ve DEFAULT_TRACK_SELECTOR_PARAMETERS sabit değerlerini kaldırın. Mümkün olduğunda bunun yerine getDefaultTrackSelectorParameters(Context), aksi takdirde DEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_CONTEXT kullanın.
    • DefaultTrackSelector(ExoTrackSelection.Factory) oluşturucuyu kaldırın. Bunun yerine DefaultTrackSelector(Context, ExoTrackSelection.Factory) politikasını kullanın.
    • Transformer.Builder.setContext öğesini kaldır Context, bunun yerine Transformer.Builder oluşturucuya geçirilmelidir.

Sürüm 1.0.0-alpha03

14 Mart 2022

androidx.media3:media3-*:1.0.0-alpha03 yayınlandı. 1.0.0-alpha03 sürümü bu kaydetmeleri içerir.

Bu, ExoPlayer 2.17.1 sürümüne karşılık gelir.

  • Ses:
    • HLS'deki Dolby Atmos'un (E-AC3-JOC) ses özelliklerini kontrol ederken karşılaşılan sorunları düzeltin.
  • Ayıklayıcılar:
    • FMP4: Hem v0 hem de v1 emsg atomları içeren akışlarda e-posta örnek meta verilerinin yanlış sırada çıkmasına yol açan sorun düzeltildi (#9996).
  • Kısa mesaj:
    • SubtitleConfiguration alanına öncelik vermek için SingleSampleMediaSource.Factory.setTrackId ve MediaItem.SubtitleConfiguration.Builder.setId etkileşimini düzeltin ve ayarlanmadıysa Factory değerini kullanın (#10016).
  • Reklam oynatma:
    • Canlı HLS SSAI akışlarında reklam dönemleri arasında yaşanan ses kesintilerini düzeltin.

Sürüm 1.0.0-alpha02

2 Mart 2022

androidx.media3:media3-*:1.0.0-alpha02 yayınlandı. 1.0.0-alpha02 sürümü bu kaydetmeleri içerir.

Bu, ExoPlayer 2.17.0 sürümüne karşılık gelir.

  • Çekirdek Kitaplık:
    • Korumalı yöntem ekleyin DefaultRenderersFactory.getCodecAdapterFactory() bu şekilde geçersiz kılan DefaultRenderersFactory alt sınıfları buildVideoRenderers() veya buildAudioRenderers() codec adaptör fabrikasına erişebilir ve bunu, oluşturdukları MediaCodecRenderer örneklerine iletebilir.
    • Uygulamaya Player.Listener.onMediaMetadataChanged() üzerinden ulaşabilmeleri için ICY başlık alanlarını sırasıyla name ve genre ile MediaMetadata.station ve MediaMetadata.genre öğelerini çoğaltın (#9677).
    • DefaultHttpDataSource#getResponseHeaders cihazından boş anahtarları kaldırın.
    • MediaCodec örneği oluşturma işlemi başarısız olduğunda uyku moduna geçip yeniden deneyin. Bu, bazı cihazlarda bir yüzeyi güvenli codec'ten başka bir codec'e geçirirken ortaya çıkan soruna çözüm olarak çalışır (#8696).
    • Kullanıcıların MediaCodec üzerinden metrik verileri almasına izin vermek için MediaCodecAdapter.getMetrics() ekleyin. (#9766).
    • Maven bağımlılığı sorununu düzeltin (#8353).
    • Düşük gecikme özellikleri veya hızı belirleyen bir kullanıcı isteği olmayan canlı yayınlar için otomatik hız ayarlamayı devre dışı bırakın (#9329).
    • DecoderCounters#inputBufferCount listesinin adını queuedInputBufferCount olarak değiştir.
    • SimpleExoPlayer.renderers öğesini gizli hale getirin. Oluşturuculara ExoPlayer.getRenderer üzerinden erişilebilir.
    • Bazı AnalyticsListener.EventFlags sabit değerleri, Player.EventFlags içindeki değerlerle eşleşecek şekilde güncellendi.
    • AnalyticsCollector kodunu bir arayüze ve varsayılan uygulamaya ayırarak uygulamanın ihtiyaç duymadığı durumlarda R8 tarafından sadeleştirilmesini sağlayın.
  • Parça seçimi:
    • Parça seçiminde tercih edilen video rolü işaretlemelerini destekleyin (#9402).
    • Uyarlama için birden fazla video kanalı seçerken tercih edilen MIME türlerini ve rol işaretlerini dikkate alacak şekilde video parçası seçim mantığını güncelleyin (#9519).
    • Video ve ses parçası seçim mantığını, yalnızca aynı kod çözücü ve donanım desteğine (#9565) sahip uyarlanabilir seçimler için biçimleri seçecek şekilde güncelleyin.
    • Birincil, donanım hızlandırmalı kod çözücüler tarafından birden fazla codec destekleniyorsa video parçası seçme mantığını daha verimli codec'leri tercih edecek şekilde güncelleyin (#4835).
    • Teknik parça seçimi kısıtlamaları (örneğin, tercih edilen MIME türü veya maksimum kanal sayısı) yerine ses içeriği tercihlerini (örneğin, "varsayılan" ses parçası veya sistem yerel ayarıyla eşleşen bir parça) tercih edin.
    • Bir parça grubu geçersiz kılındığında aynı türdeki diğer kanal gruplarının devre dışı bırakılmamasına neden olan kanal seçimi sorununu düzeltin (#9675).
    • Boş olmayan ve boş kanal geçersiz kılma karışımının doğru şekilde uygulanmadığı kanal seçimi sorununu düzeltin (#9649).
    • TrackGroupArray içinde yinelenen TrackGroup öğelerini engelleyin. TrackGroup öğeleri, TrackGroup oluşturucuda bir id ayarlanarak her zaman ayırt edilebilir hale getirilebilir. Bu düzeltme, uygulama arka plana alınmış bir parçayı geçersiz kılarak devam ettirildikten sonra oynatmaya devam ederken oluşan kilitlenmeleri düzeltir (#9718).
    • Oynatma canlı kenara çok yakın olsa bile yeterli ağ bant genişliği altında kalite artışına olanak tanımak için AdaptiveTrackSelection mantığında değişiklik yapın (#9784).
  • Video:
    • Gerekirse Dolby Vision'ın uyumlu bir H264/H265 kod çözücüyü kullanması için kod çözücü yedek mantığını düzeltin.
  • Ses:
    • Gerekirse Dolby Atmos'un (E-AC3-JOC) uyumlu bir E-AC3 kod çözücüyü kullanması için kod çözücü yedek mantığını düzeltin.
    • AudioCapabilities API'lerini, null yerine açıkça AudioCapabilities.DEFAULT_AUDIO_CAPABILITIES iletilmesini gerektirecek şekilde değiştirin.
    • DefaultAudioSink öğesine AudioTrackBufferSizeProvider ekleyerek AudioTrack arabellek boyutu hesaplamasının özelleştirilmesine izin verin. (#8891).
    • İstenen arabellek boyutu 1 MB'tan büyükse AudioTrack öğesini oluşturmayı yeniden deneyin. (#9712).
  • Ayıklayıcılar:
    • WAV: RF64 akışları için destek ekleyin (#9543).
    • H.265 SPS NAL birimlerinin hatalı ayrıştırılmasını düzeltin (#9719).
    • Ogg Opus ve Ogg Vorbis dosyalarında Vorbis Yorumlarını (METADATA_BLOCK_PICTURE dahil) ayrıştırın.
  • Kısa mesaj:
    • Yapılandırmadan oluşturulan altyazı parçasının Format.id alanına bir MediaItem.SubtitleConfiguration.id alanı ekleyin (#9673).
    • Matroska kapsayıcılarına WebVTT altyazıları için temel destek ekleyin (#9886).
    • Cea708Decoder sitesinin, bir hizmet bloğunun bildirilen boyutundan daha fazlasını okumasını önleyin.
  • DRM:
    • playbackLooper kullanıcısını DrmSessionManager.(pre)acquireSession sitesinden kaldır. DrmSessionManager, bir uygulama tarafından özel MediaSource öğesinde kullanıldığında playbackLooper öğesinin DrmSessionManager.setPlayer öğesine aktarılması gerekir.
  • Reklam oynatma / IMA:
    • IMA Dinamik Reklam Ekleme (DAI) desteği ekleyin (#8213).
    • Bir reklam grubunun tekrar oynatılabilmesi için sıfırlanmasına olanak tanıyan bir yöntem ekleyin (#9615). AdPlaybackState
    • Reklam oynatma sırasında oynatma hızını 1.0 zorunlu kılın (#9018).
    • Yüklenemeyen bir reklam grubunun anında oynatmanın sıfırlanmasına neden olduğu sorunu düzeltin (#9929).
  • Kullanıcı arayüzü:
    • Belirli temaları kullanırken StyledPlayerView geri sarma ve ileri sarma düğmelerindeki sayıların rengini düzeltin (#9765).
    • Oynatma hızı dizelerini doğru şekilde çevirin (#9811).
  • DASH:
    • Representation öğesine ayrıştırılmış temel ve ek özellikleri ekleyin (#9579).
    • forced-subtitle kanalı rolünü destekleyin (#9727).
    • main kanalı rolünü C.SELECTION_FLAG_DEFAULT olarak yorumlamayı durdurun.
    • DVB ad alanını bildirmeyen manifest'ler için temel URL hariç tutma mantığını düzeltin (#9856).
    • Göreli MPD.Location URL'lerini destekler (#9939).
  • HLS:
    • Format.label öğesini yalnızca ses HLS akışları için doğru şekilde doldurun (#9608).
    • Başlatma süresini iyileştirmek için parçasız hazırlığı varsayılan olarak kullanın. Oluşturma işlemleriniz ana oynatma listesinde bildirilmeyen karışık altyazı parçaları içeriyorsa bunları çalmak için ana oynatma listesine eklemeniz veya HlsMediaSource.Factory.setAllowChunklessPreparation(false) ile parçasız hazırlamayı kapatmanız gerekir.
    • HLS'de anahtar kare doğru arama özelliğini destekleme (#2882).
  • RTSP:
    • Herhangi bir sunucu bağlantısı için kullanılan SocketFactory parametresini geçersiz kılacak bir istemci API'si sağlayın (#9606).
    • Her ikisi de mevcutsa BASIC yerine DIGEST kimlik doğrulama yöntemini tercih edin (#9800).
    • RTSP izleme zamanlaması kullanılamadığında işleyin (#9775).
    • Geçersiz RTP-Info başlık değerlerini yoksay (#9619).
  • Dönüştürücü:
    • Gerekli minimum API sürümünü 21'e yükseltin.
    • TransformationException artık dönüşüm sırasında oluşan hataları tanımlamak için kullanılıyor.
    • Dönüştürme seçeneklerini belirtmek için TransformationRequest ekleyin.
    • Birden fazla dinleyicinin kaydedilmesine izin verin.
    • codec çıkışı kısmen okunduğunda Dönüştürücünün takılması sorunu düzeltildi.
    • Muxer'ları serbest bırakırken Transformer.getProgress ürününde olası NPE'yi düzeltin.
    • Dönüşüm uygulamak için bir demo uygulama ekleyin.
  • MediaSession uzantısı:
    • Varsayılan olarak MediaSessionConnector, durdurulduğunda oynatma listesini temizler. Oynatma listesinin saklanmasını isteyen uygulamalar, bağlayıcıda setClearMediaItemsOnStop(false) komutunu çağırabilir.
  • Yayın uzantısı:
    • CastPlayer ürününün onIsPlayingChanged doğru şekilde çağırmasını engelleyen hatayı düzeltin (#9792).
    • Poster de dahil olmak üzere ses meta verilerini desteklemek için DefaultMediaItemConverter (#9663).
  • FFmpeg uzantısı:
    • build_ffmpeg.sh işlevinin, GNU'lar yerine LLVM'nin kutu yardımcılarına dayalı olmasını sağlayın (#9933).
  • Android 12 uyumluluğu:
    • Cast uzantısını, com.google.android.gms:play-services-cast-framework:20.1.0 uygulamasına bağımlı olacak şekilde yeni sürüme geçirin. Önceki play-services-cast-framework sürümleri Android 12'yi hedefleyen uygulamalarla uyumlu değildir ve PendingIntent oluşturulurken IllegalArgumentException ile kilitlenir (#9528).
  • Kullanımdan kaldırılan simgeleri kaldırın:
    • Player.EventListener öğesini kaldır Bunun yerine Player.Listener politikasını kullanın.
    • MediaSourceFactory#setDrmSessionManager, MediaSourceFactory#setDrmHttpDataSourceFactory ve MediaSourceFactory#setDrmUserAgent uygulamalarını kaldırın. Bunun yerine MediaSourceFactory#setDrmSessionManagerProvider kullanın.
    • MediaSourceFactory#setStreamKeys öğesini kaldır Bunun yerine MediaItem.Builder#setStreamKeys kullanın.
    • MediaSourceFactory#createMediaSource(Uri) öğesini kaldır Bunun yerine MediaSourceFactory#createMediaSource(MediaItem) kullanın.
    • setTag adlı kitleyi DashMediaSource, HlsMediaSource ve SsMediaSource adlı reklam grubundan kaldırın. Bunun yerine MediaItem.Builder#setTag politikasını kullanın.
    • DashMediaSource#setLivePresentationDelayMs(long, boolean) öğesini kaldır Manifest'i geçersiz kılmak için MediaItem.Builder#setLiveConfiguration ve MediaItem.LiveConfiguration.Builder#setTargetOffsetMs, yedek değer sağlamak içinse DashMediaSource#setFallbackTargetLiveOffsetMs kullanın.
    • (Simple)ExoPlayer.setThrowsWhenUsingWrongThread öğesini kaldır İş parçacığı yaptırımının kapsamı dışında kalmak artık mümkün değildir.
    • ActionFile ve ActionFileUpgradeUtil kaldırın. Eski işlem dosyalarını DefaultDownloadIndex ile birleştirmek için ActionFileUpgradeUtil uygulamasını kullanmak istiyorsanız ExoPlayer 2.16.1 veya daha eski bir sürüm kullanın.
    • ProgressiveMediaSource#setExtractorsFactory öğesini kaldır Bunun yerine ProgressiveMediaSource.Factory(DataSource.Factory, ExtractorsFactory) oluşturucuyu kullanın.
    • ProgressiveMediaSource.Factory#setTag ve ProgressiveMediaSource.Factory#setCustomCacheKey öğelerini kaldırın. Bunun yerine MediaItem.Builder#setTag ve MediaItem.Builder#setCustomCacheKey kullanın.
    • DefaultRenderersFactory(Context, @ExtensionRendererMode int) ve DefaultRenderersFactory(Context, @ExtensionRendererMode int, long) oluşturucularını kaldırın. Bunun yerine DefaultRenderersFactory(Context) oluşturucuyu, DefaultRenderersFactory#setExtensionRendererMode ve DefaultRenderersFactory#setAllowedVideoJoiningTimeMs kullanın.
    • Herkese açık tüm CronetDataSource oluşturucularını kaldır. Bunun yerine CronetDataSource.Factory kullanın.
  • Aşağıdaki IntDefs değerini yalnızca @Target(TYPE_USE) olarak değiştirin. Bu durum, Kotlin'deki kullanım derlemelerini bozabilir. Bu durumda, ek açıklamayı türe (Int) açıklama ekleyerek düzeltebilirsiniz.
    • @AacAudioObjectType
    • @Ac3Util.SyncFrameInfo.StreamType
    • @AdLoadException.Type
    • @AdtsExtractor.Flags
    • @AmrExtractor.Flags
    • @AspectRatioFrameLayout.ResizeMode
    • @AudioFocusManager.PlayerCommand
    • @AudioSink.SinkFormatSupport
    • @BinarySearchSeeker.TimestampSearchResult.Type
    • @BufferReplacementMode
    • @C.BufferFlags
    • @C.ColorRange
    • @C.ColorSpace
    • @C.ColorTransfer
    • @C.CryptoMode
    • @C.Encoding
    • @C.PcmEncoding
    • @C.Projection
    • @C.SelectionReason
    • @C.StereoMode
    • @C.VideoOutputMode
    • @CacheDataSource.Flags
    • @CaptionStyleCompat.EdgeType
    • @DataSpec.Flags
    • @DataSpec.HttpMethods
    • @DecoderDiscardReasons
    • @DecoderReuseResult
    • @DefaultAudioSink.OutputMode
    • @DefaultDrmSessionManager.Mode
    • @DefaultTrackSelector.SelectionEligibility
    • @DefaultTsPayloadReaderFactory.Flags
    • @EGLSurfaceTexture.SecureMode
    • @EbmlProcessor.ElementType
    • @ExoMediaDrm.KeyRequest.RequestType
    • @ExtensionRendererMode
    • @Extractor.ReadResult
    • @FileTypes.Type
    • @FlacExtractor.Flags (com.google.android.exoplayer2.ext.flac paketinde)
    • @FlacExtractor.Flags (com.google.android.exoplayer2.extractor.flac pakette)
    • @FragmentedMp4Extractor.Flags
    • @HlsMediaPlaylist.PlaylistType
    • @HttpDataSourceException.Type
    • @IllegalClippingException.Reason
    • @IllegalMergeException.Reason
    • @LoadErrorHandlingPolicy.FallbackType
    • @MatroskaExtractor.Flags
    • @Mp3Extractor.Flags
    • @Mp4Extractor.Flags
    • @NotificationUtil.Importance
    • @PlaybackException.FieldNumber
    • @PlayerNotificationManager.Priority
    • @PlayerNotificationManager.Visibility
    • @PlayerView.ShowBuffering
    • @Renderer.State
    • @RendererCapabilities.AdaptiveSupport
    • @RendererCapabilities.Capabilities
    • @RendererCapabilities.DecoderSupport
    • @RendererCapabilities.FormatSupport
    • @RendererCapabilities.HardwareAccelerationSupport
    • @RendererCapabilities.TunnelingSupport
    • @SampleStream.ReadDataResult
    • @SampleStream.ReadFlags
    • @StyledPlayerView.ShowBuffering
    • @SubtitleView.ViewType
    • @TextAnnotation.Position
    • @TextEmphasisSpan.MarkFill
    • @TextEmphasisSpan.MarkShape
    • @Track.Transformation
    • @TrackOutput.SampleDataPart
    • @Transformer.ProgressState
    • @TsExtractor.Mode
    • @TsPayloadReader.Flags
    • @WebvttCssStyle.FontSizeUnit

Sürüm 1.0.0-alpha01

27 Ekim 2021

androidx.media3:media3-*:1.0.0-alpha01 yayınlandı. 1.0.0-alpha01 sürümü bu kaydetmeleri içerir.

Yeni özellikler

Media3, ExoPlayer gibi medya destek kitaplıklarının yeni adresidir. İlk alfa sürümü, medya kullanım alanlarını uygulamaya yönelik kitaplıkların erken aşamadaki işlevsel uygulamalarını içerir. Örneğin:

  • Android için kolayca özelleştirilip genişletilebilen uygulama düzeyinde bir medya oynatıcı olan ExoPlayer.
  • Oynatmaları göstermek ve kontrol etmek için medya oturumu işlevi. Bu yeni oturum modülü, ExoPlayer ile aynı Player arayüzünü kullanır.
  • Medya oynatma kullanıcı arayüzleri oluşturmak için kullanılan kullanıcı arayüzü bileşenleri.
  • ExoPlayer ile kullanılmak üzere diğer kitaplıklarda bulunan sarmalama işlevi (ör. IMA SDK aracılığıyla reklam ekleme).

Daha fazla bilgi için Media3 GitHub projesine bakın.

ExoPlayer daha önce ayrı bir ExoPlayer GitHub projesinde barındırılıyordu. Media3'teki paket adı androidx.media3.exoplayer şeklindedir. Uygulamaların Media3'e taşınması için zaman tanımak amacıyla ExoPlayer GitHub projesini bir süre daha yayınlamaya ve yayınlamaya devam etmeyi planlıyoruz. Media3'te, yeni media3-session modülüyle değiştirilen eski media2 ve mediasession uzantıları hariç tüm ExoPlayer modüllerinin yerine bulunmaktadır. Bu, bağdaştırıcı/bağlayıcı sınıfı kullanmaya gerek kalmadan oynatıcılar ve medya oturumları arasında doğrudan entegrasyon sağlar.