Media3

Medya kullanım alanları için destek kitaplıkları.
Son Güncelleme Kararlı Sürüm Sürüm Adayı Beta Sürümü Alfa Sürümü
26 Ekim 2026 1.11.1 - - 1.12.0-alpha02

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 deposu sayfasını okuyun.

Uygulamanız veya modülünüz için build.gradle dosyasında ihtiyacınız olan yapıların bağımlılıklarını ekleyin:

Eski

dependencies {
    def media3_version = "1.11.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 using Jetpack Compose
    implementation "androidx.media3:media3-ui-compose:$media3_version"
    // For building media playback UIs using Jetpack Compose with Material Design 3
    implementation "androidx.media3:media3-ui-compose-material3:$media3_version"
    // For building media playback UIs using Views
    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 inspecting media files
    implementation "androidx.media3:media3-inspector:$media3_version"
    // For extracting and processing video frames
    implementation "androidx.media3:media3-inspector-frame:$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 applying Lottie effects on video frames
    implementation "androidx.media3:media3-effect-lottie:$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"
    // Common Kotlin-specific functionality
    implementation "androidx.media3:media3-common-ktx:$media3_version"
}

Kotlin

dependencies {
    val media3_version = "1.11.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 using Compose
    implementation("androidx.media3:media3-ui-compose:$media3_version")
    // For building media playback UIs using Views
    implementation("androidx.media3:media3-ui:$media3_version")
    // For building media playback UIs using Jetpack Compose
    implementation("androidx.media3:media3-ui-compose:$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 inspecting media files
    implementation("androidx.media3:media3-inspector:$media3_version")
    // For extracting and processing video frames
    implementation("androidx.media3:media3-inspector-frame:$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 applying Lottie effects on video frames
    implementation("androidx.media3:media3-effect-lottie:$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")
    // Common Kotlin-specific functionality
    implementation("androidx.media3:media3-common-ktx:$media3_version")
}

Bağımlılıklar hakkında daha fazla bilgi için Derleme Bağımlılıkları Ekleme başlıklı makaleyi inceleyin.

Geri bildirim

Geri bildiriminiz Jetpack'in iyileştirilmesine yardımcı olur. Sorulara, bilinen sorunlara ve özellik isteklerine yanıt bulmak ve yeni sorunları bildirmek için Media3 Issue Tracker'ı kullanabilirsiniz.

Sürüm 1.12.0

Sürüm 1.12.0-alpha02

26 Ekim 2026

1.12.0-alpha02 sürümü aşağıdaki işlemeleri içerir.

  • Effect Play Hizmetleri:
    • Video iyileştirme için EnhancementSessionDecorator ve ses kaynağı ayırma için StudioSoundAudioProcessor dahil olmak üzere Google Play Hizmetleri medya efektleri sağlayan yeni bir media3-effect-play-services modülü kullanıma sunuldu.

Sürüm 1.12.0-alpha01

21 Ekim 2026

1.12.0-alpha01 sürümü aşağıdaki işlemeleri içerir.

  • Ortak Kitaplık:
    • C.COLOR_SPACE_DISPLAY_P3 ekleyin ve MediaFormatUtil ile ColorInfo ISO renk eşlemelerinde Display P3 renk alanını destekleyin.
    • Deneysel özellik bayraklarını ve aşamalı sunumu (Flags.setCanaryModeEnabled) yönetmek için merkezi bir Flags kayıt defteri eklendi. Mevcut birçok @ExperimentalApi yöntemi, yeni özellik bayrağı API'sini kullanacak şekilde taşındı.
    • MediaMetadata.playlistId, MediaMetadata.Builder.setPlaylistId(String), MediaMetadata.categories ve MediaMetadata.Builder.setCategories(List<String>) ekleyin.
    • androidx.media3.common.util.NonNullApi yerine JSpecify kullanın org.jspecify.annotations.NullMarked.
  • ExoPlayer:
    • DASH çok dönemli oynatmanın, sonraki dönemin ilk parçası yüklenemediğinde takılmasına neden olan sorun düzeltildi (#3396).
    • Yükleme yeniden denemeleri tükendiğinde AnalyticsListener.onLoadError ve MediaSourceEventListener.onLoadError içinde wasCanceled = true raporu.
    • ExoPlayer.addVideoFrameMetadataListener ve ExoPlayer.removeVideoFrameMetadataListener kullanarak birden fazla VideoFrameMetadataListener örneği kaydetme desteği. ExoPlayer.setVideoFrameMetadataListener ve ExoPlayer.clearVideoFrameMetadataListener kullanımdan kaldırıldı.
    • Her dönem için AdPlaybackState öğesini bölüp dengeleyerek çok dönemli içeriklerdeki (ör. DASH) reklamlar için destek ekleyin.
    • PreCacheHelper uygulamasında, devam eden bir hazırlık isteği iptal edildiğinde arka planda indirme işlemlerinin başlatılmasına neden olan yarışma durumu düzeltildi.
    • ProgressiveMediaSource ve DefaultMediaSourceFactory için setLoadOnlySelectedTracks(true) sınırını yalnızca seçili olmayan video ve resim parçalarını filtreleyecek şekilde ayarlayın. Ses ve metin parçaları, yeniden arabelleğe alma işlemi olmadan sorunsuz parça geçişi sağlamak için her zaman yüklenir.
    • setLoadOnlySelectedTracks(true) özelliğini ProgressiveMediaSource ve DefaultMediaSourceFactory cihazlarda varsayılan olarak etkinleştirin. Bu sayede bellekten tasarruf edilir ve tüm parçalar seçilmediğinde DefaultLoadControl arabellek ayırma hesaplamalarının daha doğru çalışması sağlanır. Seçilmeyen video veya resim parçaları oynatma sırasında etkinleştirilirse bu durum ek arabelleğe almaya neden olabilir.
    • Dinamik planlama etkinleştirildiğinde Player.getCurrentPosition() işlevinin eski değerler döndürmesine (saniyede yalnızca birkaç kez güncelleme) neden olan sorun düzeltildi (#3286).
    • AudioTrack oynatma kafası konumunda beklenmedik bir düşüş veya sıfırlamanın yanlışlıkla tam sayı taşması olarak değerlendirilerek oynatmanın arabelleğe alma sırasında durmasına neden olduğu sorun düzeltildi (#3407).
    • Deneysel DefaultMediaCodecAdapterFactory.setAsyncCryptoSynchronizationEnabled(boolean) özelliğini kaldır.
    • Geçiş reklamlarından veya reklamlardan, sonunda kırpılmış içeriğe dönerken gereksiz oluşturucu yeniden etkinleştirmelerini ve aksaklıkları önleyin (#3371).
    • Flags.FLAG_PER_STREAM_MEDIA_PROGRESSION etkinleştirildiğinde, oynatma listesindeki bir sonraki öğede oluşan oluşturucu hatasının mevcut oynatmayı erken kesmesine neden olan sorun düzeltildi.
    • Flags.FLAG_PER_STREAM_MEDIA_PROGRESSION etkinleştirildiğinde ExoPlayer, oluşturucuları hazırlıksız bir medya dönemine geçirirse oluşabilecek NullPointerException düzeltildi.
    • Flags.FLAG_VIDEO_RENDERER_DURATION_TO_PROGRESS etkinleştirildiğinde dinamik planlama sırasında video karelerinin beklenmedik şekilde atlanmasına veya bırakılmasına neden olan bir sorun düzeltildi.
    • Canlı yayında reklam sırasında oynatma durdurulduğunda analiz dinleyicilerinde oluşan ArrayIndexOutOfBoundsException düzeltildi (#3423).
    • preload() hiç çağrılmadığında PreloadMediaSource öğesinin beklenmedik şekilde ön yükleme etkinliği yayınlamasına neden olan sorun düzeltildi (#3408).
    • Meta veri parçaları için Format.subsampleOffsetUs değerinin yoksayılmasına ve kodu çözülmüş SCTE-35 birleştirme komutlarında (#3413) yanlış oynatma zaman damgalarına neden olan sorun düzeltildi.
    • Aynı kaynakta preload() birden çok kez çağrıldığında PreloadMediaSource ve DefaultPreloadManager içinde oluşan bellek sızıntısı düzeltildi (#3445).
    • İçerik zaman çizelgesi yenilemesi beklenirken AdsMediaSource yayınlandığında oluşan NullPointerException düzeltildi (#3442).
    • Arama işleminden sonra yükleme (veya oynatmayı sıfır olmayan bir konumda başlatma) başarısız olduğunda ve yeniden denendiğinde, aşamalı medyanın oynatılmasının yanlış konuma atlamasına neden olan sorun düzeltildi (#3440).
    • Xiaomi TV Stick 4K (MiTV-AYFR0) H.264 kod çözücünün kesintisiz çözünürlük değişikliklerinde donmasıyla ilgili geçici çözüm eklendi (#3457).
    • Yayınlanan bir yükleme tamamlanmadan veya hata geri çağırma işlevi yürütülmeden önce izleyici durdurulduğunda SteeringManifestTracker içinde NullPointerException düzeltildi (#3443).
    • MP4 dosyalarındaki mebx kutulu meta veri parçalarından HAGC (ST 2094-50) zamanlanmış meta veri oynatmayı destekler.
    • Oynatma listesindeki yavaş hazırlanan medya dönemlerinin atlanmasına neden olan sorun düzeltildi.
  • CompositionPlayer:
    • Oynatma iş akışları için Composition.Builder.setVideoFrameAggregationParameters kullanarak video karesi toplama kare hızını yapılandırma desteği.
    • Kare birleştirme sırasında en yakın zaman damgasına sahip kareyi seçerek zaman damgası niceleme veya yuvarlama uyuşmazlıklarından kaynaklanan, çok dizili kompozisyonlardaki kare düşüşlerini düzeltin. Bu özellik yalnızca API 29'dan itibaren etkinleştirilir. Bunun nedeni, video dizisi başına bir ek kareyi daha beklemede tutmayı gerektirmesidir.
  • Transformer:
    • Dışa aktarma iş akışları için Composition.Builder.setVideoFrameAggregationParameters kullanarak video karesi toplama kare hızını yapılandırma desteği.
    • Kare birleştirme sırasında en yakın zaman damgasına sahip kareyi seçerek zaman damgası niceleme veya yuvarlama uyuşmazlıklarından kaynaklanan, çok dizili kompozisyonlardaki kare düşüşlerini düzeltin. Bu özellik yalnızca API 29'dan itibaren etkinleştirilir. Bunun nedeni, video dizisi başına bir ek kareyi daha beklemede tutmayı gerektirmesidir.
    • AudioProcessors kullanıldığında Transformer#setAudioMimeType(AUDIO_RAW) değerine uyun. Bu düzeltmeden önce MimeTypes.AUDIO_RAW isteğinde bulunmak ve AudioProcessor uygulamak, sıkıştırılmış çıkışla sonuçlanıyordu.
  • Kanal seçimi:
    • Bazı cihazlarda SDR parçasının desteklenen Dolby Vision parçasına yanlışlıkla tercih edilmesine neden olan sorun düzeltildi (#3135).
  • Ayıklayıcılar:
    • Mp4Extractor: MP4'te Opus için dOps kutu ayrıştırması düzeltildi. PreSkip, InputSampleRate ve OutputGain, big-endian'dan little-endian'a dönüştürülmediği için düzenleme listesi olmadığında sesin ilk yaklaşık 299 milisaniyesi siliniyordu (#3431).
    • H.264 ve H.265 için GOP içi örnek bağımlılığı ayrıştırma varsayılan olarak etkinleştirildiğinden Mp4Extractor.FLAG_READ_WITHIN_GOP_SAMPLE_DEPENDENCIES, Mp4Extractor.FLAG_READ_WITHIN_GOP_SAMPLE_DEPENDENCIES_H265, FragmentedMp4Extractor.FLAG_READ_WITHIN_GOP_SAMPLE_DEPENDENCIES ve FragmentedMp4Extractor.FLAG_READ_WITHIN_GOP_SAMPLE_DEPENDENCIES_H265 parametrelerini kaldırın.
    • Mp4Extractor: Mp4LocationData değerini doldurmak için rakım koordinatlarını içeren xyz kutularından konum meta verisi ayrıştırma işlemi düzeltildi.
    • Kodlanmış ses biçimleri için örnek başına ses karesi sayısını hesaplamak üzere ExtractorUtil.getFramesPerEncodedSample eklendi (#3367).
    • Üst düzey UUID kutularından XMP meta verilerini ayıklamak için Mp4Extractor öğesine FLAG_READ_XMP_METADATA ekleyin.
    • DVD tarzı MPEG-PS içeriği oynatılırken yük, ses okuyucuya (#3327) iletilmeden önce PsExtractor içindeki her PES paketinden private_stream_1 alt akış başlığı çıkarılarak bozuk AC-3, DTS ve LPCM sesleri düzeltildi.
    • Sürüm 1 tfdt kutusu negatif bir baseMediaDecodeTime kodladığında FragmentedMp4Extractor içinde oluşan hata düzeltildi (#3412).
    • MPEG-TS: Format.stereoMode değerini doldurmak için H.264 ve H.265 kare paketleme düzenlemesi SEI mesajlarını ayrıştırma desteği (#3419).
    • Dolby Vision Profile 20 yapılandırma verilerini ayrıştırma ve desteklenmeyen Dolby Vision profillerini yanlış renklerle standart HEVC olarak oynatmak yerine reddetme (#3427).
    • MP3: Birçok MediaCodec MP3 kod çözücüyle uyumlu olmadığı için LAME/Xing kodlayıcı gecikmesi ve dolgu meta veri ayarı geri alındı (#3425).
    • Matroska: İç içe yerleştirilmiş ChapterAtom öğeleri ayrıştırılırken oluşan NullPointerException hatası düzeltildi (#3438).
    • Ogg: Boyutu 255 baytın katı olan ve sayfa sınırında biten bir paketin sonraki paketle birleştirilmesine neden olan hata düzeltildi.
    • MP4: Mp4Extractor ve FragmentedMp4Extractor içinde mebx kutulu zamanlanmış meta veri parçalarını ayrıştırın. it35 anahtarı taşıyan parçalar MimeTypes.APPLICATION_ITUT_T35 olarak gösterilir (HAGC oynatmayı etkinleştirir). FLAG_EMIT_RAW_MEBX_DATA ayarlanmadığı sürece diğer mebx parçaları yoksayılır. Ayarlandığı takdirde tüm mebx parçaları ham MimeTypes.APPLICATION_MEBX olarak yayınlanır.
    • Ogg: Kesintisiz oynatma için Opus bitiş dolgusunu ayıklama desteği (#2576) ve devam eden bir paketle başlayan sayfaya gittikten sonra örnek zaman damgalarını düzeltme.
    • Ogg: Akış ortasındaki Opus kimliği ve yorum başlığı paketlerini yoksayarak zincirleme Ogg Opus akışlarındaki kod çözme hatalarını ve yaklaşık 1 saniyelik zaman damgası atlamalarını düzeltme.
  • Müfettiş:
    • MetadataRetriever kullanarak MP4 dosyalarından XMP meta verilerini alma desteği.
    • MediaExtractorCompat içinde mebx kutulu zamanlanmış meta veri parçalarının MimeTypes.APPLICATION_MEBX olarak ayıklanması desteklenir.
  • İnceleme Çerçevesi:
    • FrameExtractor ile Ultra HDR kareleri çıkarırken SDR taban görüntüsündeki geniş gamutlu BT.2020 renklerinin kırpılmasını düzeltme. Gam dışı renkler artık kırpılmak yerine sRGB gamına hafifçe sıkıştırılıyor.
  • Ses:
    • android.media.AudioDeviceCallback yöntemini yanlış iş parçacığında çağıran cihazlar için geçici çözüm eklendi (#3386).
    • Sıkıştırılmış boşaltma ile parça geçişlerinden sonra olası takılı oynatmaları düzeltme.
    • Amazon Fire TV stick'lerde AC-3 sesin dönem geçişleri sırasında donmasına neden olan sorun giderildi (#3448).
    • Ogg ve WebM/Matroska Opus kesintisiz oynatma için akış sonu kodlayıcı dolgusunu kırpma desteği (#2576).
    • Dinamik boşaltma boşluksuz gecikme ve dolgu güncellemelerini, parça geçişleri sırasında çalan parça yerine gelen parçaya uygulanacak şekilde düzeltin.
    • Oynatma listesinin ortasındaki kesintisiz geçişlere ek olarak tekli akışlarda ve oynatma listesindeki son akışta kodlayıcı bitiş dolgusunu kırpma (#2576).
    • Akış başı kodlayıcı gecikme kırpması tamamlandıktan ve akış sonu dolgusunun kırpılması gerekmediğinde TrimmingAudioProcessor içinde gereksiz ses arabelleği kopyalarından kaçının.
  • Video:
    • Aynı yayın zaman damgalarına sahip geç video karelerinin raporlanması düzeltildi. Bu kareler artık atlandı yerine bırakıldı olarak raporlanacak.
  • Metin:
    • Yandan yüklenen altyazıların zaman damgalarını medyaya göre kaydırmak için MediaItem.SubtitleConfiguration.timeOffsetUs ekleyin. Oynatma sırasında Player.replaceMediaItem(int, MediaItem) ile oynatma kesintiye uğramadan ofset değiştirilebilir (#1976).
    • SubRip: Bayt sırası işareti olmayan bağımsız SubRip altyazılarının karakter kodlamasını algılamak için DefaultSubtitleParserFactory içine CharsetDetector ekleme desteği sunuldu (#2247).
  • Etki:
    • StudioSound GMSCore modülünü kullanarak ses kaynağı ayırma için SoundSeparationAudioProcessor uygulayın.
  • Çoğullayıcılar:
    • PreSkip, InputSampleRate ve OutputGain'nin big-endian yerine little-endian olarak yazıldığı Mp4Muxer ve FragmentedMp4Muxer'de Opus için dOps kutu yazma hatası düzeltildi (#3431).
    • Mp4Muxer kullanarak Mp4LocationData içinde GPS rakımını yazma desteği.
    • Doğrudan ParcelFileDescriptor dosyasına çoklama yapmak için Muxer.Factory.create(ParcelFileDescriptor) ekleyin.
    • Medya kod çözme zaman damgaları sağlamak için parçalı MP4 dosyalarının traf kutularına varsayılan olarak tfdt (Parça Parçası Taban Medya Kod Çözme Süresi) kutusu yazın.
    • Mp4Muxer içinde E-AC-3 ve E-AC-3 JOC (Dolby Atmos) dec3 kapsayıcı kutularının yazılması desteklenir.
    • MediaMuxerCompat için WebM biçim desteği ekleyin.
    • FLAG_READ_MFRA_FOR_SEEK_MAP kullanarak FragmentedMp4Extractor içinde arama yapılmasına izin vermek için parçalı MP4 dosyalarının sonuna mfra (Film Parçası Rastgele Erişim) kutusu yazın.
    • Başka bir örnek yazılmadan önce EOS örneği yazılırken Mp4Writer ve FragmentedMp4Writer içinde oluşan kilitlenme düzeltildi.
    • Dolby içeriğini MP4 veya parçalı MP4 dosyalarıyla birleştirirken kapsayıcı başlığında dby1 uyumlu markayı bildirerek kapsayıcı uyumluluğunu düzeltme (#3369).
    • Mp4Muxer ve FragmentedMp4Muxer içinde 32 bit kayan noktalı PCM ses parçaları desteklenir (#3389).
    • Parça eklerken Mp4Muxer ve FragmentedMp4Muxer biçimindeki desteklenmeyen Dolby Vision profillerini reddetme
    • Mp4Muxer ve FragmentedMp4Muxer biçimlerinde 24 bit ve 32 bit tam sayı PCM ses parçaları desteklenir.
  • IMA uzantısı:
    • ImaServerSideAdInsertionMediaSource içinde oynatıcı duraklatma ve devam ettirme etkinliklerini IMA SDK'ya yönlendirin.
  • Oturum:
    • Eski meta verilerden ve açıklamalardan oynatma listesi ve öğe meta verilerini doldurmak için MediaConstants.EXTRAS_KEY_PLAYLIST_ID, MediaConstants.EXTRAS_KEY_PLAYLIST_TITLE, MediaConstants.EXTRAS_KEY_PLAYLIST_ARTWORK_URI ve MediaConstants.EXTRAS_KEY_CATEGORIES, öneri LibraryParams.extras için MediaConstants.EXTRAS_KEY_SUGGESTED_TYPE ve MediaConstants.EXTRAS_KEY_TTL_SECONDS ekleyin.
    • Katı PendingIntent sınırları uygulayan cihazlarda MediaSession oluştururken veya yayınlarken oluşan SecurityException kilitlenmesi düzeltildi.
    • MediaSessionService henüz ön planda değilken Android 12'de (API 31 ve 32) oynatma istekleri sırasında MediaSession.getControllerForCurrentRequest() öğesinin null döndürmesine neden olan sorun düzeltildi.
    • MediaController, negatif maksimum ses seviyesi bildiren eski bir oturuma bağlandığında oluşan IllegalArgumentException kilitlenmesi düzeltildi.
    • Duraklatılmış eski bir MediaSessionCompat üzerinde MediaController.setMediaItem veya setMediaItems ve ardından play() çağrıldığında onPlayFrom* yerine desteklenmeyen bir onPrepareFrom* geri çağırma işlevinin gönderilmesine veya istenen medya öğesi yeniden başlatılmadan onPlay() gönderilmesine neden olan sorun düzeltildi.
    • Özel komut yanıtı alınırken eski MediaBrowser sürümündeki NullPointerException hatası düzeltildi (#3432).
    • Temel Bundle öğesinde yinelenen anahtarlar içeren eski meta veriler alınırken oluşan IllegalArgumentException kilitlenme sorunu düzeltildi.
    • Eski bir MediaSessionCompat kontrol edilirken aynı Looper iterasyonunda yapılan giden MediaControllerCompat.TransportControls çağrılarını birleştirin (örneğin, setMediaItem, prepare ve play'i birlikte çağırmak artık tek bir onPlayFrom* geri çağırma işlemi gönderir).
  • Kullanıcı arayüzü:
    • Çift yönlü metin kaydırma etkinleştirildiğinde sağdan sola altyazı noktalama işaretlerinin konumlandırması ve aralık koruması düzeltildi (#3454, #3455).
    • media3-ui-compose modülüne TrackSelectionState ve TrackSelectionParametersState sınıflarını ve bunlara karşılık gelen Composable durum hatırlama işlevlerini ekleyin.
    • PresentationState.videoAspectRatio politikasını kullanıma sunun ve Modifier.resizeWithContentScale politikasının sourceSizeDp: Size? yerine aspectRatio: Float? değerini almasını sağlayın.
    • Oynatıcının mevcut işaretlerini dinlemek için media3-ui-compose modülüne CuesState sınıfını ve rememberCuesState Composable'ı ekleyin.
    • ExoPlayer veya CompositionPlayer tabanlıysa ProgressSlider için temizleme modu desteği ekleyin.
    • PresentationState için showArtwork desteği ekleyin ve bunu, ContentFrame ve Player'te sağlanan isteğe bağlı artwork Composable'ın oluşturulma süresini ölçmek için kullanın. artwork slotunun varsayılan değeri olarak kullanılacak Artwork composable'ı ekleyin.
    • PlayPauseButtonState (showBuffering, showRetry, showReplay) için yeni alanlar ekleyin ve daha fazla simge ile bir arabelleğe alma göstergesi oluşturmak için bunları PlayPauseButton içinde kullanın.
    • Özel oynatma durumu gözlemine izin vermek için PlaybackState sınıfını ekleyin ve BufferingIndicator öğesini düğmeden bağımsız bir bileşen olarak tanıtın.
    • PlayerView ve PlayerControlView'in, çok dönemli canlı yayınlarda canlı videodan sonra gösterilen reklam yer tutucuları için dönem sınırlarında reklam işaretçileri göstermesine neden olan sorun düzeltildi.
    • Player, ContentFrame, PlayerDefaults ve MiniController için birleştirilebilir alanlar artık oynatıcıyı veya denetimlerin görünürlüğünü parametre olarak almıyor. Bunun yerine, çağrı kapsamından yakalayın (örneğin, topControls artık @Composable BoxScope.() -> Unit). Bu, kararsız bir API'de zarar veren bir değişikliktir.
    • Ölçeklendirilmiş içeriği kapsayıcısının içine yerleştirmek için ContentFrame, Player ve Modifier.resizeWithContentScale öğelerine alignment parametresini ekleyin ve ContentFrame içeriğini sınırlarına göre kırpın. Böylece ContentScale.Crop ile ölçeklendirilen video artık sınırlarının dışına taşmaz.
    • isLive ve liveOffsetMs öğelerini göstererek ProgressSlider, ProgressStateWithTickCount ve ProgressStateWithTickInterval için canlı yayın kullanıcı arayüzü desteği ekleyin. media3-ui-compose-material3'e LiveButton Composable ekleyin (#2213).
  • Ktor uzantısı:
    • KtorDataSource, HttpDataSourceException hatası vermek yerine akış ortasındaki bağlantı hatalarını giriş sonu olarak değerlendirebiliyordu. Bu sorun düzeltildi (#3460).
  • HLS uzantısı:
    • EXT-X-STREAM-INF ve EXT-X-I-FRAME-STREAM-INF üzerinde VIDEO-RANGE (PQ ve HLG) ayrıştırılarak Format.colorInfo haline getirildi (#3441).
    • PES medya örnekleri içeren MPEG-TS EXT-X-MAP başlatma segmentleri ayrıştırılırken oluşan NullPointerException hatası düzeltildi (#3456).
    • Açık HLS parçaları için Format.id ve Format.metadata'nin null olduğu gerileme düzeltildi (#3402).
    • Öğe listesi reklamlarını X-PLAYOUT-LIMIT değerine kırpın ve tamamen sınırın ötesine geçenleri atlayın. Bir geçiş reklamı X-RESUME-OFFSET değerini atladığında ve X-PLAYOUT-LIMIT ayarlanmış olsa bile süresi bilinmediğinde içerik devam etme ofsetini varsayılan olarak 0 değerine ayarlayın.
    • Bir X-ASSET-LIST geçiş reklamının çözümlenmesinin, aynı reklam grubundaki diğer geçiş reklamlarının içerik devam ettirme ofset katkılarının üzerine yazmasına neden olan sorun düzeltildi.
  • DASH uzantısı:
    • DashManifestParser içinde Alternatif MPD Ekleme (urn:mpeg:dash:event:alternativeMPD:insert:2025) ve Değiştirme (urn:mpeg:dash:event:alternativeMPD:replace:2025) etkinliklerini ayrıştırma desteği ve bunları Period.alternativeMpdEvents içinde AlternativeMpdEvent örnekleri olarak gösterme. Bu, DashManifestParser alt sınıfını kullanan uygulamalar için zarar veren bir değişikliktir: DashManifestParser.buildPeriod artık ek bir List<AlternativeMpdEvent> parametresi alır ve önceki aşırı yükleme kaldırılmıştır. DashManifestParser.parseEventStream(XmlPullParser) yöntemini geçersiz kılan uygulamalar, bunun yerine DashManifestParser.parseEventStream(XmlPullParser, String) yöntemini geçersiz kılmalıdır. Çünkü önceki yöntem kullanımdan kaldırılmıştır ve gelecekteki bir sürümde gizli hale getirilecektir.
    • EssentialProperty ve SupplementalProperty tanımlayıcılarındaki CICP renk bilgilerini (ColourPrimaries, TransferCharacteristics, MatrixCoefficients ve VideoFullRangeFlag) Format.colorInfo olarak ayrıştırın (#3426).
    • Hızlı ileri sarma modunda (http://dashif.org/guidelines/trickmode) tanımlayıcı @value özelliklerinde (#3315) boşlukla ayrılmış @id değerleri listeleri desteklenir.
    • DashManifestParser içinde <ProducerReferenceTime> ayrıştırmayı, AdaptationSet.producerReferenceTimes içinde göstermeyi ve VOD akışları için Timeline.Window.presentationStartTimeMs ve Timeline.Window.windowStartTimeMs doldurmak üzere kullanmayı destekleyin.
    • DASH Content Steering için destek eklendi (#1689).
    • <UTCTiming> öğesinde eksik bir özellik bulunan DASH manifesti ayrıştırılırken oluşabilecek NullPointerException düzeltildi (#3436).
  • RTSP uzantısı:
    • RTSP istemcisi kapatıldıktan sonra gecikmeli ağ yanıtları işlenirken oluşan IllegalStateException kilitlenme sorunu düzeltildi.
    • Hızlı kaydırmanın TCP protokolü yedek mekanizmasını yanlışlıkla tetiklemesine neden olan sorun düzeltildi.
    • RTSP istemcisi parça yeniden seçimi, oturum sonlandırma veya URI yönlendirmesi sırasında durumu sıfırladıktan sonra geciken ağ yanıtları işlenirken oluşabilecek bir IllegalStateException kilitlenmesini düzeltir.
    • Oynatma yeniden başlatılmadan önce tekrar arama yapıldığında IllegalStateException kilitlenmesine neden olan sorun düzeltildi.
    • Bekleyen bir sarma işlemi varken geriye sarma işleminin ses kesintisine ve video oynatmanın donmasına neden olabileceği sorun düzeltildi.
    • Toplama veya IDR olmayan paketle biten H.264 ve H.265 anahtar kare erişim birimlerinin anahtar kare olarak işaretlenmemesi nedeniyle oynatmanın arabelleğe alma aşamasında takılı kalmasına yol açan sorun düzeltildi (#3434).
  • Kod çözücü uzantıları (FFmpeg, VP9, AV1 vb.):
    • Opus uzantısı: Geçersiz Opus verilerinin kodu çözülürken oluşan JNI kilitlenmesi düzeltildi.
    • Opus uzantısı: Ön atlama ve silme dolgusu aynı pakete denk geldiğinde silme dolgusunun yoksayılması sorunu düzeltildi (#2576).
  • Yayınlama uzantısı:
    • Oturumun kullanılamama nedenini temsil etmek için SessionAvailabilityListener.SessionUnavailableReason özelliğini kullanıma sunun ve bunu göstermek için SessionAvailabilityListener.onCastSessionUnavailable için aşırı yüklenmiş bir yöntem sağlayın.
    • Bir Cast oturumu durdurulduktan sonra oynatmanın beklenmedik bir şekilde yerel olarak devam etmesine neden olan sorun düzeltildi.
    • RemoteCastPlayer içinde RemoteMediaClient işlemleri (ör. oynatma, duraklatma, hız değiştirme, tekrar modu, ses seviyesi, sesi kapatma veya parça seçimi) başarısız olduğunda hata günlüğü oluşturun (#3373).
    • Bir arama işlemi beklemedeyken Cast alıcı sırası değiştiğinde veya küçüldüğünde RemoteCastPlayer içinde ArrayIndexOutOfBoundsException düzeltildi (#3372).
    • Varsayılan Cast alıcısında, zaman çizelgesinin tüm oynatma listesi yerine yalnızca etkin öğenin hemen etrafındaki medya öğelerini doldurmasına neden olan sorun düzeltildi (#3129).
    • Oynatma listesini değiştirirken (setMediaItems, addMediaItems, moveMediaItems, removeMediaItems) veya RemoteCastPlayer içinde arama yaparken zaman çizelgesini ve oynatma konumunu hemen güncelleyin ve birbirini takip eden oynatma listesi işlemlerini sırayla güvenilir bir şekilde yürütülecek şekilde sıraya alın (#2639, #3272).
    • RemoteCastPlayer içinde boş bir sırada addMediaItems çağrıldığında medya öğelerinin yayın alıcısına yüklenememesi sorunu düzeltildi (#2402).
    • RemoteCastPlayer uygulamasında, Cast alıcı sırasının sonuna ulaşıldığında oynatma listesini korumak yerine zaman çizelgesinin temizlenmesine neden olan sorun düzeltildi.
    • Medya öğeleri yüklenmeden önce (ör. CastPlayer uygulamasında yerelden uzaktan oynatmaya aktarım sırasında) RemoteCastPlayer üzerinde ayarlandığında playWhenReady, repeatMode ve playbackParameters değerlerinin aktarılmaması veya uygulanmaması sorunu düzeltildi (#889).
  • Demo uygulama:
    • Oturum demo uygulama kataloğuna DRM korumalı medya öğeleri ve ek bir HLS örnek akışı için destek ekleyin.
    • Yayın sırasında altyazı ve ses parçası seçimini etkinleştirmek için oturum demo uygulamasında RemoteCastPlayer öğesini CastTrackSelector ile yapılandırın.
  • Desteği sonlandırılan simgeleri kaldırın:
    • DashUtil.buildDataSpec(Representation, RangedUri, int) ve DashUtil.buildDataSpec(Representation, String, RangedUri, int) araçlarını kaldırın. Bunun yerine DashUtil.buildDataSpec(Representation, BaseUrl, RangedUri, int, Map<String, String>) kullanın.
  • Oluşturun:
    • Gradle minSdk değerini 24'e yükseltin.

Sürüm 1.11.0

1.11.1

10 Eylül 2026

  • ExoPlayer:
    • İlerlemeli medya için HAGC meta verilerini etkinleştirme/devre dışı bırakma işaretini MediaSource.Factory konumundan ExtractorsFactory konumuna taşıyın. Önceki setExperimentalEnableHagcPlayback yöntemi kaldırıldı ve yerine ExtractorsFactory.setParseHagcMetadata getirildi. Bu sayede, Matroska/WebM kapsayıcılarında devre dışı bırakma işleminin çalışmaması sorunu da çözülür.
    • Geçiş yapmayan ikincil bir oluşturucuyu önceden ısıtırken oynatmanın durmasına neden olan sorun düzeltildi.
    • Arama işlemi her iki oluşturucuyu da sıfırlayıp devre dışı bıraktığında Surface öğesinin birincil oluşturucuya döndürülmesi gereken ön ısıtma sorunu düzeltildi.
    • Canlı zaman çizelgesi yenilemesi, varsayılan konumu o anda oynatılmakta olan sunucu tarafı eklenmiş bir reklamın ötesine taşıdığında ArrayIndexOutOfBoundsException düzeltildi (#3348).
    • ScrubbingModeParameters.allowSkippingMediaCodecFlush etkinleştirilmişken arama yapıldığında eski video karelerinin kısa bir süre gösterilebildiği, temizleme moduyla ilgili bir sorun düzeltildi.
  • Ayıklayıcılar:
    • Matroska: Kümelerden sonra yerleştirilen parçaların aranabilir bir zaman çizelgesiyle sonuçlanmamasına neden olan sorun düzeltildi (#3377).
  • Ses:
    • SilenceSkippingAudioProcessor içinde arabellek boyutu hesaplaması düzeltildi. Böylece minimum sessizlik süresi, kare boyutuna göre yanlış şekilde ölçeklendirilmeyecek (#3271).
    • PcmAudioUtil içinde 8 bit PCM işleme düzeltilerek örneklerin Android tarafından tanımlandığı şekilde işaretsiz olarak değerlendirilmesi sağlandı (#3271).
    • Sınırlı donanım arabellek boyutları nedeniyle videodan önce gösterilen reklam veya kesintisiz geçişler sırasında oynatmanın duraklamasına neden olan boşaltma sorunu düzeltildi.
    • DefaultAudioSink içinde, oynatma iş parçacığı artık etkin olmadığında yayın sayısının azalmamasına neden olan hata düzeltildi (#3338).
  • Oturum:
    • İşlemdeki bir MediaController, Player.Listener geri çağırma işlevinden serbest bırakıldığında NullPointerException düzeltildi (#3375).
    • Eski bir MediaBrowser, onGetLibraryRoot() veya onConnectAsync()'den eşzamansız sonuç döndüren bir hizmete bağlandığında ana iş parçacığındaki kilitlenme düzeltildi (#3393).
  • HLS uzantısı:
    • Yakalama için hedef segment henüz oynatma listesinde olmadığında içerik devam ettirme ofsetinin hesaplanması düzeltildi (#3322).
    • Tamamen tüketilen HlsMediaChunk öğesinin, ayıklayıcıdan EOFException aldığında yüklemeyi yeniden denemesiyle ilgili sorun düzeltildi (#3350).
  • DASH uzantısı:
    • presentationTimeOffset ile resim parçaları için yanlış örnek zaman damgası hesaplaması düzeltildi (#3334).
  • Kod çözücü uzantıları (FFmpeg, VP9, AV1 vb.):
    • Opus: Birden fazla OpusDecoder örneği aynı anda başlatıldığında oluşan bellek bozulması düzeltildi.
    • MPEG-H: Bellek sızıntısı, ASCII olmayan karakterlerin kesilmesi ve MpeghUiManager komutları gönderilirken düşük bellek koşullarında olası yerel kilitlenme düzeltildi (#3365).

Sürüm 1.11.0

5 Ağustos 2026

  • Ortak kitaplık:
    • Ses kanalı maskesini açıkça temsil etmek için Format.channelMask ekleyin ve güvenli bir şekilde çözmek için yeni bir Util.getAudioTrackChannelConfig(Format) aşırı yüklemesi ekleyin.
    • Kotlin'i 2.0.20'den 2.2.0'a yükseltin.
  • ExoPlayer:
    • ExoPlayer'da IllegalStateException veya IndexOutOfBoundsException hatasına neden olabilecek, zamanlamaya bağlı bir eşzamanlılık hatası düzeltildi.
    • Bir reklam grubu tamamen işlendiğinde (hasUnplayedAds(), false olduğunda) reklam grubu sayısının azalmasına izin vermek için AdsMediaSource içindeki reklam grubu sayısı kontrollerini gevşetin. Böylece, sıfırlama iş akışları sırasında dinamik reklam grubu yeniden boyutlandırması yapılabilir.
    • Akışların işaretleri bildirmesine izin vermek için getFlags() ve FLAG_STRICT_DURATION öğelerini SampleStream öğesine ekleyin ve oluşturucuları bu işaretleri dinamik olarak kontrol edecek şekilde güncelleyin.
    • Akış biçimleri geçerli bir değer sağlamadığında codec çalışma hızını hesaplamak için MediaCodecVideoRenderer içindeki kare hızı tahmin aracını ve MediaCodecAudioRenderer içindeki codec çıkış biçimini kullanın ve gereksiz codec sıfırlamalarından kaçının.
    • Temel oynatıcıda istemci tarafında eklenen reklamlar için içerik kırpma özelliğini kaldırın. Bunun yerine, kırpma mantığını AdsMediaSource yönetir. İçerik kırpma işlemini dahili olarak uygulamak için özel istemci tarafı eklenen reklam kaynaklarının güncellenmesi gerekir.
    • İyi biçimlendirilmiş ancak tanınmayan bir codec profili veya seviyesi olan parçaları supported=YES yerine supported=NO_EXCEEDS_CAPABILITIES olarak işaretleyin (eksik veya hatalı biçimlendirilmiş profil ya da seviye bilgisi olan parçalar bu şekilde işaretlenir). Bu sayede, daha iyi desteklenen alternatifler varken bu parçaların (cihaz tarafından desteklenme olasılığı düşük olan) seçilmemesi sağlanır.
    • Mevcut medya öğesinin dizinine olan mesafelerine göre medya öğelerinin sıralamasını karşılaştıran bir RankingDataComparator olan DefaultPreloadManager.SimpleRankingDataComparator öğesini ekleyin. Uygulamalar, daha hassas bir karşılaştırma mantığı gerekiyorsa compare(Integer, Integer) yöntemini geçersiz kılabilir. Özel SimpleRankingDataComparator, yeni bir DefaultPreloadManager.Builder oluşturucu aracılığıyla eklenebilir.
    • Kullanılabilir yığın belleği yetersiz görünüyorsa arabellek bayt boyutu sınırlarına geri dönerek DefaultLoadControl.prioritizeTimeOverSizeThresholds için OOM riskini azaltın.
    • MediaItem.imageDurationUs ayarlanmadığında sabit resimlerin işlenmesini uyumlu hale getirme: JPEG ve HEIC sabit resimler artık çok kısa bir varsayılan süreyle "oynatılır" (PNG ve diğer resimlerin daha önce davrandığı şekilde).
    • BandwidthMeter ile MediaSource arasında tesisat döşemek için MediaSource.prepareSource(MediaSourceCaller, PlayerId, BandwidthMeter) ekleyin. Ancak özel uygulama içeren desteği sonlandırılmış yöntem varsayılan olarak çağrılmaya devam eder. Yeni yöntemi uygulamanız ve eski yöntemle eşitlik sağlamak için BandwidthMeter.getTransferListener() kullanmanız önerilir.
    • DefaultBandwidthMeter içinde özel bir InitialBitrateSupplier için destek ekleyin. Bu sayede uygulamalar, DefaultBandwidthMeter oluşturulurken ve ağ türü değişikliklerinde kullanılacak ilk bit hızı tahminini belirlemek için kendi mantıklarını sağlayabilir. Tedarikçi, DefaultBandwidthMeter.Builder.setInitialBitrateSupplier() üzerinden ayarlanabilir.
    • Dinamik planlamayı varsayılan olarak etkinleştirin. ExoPlayer oynatma iş döngüsü, statik bir aralık yerine dinamik olarak çalışır.
    • Videodan önce gösterilen reklam örnekleri içeren parçalar etkin oynatmaya katılırken gerçekleşebilecek gereksiz sıfırlama işlemi kaldırıldı.
    • DefaultBandwidthMeter içinde, ülke grubu atamalarını bir dizi yerine 32 bitlik bir tam sayı olarak döndürmek için getInitialBitrateCountryGroupAssignment optimize edin. Böylece kod boyutu küçülür ve ayırmalar önlenir.
    • Yeniden deneme mantığının, diğer yeniden denemeler (arabellek boyutu yarıya indirilerek) başarısız olursa her zaman en az 1 saniyelik arabellek boyutu denemesini sağlayarak bazı cihazlardaki AudioTrack başlatma hataları düzeltildi (#3207).
    • Giriş arabelleklerini almadan önce temizlenen codec'in tüm örnekleri yuttuğu bazı cihazlardaki codec sorunu düzeltildi.
    • Medya işleme sürecinin akış bazında ilerletilmesine olanak tanımak için deneysel ExoPlayer.Builder.enablePerStreamMediaProgression() ekleyin. Bu sayede, oynatma listesi öğeleri arasındaki başlangıç gecikmesi azalır ve çok kısa içeriklerde oynatmanın "takılması" (#3122) önlenir.
    • setAudioSessionId tarafından ayarlanan değer yerine ExoPlayer tarafından otomatik olarak üretilmiş ilk ses oturumu kimliğinin kullanıldığı ses oturumu kimliği kullanımıyla ilgili yarışma durumu düzeltildi (#3241).
    • İleriye doğru ilerleyen medya (ör. MP4, Matroska) için deneysel HAGC (ST 2094-50) zamanlanmış meta veri oynatma desteği eklendi. Oynatıcı, HAGC meta veri parçalarını ilişkili video parçasıyla otomatik olarak birleştirir ve meta verileri, API 37 ve sonraki sürümleri çalıştıran cihazlarda bant dışı olarak kod çözücüye iletir. Bu davranış, DefaultMediaSourceFactory.setExperimentalEnableHagcPlayback(false) üzerinden devre dışı bırakılabilir.
    • Parça seçiminde Format için göreceli tercihi temsil eden Format.selectionPriority eklendi (#3236).
    • "Akışın sonuna" gidildiğinde sarmanın durmasına neden olabilen sarma modu sorunu düzeltildi.
  • CompositionPlayer:
    • TrackSelector örneklerinin yayınlanmamasına neden olan sorun düzeltildi.
  • Transformer:
    • ExportResult.fileSizeBytes değerinin fazla raporlanmasına neden olabilen bir sorun düzeltildi.
  • Parça seçimi:
    • Yalnızca bit hızına göre sıralamanın ötesinde özel biçim sıralamasına ve ABR seçim önceliğine izin vermek için BaseTrackSelection.DEFAULT_FORMAT_COMPARATOR öğesini gösterin ve AdaptiveTrackSelection.Factory.setTrackFormatComparator öğesini ekleyin.
    • Parça seçim parametrelerinde yapılan hızlı sıralı güncellemelerin, bazı güncellemelerin kaybolmasına veya üzerine yazılmasına neden olabildiği, zamanlamaya bağlı bir eşzamanlılık sorunu düzeltildi.
  • Ayıklayıcılar:
    • MP4, MP3 ve FLAC: Çalışma zamanı bellek tüketimini azaltmak için kapsayıcı ayrıştırma sırasında ekli resimlerin ve kapak resmi meta verilerinin silinmesine izin veren FLAG_DISABLE_ARTWORK_METADATA eklendi (#2077). Bu özellik, DefaultExtractorsFactory.setDisableArtworkMetadata üzerinden merkezi olarak da etkinleştirilebilir.
    • MP4: ITU-T T.35 (it35) zamanlanmış meta veri parçalarını ayıklama desteği eklendi.
    • MP4: Bölüm meta verilerini (hem Nero hem de QuickTime biçimleri) ayıklama desteği eklendi. Her ikisi de mevcutsa QuickTime bölümleri tercih edilir. Ayıklanan bölüm bilgileri, parçanın Metadata öğesinde Chapter girişleri olarak gösterilir. Bu sayede MP4, M4A ve M4B dosyalarında (ör. sesli kitaplar ve podcast'ler) yerel bölüm gezinmesi yapılabilir (#2803).
    • WAV, Matroska ve MP4: 64 bit kayan noktalı PCM ses desteği eklendi (#3090).
    • Matroska: Doğru ColorInfo değerini doldurmak için codec bit akışı meta verilerini kullanın.
    • MP4: sidx kutusu olmadığında mfra kutusunu kullanarak parçalı MP4 dosyalarında arama desteği eklendi. Bu özelliği etkinleştirmek için FragmentedMp4Extractor'e FLAG_READ_MFRA_FOR_SEEK_MAP sağlayın. Bu işlem artık DefaultExtractorsFactory sürümünde varsayılan olarak yapılır (#3088).
    • Desteklenmeyen sürüme sahip av1C verilerini yoksay.
    • MP4: fpcm kutularında big-endian kayan noktalı PCM için destek eklendi.
    • Matroska: Bölüm bilgilerini bir parçanın Metadata bölümündeki Chapter girişlerine ayrıştırın.
    • MPEG-TS: Çekirdek ve Uzantı Alt Akışı'nı tek bir örnekte birleştirerek DTS-HD ve DTS Express akışlarının çıkarılmasını iyileştirdik. Böylece, daha önce iki ayrı örnek olarak çıkarıldıkları oynatma sorunlarını düzelttik (#3147).
    • MP4: Boş meta veri etiketi öğeleri ayrıştırılırken sonsuz döngüler ve sınır dışı okumalar önlendi ilst (#3191).
    • MPEG-TS: Son PES paketinin bilinen bir uzunluğa sahip olduğu akışlar için son karenin oluşturulduğundan emin olun (#3206).
    • MP3: Xing ve VBRI başlığına sahip dosyalar için bit hızı raporlaması düzeltildi.
    • Matroska: Son kümede tanımlanan parçaları işleme (#3250).
    • Matroska: ALAC için destek eklendi (#3268).
    • MP4: Parçalı MP4 dosyalarında değişken uzunlukta sgpd kutularına izin verilir (#3243).
    • AVI: Ses parçalarında animasyon karesi işaretleri olmayan dosyaların oynatılmasının ses kaybına ve OutOfMemoryError hatasına neden olduğu sorun düzeltildi.
    • MP3: Xing/Info başlıklarından boşluksuz süreleri kullanma (#3183).
    • MP3: LAME/Xing kodlayıcı gecikmesini ve dolgu meta verilerini, kodu çözülmüş PCM kırpma ile eşleşecek şekilde ayarlayın (#3200).
  • Ses:
    • Hazır durumdan hazır olmayan duruma geçerken ExoPlayer'ın ses oluşturucularına 100 ms'lik bir ek süre ekleyerek geçici yetersizlikleri önleyin ve etkin oynatma sırasında beklenmedik arabelleğe alma durumlarını engelleyin (#3210).
    • DefaultAudioTrackBufferSizeProvider uygulamasındaki varsayılan PCM arabellek boyutu mantığı, cihaza daha az bağımlı olması için sabit 500 ms'lik bir arabellek kullanacak şekilde değiştirildi.
    • Platform kod çözücüsünden uzamsal channelMask'i ayıklamak için MediaCodecAudioRenderer güncellendi. Böylece DefaultAudioSink, kanal sayısından bir maske çıkarmak yerine bu açık maskeyi kullanabilir.
    • AudioSink.configure parametrelerini veri sınıfına dönüştürün. ForwardingAudioSink.configure için özel geçersiz kılma işlemlerinin yeni yöntem imzasına taşınması gerekiyor.
    • EditedMediaItem.Builder#setSpeed(SpeedParameters) ile bir ses akışını zaman esnetme işlemine tabi tutarken perdeyi koruma desteği ekleyin.
    • ToFloatPcmAudioProcessor; 8 bit PCM, 16 bit big-endian PCM ve 64 bit kayan noktalı PCM'yi 32 bit kayan noktalı PCM'ye dönüştürmeyi destekleyecek şekilde geliştirildi (#3090).
    • DecoderAudioRenderer.getChannelMapping için dönüş değerini ImmutableIntArray olarak değiştirin.
    • Sıkıştırılmış boşaltma modunda kesintisiz ses oynatma listesi oynatılırken oynatmanın takılmasına neden olan hata düzeltildi.
    • Ses işlemcilerine oynatma listesi bağlamı sağlamak için Timeline ve dönem UID'sini AudioSink.configure ve AudioProcessor.StreamMetadata öğelerine yönlendirin (#418).
    • Zamana dayalı ses işlemeye izin vermek için doğru AudioProcessor.StreamMetadata.positionOffsetUs değerini ayarlayın (#418).
    • Big-endian 32 bit ve 64 bit kayan noktalı PCM desteği eklendi.
    • Google Pixel cihazlarda standart EAC3 kod çözücüler EAC3-JOC akışlarının kodunu çözemediğinden, bu cihazlarda oynatma için EAC3-JOC'nin EAC3'e yedek yolu kaldırıldı (#3257).
  • Video:
    • Katılma sırasında bırakılan arabellekleri bırakılan yerine atlanan olarak saymak için video katılma mantığı düzeltildi.
    • Yer tutucu yüzeyleri desteklemeyen cihazlarda kare düşüşlerini önlemek için yeni yüzey ayarlanırken anında oluşturma kararı düzeltildi.
    • MediaCodecVideoRenderer uygulamasında kare hızı tahminini, bırakılan veya atlanan kareleri hesaba katarak daha doğru olacak şekilde düzeltin.
    • Kareleri erken planlamak için kullanılan eşiğin yapılandırılmasına izin ver. Varsayılan değer 50 ms'dir ancak MediaCodecVideoRenderer.Builder.setMaxEarlyUsThreshold() üzerinden özelleştirilebilir.
    • VideoFrameReleaseHelper içinde, ekran değişikliklerinin ana iş parçacığında gereksiz Choreographer geri çağırmaları ve aşırı CPU uyanmalarını tetikleyebileceği hata düzeltildi.
  • Metin:
    • TTML: Bölgeler için style yerine displayAlign kullanılıyor (#2559).
    • TTML: <p> öğelerinin üst öğesinden işaret başlangıç zamanını devralma (#3246).
  • Meta veriler:
    • MediaMetadata.discSubtitle alanını ekleyin ve ID3v2.4 TSST ve Vorbis DISCSUBTITLE verilerinden ayrıştırın.
    • Disk numarasını ve sayısını ID3 TPOS çerçevesinden ayrıştırın.
  • Etki:
    • Arama sırasında oynatıcının donmasını önlemek için temizleme sırasında FinalShaderProgramWrapper içindeki yeniden çizim durumunu temizleyin.
  • Çoğullayıcılar:
    • Yeni bir addTrackReference API aracılığıyla Mp4Muxer içinde parça referansları (tref kutusu) için destek eklendi. Bu sayede, parçalar arasında ilişki kurulabilir (ör. bir meta veri parçasını, açıkladığı video parçasına bağlama).
    • OPUS veya VORBIS medya akışlarının ogg dosya biçiminde birleştirilmesine izin vermek için OggMuxer ekleyin.
    • WAV dosyası üretme için WavMuxer ekleyin (tam sayı ve kayan nokta PCM'yi destekler).
    • Ayrılmış alan olmadan daha küçük, akışla aktarılamayan dosyaların yazılmasına izin vermek için InAppMp4Muxer.Factory parametresine setAttemptStreamableOutputEnabled ekleyin.
    • Mp4Muxer ve FragmentedMp4Muxer için IAMF ses desteği eklendi.
  • IMA uzantısı:
    • Ara reklamları için kullanılacak bir reklam alanı sağlamak üzere ImaServerSideAdInsertionMediaSource.AdsLoader.Builder.setPauseAdSlot ekleyin.
    • Arka arkaya atlanabilir VAST reklamların ikinci reklamda atla düğmesini hemen göstermesine neden olan hata düzeltildi (#3165).
  • Oturum:
    • Arka plan iş parçacığı oynatıcı döngüleyicisi içeren bir oturum kullanırken MediaNotificationManager içinde olası kilitlenmeleri ve IllegalStateException kilitlenmelerini düzeltin.
    • MediaSession yöntemleri için daha katı iş parçacığı oluşturma koşulları uygulayın. Void yöntemleri artık yürütme işlemini otomatik olarak uygulama döngüleyici iş parçacığına gönderir ve durum erişimcileri (getters), uygulama döngüleyici dışında bir iş parçacığından çağrılırsa açıkça bir IllegalStateException hatası verir.
    • Oturum tarafında her denetleyici için durum tutarlılığını izleyerek sınır dışı zaman çizelgesi birleştirme kilitlenmesini (MediaUtils.mergePlayerInfo içinde IllegalStateException) düzeltme.
    • Etkin medya oturumlarını sorgulama ve Media3 SessionToken örneklerini döndürme desteği sağlamak için androidx.media3.session.MediaSessionManager eklendi.
    • Yöntem, güvenilmeyen denetleyicilere yalnızca okuma erişimi sağlayacak şekilde geçersiz kılınmazsa MediaSession.Callback.onConnect yönteminin varsayılan davranışını değiştirin.
    • Yeni bir API MediaSession.Builder#setPackageNameOverride aracılığıyla MediaSession oluştururken paket adını geçersiz kılma desteği eklendi. Arayanın, oturumun paket adını geçersiz kılmak için android.permission.OVERRIDE_MEDIA_SESSION_OWNER iznine sahip olması gerekir.
    • MediaSession.Callback.onConnectAsync() ekleyin. Yeni yöntem, bir kumandanın bağlantı denemesini eşzamansız olarak işlemeye olanak tanır. Uygulamalar, önceki davranışı elde etmek için Futures.immediateFuture(ConnectionResult) ile hemen Future döndürebilir. Callback.onConnect desteği sonlandırılacağı için yeni yönteme geçmeniz önerilir.
    • API 36 ve 37'de Bluetooth AVRCP taramasının MediaLibraryService öğesini tanımamasına neden olan sorun düzeltildi.
    • Resim boyutu platform sınırına yakın olduğunda MediaSession uygulamasında resmin iki kez küçültülmesi sorunu düzeltildi. Böylece bildirimlerdeki bulanıklık giderildi (#3134).
    • Uygulama arka plandayken eşzamansız resim bitmap yükleme geri çağırma işlevi ön plan hizmetini başlatmaya çalıştığında MediaNotificationManager uygulamasında oluşan ForegroundServiceStartNotAllowedException kilitlenme sorunu düzeltildi (#3270).
    • MediaController tarafından alınan PositionInfo nesnelerinin orijinal Timeline UID'lerinin eksik olmasına neden olan sorun düzeltildi. Oturum artık durum güncellemeleri sırasında bu UID'leri güvenilir bir şekilde çevirir ve yayar.
    • MediaSessionService.stopSelfSafely() içinde ForegroundServiceStartNotAllowedException yakalanarak kilitlenme sorunu düzeltildi (#3310).
    • Aynı medya öğesinde arama yaparken MediaController üzerinde beklenmeyen onMediaItemTransition() geri çağırma düzeltildi (#3248).
  • Kullanıcı arayüzü:
    • ContentFrame oynatma sırasında yeniden oluşturulduğunda ilk karenin yanlış boyutta oluşturulması sorunu düzeltildi (#3238).
    • media3-ui-compose modülüne CurrentMediaItemState sınıfını ve ilgili rememberCurrentMediaItemState Composable'ı ekleyin. Bu durum bilgisi depolayıcı, demo-compose içinde, o anda oynatılan MediaItem ile ilgili çeşitli meta veri bilgilerini görüntülemek için kullanılır.
    • media3-ui-compose modülüne PlaylistState sınıfını ve ilgili rememberPlaylistState Composable'ı ekleyin. Bu durum bilgisi depolayıcı, oynatıcıda ayarlanan MediaItems ile ilgili çeşitli meta veri bilgilerini görüntülemek için demo-compose içinde kullanılır.
    • PlaybackSpeedState için ileri sarma/ağır çekim API'si ekleyin. Uzun basarak ileri sarma özelliğini göstermek için demo-compose uygulamasındaki bu işlevi kullanın.
    • media3-ui-compose-material3 modülüne MiniController composable'ı ekleyin. Mevcut medya öğesinin başlığını, sanatçısını, posterini ve ilerleme durumunu gösterirken Player kontrolü için kompakt bir olanak sağlar.
    • media3-ui-compose modülüne ErrorState sınıfını ve ilgili rememberErrorState Composable'ı ekleyin. media3-ui-compose-material3 öğesine ErrorText Composable ekleyin ve bunu Player üzerinde varsayılan yer paylaşımı yapın.
    • TopControls, CenterControls, BottomControls ve ErrorOverlay için birleştirilebilir öğeler içeren PlayerDefaults nesnesini yayınlayın.
    • FocusRequester öğesini Player Composable'a ve içerik alanlarına ekleyin.
    • Kayan pencere kullanıcı arayüzü ortamlarında MediaItems öğesinin önceden yüklenmesini desteklemek için PlayerPool (common-ktx) ve rememberPooledPlayer (ui-compose) yayınlayın. Bu işlevi demo-compose içinde yeni bir ShortFormPlayerScreen ile sergileyin.
    • PlayerView ve Compose'da, dönem UID aramayı desteklemeyen zaman çizelgelerinde kilitlenmelere neden olan deklanşör bastırma hatası düzeltildi PresentationState (#3264).
  • İndirilenler:
    • İndirme için getirildiğinde medya oynatma listesindeki HLS değişkenlerini çözme (#3258).
  • Ktor uzantısı:
    • Ktor HTTP yığını tarafından desteklenen bir KtorDataSource sağlayan yeni bir media3-datasource-ktor uzantı modülü ekleyin.
    • Bağlantı açılırken KtorDataSource'nin tüm HTTP yanıt gövdesini belleğe yüklemesi sorunu düzeltildi (#3305).
  • HLS uzantısı:
    • HLS Content Steering ve Pathway Cloning için destek eklendi (#1689).
    • Uygulamaların, tamamen işlenmiş öğe listesi geçiş reklamlarını isteğe bağlı yeniden çözünürlük için kullanılamaz duruma sıfırlamasına izin vermek üzere HlsInterstitialsAdsLoader öğesine setWithAssetListReset ekleyin.
    • EXT-X-STREAM-INF ve EXT-X-I-FRAME-STREAM-INF öğelerinin SCORE özelliğini ayrıştırıp Format.selectionPriority özelliğine ekleyin (#3236).
    • Oynatma listesi artık birincil veya etkin olmasa bile planlanmış HLS oynatma listesi yenilemelerinin devam etmesine neden olan hata düzeltildi (#3254).
    • Geçiş reklamı öğe listeleri çözümlenirken içerik devam ettirme ofsetinin hesaplanması düzeltildi (#3322).
    • Oynatma listesi isteği başarısız olduktan sonra düşük gecikmeli canlı oynatma devam ettirilirken beklenmedik ses parçası zaman damgası süreksizliği düzeltildi (#3311).
    • HlsMediaPeriod.getStreamKeys()'da ses yorumlarındaki ID3 parçasının altyazı olarak kabul edilmesiyle ilgili hata düzeltildi (#3333).
  • DASH uzantısı:
    • CEA altyazılarını dile göre farklı TrackGroup öğelerine ayırın (#3113).
    • Manifestten (MPD) birden fazla Location öğesini ayrıştırma ve manifest yükleme işlemleri başarısız olduğunda DashMediaSource içinde konum yedekleme desteği eklendi.
    • Boş bir <SegmentTimeline/> öğesi içeren manifest dosyaları açılırken oluşan kilitlenme (IndexOutOfBoundsException) düzeltildi (#3326).
  • RTSP uzantısı:
    • UDP bağlantı noktası bağlama hatalarından kaynaklanan RTSP oynatma hazırlığı sırasında geçici oynatma duraklamalarını veya hatalarını düzeltme.
  • Yayınlama uzantısı:
    • Cast.initialize(CastParams) yöntemini çağırarak Cast yapılandırmasına olanak tanıyan yeni CastParams sınıfı eklendi.
    • Mümkün olduğunda uygulama içi yayın cihazı seçici yerine SystemUI çıkış değiştiricinin kullanılmasını tetikleyen yeni CastParams.getShowSystemOutputSwitcherOnCastIconClick() seçeneği eklendi.
    • Medya rotası seçicinin görünürlük durumunun gözlemlenmesini desteklemek için MediaRouteButtonState ve rememberMediaRouteButtonState ekleyin ve MediaRouteButton'e state parametresini ekleyin (#3172).
    • RemoteCastPlayer öğesinin, parça seçiminden sonra kalıcı olarak parça maskeleme durumunda takılı kalmasına ve Cast alıcısından gelen sonraki parça güncellemelerini yoksaymasına neden olan hata düzeltildi (#3237).
    • DefaultMediaItemConverter, Media3 dışı bir gönderenden başlatılan yayın oturumuna katılmaya çalışırken NullPointerException hatası veriyordu. Bu hata düzeltildi.
    • Etkin oyuncu değiştirilirken CastPlayer'in oynanamayan MediaItems aktarması engellendi (#3199).
    • Yapılandırılmamış canlı yayınların (liveConfiguration == UNSET) STREAM_TYPE_BUFFERED olarak sıraya alınmasına neden olan hata düzeltildi (#3318).
  • Test yardımcı programları:
    • DataSourceContractTest uygulamasını, başlık ve gövde içeren POST isteklerini destekleyecek şekilde genişletin, HttpDataSourceTestEnv uygulamasına bazı POST kaynakları ekleyin ve WebServerDispatcher uygulamasında beklenen HTTP yöntemi, başlıkları ve gövdesi için onaylar ekleyin.
    • DataSource.open() tarafından döndürülen uzunluklar için DataSourceContractTest içindeki onayları sıkılaştırın. C.LENGTH_UNSET ile sonuçlanabilecek kaynaklar, bunu TestResource.Builder.setMayResolveToUnknownLength(boolean) kullanarak belirtmelidir.
    • setPlaybackLooper öğesini TestExoPlayerBuilder adlı listeye ekleyin.
  • Desteği sonlandırılan simgeleri kaldırın:
    • androidx.media3.exoplayer.MetadataRetriever öğesini kaldır Bunun yerine androidx.media3.inspector.MetadataRetriever kullanın.
    • androidx.media3.exoplayer.MediaExtractorCompat öğesini kaldır Bunun yerine androidx.media3.inspector.MediaExtractorCompat kullanın.
    • Mp4Extractor.FLAG_READ_MOTION_PHOTO_METADATA öğesini kaldır Bunun yerine HEIC dosyalarından hareketli fotoğraf meta verilerini ayıklamak için HeifExtractor kullanın.
    • androidx.media3.extractor.metadata.mp4.MotionPhotoMetadata öğesini kaldır Bunun yerine androidx.media3.extractor.metadata.MotionPhotoMetadata kullanın.
    • androidx.media3.extractor.DummyTrackOutput öğesini kaldır Bunun yerine androidx.media3.extractor.DiscardingTrackOutput kullanın.
    • androidx.media3.extractor.DummyExtractorOutput öğesini kaldır Bunun yerine androidx.media3.extractor.NoOpExtractorOutput kullanın.
    • androidx.media3.common.C.generateAudioSessionIdV21 öğesini kaldır Bunun yerine androidx.media3.common.util.Util.generateAudioSessionId kullanın.
  • Oluşturma
    • Gradle Bileşik Derlemeleri'ni (includeBuild) kullanmak için Media3'e yerel olarak bağlı olma ile ilgili README.md talimatları güncellendi. core_settings.gradle komut dosyası kaldırıldı ve androidxMediaModulePrefix ile androidxMediaEnableMidiModule özellikleri artık kullanılmıyor.

1.11.0-rc01

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

1.11.0-beta01

7 Temmuz 2026

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

1.11.0-alpha01

24 Haziran 2026

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

Sürüm 1.10.0

1.10.1

12 Mayıs 2026

  • Ortak kitaplık:
    • SimpleBasePlayer ve ForwardingSimpleBasePlayer içinde onAudioSessionIdChanged işleme sorununu düzeltin.
  • ExoPlayer:
    • Tünel moduyla IllegalStateException sorununa yol açabilecek, ses oturumu kimliği oluşturmayla ilgili yarışma durumunu düzeltme (#3099).
    • Oluşturucu ön ısıtma ile kod çözücü hatalarından kurtarılırken olası uygulama kilitlenmeleri düzeltildi.
    • AV1 tabanlı Dolby Vision codec kullanılırken başlatma verileri sağlanmasından kaynaklanan video kusurları sorunu düzeltildi (#3153).
  • Parça seçimi:
    • Yedek MIME türlerini çözmek için VideoTrackInfo öğesindeki parça seçimi mantığını ayarlayın ve HDR ile codec puanı tercihlerini kalite tercihlerine taşıyın (#3135).
  • Ayıklayıcılar:
    • MP3: Xing veri uzunluğu, bilinen akış uzunluğundan daha uzunsa yoksayılır (#3117).
    • FLAG_OMIT_TRACK_SAMPLE_TABLE ayarlandığında ve parçada senkronizasyon örneği (stss) kutusu olmadığında Mp4Extractor içindeki ArrayIndexOutOfBoundsException düzeltildi.
  • Ses:
    • Oynatıcıya birden fazla ses oluşturucu eklendiğinde ses etkinliklerinin yanlış yönlendirilmesine neden olan hata düzeltildi.
  • Video:
    • Faydalı olmayan codec sıfırlamalarını önlemek için 30'un altındaki API'de kare hızı değişikliklerinde codec'in yeniden kullanımıyla ilgili mantık ayarlandı (#3120).
    • API 31 ve sonraki sürümler için queueSecureInputBuffer uygulamasında zorunlu senkronizasyon geçici çözümünü devre dışı bırakın. Geçici çözüm, şifre çözme işlemini sırayla çalışmaya zorlayan yapay bir darboğazdı. Bu, API 31'den önce mevcut olan bir çerçeve sorunu nedeniyle videonun bozulmasını önlüyordu.
  • Resim:
    • Görüntü güncellemelerinin yalnızca kullanıcı "kaydırmayı durdurduğunda" geçerli olduğu kaydırma modundaki sorun düzeltildi (#2815).
  • Oturum:
    • Uygulama iş parçacığının ana iş parçacığı olmadığı durumlarda ForegroundServiceStartNotAllowedException öğesinin iş parçacığı sınırları boyunca yayılmamasıyla ilgili hata düzeltildi (#2499).
    • Diğer öğelere geçişi destekleyen ancak oynatma listesi değişikliklerini desteklemeyen, yalnızca platforma özel bir oturuma bağlanırken COMMAND_SEEK_TO_MEDIA_ITEM öğesinin MediaController içinde kullanılamamasına neden olan hata düzeltildi.
    • MediaController, PREPARE_FROM işlemlerine izin vermeyen platform medya oturumlarında medya öğelerini ayarlayamıyor. Bu sorun düzeltildi.
    • Platform denetleyicileri üzerinden bağlanırken API 27 veya önceki sürümlerde kendi işleminin Controller.isTrusted() ile işaretlenmemesine neden olan hata düzeltildi.
  • HLS uzantısı:
    • Parça seçimi, mevcut parçaların bir alt kümesiyse akış yedeği sırasında ArrayIndexOutOfBoundsException hatasının oluşmasına neden olan hata düzeltildi (#3161).
    • #EXT-X-MAP etiketi sonraki güncellemelerde tekrarlanmadığında, başlatma segmentinin medya oynatma listesi güncellemeleri arasında taşınmamasına neden olan sorun düzeltildi (#3105).
  • DASH uzantısı:
    • İptal edilmekte olan bir parçaya geçiş yaparken SampleQueue uygulamasında oluşan kilitlenme düzeltildi.

1.10.0

26 Mart 2026

  • Ortak kitaplık:
    • Player.mute() ve Player.unmute() sürümlerini UnstableApi kanalından kararlı kanala yükseltin.
    • Format.pcmEncoding ve C.PcmEncoding sürümlerini UnstableApi kanalından kararlı kanala yükseltin.
    • Yerleştirilmiş Format örneklerinin birincil grubunu tanımlamak için Format.primaryTrackGroupId ekleyin (#294).
  • ExoPlayer:
    • AdsMediaSource için klip oluşturma özelliklerini ekleyin.
    • Zamanlama işini ve CPU uyanma döngülerini video karelerinin işlenebileceği zamanla daha iyi uyumlu hale getirmek için MediaCodecVideoRenderer uygulamasında dinamik zamanlama desteği ekleyin. Bu özelliği DefaultRenderersFactory bölümündeki experimentalSetEnableMediaCodecVideoRendererDurationToProgressUs() seçeneğini kullanarak etkinleştirebilirsiniz.
    • DefaultPreloadManager.Builder içinde özel DataSource.Factory ayarlanmasına izin ver.
    • Bazı varsayılan sabitleri ExoPlayer.Builder sınıfına taşıyarak ExoPlayer sınıfının Robolectric olmadan taklit edilmesine izin verin. Bu karmaşık arayüzün taklit edilmesi genellikle önerilmez. Yalnızca kullanımın minimum/basit/tesadüfi olduğu durumlarda önerilir (#2985).
      • Bu nedenle, DEFAULT_STUCK_PLAYING_DETECTION_TIMEOUT_MS ExoPlayer'den ExoPlayer.Builder'ye taşındı (desteği sonlandırılmadan).
    • ProgressiveMediaSource öğesinin oynatıcıya güncel olmayan zaman çizelgesi bilgilerini yaymasına ve sıraya alınan dönemlerin beklenmedik şekilde kaldırılmasına neden olan bir hata düzeltildi (#3016).
    • Telefon aramaları sırasında oynatma istendiğinde ExoPlayer'ın gecikmeli ses odağı istememesiyle ilgili sorun düzeltildi.
    • Seç-izle içerikten canlı içeriğe geçişlerin, seç-izle içeriğin sonunda yeniden arabelleğe almaya neden olabileceği hata düzeltildi (#3052).
    • Dolby Vision Profile 10 için destek eklendi (#2830).
    • Başlatılmamış bir videodan önce gösterilen reklamın bir ArrayIndexOutOfBoundsException (#3125) oluşturmasına neden olan hata düzeltildi.
  • CompositionPlayer:
    • EditedMediaItem.removeVideo için destek ekleyin.
  • Transformer:
    • EditedMediaItem.Builder.setFrameRate() artık video için maksimum çıkış kare hızı ayarlayabilir. Bu, özellikle setSpeed() ile medya hızını artırırken faydalıdır.
  • Parça seçimi:
    • DefaultTrackSelector.selectAllTracks imzasını, çıkış dizisini parametre olarak içerecek şekilde değiştirin. Bu parametre, parça geçersiz kılmalarıyla önceden doldurulur.
    • İlgili birincil parçanın seçilip seçilmediğine bakılmaksızın yerleşik meta veri parçalarının seçilmesi sorunu düzeltildi (#294).
    • preferredVideoLanguages, preferredVideoLabels, preferredAudioLabels, preferredTextLabels ve selectTextByDefault için TrackSelectionParameters seçeneklerini sabitleyin.
  • Ayıklayıcılar:
    • MP4: moov gibi diğer kutulardan önce büyük uuid kutuları olan dosyalar desteklenir (#3046).
    • MP4: MP4 kapsayıcılarında Çok Yönlü Video Kodlama (VVC) parçaları için destek eklendi.
  • Müfettiş:
    • Zarar veren değişiklik: FrameExtractor kaldırıldı. Kullanıcıların artık yeni :media3-inspector-frame modülünü kullanması ve içe aktarma işlemlerini androidx.media3.inspector.frame.FrameExtractor olarak güncellemesi gerekir.
    • Kodu çözülmüş video karelerini ayıklamak ve işlemek için yeni bir modül ekleyin.
  • Ses:
    • IAMF kod çözücü uzantısının temel kod çözme kitaplığı libiamf yerine iamf_tools olarak değiştirildi.
    • IAMF kod çözme, kod çözücü (IAMF kod çözücü uzantısı kullanılırken) veya Android Spatializer aracılığıyla binaural çıkışı destekler.
    • Otomotiv senaryolarında AC-4 kod çözücü desteği değerlendirilirken AC4Profile22 ve diğer eski profiller için destek doğru şekilde kaldırıldı (#2609).
    • DefaultAudioSink içinde AudioOutput başlatma işleminin yeniden deneme mantığı iyileştirildi (#2905).
    • IAMF'nin kodunu çözerken hoparlörlerin çıkış düzenini (veya varsa Spatializer'ı) eşleştirmeye çalışın. Bu işlem, AudioCapabilities ve AudioCapabilitiesReceiver'daki yeni alanlar ve mantık tarafından desteklenen IAMF uzantısı ve medya codec kod çözücüleri ile yapılır.
    • Sıkıştırılmış boşaltma modunda kesintisiz ses oynatma listesi oynatılırken oynatmanın takılmasına neden olan hata düzeltildi.
  • Metin:
    • VobSub: Her zaman varsayılan olarak 5 saniye kullanmak yerine, işaret süresini türetmek için START ve STOP SPU kontrol komutlarını kullanın (#2935).
  • Meta veriler:
    • HLS varyantları ve yorumları tarafından yayınlanan tüm potansiyel meta veri parçalarını kapsayacak şekilde meta veri oluşturucuların varsayılan sayısını dörde çıkarın (#3043).
  • Etki:
    • LottieOverlay, yeni bir :media3-effect-lottie modülüne taşındı (bu işlem sırasında androidx.media3.effect.LottieOverlay olan adı androidx.media3.effect.lottie.LottieOverlay olarak değiştirildi).
  • Efekt Lottie:
    • Lottie efektlerini video karelerine uygulama işlevi sunan yeni bir :media3-effect-lottie modülü kullanıma sunuldu.
  • IMA uzantısı:
    • En yeni reklam medya bilgileri API'sine erişmek için IMA SDK sürümünü 3.39.0'a güncelleyin.
    • Reklam MIME türünün, IMA LOADED etkinliğinde sağlanan MIME türüyle eşleşmemesine neden olan hata düzeltildi. Düzeltme, artık IMA tarafından sağlanan reklam medya bilgilerini kullanarak reklam MIME türünü eşler.
    • setEnableCustomTabs, ImaAdsLoader ve ImaServerSideAdInsertionMediaSource'ye eklendi. Böylece kullanıcılar, reklam tıklama URL'lerinin özel sekmeler kullanılarak başlatılıp başlatılmayacağını kontrol edebilir.
    • adTagUri oluşturmak için alternatif bir yöntem sunan ImaAdTagUriBuilder sınıfını ekleyin. setPreferredLinearOrientation API'sini içerir. Bu, doğrusal reklamlar için tercih ettiğiniz yönü ayarlamanıza olanak tanıyan, alfa testindeki bir API'dir. Alfa test grubuna katılmak istiyorsanız lütfen hesap iş ortağınızla iletişime geçin.
  • Oturum:
    • MediaMetadata.artworkData içindeki büyük dizilerin uygulamayı kilitlediği bir hata düzeltildi.
    • ActionFactory arayüzündeki @Player.Command bağımsız değişkeni için int türünü kullanın (#2933).
    • MediaSessionService ve MediaLibraryService'yi LifecycleService yaparak yaşam döngüsüne duyarlı işlemleri hizmetin yaşam döngüsüne eklemeye olanak tanır (#187).
    • Yerel oynatmalarda MediaController ve MediaBrowser cihaz ses düzeyi değiştirme komutlarını desteklemeyi bırakın. Uygulamalar yerel cihaz ses düzeyini değiştirmemelidir. Gerekirse bu amaçla AudioManager API'lerini kullanabilirler.
    • Hizmeti ön plan hizmeti olarak başlatan eski Intent örneklerini tespit edin. Bu sayede sistemin ForegroundServiceDidNotStartInTimeException hatası vermesi önlenir. Bu, yeni bir zorunlu yöntem olduğundan özel MediaNotification.Provider uygulayan uygulamalar için kararsız bir API'de zarar veren bir değişikliktir.
    • Ana ekran widget'larıyla kullanılacak PendingIntent örnekleri için oluşturucular ekleyin (#2933).
    • Oluşturma tabanlı ana ekran widget'ları için Intent örnekleri oluşturmak üzere statik yöntemler ekleyin (#2933).
    • Oynatma, belirli bir medya öğesi dizininden aynı medya öğesine sahip başka bir dizine "AUTO" ve "SEEK" süreksizlik nedeniyle geçiş yaptığında medya öğesi geçişinin denetleyicilere bildirilmemesine neden olan hata düzeltildi (#2997).
    • Sistem kullanıcı arayüzü düğme yerleşimiyle ilgili geçici çözümün, Android Auto gibi diğer kullanıcı arayüzü yüzeylerini veya geçici çözüme ihtiyaç duymayan üreticileri olumsuz etkilemesi sorunu düzeltildi (#3041).
    • Aboneliklere erişimin senkronize edilmemesiyle ilgili sorun düzeltildi (#3056).
    • API 29'da, belirli bir boyuttaki medya oturumu resminin SysUI'yi kilitlediği ve cihazı yeniden başlatmaya zorladığı SysUI hatası için geçici çözüm (#3118).
    • Android Q'da bildirim resmi simge ölçeklendirmesi düzeltildi (#3084).
  • Kullanıcı arayüzü:
    • Oynatma hızını görüntülemek ve değiştirmek için media3-ui-compose dosyasına PlaybackSpeedControl Composable'ı ekleyin.
    • Oynatma hızını kontrol etmek için media3-ui-compose-material3 dosyasına PlaybackSpeedToggleButton Composable'ı ekleyin.
    • Oyuncunun ilerleme durumunu göstermek ve sürükleyip dokunarak arama yapmak için ProgressSlider Composable'ı media3-ui-compose-material3 öğesine ekleyin (#2288).
    • PlayerControlView animasyonunda büyük ekran dışı arabellekten kaçının.
    • media3-ui-compose-material3 öğesine Player Composable ekleyin. Bu, ContentFrame öğesini üst, orta ve alt kısımlara hizalanmış özelleştirilebilir kontrollerle birleştirir.
    • PlayerControlView görünür durumdayken sürekli duyuru güncellemesini önlemek için oynatma konumunu erişilebilirlik hizmetinden gizleyin.
  • HLS uzantısı:
    • HLS etkileşimli reklamlarla X-PLAYOUT-LIMIT desteği (#2484).
    • QUERYPARAM özelliğini #EXT-X-DEFINE ile destekleyin (#1854).
    • Normal ifade eşleştiricileri önbelleğe alarak HLS oynatma listesi ayrıştırmayı optimize etme (#3008).
    • Ses yorumlarında ID3 (EMSG) meta veri parçasını gösterme (#3043).
    • Yükleme hatalarıyla karşılaşıldığında, farklı konumlardan yedek akışlar varsa konum yedeklemesine izin verilir (#1988).
    • Başlangıç ve devam konumunu doğru hesaplamak için HLS ara reklamlarında X-SNAP davranışını düzeltme (#3013).
  • DASH uzantısı:
    • Hizalanmamış segment başlangıç zamanlarına sahip parçaların, oynatmanın başında gecikmelere veya eksik örneklere neden olmasıyla ilgili sorun düzeltildi (#3057).
    • Bant içi EMSG v0 meta verilerinin zaman damgalarının doğru şekilde ayarlanmamasıyla ilgili hata düzeltildi (#3024).
  • RTSP uzantısı:
    • H.264 ve H.265 akışında, birden fazla RTP paketini kapsayan aynı erişim biriminin örneklerini yanlış ayrıştıran gerileme düzeltildi. Bu durum, videoda görsel kusurlara ve bozulmalara neden oluyordu (#3121).
  • Kod çözücü uzantıları (FFmpeg, VP9, AV1 vb.):
    • MPEG-H kod çözücü uzantısına MPEG-H kullanıcı arayüzü yöneticisi desteği eklendi (#3066).
  • Yayınlama uzantısı:
    • Yayın oynatmaları için parça seçiminin uygulanmasını sağlayan RemoteCastPlayer.Builder#setTrackSelector yöntemi eklendi.
  • Desteği sonlandırılan simgeleri kaldırın:
    • ExperimentalFrameExtractor öğesini kaldır Bunun yerine androidx.media3.inspector.frame.FrameExtractor kullanın.
    • ChannelMixingMatrix.create() öğesini kaldır Bunun yerine ChannelMixingMatrix.createForConstantGain() kullanın.
    • androidx.media3.extractor.metadata.flac.VorbisComment öğesini kaldır Bunun yerine androidx.media3.extractor.metadata.vorbis.VorbisComment kullanın.
    • MediaSource.prepareSource(MediaSourceCaller, TransferListener) öğesini kaldır Bunun yerine MediaSource.prepareSource(MediaSourceCaller, TransferListener, PlayerId) politikasını kullanın.

1.10.0-rc03

25 Mart 2026

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

1.10.0-rc02

16 Mart 2026

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

1.10.0-rc01

10 Mart 2026

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

1.10.0-beta01

25 Şubat 2026

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

1.10.0-alpha01

6 Şubat 2026

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

Sürüm 1.9.0

1.9.4

16 Mayıs 2026

1.9.4 sürümü aşağıdaki kayıtları içerir.

  • Etki:
    • Yüzey içermeyen bağlamdan geçiş yaparken GL_DRAW_BUFFER ve GL_READ_BUFFER değerlerini açıkça ayarlayın.

1.9.3

16 Mart 2026

1.9.3 sürümü aşağıdaki kayıtları içerir.

  • Ses:
    • Sıkıştırılmış boşaltma modunda kesintisiz ses oynatma listesi oynatılırken oynatmanın takılmasına neden olan hata düzeltildi.

1.9.2

6 Şubat 2026

1.9.2 sürümü aşağıdaki kayıtları içerir.

  • ExoPlayer:
    • ProgressiveMediaSource öğesinin güncel olmayan zaman çizelgesi bilgilerini oynatıcıya yaymasına ve sıraya alınan dönemlerin beklenmedik şekilde kaldırılmasına neden olan hata düzeltildi (#3016).
  • Oturum:
    • Sistem kullanıcı arayüzü düğme yerleşimiyle ilgili geçici çözümün, Android Auto gibi diğer kullanıcı arayüzü yüzeylerini veya geçici çözüme ihtiyaç duymayan üreticileri olumsuz etkilemesi sorunu düzeltildi (#3041).
  • Yayınlama uzantısı:
    • Yayınlama'dan yerel oynatmaya aktarımın bozulmasına neden olan hata düzeltildi.

1.9.1

26 Ocak 2026

1.9.1 sürümü bu commit'leri içerir.

  • Ortak Kitaplık:
    • Saat dilimi farkında yalnızca saat içeren tarih-saat dizeleri desteklenir (#2929).
  • ExoPlayer:
    • Oynatmanın başında daha sorunsuz ses/video senkronizasyonu sağlamak için dinamik planlamanın yalnızca ses başladıktan sonra doSomeWork aralığını yavaşlatmasına izin verin.
    • DefaultLoadErrorHandlingPolicy içinde FileNotFoundException ve benzer istisna türlerinin birden çok kez yeniden denendiği hata düzeltildi.
    • Dinamik planlamada, bir sonraki doSomeWork için hesaplanan sürenin, mevcut doSomeWork iterasyonunun geçen süresi kadar yanlışlıkla azaltılmasına neden olan hata düzeltildi. Bu sorunun giderilmesi, CPU'nun boşta kalma süresini uzatır ve güç tasarrufu sağlar.
    • Yedek AVC veya HEVC codec'i kullanılmaya çalışılırken bazı Dolby Vision dosyalarının oynatılamaması sorunu düzeltildi.
    • Oynatılmakta olan öğe oynatma listesinden kaldırıldığında oynatma sona erdikten sonra yüklemenin devam etmesi hatası düzeltildi (#2873).
    • Aynı öğe üzerinde ExoPlayer.replaceMediaItem yöntemini tekrar tekrar kullanırken MediaItem örneklerinin sızdırılmasını önleyin (#2993).
    • Acil durum uyanık kalma kilidi serbest bırakmalarının neden olduğu olası ANR'leri önleme (#2979).
  • Ayıklayıcılar:
    • MP3: LAME ReplayGain verilerini ayrıştırma (#2840).
  • Ses:
    • Otomotiv senaryolarında AC-4 kod çözücü desteği değerlendirilirken AC4Profile22 ve diğer eski profiller için destek doğru şekilde kaldırıldı (#2609).
  • Video:
    • İçerik kare hızı değiştiğinde takılma olmadan oynatmak için API 30'un altındaki cihazlarda video codec'lerini silme (#2941).
  • Metin:
    • VobSub: Yalnızca tek bir kontrol dizisi içeren veya kritik bilgileri birden fazla kontrol dizisine bölünmüş SPU'ları doğru şekilde işleyerek bazı eksik altyazıları düzeltme (#2935).
  • IMA uzantısı:
    • Hata düzeltmesi: Reklam MIME türünün, IMA LOADED etkinliğinde sağlanan MIME türüyle eşleşmemesine neden olan sorun düzeltildi. Düzeltme, artık reklam kapsülü dizini ve reklam konumunu kullanarak reklam MIME türünü eşler.
    • getAdsManager() ve AdEvent.getAd() sonuçlarına erişmeden önce null kontrolü ekleyin.
  • Oturum:
    • Reklam oynatma sırasında durdurma işlemi gerçekleştiğinde platform oturumuna bağlı bir MediaController durdurulursa uygulamanın kilitlenmesine neden olan hata düzeltildi (#2948).
    • Diğer işlemlerden gönderilen hatalı biçimlendirilmiş Bundle örneklerine karşı koruma sağlamak için çeşitli sınıflardaki extras Bundle örneklerine ek doğrulamalar ekleyin.
    • COMMAND_SEEK_NEXT veya COMMAND_SEEK_BACK için eksik komutların sistem medya bildiriminde boşluklara neden olabileceği sorun düzeltildi (#2976).
    • Bildirim simgesi için bit eşlem ölçeklendirmesini ana iş parçacığından taşıma (#2829).
    • Eski MediaMetadataCompat ve MediaDescriptionCompat biçimlerinden dönüştürme yapılırken yazar, yazar ve besteci bilgilerinin yedek olarak kullanılmamasıyla ilgili hata düzeltildi (#3018).
  • İndirilenler:
    • SegmentDownloader tarafından bir PriorityTooLowException işlenirken oluşabilecek sonsuz döngüleri düzeltin (DASH, HLS ve SmoothStreaming için). Korumalı execute yöntemini kullanan SegmentDownloader özel geçersiz kılma işlemlerinin, yeniden oluşturulabilmesi için görevlerini Supplier içinde sarmalanmış olarak sağlaması gerekir (#2931).
  • HLS uzantısı:
    • Ham öğe listesi JSON dokümanını Listener.onAssetListLoadCompleted geri çağırma işlevine iletin. Bu, kararsız bir API'de zarar veren bir değişikliktir. Bu geri çağırmayı uygulayan uygulamaların JSONObject türünde ek bir bağımsız değişken eklemesi gerekir (#2950).
  • RTSP uzantısı:
    • Zaman damgaları sarmalanan RTP paketlerini doğru şekilde işleme (#2930).
  • Kod çözücü uzantıları (FFmpeg, VP9, AV1 vb.):
    • İlk video karesi işlenmeden önce arama yapıldığında ortaya çıkabilecek olası NullPointerException düzeltildi (#2965).
  • Yayınlama uzantısı:
    • Oynatma listesi değiştirilirken RemoteCastPlayer zaman çizelgesinin doğru şekilde güncellenmesini engelleyen hata düzeltildi.

1.9.0

17 Aralık 2025

  • Ortak Kitaplık:
    • minSdk, diğer AndroidX kitaplıklarıyla uyumlu olacak şekilde 23 sürümüne güncellendi.
    • Oynatma durumunun Player örnekleri arasında aktarılmasını kolaylaştıran PlayerTransferState eklendi.
    • Player'a, Player'ın ses düzeyini sıfıra ayarlamadan önce ve sonra koruyan ve ardından geri yükleyen void mute() ve void unmute() yöntemlerini ekleyin.
    • Daha önce ExoPlayer tarafından dahili olarak kullanılan WakeLockManager, WifiLockManager, AudioFocusManager, AudioBecomingNoisyManager ve StuckPlayerDetector yardımcı sınıflarını diğer oynatıcıların yeniden kullanabilmesi için yayınlayın (#1893).
    • Temel temsilci oynatıcı, dinleyici örneklerini karşılaştırmak için referans eşitliğini kullandığında ForwardingPlayer dinleyici işleme sorunu düzeltildi (#2675).
    • media3-common-ktx kitaplığına, üzerinde işlem yapılması gereken belirli Player.Events değerini belirten bir Player.listenTo askıya alma uzantısı işlevi ekleyin.
    • Bildirilen arabelleğe alınmış konum, bildirilen süreden mantıksız bir şekilde çok daha büyük olduğunda tam sayı taşmasından kaynaklanan BasePlayer.getBufferedPercentage kilitlenmesi düzeltildi (#2750).
    • Özel örnek MIME türünü yok saymayarak ve kapsayıcı MIME türünden potansiyel olarak yanlış parça türünü kullanmaya geri dönerek TrackGroup parça türünün otomatik algılanmasını düzeltme (#2860).
  • ExoPlayer:
    • Oynatıcı takılı kalmış gibi görünüyorsa StuckPlayerException oynatıcı hatasını tetikleyen bir takılı kalan oynatıcı algılama özelliği ekleyin. Bu durum, aşağıdaki durumlarda ortaya çıkar. Her bir varsayılan zaman aşımı, gerekirse ExoPlayer.Builder üzerinden yapılandırılabilir:
      • Oynatılmaya çalışılırken 10 dakika boyunca STATE_BUFFERING ve arabelleğe alma işlemi gerçekleşmedi.
      • Oynatılmaya çalışılırken 10 saniye boyunca STATE_READY ve oynatma ilerlemesi yok.
      • Öğenin sonuna ulaşmadan, beyan edilen sürenin 1 dakika sonrasında STATE_READY.
      • Oynatmayı denerken 10 dakika boyunca oynatma engelleme nedeni gösterildikten sonra.
    • Arka planda oynatma sırasında arabelleğe alma sorunlarını düzeltmek için uyanık kalma kilidi işlemeyi varsayılan olarak etkinleştirin. Bu, ExoPlayer.Builder.setWakeMode değerini C.WAKE_MODE_LOCAL olarak ayarlamakla eşdeğerdir.
    • ExoPlayer.Builder öğesine ilk olarak iletilen Context öğesine bir değişiklik bildirildiğinde sanal cihaz kimliğini otomatik olarak güncelleyecek dinleme mantığı ekleyin.
    • ExoPlayer.Builder öğesine iletilen Context öğesinden alınan sanal cihaz kimliğini manuel olarak güncellemek için ExoPlayer.setVirtualDeviceId öğesini ekleyin.
    • Oluşturucuların, oynatma listesindeki bir sonraki öğenin verilerini mevcut öğenin bitişinden en fazla 10 saniye önce kullanmasını sağlayın.
    • Oluşturma işleminden sonra bu ayarları güncellemek için ExoPlayer öğesine setSeekBackIncrementMs, setSeekForwardIncrementMs ve setMaxSeekToPreviousPositionMs ekleyin (#2736).
    • DefaultPreloadManager uygulamasında önden belleğe alma işlevi ekleyin. Uygulamalar artık bir medya öğesinin önceden önbelleğe alınması gerektiğini belirtmek için TargetPreloadStatusControl.getTargetPreloadStatus(T rankingData) aracılığıyla DefaultPreloadManager.PreloadStatus.specifiedRangeCached(startPositionMs, durationMs) veya DefaultPreloadManager.PreloadStatus.specifiedRangeCached(durationMs) döndürebilir.
    • Kısa video demo uygulamasında DefaultPreloadManager önden belleğe alma işlevini kullanın.
    • Yerel oynatma için DefaultLoadControl.Builder ayarlayıcıları ekleyin ve DefaultLoadControl varsayılan değerlerini çok çeşitli yerel dosyalarla iyi çalışacak şekilde ayarlayın.
    • Boş bir oynatma listesi ayarlandığında oynatıcının STATE_READY veya STATE_BUFFERING durumunda kalmasına neden olan hata düzeltildi.
    • Ön yükleme yöneticisi API'lerini iyileştirme:
      • Medya öğelerini veya medya kaynaklarını toplu olarak ekleyen ve ardından otomatik olarak invalidate() yöntemini çağıran addMediaItems(List<MediaItem>, List<T>) ve addMediaSources(List<MediaSource>, List<T>) yöntemlerini ekleyin.
      • Medya öğelerini veya medya kaynaklarını toplu olarak kaldıran removeMediaItems((List<MediaItem>) ve removeMediaSources(List<MediaSource>) yöntemlerini ekleyin ve önceden yükleme yöneticisinin, kaldırma işleminden sonra bunlardan herhangi birini önceden yüklemeye başlamadığından veya önceden yüklemeye devam etmediğinden emin olun.
      • DefaultPreloadManager.setCurrentPlayingIndex(int) uygulamasının kendisini otomatik olarak geçersiz kılmasına izin verin. Uygulamaların, mevcut oynatma dizinini güncelledikten sonra artık invalidate() yöntemini açıkça çağırması gerekmez.
    • Sarma modundayken aynı resim grubu içinde ileriye doğru arama yapıldığında ana kare sıfırlama işlemini atlama özelliği eklendi.
    • Uygulamaların, belirtilen playerName değerine sahip bir oynatıcı için hedef arabellek bayt değeri ayarlaması amacıyla DefaultLoadControl.Builder.setPlayerTargetBufferBytes(String, int) ekleyin. DefaultLoadControl artık her oyuncunun kararlarını, ayrılan baytlarına ve hedef arabellek baytlarına göre ayrı ayrı verebilir.
    • Reklam grubundaki her reklam için atlama bilgilerini taşımak üzere AdPlaybackState.AdGroup öğesine SkipInfo ekleyin.
    • Videodan sonra gösterilen reklam oynatılırken removeMediaItems(List) çağrıldığında kilitlenmeye neden olan hata düzeltildi (#2746).
    • Oynatma listesi oynatılırken karelerin yanlışlıkla her zaman son örnek olarak ayarlanıp oluşturulması nedeniyle yaşanan takılma sorunları düzeltildi.
    • Oynatıcı, ses oturumu kimliği oluşturamazsa yeniden deneme yolunu etkinleştirme (#2382, #2678).
    • Önceden yükleme için toplam arabellek baytlarının rastgele artmasını önlemek amacıyla DefaultPreloadManager içindeki kaynakların toplam arabellek baytlarını kontrol etme desteği ekleyin. Uygulamalar, varsayılan kontrol mantığını kullanmak için DefaultLoadControl.Builder.setPlayerTargetBufferBytes(String, int) aracılığıyla PlayerId.Preload.name ("preload") playerName için önceden yükleme hedef arabellek baytlarını ayarlayabilir ve oluşturulan DefaultLoadControl öğesini DefaultPreloadManager.Builder.setLoadControl(LoadControl) aracılığıyla ekleyebilir.
    • Varsayılan bir uygulama ile ShuffleOrder öğesine cloneAndSet(int, int) eklendi (#2834).
    • Arama ayarı veya otomatik geçişten sonra reklam oynatmayı atlarken içerik devam ettirme ofsetini ekleme (#2484).
    • Ses ve video parçaları için codec parametrelerini ayarlamak ve gözlemlemek üzere API ekleyin. Bu özellik, MediaCodec tabanlı oluşturucular için uygulanır ve API 29 veya sonraki sürümleri gerektirir.
      • Parametreleri uygulamak için ExoPlayer.setAudioCodecParameters() ve ExoPlayer.setVideoCodecParameters() tuşlarını kullanın.
      • Değişiklikleri dinlemek için ExoPlayer.addAudioCodecParametersChangeListener() ve ExoPlayer.addVideoCodecParametersChangeListener() kullanın. Tedarikçiye özel anahtarları gözlemlemek için API 31 veya sonraki bir sürüm gerekir.
    • Sıfır olmayan bir konuma gittikten sonra boş bir medya kaynağı ayarlayıp oynatıcıyı boş olmayan bir medya kaynağıyla hazırlamanın neden olduğu IllegalStateException hatası düzeltildi.
    • Sarma modundayken diğer medya öğelerine geçiş yapmanın IllegalStateException hatasına neden olabileceği hata düzeltildi.
    • DefaultPlaybackSessionManager içinde olası NullPointerException düzeltildi (#2885).
    • Uygun videolarda ileri/geri sarma performansını iyileştirme
    • Bu platform API'siyle ilgili zaman aşımı sorunlarının düzeltildiği API 36 ve sonraki sürümlerde MediaCodec'te eşzamansız şifre çözme kullanımını yeniden etkinleştirme (#1641).
    • MediaCodecVideoRenderer.experimentalSetLateThresholdToDropDecoderInputUs için varsayılan değeri 15 ms olarak değiştirin ve uygun videolar için kod çözme işleminden önce video karelerinin daha verimli bir şekilde bırakılmasını etkinleştirin.
    • DefaultLoadControl uygulamasındaki otomatik bellek hesaplamasına maksimum bellek sınırı ekleyin. Bu, yalnızca aşırı sayıda parça seçildiğinde geçerli olmalıdır (#2860).
    • Oynatma listesinde veya tekrar modunda oynatılırken, sonuna yakın bir yerde kaydırma modunda arama yapıldığında bir sonraki medya öğesine geçilmesine neden olan hata düzeltildi.
  • CompositionPlayer:
    • CompositionPlayer, yeni bir @ExperimentalApi ek açıklamasıyla yayınlanarak denemeye hazır olduğu ancak geliştirme aşamasında olduğu belirtilir. Bazı API'ler gelecekteki sürümlerde önemli ölçüde değişebilir. Ayrıca bazı kullanım alanlarıyla ilgili bilinen sorunlar ve sınırlamalar vardır (bazıları belgelenmemiştir).
    • CompositionPlayer uygulamasında COMMAND_SET_AUDIO_ATTRIBUTES ve ses odağı işleme desteği ekleyin.
    • CompositionPlayer uygulamasında ikincil dizilerde hız değiştirme desteği ekleyin.
    • EditedMediaItem.removeVideo için destek ekleyin.
  • Transformer:
    • Varsayılan muxer olarak InAppMp4Muxer kullanın.
    • EditedMediaItem.Builder#setSpeed() ekleyin ve Effects#createExperimentalSpeedChangingEffects() yönteminin desteğini sonlandırın.
    • EditedMediaItemSequence içinde forceAudioTrack ve forceVideoTrack yerine trackTypes kullanın.
  • Kanal seçimi:
    • Daha spesifik başka tercihler belirtmeden herhangi bir metin parçasının seçilmesini tercih etmek için TrackSelectionParameters.selectTextByDefault ekleyin.
    • Belirli bir etikete sahip parçalar (ör. HLS NAME etiketlerinden okunanlar) için tercih belirtmek üzere TrackSelectionParameters içinde preferredVideoLabels, preferredAudioLabels ve preferredTextLabels ekleyin (#1666).
  • Ayıklayıcılar:
    • FLAC: Kodlanmış FLAC verilerinde sahte başlıklar bulma olasılığını azaltmak için başlık algılamayı sıkılaştırın. Bu, kod çözme hatalarına neden olur (#558).
    • MP3: MP3 dosyalarının başındaki ID3 etiketleri arasında (ve öncesinde) boşluklara izin verilir (#811, #5718).
    • MP3: Bir senkronizasyon baytı için mevcut arama sınırıyla eşleşecek şekilde koklama sınırını 128 kB'ye yükseltme (#2713).
    • MP3: FLAG_ENABLE_INDEX_SEEKING, mümkün olduğunda meta veri başlıklarından (Xing ve VBRI gibi) bilgi aramayı tercih edecek, başka arama bilgisi yoksa dizine dayalı aramaya geri dönecek şekilde değiştirildi. Bu, arama meta verileri içeren dosyaların performansını artırır (#2839).
    • MP3: Arama meta verileri (ör. Xing, VBRI) bulunamadığında, FLAG_ENABLE_INDEX_SEEKING ayarlanmış olsa bile Mp3Extractor varsayılan olarak sabit bit hızı (CBR) varsayımına geçecek şekilde değiştirildi. Bu, CBR'nin standart olduğu ve VBR'nin açık başlıklar gerektirdiği MP3 spesifikasyon geçmişine dayanır. Bu, meta verileri olmayan dosyaların anında aranabilirliğini artırır ancak başlıkları olmayan VBR dosyalarının doğruluğunu etkileyebilir. CBR varsayımı aranabilir değilse (ör. bilinmeyen uzunluktaki akışlar için) artık yedek olarak dizin arama kullanılır (#2848).
    • MP4: Çıkarıcıdan bir parça biçimi yayınlamadan önce ilk örneğin katman değerine bakarak audio/mpeg (MP3), audio/mpeg-L1 ve audio/mpeg-L2 MIME türleri arasındaki belirsizliği giderin (#2683).
    • MP4: 1 MB'tan büyük bir stbl kutusunun, dosyanın parçalara ayrılmamış olması gerektiği anlamına geldiğini varsayarak çok büyük dosyaların koklama verimliliğini artırın (#2650).
    • MP4: ©mvn (hareket adı) ve ©mvi (hareket dizini) meta verileri için destek eklendi. Bunlar artık Format.metadata içinde sırasıyla MVNM ve MVIN kimliklerine sahip TextInformationFrame nesneleri olarak yayınlanıyor (#2754).
    • MP4: stsd kutusu eksik olan parçaları yoksay (tüm dosyayı ayrıştırmada başarısız olmak yerine).
    • Matroska: DTS-HD algılama desteği eklendi (#6225).
    • MatroskaExtractor uygulamasında, birden fazla parça içeren dosyalarda arama işleminin hatalı olmasına neden olan sorun düzeltildi. İşaret noktaları artık ilgili parçalarla doğru şekilde ilişkilendiriliyor. Bu sayede daha hassas arama yapılabiliyor.
    • MPEG-TS: Zaman damgası olmayan PES paketlerinin neden olduğu ReorderingBufferQueue'den IllegalArgumentException düzeltildi (#2764).
    • HEIC hareketli fotoğrafları ayıklama desteği eklendi. HeifExtractor artık yerleşik video ve ses parçaları içeren HEIC dosyalarını ayrıştırabilir.
  • Müfettiş:
    • Medya denetleme yardımcı programları için özel bir ana sayfa olarak hizmet verecek yeni bir :media3-inspector modülü kullanıma sunuldu. Bu modülde artık hem meta veri hem de kare ayıklama için birleştirilmiş bir API sağlayan yeni bir androidx.media3.inspector.MetadataRetriever yer alıyor. Mevcut androidx.media3.exoplayer.MetadataRetriever, bu yeni sürümün kullanıma sunulmasıyla birlikte kullanımdan kaldırıldı.
    • Kare ayıklama için yeni bir herkese açık API olan androidx.media3.inspector.FrameExtractor kullanıma sunuldu. Bu AutoCloseable sınıfı, HDR video, video efektleri ve özel kod çözücü seçimi desteğiyle kareleri ayıklamanın bir yolunu sunar. Belirli bir MediaItem için Builder üzerinden oluşturulmalıdır.
    • FrameExtractor: Belirli bir zaman damgası gerekmeden bir medya dosyasından temsili küçük resim karesi çıkarmak için getThumbnail() ekleyin.
    • Platformun android.media.MediaExtractor sınıfının yerine kullanılabilen ve bir medya dosyasından ham, kodlanmış medya örneklerini ayıklamanın bir yolunu sunan androidx.media3.inspector.MediaExtractorCompat sınıfını ekleyin. Mevcut androidx.media3.exoplayer.MediaExtractorCompat, bu yeni sınıfın kullanıma sunulmasıyla birlikte kullanımdan kaldırıldı.
  • Ses:
    • AudioProcessor örneklerini arama işleminden haberdar edin.
    • Özel ses çıkış yollarını desteklemek için yeni AudioOutputProvider arayüzünün DefaultAudioSink.Builder içine eklenmesine izin verin. Varsayılan değer AudioTrackAudioOutputProvider şeklindedir.
    • GainProcessor içinde ileri/geri sarma işlemlerini yönetin.
    • Parça biçimi destek değerlendirmesinde AC-4 kod çözücü profili ve seviye özelliklerini kullanın (#2580).
    • Oynatmanın başında yönlendirme değişikliği geri çağırmalarının işlenmesinden kaynaklanan olası gecikmeler önlendi (#2646).
    • EAC3, EAC3-JOC ve AC-4 biçimleri için codec'in yeniden kullanılmasına izin verildi (#1346).
    • Sonic içinde kayan noktalı PCM örnekleri için destek ekleyin.
    • ToFloatPcmAudioProcessor uygulamasında 16 bit PCM örnekleri için destek ekleyin.
  • Video:
    • Farklı profillere sahip Dolby-Vision içerikleri için codec'in yeniden kullanılmasını devre dışı bırakın.
    • Güvenli codec'ler için yanlış bildirilen performans puanlarıyla ilgili geçici çözümü yeniden etkinleştirin (#2856).
  • Metin:
    • Dolby Vision içeriklerinde CEA-6/708 altyazılarının ayrıştırılmasıyla ilgili sorun düzeltildi (#2775).
  • Resim:
    • Oynatıcının bir DASH küçük resim parçasını tararken takılmasına neden olan ScrubbingMode sorunu düzeltildi (#2815).
  • DRM:
    • MediaDrmCallback yöntemlerinin dönüş türünü byte[] yerine yeni bir MediaDrmCallback.Response türü olarak değiştirerek isteğe bağlı ek bilgilerin döndürülmesine izin verin. Bu, kaynakta zarar veren bir değişikliktir ancak önceki byte[] dönüş değeri, döndürülmeden önce new Response ile sarmalanarak sorunlar kolayca çözülebilir.
    • URL ve gecikme gibi önemli istek bilgilerini AnalyticsListener.onDrmKeysLoaded (#1001) ekleyin.
    • Temel hazırlık isteği verilerini bir URL parametresinden POST gövdesine taşıyın.
  • Etki:
    • Presentation tek bir kenar uzunluğuyla oluşturulduğunda ayarlanmamış çıkış tarafını yuvarlamak için Presentation.copyWithUnsetSideRoundedTo ekleyin.
  • Çoğullayıcılar:
    • MediaMuxer çerçevesinin yerine kullanılabilen MediaMuxerCompat kitaplığını ekleyin.
    • Hareketli fotoğraf oluşturulmasına izin vermek için MuxerUtil.createMotionPhotoFromJpegImageAndBmffVideo() ekleyin.
    • OPUS, VORBIS, VP8 ve VP9 medya akışlarının webm dosya biçiminde birleştirilmesine izin vermek için WebmMuxer ekleyin.
  • IMA uzantısı:
    • Uygulamaların IMA Android arşivinde yayınlanan kuralları kullanabilmesi için özel ProGuard kuralları kaldırıldı.
    • IMA SDK'nın reklam tanımlayıcılarını Google Ad Manager ayarlarında belirtildiği şekilde işlemesi için Google Ad Manager ağ kodunu ayarlayan yeni bir API olan ImaServerSideAdInsertionUriBuilder.setNetworkCode eklendi. Ağ kodları isteğe bağlıdır ancak tam hizmet akışı istekleri için önerilir. Ağ kodunu bulmak için bu makaleyi inceleyin.
    • IMA bağımlılığı 3.37.0 sürümüne yükseltildi. Bu sürümde, temel kitaplık desugaring sürecinin etkinleştirilmesi gerekir. Bu özelliğin bağımlı uygulamalar tarafından da etkinleştirilmesi gerekir. IMA'nın yapılandırma notlarına bakın. * SSAI URI oluşturucuda IMA DAI özel kullanıcı arayüzü seçenekleri desteklenir. Sunucu tarafı reklam ekleme için özel kullanıcı arayüzü seçenekleri arasında "Atlanabilir" ve "Bu Reklam Hakkında" oluşturma desteği bulunur. Bu özellik şu anda izin verilenler listesindeki belirli yayıncılar tarafından kullanılabilir. Bu değişiklik, özel kullanıcı arayüzü seçenekleri API'sine erişmek için IMA SDK sürümünü de 3.38.0'a (sürüm notları) yükseltir.
    • Reklamdan sonraki içerik için içerik hazırlama hatasının yanlışlıkla reklam oynatma hatası olarak bildirilmesine neden olan sorun düzeltildi (#2656).
  • Oturum:
    • Aramanın yalnızca bilgi toplamak için mi yoksa oynatmayı başlatmak için mi (#1764) yapıldığını belirtmek üzere MediaSession.Callback.onPlaybackResumption öğesine yeni parametre ekleyin.
    • Kendi uygulamasındaki denetleyicileri de güvenilir olarak beyan etmek için MediaSession.ControllerInfo.isTrusted güncellendi (#2542).
    • Bildirim güncellemesini manuel olarak tetiklemek için MediaSessionService.triggerNotificationUpdate eklendi (#1833).
    • Özel komut yöntemlerine ProgressListener ekleyin.
    • MediaLibrarySession.Builder.setLibraryErrorReplicationMode için varsayılan değeri "önemsiz" olarak değiştirin.
    • MediaButtonReceiver.onForegroundServiceStartNotAllowedException (#2625) için Context parametresi ekleyin.
    • Ses seviyesi kontrolü kimliğini bağlayıcı üzerinden almak yerine PlaybackInfo platformundan okuyun. Bu sayede, oynatma türü ve ses seviyesi kontrol kimliği atomik olarak okunur ve birbiriyle eşleşir.
    • ACTION_UP tuş etkinliklerinin özel işleme için geri çağırmaya iletilmeden önce filtrelenmesine neden olan hata düzeltildi. Bu sayede, media1'in ve platformun yaptığıyla (#2637) eşitlik sağlanır.
    • Komut kullanılamadığında bile getCurrentTimeline() işlevinin PlayerWrapper tarafından çağrılmasına neden olan hata düzeltildi (#2665).
    • Ana döngüleyicinin mesaj kuyruğunda bir mesajın kalmasına ve hizmet sonlandırıldıktan sonra bellek sızıntısına neden olan hata düzeltildi (#2692).
    • MediaBrowser içeren eski bir oturum uygulamasına bağlandığında özel komutlar, yalnızca özel işlem eski oturumun PlaybackStateCompat bölümünde özel işlem olarak tanıtılıyorsa oturuma gönderilir. Diğer tüm özel işlemler hizmete gönderilir.
    • Oturum tarafından bir ses oturumu kimliği ayarlandığında medya kumandalarını bilgilendirmek için onAudioSessionIdChanged uygulandı (#244).
    • KEYCODE_HEADSETHOOK uygulamasının, onStartCommand() içinde Intent medya tuşu etkinliği alındığında oynatıcıyı başlatmamasına neden olan hata düzeltildi. Bu sorun, "KEYCODE_HEADSETHOOK"un KEYCODE_MEDIA_PLAY_PAUSE gibi işlenmesiyle düzeltildi (#2816).
    • Yüzey boyutunun oturum ile denetleyici arasında iletilmemesi nedeniyle demo oturumunda video efektlerinin uygulanamamasına yol açan hata düzeltildi. Kumanda kullanıyorsanız oynatıcınız setVideoSurfaceHolder çağrısını işleyemediğinde bu durum zarar veren bir değişiklik olabilir.
    • span-styled dizeler gibi String CharSequence olmayan meta veri değerlerinin yayılması düzeltildi (#2853).
    • Kumandaların istenen işlemi daha kolay tetikleyebilmesi için CommandButton.executeAction ekleyin. Ayrıca, hangi işlemin tetikleneceğini tanımlamak için bazı oynatıcı ve oturum komutlarına parametreler belirtilmesine de olanak tanır.
    • İşlemlerini tanımlamak için Player.Command veya özel olmayan SessionCommand kullanan CommandButton örnekleri için geriye dönük uyumluluk ekleyin. Bunlar artık platform medya oturumlarında (ör. sistem kullanıcı arayüzü veya Android Auto için) doğru şekilde gösteriliyor.
    • Bir MediaController platform medya oturumuna bağlanırken aynı Bitmap öğesinin birden çok kez sıkıştırılması sorunu düzeltildi.
  • Kullanıcı arayüzü:
    • media3-ui-compose modülüne ProgressStateWithTickInterval sınıfını ve ilgili rememberProgressStateWithTickInterval Composable'ı ekleyin. Bu durum bilgisi depolayıcı, geçerli konumu ve süreyi metin biçiminde görüntülemek için demo-compose içinde kullanılır.
    • ui-compose öğesine Player ses seviyesinin sesini kapatma işlemini gerçekleştiren MuteButtonState ekleyin. Bu durum bilgisi depolayıcı, demo-compose içinde sesi kapatma/açma açma/kapatma düğmesini görüntülemek için kullanılır.
    • media3-ui-compose modülüne ProgressStateWithTickCount sınıflarını ve ilgili rememberProgressStateWithTickCount Composable'ı ekleyin. Bu durum bilgisi depolayıcı, ilerleme durumunu yatay salt okunur bir ilerleme çubuğu olarak göstermek için demo-compose içinde kullanılır.
    • media3-ui-compose öğesine ContentFrame Composable ekleyin. Bu, PlayerSurface yönetimini en boy oranını yeniden boyutlandırma ve deklanşörle kapatma ile birleştirir.
    • Bir Compose AndroidView içinde SurfaceView kullanılırken videoların uzatılmasına/kırpılmasına neden olan ve bu nedenle SURFACE_TYPE_SURFACE_VIEW ile ContentFrame ve PlayerSurface composable'larını etkileyen bilinen bir API 34 platform hatası düzeltildi (#1237, #2811).
    • Yeni bir media3-ui-compose-material3 modülü oluşturun ve Material3 temalı composable'ları (PlayPauseButton, NextButton, PreviousButton, SeekBackButton, SeekForwardButton, RepeatButton, ShuffleButton, MuteButton) bu modüle ekleyin.
    • Oyuncunun ilerleme durumunu metin biçiminde göstermek için media3-ui-compose-material3 öğesine TimeText composable'ı ekleyin. Mevcut konumu, süreyi veya kalan süreyi gösterecek şekilde yapılandırılabilir.
    • PlayerView içine medya rotası düğmesi yerleştirme desteği ekleyin.
    • Sağdan sola metin altyazılarında noktalama işaretlerini doğru şekilde görüntülemek için BidiFormatter kullanın (#11214).
  • HLS uzantısı:
    • HLS geçiş reklamı atlama özelliklerini ayrıştırın.
    • HLS oynatma listesindeki ve öğe listesi belgesindeki atlama kontrolü özelliklerini, herkese açık erişim için AdPlaybackState ile eşleyin.
    • Başlangıç zamanını tanımlayan EXT-X-PROGRAM-START-DATE etiketi bir oynatma listesinden kaldırıldığında oynatma listesinin başlangıç zamanının silinmesine neden olan hata düzeltildi (#2760).
    • Oynatma listesindeki belirli bir konumun segment dizinini bulmak için ikili arama kullanın (#2826).
    • Reklamları ve reklam gruplarını dizine göre atlamak için HlsInterstitialsAdsLoader.skipCurrentAd() ve skipCurrentAdGroup() ile ilgili yöntemleri ekleyin.
    • Bir reklam döneminin başlangıcını bildirmek için HlsInterstitialsAdsLoader.Listener.onAdStarted ekleyin (#2859).
    • ISO 8601 tarih-saat dizelerinde tarih/saat ayırıcı olarak boşluk kabul edilir.
    • Segment içermeyen bir HlsMediaPlaylist için sonraki parçanın getirilmesi düzgün şekilde işlenir (#2821).
    • Canlı yayınlarda videodan önce gösterilen reklamlar için varsayılan başlangıç konumunu kullanın.
  • DASH uzantısı:
    • Hiyerarşik olmayan data: URI manifestiyle DASH akışları oynatılırken oluşan UnsupportedOperationException hatası düzeltildi (#2688).
    • LiveConfiguration, yayınlandığında ve medya öğesi kullanıcı tarafından güncellendiğinde (#2606) DashMediaSource'nin MediaItem tarafından sağlanan değere sıfırlanır.
    • Oynatıcı hatası olarak bildirilmeyen geçersiz manifest güncellemelerinin neden olduğu kilitlenmeleri önleme (#2805).
  • RTSP uzantısı:
    • H264 ve H265 için parçalı NAL birimleri işlenirken eksik RTP paketleri hatası düzeltildi (#2613).
  • Kod çözücü uzantıları (FFmpeg, VP9, AV1 vb.):
    • AV1 Uzantısı: AV1 yazılım kod çözücüsü artık daha yüksek kod çözme hızı için önceki libgav1 uygulamasının yerine yüksek performanslı dav1d kitaplığını kullanıyor.
    • FFmpeg uzantısı: STREAMINFO bloğunun doğru şekilde ayrıştırılıp kod çözücüye iletilmesini sağlayarak bazı FLAC dosyalarının oynatılmasını engelleyen sorun düzeltildi (#2887).
  • Yayınlama uzantısı:
    • CastPlayer uygulamasının hem yerel hem de yayın oynatması yapmasını sağlayan CastPlayer.Builder ekleyin. Yalnızca Cast oynatmayı destekleyen eski CastPlayer davranışını korumak için RemoteCastPlayer kullanabilirsiniz. Mevcut CastPlayer oluşturucular eski davranışlarını korur ancak CastPlayer veya RemoteCastPlayer oluşturucuların kullanılması tercih edildiğinden kullanımdan kaldırılmıştır.
    • DefaultMediaItemConverter içinde boş olmayan bir MIME türü zorunlu kılınmayacak.
    • Mümkün olduğunda DefaultCastOptionsProvider#toMediaQueueItem içinde kullanılacak Cast MEDIA_TYPE'ı tahmin etmek için MediaItem.mediaMetadata.mediaType kullanın.
    • DefaultCastOptionsProvider uygulamasında uzaktan kendi hesabına aktarmaları etkinleştirin.
    • Oturum demosunda Yayınlama desteği ekleyin.
    • Birleştirilebilir kullanıcı arayüzünde medya rotası düğmesi gösterme desteği ekleyin.
    • İşlem çubuğu menüsünde medya rotası düğmesi gösterme desteği ekleyin.
    • Medya rotası düğmesini görünüm kullanıcı arayüzü olarak gösterme desteği ekleyin.
  • Test Yardımcı Programları:
    • FakeClock için otomatik ilerleme davranışına maksimum zaman farkı ekleyin. Varsayılan olarak 1 saniyedir ancak FakeClock.Builder aracılığıyla yapılandırılabilir.
    • RobolectricUtil.runMainLooperUntil (ve runLooperUntil) için mesajlar arasındaki maksimum zaman farkını ekleyin. Varsayılan olarak 1 saniyedir ancak bu yöntemlerin yeni aşırı yüklemeleri aracılığıyla yapılandırılabilir.
    • CapturingRenderersFactory, test-utils öğesinden test-utils-robolectric öğesine taşındı.
  • Desteği sonlandırılan simgeleri kaldırın:
    • Desteği sonlandırılan DefaultPreloadManager oluşturucusunu kaldırın. Bunun yerine DefaultPreloadManager.Builder kullanın.
    • Desteği sonlandırılan EditedMediaItemSequence yapıcılar kaldırıldı. Bunun yerine EditedMediaItemSequence.Builder kullanın.
    • BitmapFactoryImageDecoder.BitmapDecoder öğesini kaldır Bunun yerine ExternallyLoadedImageDecoder kullanın.
    • Desteği sonlandırılan ShadowMediaCodecConfig.forAllSupportedMimeTypes() öğesini kaldırın. Bunun yerine ShadowMediaCodecConfig.withAllDefaultSupportedCodecs() politikasını kullanın.
    • Kullanımdan kaldırılan ShadowMediaCodecConfig.withNoDefaultSupportedMimeTypes() öğesini kaldırın. Bunun yerine ShadowMediaCodecConfig.withNoDefaultSupportedCodecs() kullanın.

1.9.0-rc01

1 Aralık 2025

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

1.9.0-beta01

20 Kasım 2025

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

1.9.0-alpha01

22 Ekim 2025

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

Sürüm 1.8.0

1.8.1

21 Mayıs 2026

1.8.1 sürümü aşağıdaki kayıtları içerir.

  • Etki:
    • Yüzey içermeyen bağlamdan geçiş yaparken GL_DRAW_BUFFER ve GL_READ_BUFFER değerlerini açıkça ayarlayın.

Sürüm 1.8.0

30 Temmuz 2025

1.8.0 sürümü bu kayıtları içerir.

  • Ortak Kitaplık:
    • ForwardingSimpleBasePlayer içinde oynatıcıyı değiştirme desteği ekleyin.
  • ExoPlayer:
    • ExoPlayer arayüzüne karışık mod için alıcı eklendi (#2522).
    • DefaultAudioSink öğesine birden fazla iş parçacığından erişilirse daha net bir istisna oluşturun. Bu durum, oynatıcı dışında bir RendererCapabilities.getFormatSupport çağrısı nedeniyle meydana geliyorsa bu yöntemi ExoPlayer'ın oynatma iş parçacığıyla aynı iş parçacığında çağırdığınızdan veya oynatma için kullanılandan farklı bir örnek kullandığınızdan emin olun (#1191).
    • TV'lerdeki stereo olmayan ses biçimlerinin DefaultTrackSelector tarafından desteklenmiyor olarak işaretlenmesine neden olan hata düzeltildi.
    • MediaCodec'in DECODE_ONLY işaretini (varsayılan olarak sarma modunda etkindir) kullanırken son karenin doğru şekilde oluşturulduğundan emin olun.
    • ExoPlayer.Builder öğesine iletilen Context öğesinden sanal cihaz kimliğini kullanma desteği eklendi.
    • Sarma modunda dinamik planlamayı varsayılan olarak etkinleştirin.
    • Bir öğenin sonuna giderken kaynağın gereksiz yere yeniden yüklenmesini önleyin.
    • Sarma modunda varsayılan olarak MediaCodec.BUFFER_FLAG_DECODE_ONLY kullanılır.
    • PreloadMediaSource, önceden yükleme ileti dizisinden farklı bir oynatma ileti dizisine sahip bir ExoPlayer tarafından oynatıldığında IllegalStateException hatası verilir (#2495).
    • Varsayılan bir uygulama ile cloneAndMove öğesini ShuffleMode öğesine ekleyin (#2226).
    • render çağrısı gerekmiyorsa daha büyük bir değer döndürmek için Renderer.getMinDurationToProgressUs varsayılan davranışını değiştirin.
    • Duraklatılmış durumdayken sona gidildiğinde dahili planlamanın son kareyi geciktirmesine neden olan hata düzeltildi. Şu an için hata düzeltmesi yalnızca ExoPlayer.Builder.experimentalSetDynamicSchedulingEnabled etkinleştirildiğinde geçerli olur.
    • ExoPlayer.setScrubbingModeEnabled(boolean) yöntemi ekleyin. Bu, oynatıcıyı sık yapılan aramalar için optimize eder (örneğin, bir kullanıcının kaydırma çubuğunu sürüklemesi). Sarma modunun davranışı, ExoPlayer ve ExoPlayer.Builder cihazlarda setScrubbingModeParameters(..) ile özelleştirilebilir.
    • Sarma modunda kesirli arama toleransının özelleştirilmesine izin verilir.
    • Sarma modunda codec çalışma hızını artırın.
    • AdsMediaSource içeriğindeki hazırlık hatalarının hiçbir zaman raporlanmamasına neden olan hata düzeltildi (#2337).
    • MergingMediaSource içinde, örneğin altyazılar başka bir kaynaktan yüklenirken kullanılan bellek sızıntısı düzeltildi (#2338).
    • Belirli medya öğeleri için CMCD günlük kaydını devre dışı bırakmak üzere CmcdConfiguration.Factory'ın null döndürmesine izin verin (#2386).
    • Varsayılan resim arabellek boyutu 128 kB'tan (metin parçalarından kopyala-yapıştır hatası) 26 MB'a yükseltildi. Bu boyut, 50 MP Ultra HDR resimler için yeterince büyüktür (#2417).
    • Uygulamaların, belirtilen başlangıç konumu ve süresiyle tek bir medyayı önceden önbelleğe almasına olanak tanıyan PreCacheHelper ekleyin.
    • DefaultPreloadManager içinde belirtilen konumdan önceden yükleme desteği ekleyin.
  • Transformer:
    • Video kodlama ayarlarının yonga setine özgü optimizasyonlarını etkinleştiren CodecDbLite ekleyin.
    • CodecDB Lite ayar optimizasyonunu etkinleştirmek için DefaultEncoderFactory dosyasına setEnableCodecDbLite işaretini ekleyin. Bu işaret varsayılan olarak false değerine ayarlanır.
    • İlk boşluğu (addGap() aracılığıyla eklenir) sessiz sesle doldurmak için artık EditedMediaItemSequence.Builder içinde experimentalSetForceAudioTrack(true) değerini açıkça ayarlamanız gerekir. Boşluk, dizinin ortasındaysa bu işaret gerekli değildir.
    • Muxer arayüzünü media3-transformer konumundan media3-muxer konumuna taşıyın.
    • Bir medya öğesini resim olarak içe aktarmak için MediaItem.Builder().setImageDuration(long) ayarını zorunlu hale getirin.
    • Kırpma işlemi sırasında MP4 düzenleme listesi içeren Transformer.Builder().experimentalSetMp4EditListTrimEnabled(boolean) ekleyerek oynatıcılara, kırpma başlangıç noktasından önceki ana kare ile kırpma başlangıç noktası arasındaki örnekleri yoksayma talimatı verin.
    • Composition Demo uygulamasını Kotlin ve Jetpack Compose kullanacak şekilde güncelleyin ve sekansları 2x2 veya PiP düzeninde düzenlemek için özel bir VideoCompositorSettings ekleyin.
  • Ayıklayıcılar:
    • Parçalı MP4 dosyalarındaki meta verileri ayrıştırma (#2084).
    • JPEG: Başlangıçta Exif segmenti olmayan hareketli fotoğraflar desteklenir (#2552).
    • Birden fazla sidx atomu içeren parçalı MP4'te arama desteği eklendi. Bu davranış, FragmentedMp4Extractor üzerinde FLAG_MERGE_FRAGMENTED_SIDX işareti kullanılarak etkinleştirilebilir (#9373).
    • FLAC dosyalarındaki boş arama tablolarını (yalnızca yer tutucu arama noktaları içerenler dahil) yoksayma ve dosyanın süresi biliniyorsa ikili arama yöntemine geri dönme (#2327).
    • Tanınmayan SEI türlerini tamamen atlamak için H.265 SEI birimlerinin ayrıştırılması düzeltildi (#2456).
    • WAVE_FORMAT_EXTENSIBLE türünde bir dosya ayrıştırılırken ses biçimi için başlık uzantısının SubFormat verilerini kullanacak şekilde WavExtractor güncellenir.
    • MP4: Ham PCM ses parçalarını tanımlayan ipcm ve fpcm kutuları için destek ekleyin (64 bit kayan noktalı PCM desteklenmez).
    • MP4: Videoyu hem döndüren hem de yansıtan tkhd dönüşüm matrislerinin döndürme kısmını işleyin. Bu sayede, iPhone ön kamerasıyla çekilen yansıtılmış videolar doğru yönde görüntülenir ancak y ekseninde yanlış yansıtılır (#2012).
    • MP3: FLAG_ENABLE_CONSTANT_BITRATE_SEEKING(_ALWAYS) nedeniyle sabit bit hızında arama yapmaya geri dönerken, arama yapılamayan Xing, VBRI ve benzeri değişken bit hızı meta verilerinden süre ve veri boyutunu kullanın (#2194).
  • Ses:
    • Ses çalma, medyanın sonuna çok yakın bir zamanda başlatıldığında AnalyticsListener.onAudioPositionAdvancing yönteminin çağrılmamasına neden olan hata düzeltildi.
    • ChannelMappingAudioProcessor ve TrimmingAudioProcessor içinde tüm doğrusal PCM örnek biçimleri için destek eklendi.
    • CompositionPlayer dilinde ses boşlukları için destek ekleyin.
    • BaseAudioProcessor#reset() tarafından BaseAudioProcessor#flush() için yapılan sahte aramayı kaldırın.
    • DefaultAudioMixer'da sabit güçle yukarı/aşağı miksaj yapılmasına izin verilir.
    • ChannelMappingAudioProcessor, TrimmingAudioProcessor ve ToFloatPcmAudioProcessor'yi herkese açık hale getirin (#2339).
    • DefaultAudioSink içinde yetersizlikleri tespit etmek için en iyi tahmin yerine AudioTrackPositionTracker içinde AudioTrack#getUnderrunCount() kullanın.
    • Ses çıkış cihazından kaynaklanan beklenmedik konum kayması için ses zaman damgası düzeltmesi iyileştirildi.
    • Bluetooth cihazlara bağlıyken duraklatıldıktan sonra devam ettirildiğinde ilk 10 saniye boyunca ses/video senkronizasyonunun bozulmasına neden olan hata düzeltildi.
    • AnalyticsListener.onAudioPositionAdvancing öğesinin sesin ilerlemeye başladığı zamanı değil, ilk ölçümün zamanını bildirmesine neden olan hata düzeltildi.
    • Bazı cihazlarda stereo sese geri döndükten sonra çok kanallı sese geri dönme sorunu düzeltildi (#2258).
  • Video:
    • Bağlantısı kesilmiş yüzey geçici çözümünü "lenovo" ve "motorola" cihazlara genişletme (#2059).
    • Ses örnekleri tam olarak istenen konumda başlamadığında, başlangıçta video karelerinin sorunsuz şekilde yayınlanmasını iyileştirir.
    • Bağlantısı kesilmiş yüzey geçici çözümü "realme" cihazları kapsayacak şekilde genişletildi (#2059).
    • Yalnızca kod çözme giriş arabellekleri sıraya alınırken MediaCodec.BUFFER_FLAG_DECODE_ONLY işaretini eklemek için deneysel ExoPlayer API'si eklendi. Bu işaret, kod çözücüye yalnızca kod çözme arabelleklerini atlamasını bildirir. Böylece daha hızlı arama yapılır. DefaultRenderersFactory.experimentalSetEnableMediaCodecBufferDecodeOnlyFlag ile etkinleştirin. * Yazılım video codec'leri için codec performans kontrollerini iyileştirme Bu durum, bazı ek parçaların EXCEEDS_CAPABILITIES olarak işaretlenmesine neden olabilir.
    • Bazı cihazlarda VP9 Widevine oynatma hataları düzeltildi (#2408).
  • Metin:
    • MP4 dosyalarındaki VobSub parçaları için destek eklendi (#2510).
    • Bir altyazı segmentinin başlangıçta yüklenememesi ve daha sonra başarıyla yüklenmesi, ardından birkaç boş altyazı segmentinin gelmesi (#2517) durumunda oynatmanın duraklaması sorunu düzeltildi.
    • Altyazılar etkinleştirildiğinde devam eden bir işaret göstermek için SSA ve SubRip düzeltildi (#2309).
    • Altyazı hatası olan bir yayından boş altyazı parçası olan bir canlı yayına geçiş yaparken oynatmanın takılması sorunu düzeltildi (#2328).
    • B kareleri içeren H.262 akışları oynatılırken CEA-608 altyazılarının bozuk olması sorunu düzeltildi (#2372).
    • Matroska dosyalarında CodecId = S_TEXT/SSA ile SSA altyazıları için destek ekleyin. MatroskaExtractor daha önce yalnızca SubStation Alpha altyazılarının "gelişmiş" (v4+) varyantını temsil eden CodecId = S_TEXT/ASS'i destekliyordu (ancak ExoPlayer'ın ayrıştırma mantığı her iki varyant için de aynıdır) (#2384).
    • Ekranda aynı anda birden fazla işaret gösterildiğinde işaretlerin z sırasını tanımlamak için kullanılan SubStation Alpha (SSA) altyazı dosyalarındaki layer özelliği için destek eklendi (#2124).
  • Meta veriler:
    • MetadataRetriever için medya süresini ve Timeline değerini alma desteği eklendi ve örnek tabanlı bir AutoCloseable API'ye taşındı. MediaItem için bir örnek oluşturmak üzere yeni Builder öğesini kullanın, ardından meta veriler için ListenableFuture almak üzere retrieveTrackGroups(), retrieveTimeline() ve retrieveDurationUs() öğelerini çağırın. Önceki statik yöntemlerin desteği sonlandırıldı (#2462).
  • Resim:
    • Çok büyük (ör. 50 MP) resimleri göstermeye çalışırken uygulamanın PlayerView'den Canvas: trying to draw too large bitmap. ile kilitlenmesini önlemek için kodu çözülmüş bit eşlemleri BitmapFactoryImageDecoder'daki ekran boyutuyla sınırlayın.
    • DefaultRenderersFactory.getImageDecoderFactory() imzasını Context parametresi alacak şekilde değiştirin.
    • CompositionPlayer içinde kullanılan maksimum bit eşlem çıkış boyutunu Transformer içinde kullanılanla uyumlu hale getirin (ExoPlayer uygulamasının aksine CompositionPlayer, bit eşlemlerin kodunu çözerken ekran boyutunu dikkate almaz).
  • DRM:
    • HTTP istek başlıklarının doğru şekilde uygulanabilmesi için MediaItem.DrmConfiguration kabul eden yeni bir OfflineLicenseHelper.newWidevineInstance aşırı yüklemesi ekleyin (#2169).
  • Etki:
    • Giriş yönünden bağımsız olarak en kısa kenarın her zaman verilen değerle eşleşmesini sağlayan bir Presentation oluşturan Presentation.createForShortSide(int) ekleyin.
  • Çoğullayıcılar:
    • Parçalı MP4'teki ses örnekleri için doğru örnek işaretlerinin ayarlanmamasına neden olan hata düzeltildi.
    • writeSampleData() API'si artık MediaCodec.BufferInfo yerine çoklayıcıya özel BufferInfo sınıfını kullanıyor.
    • Varsayılan olarak false değerine sahip Muxer.Factory#supportsWritingNegativeTimestampsInEditList ekleyin.
  • IMA uzantısı:
    • Bir reklamdaki yükleme hatasının yanlışlıkla başka bir reklam grubunu geçersiz kılmasına neden olan hata düzeltildi.
    • VOD penceresinin sonundan sonraki reklam gruplarının oynatmayı duraklatmasına neden olan hata düzeltildi. Başlangıç zamanı pencereden sonra olan reklam grupları artık MediaPeriodQueue içine sıraya alınmıyor (#2215).
  • Oturum:
    • Ayrıcalıklı olmayan üçüncü taraf Media3 denetleyicilerinden gelen bağlantıların yoksayılmasına neden olan hata düzeltildi.
    • Eski bir MediaBrowserServiceCompat cihazına özel komutlar gönderirken kullanılabilir komutlar için yapılan kontrol kaldırıldı. Bu, eski bir uygulamaya bağlandığında eski denetleyicilerin/tarayıcıların davranışıyla aynıdır.
    • Bir oyuncunun ilk oynatma hatasının yanlışlıkla kalıcı bir özel istisna olarak değerlendirilmesine neden olan hata düzeltildi. Bu durum, uygulamanın kurtarılmasını engeller.
    • Oturum tarafından işlenmeyen bazı denetleyici değişikliklerinin IllegalStateExceptions hatasına neden olduğu hata düzeltildi.
    • Oturum tarafından işlenmeyen kumanda işlemlerinin kumandayı geçersiz bir durumda bırakmasına neden olan hata düzeltildi.
    • StrictMode güvenli olmayan başlatma ihlali uyarısı düzeltildi (#2330).
    • Oynatıcıyı ana iş parçacığından farklı bir uygulama iş parçacığından çalıştırırken ana iş parçacığından setSessionExtras çağrıldığında IllegalStateException hatasına yol açan hata düzeltildi (#2265).
    • Bir oynatıcı, medya öğeleri hazırlanmadan veya oynatılmadan ayarlanmışsa otomatik olarak bildirim gösterilmez (#2423https://github.com/androidx/media/issues/2423). Bu davranış, MediaSessionService.setShowNotificationForIdlePlayer üzerinden yapılandırılabilir.
    • Tüm veya seçili denetleyiciler için özel PlaybackException ekleyin.
    • MediaController cihazda canlı yayında ileri/geri sarmanın IllegalArgumentException hatasına neden olabildiği hata düzeltildi.
    • Canlı yayınlarda, Android Auto kullanıcı arayüzünde (ve platform medya oturumundaki bu bilgileri kullanan diğer denetleyicilerde) konum kusurlarını önlemek için oynatma konumunu yayınlamayı ve platform medya denetleyicileri için mevcut öğede arama yapma özelliğini durdurun (#1758).
    • Eski bir MediaBrowserServiceCompat'ye bağlı MediaBrowser'nin getLibraryRoot öğesine null değerinin iletilmesiyle NullPointerException hatasının oluşmasına neden olan hata düzeltildi.
    • Özel işlemler, arama sonucu veya getItem isteği gönderildiğinde eski oturum uygulamasının ClassNotFoundException ile kilitlenmesine neden olan hata düzeltildi.
    • MediaItem.LocalConfiguration.uri, platform oturumunun MediaMetadata ile paylaşıldığında oluşan hata düzeltildi. Denetleyicilerin medyayı yeniden istemesine izin vermek için bir URI'yi kasıtlı olarak paylaşmak istiyorsanız bunun yerine MediaItem.RequestMetadata.mediaUri değerini ayarlayın.
  • Kullanıcı arayüzü:
    • LazyColumn gibi yeniden kullanılabilir bileşenlerin içindeki PlayerSurface öğesinin doğru çalışmamasıyla ilgili hata düzeltildi (#2493).
    • İlk düğme durumlarının ayarlanması ile durumdaki değişikliğin (ör. simge şekilleri veya etkinleştirilme) gözlemlenmesi arasında boşluk oluşmasına neden olan bir Compose hatası düzeltildi. Gözlem dönemi dışında Player'da yapılan değişiklikler artık algılanıyor (#2313).
    • SeekBackButtonState ve SeekForwardButtonState için media3-ui-compose modülüne durum bilgisi depolayıcılar ve composable'lar ekleyin.
    • PlayerControlView için ExoPlayer'ın sarma modu desteğini ekleyin. Bu özellik etkinleştirildiğinde, kullanıcı kaydırma çubuğunu sürüklemeye başladığında oynatıcı kaydırma moduna geçer, her hareket için bir player.seekTo çağrısı yapar ve ardından dokunma ekrandan kaldırıldığında kaydırma modundan çıkar. Bu entegrasyon, XML'de time_bar_scrubbing_enabled = true veya Java/Kotlin'de setTimeBarScrubbingEnabled(boolean) yöntemiyle etkinleştirilebilir.
    • PlayerSurface işlevinin boş değer atanabilir bir Player bağımsız değişkeni kabul etmesini sağlayın.
  • İndirilenler:
    • Aşamalı akışlar için kısmi indirme desteği ekler. Uygulamalar, DownloadHelper ile aşamalı bir akış hazırlayabilir ve indirmenin kapsaması gereken zamana dayalı medya başlangıç ve bitiş konumlarını belirterek yardımcıdan bir DownloadRequest isteyebilir. Döndürülen DownloadRequest, çözümlenen bayt aralığını taşır. Bu aralıkla bir ProgressiveDownloader oluşturulabilir ve içerik buna göre indirilebilir.
    • Statik DownloadHelper.forMediaItem() yöntemlerinin değiştirileceği DownloadHelper.Factory ekleyin.
    • SegmentDownloader uygulamaları için Factory ekleyin.
    • Uyarlanabilir akışlar için kısmi indirme desteği ekleyin. Uygulamalar, DownloadHelper ile uyarlanabilir bir akış hazırlayabilir ve indirmenin kapsaması gereken zamana dayalı medya başlangıç ve bitiş konumlarını belirterek yardımcıdan bir DownloadRequest isteyebilir. Döndürülen DownloadRequest, çözümlenen zaman aralığını taşır. Bu aralıkla somut bir SegmentDownloader oluşturulabilir ve içerik buna göre indirilebilir.
  • Cronet uzantısı:
    • Otomatik çerez işleme özelliği eklendi (#5975).
  • HLS uzantısı:
    • Arabellekte kullanılabilir parça yokken HlsSampleStreamWrapper öğesinin arabellekte arama yapmaya çalışmasıyla ilgili hata düzeltildi #2598.
    • Düşük gecikmeli parçalar yüklendikten sonra parça seçiminin değişmesi ve önceden yükleme ipuçlarının oynatmanın takılmasına veya donmasına neden olmasıyla ilgili hata düzeltildi (#2299).
    • CAN-BLOCK-RELOAD=YES sunucu tarafından dikkate alınmadığında hedef sürenin yarısı kadar bekleyerek aşırı yeniden yüklemeyi önleyin (#2317).
    • Ara reklamdan önce geçiş reklamı akışı başlatılırken oynatmanın duraklatılmasına ve yanlış reklam için öğe listesi çözünürlüğünün denenmesine neden olan hata düzeltildi (#2558).
    • Tırnak içine alınmış dize özellik değerlerinde \f (form feed) kabul etmek için oynatma listesi ayrıştırma düzeltildi (#2420).
    • Aynı kimliğe sahip geçiş reklamlarının güncellenmesi desteklenir (#2427).
    • Canlı yayında yüklenecek segment kalmadığında oynatma listesi yükleme hatalarının bazen yayılmamasına neden olan hata düzeltildi (#2401https://github.com/androidx/media/issues/2401).
    • Altyazı yorumlarını, ses yorumlarının gruplandırılmasına benzer şekilde NAME etiketine göre gruplandırma (#1666).
    • HlsInterstitialsAdsLoader ile X-ASSET-LIST ve canlı yayınları destekleyin.
  • DASH uzantısı:
    • İleri sarma/geri sarma uyarlama grubunun, geçersiz bir TrackGroup oluşturmak için ana uyarlama grubuyla birleştirilmesi sorunu düzeltildi (#2148).
    • Yeni sürenin ötesindeki örnekler oluşturma ardışık düzeni tarafından zaten okunduğunda DASH dönem süresinin kısaltılmasının istisnaya neden olabileceği hata düzeltildi (#2440).
    • CMCD sorgu parametreleri kullanılırken yönlendirmenin takip edilmemesine neden olan hata düzeltildi (#2475).
  • RTSP uzantısı:
    • RFC 7798#4.4.2 (#2413) uyarınca H265 için RTP toplama paketi desteği eklendi.
    • HTTP 302 yanıtı işlenirken konum URI'sinin sağlandığı şekilde kullanılması için RtspClient düzeltildi (#2398).
    • Sondaki boşluk karakterlerini içeren satırlara sahip SessionDescriptions için ayrıştırma desteği eklendi (#2357).
  • Kod çözücü uzantıları (FFmpeg, VP9, AV1 vb.):
    • DefaultTrackSelector.setAllowInvalidateSelectionsOnRendererCapabilitiesChange öğesinin ses kod çözücü uzantıları üzerinde hiçbir etkisi olmaması hatası düzeltildi (#2258).
  • Yayınlama uzantısı:
    • setVolume() ve getVolume() için destek eklendi (#2279).
    • Zaman çizelgesi boşken CastPlayer'ın STATE_BUFFERING durumuna girmesini önleyin.
    • getDeviceVolume(), setDeviceVolume(), getDeviceMuted() ve setDeviceMuted() için destek eklendi (#2089).
  • Test Yardımcı Programları:
    • Oynatıcıyı belirtilen konuma ulaşana kadar ilerletmek için TestPlayerRunHelper öğesine advance(player).untilPositionAtLeast ve untilMediaItemIndex ekleyin. Çoğu durumda bu yöntemler, mevcut untilPosition ve untilStartOfMediaItem yöntemlerinden daha güvenilirdir.
    • Diğer testlerde yeniden kullanmak için FakeDownloader öğesini test-utils-robolectric modülüne taşıyın.
    • transformer.TestUtil.addAudioDecoders(String...), transformer.TestUtil.addAudioEncoders(String...) ve transformer.TestUtil.addAudioEncoders(ShadowMediaCodec.CodecConfig, String...) kaldırıldı. Bunun yerine gölge kodlayıcıları ve kod çözücüleri yapılandırmak için ShadowMediaCodecConfig kullanın.
    • ShadowMediaCodecConfig tarafından bildirilen codec adlarındaki "exotest" ön eki "media3" ile değiştirildi.
  • Desteği sonlandırılan simgeleri kaldırın:
    • Desteği sonlandırılan SegmentDownloader oluşturucu SegmentDownloader(MediaItem, Parser<M>, CacheDataSource.Factory, Executor) ve alt sınıflarındaki ilgili oluşturucular DashDownloader, HlsDownloader ve SsDownloader kaldırıldı.
    • Kullanımdan kaldırılan Player.hasNext(), Player.hasNextWindow() kaldırıldı. Bunun yerine Player.hasNextMediaItem() kullanın.
    • Kullanımdan kaldırılan Player.next() kaldırıldı. Bunun yerine Player.seekToNextMediaItem() kullanın.
    • Kullanımdan kaldırılan Player.seekToPreviousWindow() kaldırıldı. Bunun yerine Player.seekToPreviousMediaItem() kullanın.
    • Kullanımdan kaldırılan Player.seekToNextWindow() kaldırıldı. Bunun yerine Player.seekToNextMediaItem() kullanın.
    • exoplayer modülünde desteği sonlandırılan BaseAudioProcessor kaldırıldı. common modülünün altındaki BaseAudioProcessor öğesini kullanın.
    • Desteği sonlandırılan MediaCodecVideoRenderer oluşturucusunu kaldırın MediaCodecVideoRenderer(Context, MediaCodecAdapter.Factor, MediaCodecSelector, long, boolean, @Nullable Handler, @Nullable VideoRendererEventListener, int, float, @Nullable VideoSinkProvider).

Sürüm 1.8.0-rc02

24 Temmuz 2025

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

Sürüm 1.8.0-rc01

16 Temmuz 2025

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

Sürüm 1.8.0-beta01

2 Temmuz 2025

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

Sürüm 1.8.0-alpha01

19 Mayıs 2025

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

Sürüm 1.7.0

Sürüm 1.7.1

16 Mayıs 2025

Bu sürüm, 1.6.1 ile aynı koda sahiptir ve yanlışlıkla kararlı olarak etiketlenen bir alfa sürümü olan 1.7.0'dan "daha yeni" bir sürüm olarak görünmesini sağlamak için yayınlanmaktadır (aşağıya bakın).

Sürüm 1.7.0

16 Mayıs 2025

Bu sürüm 1.7.0-alpha01 olmalıydı ancak maven.google.com'da yanlışlıkla 1.7.0 (yani kararlı) olarak etiketlendi. Lütfen bu sürümü kullanmayın. 1.6.1 sürümünde kalabilir veya 1.7.1 sürümüne (1.6.1 ile aynı koda sahiptir) yükseltebilirsiniz.

Sürüm 1.6.0

1.6.1

14 Nisan 2025

androidx.media3:media3-*:1.6.1 yayınlandı. 1.6.1 sürümü bu commit'leri içerir.

  • Ortak Kitaplık:
    • Yeni bir pitch değeriyle PlaybackParameters öğesini kolayca kopyalamak için PlaybackParameters.withPitch(float) yöntemi eklendi (#2257).
  • ExoPlayer:
    • Bir sonraki medya öğesinin başlatılması sırasında kurtarılabilir oluşturucu hatası nedeniyle medya öğesi geçişinin başarısız olmasına yol açan sorun düzeltildi (#2229).
    • PreloadMediaSource, getBufferedDurationUs() öğesini hazırlanmadan önce çağırmaya çalıştığı için ProgressiveMediaPeriod öğesinin IllegalStateException hatası vermesine neden olan sorun düzeltildi (#2315).
    • DASH, HLS ve SmoothStreaming için manifest isteklerinde CmcdData gönderme sorunu düzeltildi (#2253).
    • Reklam grupları kaldırıldıktan sonra AdPlaybackState.withAdDurationsUs(long[][]) kullanılabilir. Kullanıcının, kaldırılan reklam grupları için boş veya null olabilecek bir süre dizisi iletmesi gerekir (#2267).
  • Ayıklayıcılar:
    • MP4: tkhd kutusundan alternate_group değerini ayrıştırın ve her parçanın Format.metadata öğesinde Mp4AlternateGroupData girişi olarak gösterin (#2242).
  • Ses:
    • Kısa içeriklerden oluşan bir oynatma listesi oynatılırken konumun takılı kalmasına neden olan boşaltma sorunu düzeltildi (#1920).
  • Oturum:
    • Platform MediaSession geri çağırmaları için toplama zaman aşımı süresini 500 milisaniyeden 100 milisaniyeye düşürün ve uygulamaların bu değeri yapılandırmasına olanak tanıyan deneysel bir ayarlayıcı ekleyin.
    • Kullanıcı tarafından kapatılan bildirimlerin yeniden görünmesine neden olan sorun düzeltildi (#2302).
    • Sarmalanmış oynatıcı aslında boşken oturumun tek öğeli bir zaman çizelgesi döndürmesine neden olan hata düzeltildi. Bu sorun, sarmalanmış oynatıcıda COMMAND_GET_TIMELINE yokken COMMAND_GET_CURRENT_MEDIA_ITEM mevcut olduğunda ve sarmalanmış oynatıcı boş olduğunda (#2320) ortaya çıkıyordu.
    • Hizmetle yapılan diğer etkileşimlerden (ör. setForegroundServiceTimeoutMs) sonra MediaSessionService.setMediaNotificationProvider çağrısının sessizce yoksayılmasına neden olan bir hata düzeltildi (#2305).
  • Kullanıcı arayüzü:
    • PlayerSurface, ExoPlayer.setVideoEffects ve CompositionPlayer ile çalışacak şekilde etkinleştirin.
    • PlayerSurface öğesinin yeni bir Player ile yeniden oluşturulamamasına neden olan hata düzeltildi.
  • HLS uzantısı:
    • HLS medyası için CmcdData'te parça süresinin ayarlanmaması nedeniyle şifrelenmiş medya segmentleri işlenirken onay hatasına yol açan sorun düzeltildi (#2312).
  • RTSP uzantısı:
    • RTSP oturumunu TCP kullanacak şekilde yapılandırmak için RTSPT şemasıyla URI desteği eklendi (#1484).
  • Yayınlama uzantısı:
    • Oynatma listesi meta verileri için destek eklendi (#2235).

1.6.0

26 Mart 2025

androidx.media3:media3-*:1.6.0 yayınlandı. 1.6.0 sürümü bu kayıtları içerir.

  • Ortak Kitaplık:
    • androidx.media içindeki eşdeğer sınıfları değiştirmek için AudioManagerCompat ve AudioFocusRequestCompat ekleyin.
    • Kotlin'i 1.9.20'den 2.0.20'ye yükseltin ve Compose Compiler Gradle eklentisini kullanın. KotlinX Coroutines kitaplığı 1.8.1'den 1.9.0'a yükseltildi.
    • Format.toBundle(boolean excludeMetadata) yöntemini kaldırın, bunun yerine Format.toBundle() yöntemini kullanın.
    • SimpleBasePlayer içinde, null MediaMetadata ile setPlaylist sonrasında State içinde yeni bir currentMediaItemIndex ayarlandığında meta verilerin yeniden değerlendirilmemesine neden olan hata düzeltildi (#1940).
    • Diğer sınıflardaki güncellemeleri daha kolay yönetmek için SimpleBasePlayer.State erişimini korumalıdan herkese açık olarak değiştirin (#2128).
  • ExoPlayer:
    • Platform MediaExtractor ile eşdeğer özellikler sunan yeni bir sınıf olan MediaExtractorCompat eklendi.
    • MediaCodecVideoRenderer kullanarak oynatma için deneysel "ExoPlayer" önceden ısıtma desteği ekleyin. ExoPlayer için ikincil bir MediaCodecVideoRenderer sağlamak üzere experimentalSetEnableMediaCodecVideoRendererPrewarming üzerinden DefaultRenderersFactory yapılandırabilirsiniz. Etkinleştirilirse ExoPlayer, medya öğesi geçiş gecikmesini azaltmak için oynatma sırasında ardışık medya öğelerinin videosunu önceden işler.
    • DefaultLoadControl içinde bufferForPlaybackMs ve bufferForPlaybackAfterRebufferMs için varsayılan değerleri sırasıyla 1.000 ve 2.000 ms'ye düşürün.
    • DeviceInfo ve cihaz ses seviyesini eşzamansız olarak ilk kullanıma hazırlayın (setDeviceVolumeControlEnabled kullanılarak etkinleştirildiyse). Bu değerler ExoPlayer.Builder.build() işleminden hemen sonra kullanılamaz ve Player.Listener, değişiklikleri onDeviceInfoChanged ve onDeviceVolumeChanged aracılığıyla bildirir.
    • İlk ses oturumu kimliği, oynatıcı oluşturulduktan hemen sonra kullanılamaz. Gerekirse ilk güncellemeyi dinlemek için AnalyticsListener.onAudioSessionIdChanged düğmesini kullanabilirsiniz.
    • Video parçasını seçerken dili göz önünde bulundurun. Varsayılan olarak, seçilen ses parçasının diliyle eşleşen bir "ana" video parçası seçin (varsa). Açık video dili tercihleri TrackSelectionParameters.Builder.setPreferredVideoLanguage(s) ile ifade edilebilir.
    • DefaultTrackSelector.selectVideoTrack() yöntemine selectedAudioLanguage parametresi eklendi.
    • MediaSourceEventListener.onLoadStarted ve ilgili MediaSourceEventListener.EventDispatcher yöntemlerine retryCount parametresi eklendi.
    • Oynatma listesi öğelerinin veya çok dönemli DASH akışlarındaki dönemlerin sürelerinin gerçek içerikle eşleşmemesi nedeniyle öğenin sonunda karelerin donmasına neden olabilen hata düzeltildi (#1698).
    • BasePreloadManager.Listener öğesini üst düzeye taşıyın PreloadManagerListener.
    • Önceden ısıtma için ikincil oluşturucular sağlamak üzere RenderersFactory.createSecondaryRenderer uygulanabilir. Ön ısıtma, oynatma sırasında medya öğesi geçişlerinin daha hızlı yapılmasını sağlar.
    • DASH, HLS ve SmoothStreaming uyarlanabilir akış biçimlerindeki manifest istekleri için CmcdData göndermeyi etkinleştirin (#1951).
    • MediaCodecRenderer.onReadyToInitializeCodec içinde başlatılacak codec'in MediaCodecInfo değerini sağlayın (#1963).
    • Reklam grupları ekleyerek AdPlaybackStates kampanyasının büyümesine izin vermek için AdsMediaSource ayarını değiştirin. Geçersiz değişiklikler algılanır ve bir istisna oluşturulur.
    • Ara reklamdan sonra içerik medyasına geçiş yaparken yalnızca kod çözme işlemi uygulanan ek karelerin hızlı bir şekilde art arda gösterilmesiyle ilgili sorun düzeltildi.
    • Uygulamaların varsayılan olarak iki farklı meta veri şeması almasını sağlamak için DefaultRenderersFactory'ın iki MetadataRenderer örneği eklemesini sağlayın.
    • Oynatma duraklatıldığında devam eden bir parçanın yüklenmesinin iptal edilip edilmeyeceğini yeniden değerlendirme (#1785).
    • ClippingMediaSource için, ileri/geri sarılamayan medyalarda kırpmaya izin verme seçeneği ekleyin.
    • Ön ısıtma ile arama yapıldığında sonraki medya öğesi geçişinin engellenmesine neden olan hata düzeltildi.
    • ExoPlayer.isLoading(), STATE_IDLE veya STATE_ENDED durumuna geçiş yapmasına rağmen true olarak kalmasına neden olan hata düzeltildi (#2133).
    • LoadControl.Parameter için lastRebufferRealtimeMs ekleyin (#2113).
  • Transformer:
    • Geriye dönük uyumlu alternatif biçimlere dönüştürme desteği ekleyin.
    • Dolby Vision (profil 8) biçiminin kod dönüştürme ve çoklama desteği eklendi.
    • Format kullanmak için VideoFrameProcessor.registerInputStream ve VideoFrameProcessor.Listener.onInputStreamRegistered parametrelerini güncelleyin.
    • DefaultEncoderFactory kullanırken HDR statik meta verileri oluşturun.
    • MediaMetricsManager kullanarak Android platformu teşhisleri için desteği etkinleştirin. Transformer, düzenleme etkinliklerini ve performans verilerini platforma iletir. Bu sayede, cihazda sistem performansı ve hata ayıklama bilgileri sağlanır. Bu veriler, cihaz kullanıcısı tarafından kullanım ve teşhis bilgileri paylaşımı etkinleştirilmişse Google tarafından da toplanabilir. Uygulamalar, Transformer.Builder.setUsePlatformDiagnostics(false) ile Transformer için platform teşhisine katkıda bulunmaktan kapsamı dışında kalmayı seçebilir.
    • InAppMuxer, InAppMp4Muxer ve InAppFragmentedMp4Muxer olarak bölündü. Parçalanmamış bir MP4 dosyası oluşturmak için InAppMp4Muxer, parçalanmış bir MP4 dosyası oluşturmak için ise InAppFragmentedMp4Muxer kullanılır.
    • Muxer arayüzünü media3-muxer konumundan media3-transformer konumuna taşıyın.
    • Ekran kaydı için MediaProjection üzerinden medya sağlayan MediaProjectionAssetLoader öğesini ekleyin ve Transformer demo uygulamasına ekran kaydı desteği ekleyin.
    • Codec arayüzüne #getInputFormat() ekleyin.
    • Mümkün olduğunda GlObjectsProvider öğesini serbest bırakma sorumluluğunu DefaultVideoFrameProcessor ve DefaultVideoCompositor içindeki çağırana devredin.
  • Ayıklayıcılar:
    • AVI: Akış başlığının, parça sayısı yerine bayt sayısını depoladığı, sabit bit hızında sıkıştırılmış ses içeren dosyaların işlenmesi düzeltildi.
    • Uzunlukları 4 yerine 1 veya 2 bayt olarak ifade edilen NAL birimlerinin işlenmesi düzeltildi.
    • Düzenleme listesi, önceki senkronizasyon karesi olmadan senkronizasyon dışı bir karede başladığında MP4 düzenleme listelerindeki ArrayIndexOutOfBoundsException düzeltildi (#2062).
    • TS akışlarının bazı cihazlarda takılmasına neden olan sorun düzeltildi (#2069).
    • FLAC: 32 bit FLAC dosyaları için destek eklendi. Daha önce bu tür içerikler IllegalStateException: Playback stuck buffering and not loading ile oynatılamıyordu (#2197).
  • Ses:
    • Oynatma devam ettirildiğinde çağrılacak onAudioPositionAdvancing düzeltildi (daha önce oynatma duraklatıldığında çağrılıyordu).
    • SpeedChangingAudioProcessor varsayılan parametrelerle yapılandırıldığında SonicAudioProcessor atlanmaz.
    • Sonic#getOutputSize() içinde DefaultAudioSink öğesinin durmasına neden olabilecek yetersizlik sorununu düzeltin.
    • MediaCodecAudioRenderer.getDurationToProgressUs() ve DecoderAudioRenderer.getDurationToProgressUs() öğelerini düzelterek arama işlemlerinin, sağlanan süreleri doğru şekilde sıfırlamasını sağlayın.
    • androidx.media3.common.audio.SonicAudioProcessor nihai hale getirilsin.
    • ChannelMappingAudioProcessor ve TrimmingAudioProcessor için kayan noktalı PCM desteği eklendi.
  • Video:
    • Uygulamaların yer tutucu yüzeylerin kullanımını engellemek için geçersiz kılabilmesi amacıyla MediaCodecVideoRenderer.shouldUsePlaceholderSurface değerini korumalı olarak değiştirin (#1905).
    • Arama işlemini hızlandırmak için deneysel ExoPlayer AV1 örnek bağımlılık ayrıştırması ekleyin. Yeni DefaultRenderersFactory.experimentalSetParseAv1SampleDependencies API ile etkinleştirin.
    • Bağımlı olmayan geç MediaCodecVideoRenderer kod çözücü giriş arabelleklerini bırakmak için deneysel ExoPlayer API'yi ekleyin. DefaultRenderersFactory.experimentalSetLateThresholdToDropDecoderInputUs ile etkinleştirin. * Yüzeyi olmayan bir oynatıcının hemen hazır olması ve bekleyen karelerin kodunu çok yavaş çözmesi sorunu düzeltildi (#1973).
    • Ekran titremesini önlemek için Xiaomi ve OPPO cihazları ayrılmış yüzey modundan hariç tutun (#2059).
  • Metin:
    • VobSub altyazıları için destek eklendi (#8260).
    • MediaItem.Builder.setSubtitleConfigurations ile yapılandırılan tüm altyazı dosyalarının istekli yüklenmesi durduruldu ve bunun yerine, parça seçimi tarafından seçilirse yalnızca bir altyazı dosyası yüklenecek şekilde değiştirildi (#1721).
    • TTML: style kullanarak tts:origin ve tts:extent referansları için destek eklendi (#2953).
    • WebVTT ve SubRip zaman damgalarını tam olarak 3 ondalık basamakla kısıtlayın. Daha önce, ondalık basamak sayısını yanlış ayrıştırıyor ancak değerin her zaman milisaniye cinsinden olduğunu varsayıyorduk. Bu da yanlış zaman damgalarına (#1997) yol açıyordu.
    • Oynatma listesinde CEA-608 veya CEA-708 altyazılı kırpılmış öğeler olduğunda oynatmanın takılması sorunu düzeltildi.
    • SSA dosyasında sıfır süreli (başlangıç ve bitiş zamanı eşit) bir işaret olduğunda IllegalStateException düzeltildi (#2052).
    • Altyazılar ses ve video ile aynı kapsayıcıda birleştirildiğinde altyazı ayrıştırma hatalarını gizleme (ve günlüğe kaydetme) (#2052).
    • CR satır sonları kullanan WebVTT dosyalarındaki çok baytlı UTF-8 karakterlerinin işlenmesiyle ilgili sorun düzeltildi (#2167).
  • DRM:
    • API < 27 cihazlarda ClearKey içeriği oynatılırken oluşan MediaCodec$CryptoException: Operation not supported in this configuration hatası düzeltildi (#1732).
  • Etki:
    • OverlaySettings işlevi StaticOverlaySettings içine taşındı. Dinamik yer paylaşımı ayarlarına izin vermek için OverlaySettings alt sınıfı oluşturulabilir.
  • Çoğullayıcılar:
    • Çok uzun bir tam nitelikli ad kullanmamak için MuxerException, Muxer arayüzünden taşındı.
    • Hem Mp4Muxer.Builder hem de FragmentedMp4Muxer.Builder'da setSampleCopyEnabled() yöntemi setSampleCopyingEnabled() olarak yeniden adlandırıldı.
    • Mp4Muxer.addTrack() ve FragmentedMp4Muxer.addTrack() artık TrackToken yerine int parça kimliği döndürüyor.
    • Mp4Muxer ve FragmentedMp4Muxer artık Muxer arayüzünü uygulamıyor.
    • Mp4Muxer örnek toplu işlemini ve kopyalamayı varsayılan olarak devre dışı bırakın.
    • FragmentedMp4Muxer'da yalnızca ses parçası yazıldığında çok sayıda parça oluşturan bir hata düzeltildi.
  • Oturum:
    • Oynatma duraklatıldığında, durdurulduğunda veya başarısız olduğunda ön plan hizmeti durumunu 10 dakika daha koruyun. Bu sayede kullanıcılar, çeşitli cihazlarda ön plan hizmet kısıtlamaları riski olmadan bu zaman aşımı süresi içinde oynatmaya devam edebilir. onTaskRemoved geçersiz kılınırken ön plan hizmetini stopSelf() öncesinde durdurmak için artık yalnızca player.pause() çağrısının kullanılamayacağını unutmayın. Bunun yerine MediaSessionService.pauseAllPlayersAndStopSelf() kullanın.
    • Oynatma hata veya durduruldu durumuna girdiğinde bildirimi görünür tutun. Bildirim yalnızca oynatma listesi temizlendiğinde veya oynatıcı serbest bırakıldığında kaldırılır.
    • Android platformu MediaSession işlemleri ACTION_PLAY ve ACTION_PAUSE'un işlenmesi, mevcut komutlara göre yalnızca birini ayarlayacak ve yalnızca biri ayarlandığında kabul edecek şekilde iyileştirildi.
    • Context, MediaButtonReceiver.shouldStartForegroundService için parametre olarak eklendi (#1887).
    • Eski bir oturuma bağlı MediaController üzerinde Player yöntemini çağırmanın, bekleyen bir güncellemedeki değişiklikleri iptal etmesine neden olan hata düzeltildi.
    • MediaSession.setSessionActivity(PendingIntent)'ın null değerini kabul etmesini sağlayın (#2109).
    • Oynatma listesi temizlendiğinde eski bir bildirimin görünür kalmasına neden olan hata düzeltildi (#2211).
  • Kullanıcı arayüzü:
    • PlayerSurface, PresentationState, PlayPauseButtonState, NextButtonState, PreviousButtonState, RepeatButtonState, ShuffleButtonState ve PlaybackSpeedState için media3-ui-compose modülüne durum bilgisi depolayıcılar ve composable'lar ekleyin.
  • İndirilenler:
    • Veri kaynağının IOException dışında bir Exception oluşturması durumunda veri kaynaklarını açık ve önbellek alanlarını kilitli bırakan CacheWriter içindeki hata düzeltildi (#9760).
  • HLS uzantısı:
    • HlsInterstitialsAdsLoader için ilk sürümü ekleyin. Reklam yükleyici, bir HLS medya oynatma listesinin HLS geçiş reklamlarını okur ve bunları AdsMediaSource öğesine iletilen AdPlaybackState ile eşler. Bu ilk sürüm, yalnızca X-ASSET-URI özelliklerine sahip HLS VOD akışlarını destekler.
    • HlsInterstitialsAdsLoader.AdsMediaSourceFactory ekleyin. Uygulamalar, HlsInterstitialsAdsLoader kullanan AdsMediaSource örneklerini kolay ve güvenli bir şekilde oluşturmak için bu API'yi kullanabilir.
    • Dolby Vision biçimlerini algılamak için HLS oynatma listesindeki SUPPLEMENTAL-CODECS etiketini ayrıştırma (#1785).
    • HLS yayınında senkronizasyon konumlarını arama koşulu gevşetildi (#2209).
  • DASH uzantısı:
    • DASH için AC-4 Level-4 biçim desteği eklendi (#1898).
    • Çok dönemli canlı yayınlarda reklam ekleme için güncelleme aralığı hesaplanırken oluşan sorun düzeltildi (#1698).
    • Dolby Vision biçimlerini algılamak için DASH manifestinden scte214:supplementalCodecs özelliğini ayrıştırın (#1785).
    • Dönemin, belirtilen dönem süresinin ötesinde medya örnekleri içerdiği canlı yayınlarda dönem geçişlerinin işlenmesi iyileştirildi (#1698).
    • adaptation-set-switching ile işaretlenmiş ancak farklı diller veya rol işaretleri içeren adaptasyon setlerinin birleştirilmesiyle ilgili sorun düzeltildi (#2222).
  • Kod çözücü uzantıları (FFmpeg, VP9, AV1 vb.):
    • MPEG-H sesin kodunu çözmek için yerleşik MPEG-H kod çözücüyü kullanan MPEG-H kod çözücü modülü eklendi (#1826).
  • MIDI uzantısı:
    • Özel AudioSink ve AudioRendererEventListener örneklerini MidiRenderer içine yerleştirin.
  • Yayınlama uzantısı:
    • Google Play Hizmetleri'nin yüklü ancak devre dışı olduğu cihazlarda API 34 ve sonraki sürümleri hedefleyen uygulamalarda FLAG_MUTABLE kilitlenmesini düzeltmek için play-services-cast-framework bağımlılığını 21.5.0'a yükseltin (#2178).
  • Demo uygulama:
    • Ek düğmelerle demo-compose deneyimini genişletin ve ölçeklendirme ile deklanşör desteğiyle PlayerSurface entegrasyonunu iyileştirin.
  • Desteği sonlandırılan simgeleri kaldırın:
    • Desteği sonlandırılan AudioMixer.create() yöntemini kaldırın. Bunun yerine DefaultAudioMixer.Factory().create() kullanın.
    • Desteği sonlandırılan aşağıdaki Transformer.Builder yöntemleri kaldırıldı:
      • setTransformationRequest(). Bunun yerine setAudioMimeType(), setVideoMimeType() ve setHdrMode() politikalarını kullanın.
      • setAudioProcessors(), ses işlemcisini EditedMediaItem.Builder.setEffects() içinde ayarlayın ve bunun yerine Transformer.start() öğesine iletin.
      • setVideoEffects(), video efektini EditedMediaItem.Builder.setEffects() içinde ayarlayın ve bunun yerine Transformer.start() öğesine iletin.
      • setRemoveAudio(), bunun yerine Transformer.start() öğesine iletilen EditedMediaItem öğesinden sesi kaldırmak için EditedMediaItem.Builder.setRemoveAudio() kullanın.
      • setRemoveVideo(), videoyu Transformer.start() yöntemine iletilen EditedMediaItem listesinden kaldırmak için EditedMediaItem.Builder.setRemoveVideo() yöntemini kullanın.
      • setFlattenForSlowMotion(), Transformer.start() öğesine iletilen EditedMediaItem öğesini düzleştirmek için EditedMediaItem.Builder.setFlattenForSlowMotion() kullanın.
      • setListener(). Bunun yerine addListener(), removeListener() veya removeAllListeners() kullanın.
    • Desteği sonlandırılan aşağıdaki Transformer.Listener yöntemleri kaldırıldı:
      • onTransformationCompleted(MediaItem), bunun yerine onCompleted(Composition, ExportResult) kullanın.
      • onTransformationCompleted(MediaItem, TransformationResult), bunun yerine onCompleted(Composition, ExportResult) kullanın.
      • onTransformationError(MediaItem, Exception), bunun yerine onError(Composition, ExportResult, ExportException) kullanın.
      • onTransformationError(MediaItem, TransformationException), bunun yerine onError(Composition, ExportResult, ExportException) kullanın.
      • onTransformationError(MediaItem, TransformationResult, TransformationException), bunun yerine onError(Composition, ExportResult, ExportException) kullanın.
      • onFallbackApplied(MediaItem, TransformationRequest, TransformationRequest), bunun yerine onFallbackApplied(Composition, TransformationRequest, TransformationRequest) kullanın.
    • Desteği sonlandırılan TransformationResult sınıfını kaldırın. Bunun yerine ExportResult kullanın.
    • Desteği sonlandırılan TransformationException sınıfını kaldırın. Bunun yerine ExportException kullanın.
    • Desteği sonlandırılan Transformer.PROGRESS_STATE_NO_TRANSFORMATION öğesini kaldırın. Bunun yerine Transformer.PROGRESS_STATE_NOT_STARTED kullanın.
    • Desteği sonlandırılan Transformer.setListener() öğesini kaldırın. Bunun yerine Transformer.addListener(), Transformer.removeListener() veya Transformer.removeAllListeners() kullanın.
    • Desteği sonlandırılan Transformer.startTransformation() öğesini kaldırın. Bunun yerine Transformer.start(MediaItem, String) kullanın.
    • Desteği sonlandırılan SingleFrameGlShaderProgram öğesini kaldırın. Bunun yerine BaseGlShaderProgram kullanın.
    • Transformer.flattenForSlowMotion öğesini kaldır Bunun yerine EditedMediaItem.flattenForSlowMotion kullanın.
    • ExoPlayer.VideoComponent, ExoPlayer.AudioComponent, ExoPlayer.TextComponent ve ExoPlayer.DeviceComponent kaldırıldı.
    • androidx.media3.exoplayer.audio.SonicAudioProcessor kaldırıldı.
    • Desteği sonlandırılan aşağıdaki DownloadHelper yöntemleri kaldırıldı:
      • DownloadHelper(MediaItem, @Nullable MediaSource, TrackSelectionParameters, RendererCapabilities[]) oluşturucusu yerine DownloadHelper(MediaItem, @Nullable MediaSource, TrackSelectionParameters, RendererCapabilitiesList) kullanın.
      • getRendererCapabilities(RenderersFactory), eşdeğer işlevsellik RenderersFactory ile bir DefaultRendererCapabilitiesList oluşturarak ve DefaultRendererCapabilitiesList.getRendererCapabilities() çağrılarak elde edilebilir.
      • PlayerNotificationManager.setMediaSessionToken(MediaSessionCompat) yöntemi kaldırıldı. Bunun yerine PlayerNotificationManager.setMediaSessionToken(MediaSession.Token) kullanın ve (MediaSession.Token) compatToken.getToken() değerini iletin.

1.6.0-rc02

19 Mart 2025

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

1.6.0-rc01

12 Mart 2025

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

1.6.0-beta01

26 Şubat 2025

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

Sürüm 1.6.0-alpha03

6 Şubat 2025

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

Sürüm 1.6.0-alpha02

30 Ocak 2025

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

Sürüm 1.6.0-alpha01

20 Aralık 2024

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

Sürüm 1.5

Sürüm 1.5.1

19 Aralık 2024

androidx.media3:media3-*:1.5.1 yayınlandı. 1.5.1 sürümü bu commit'leri içerir.

  • ExoPlayer:
    • Bu platform API'siyle ilgili bildirilen codec zaman aşımı sorunlarını önlemek için MediaCodec'te eşzamansız şifre çözme kullanımını devre dışı bırakın (#1641).
  • Ayıklayıcılar:
    • MP3: Bir VBRI karesinin içindekiler tablosu, dosyadaki tüm MP3 verilerini kapsamadığında oynatma erken durdurulmaz (#1904).
  • Video:
    • onOutputFormatChanged işlenirken sağlanan MediaCodecAdapter piksel en boy oranı değerlerinin kullanılması geri alındı (#1371).
  • Metin:
    • ReplacingCuesResolver.discardCuesBeforeTimeUs içinde, timeUs anında etkin olan (daha önce başlamış ancak henüz bitmemiş) işaretin yanlışlıkla silinmesine (#1939) neden olan hata düzeltildi.
  • Meta veriler:
    • Vorbis yorumlarındaki disk/parça numaralandırmasını ve türü MediaMetadata içine çıkarın (#1958).

Sürüm 1.5.0

27 Kasım 2024

androidx.media3:media3-*:1.5.0 yayınlandı. 1.5.0 sürümü bu commit'leri içerir.

  • Ortak Kitaplık:
    • Tam tutarlılık ve dinleyici yönetimi sağlarken küçük ayarlamalarla başka bir oynatıcıya yönlendirmeye olanak tanıyan ForwardingSimpleBasePlayer ekleyin (#1183).
    • SimpleBasePlayer.State.playlist yerine getPlaylist() yöntemini kullanın.
    • Oynatma listesi yapısı oluşturmak yerine doğrudan bir Timeline ve mevcut Tracks ile Metadata belirtmek için SimpleBasePlayer.State.Builder.setPlaylist() için geçersiz kılma ekleyin.
    • minSdk değerini 21'e (Android Lollipop) yükseltin. Bu, diğer tüm AndroidX kitaplıklarıyla uyumludur.
    • Ortak kitaplık üzerine inşa edilmiş Kotlin'e özgü işlevler sağlayan androidx.media3:media3-common-ktx yapısını ekleyin.
    • media3-common-ktx kitaplığına Player.Events dinlemek için bir eş yordam oluşturacak Player.listen askıya alma uzantı işlevi ekleyin.
    • Çalışma zamanı sınıf doğrulama hatalarını önlemek için tasarlanmış, manuel olarak satır dışı bırakılan dahili sınıflardan @DoNotInline ek açıklamalarını kaldırın. R8'in son sürümleri, çalışma zamanı hatalarını önlemek için artık bu tür çağrıları otomatik olarak satır dışı bırakıyor (bu nedenle manuel olarak satır dışı bırakma işlemine artık gerek yok). compileSdk = 35 nedeniyle, kitaplığın tüm Gradle kullanıcıları, bunu yapan bir R8 sürümünü kullanan Android Gradle eklentisinin bir sürümünü kullanıyor olmalıdır. Kitaplığı Gradle dışı derleme sistemleriyle kullanan kullanıcıların, çalışma zamanı sınıf doğrulama hatalarını önlemek için R8 eşdeğeri küçültme/kod karartma adımlarının benzer bir otomatik satır dışı işlem gerçekleştirdiğinden emin olması gerekir. Bu değişiklik diğer AndroidX kitaplıklarında zaten yapılmıştır.
  • ExoPlayer:
    • MediaCodecRenderer.onProcessedStreamChange() artık her medya öğesi için çağrılabilir. Daha önce ilk öğe için çağrılmıyordu. Bu özelliği etkinleştirmek için MediaCodecRenderer.experimentalEnableProcessedStreamChangedAtStart() kullanın.
    • Hata oluştuğunda PreloadMediaSource.PreloadControl uygulamalarının işlem yapmasına izin vermek için PreloadMediaSource.PreloadControl.onPreloadError ekleyin.
    • Ön yükleme etkinliklerini uygulamalara yaymak için BasePreloadManager.Listener ekleyin.
    • SNTP istemcisi zaman aşımının değiştirilmesine ve zaman aşımı durumunda alternatif adreslerin yeniden denenmesine izin ver (#1540).
    • Alan her zaman sıfır olduğu için MediaCodecAdapter.Configuration.flags kaldırıldı.
    • Kullanıcının Wear OS API 35+'te (cihazın bunu desteklediği durumlarda) oynatma için yerleşik hoparlörü seçmesine izin verin.
    • Ses odağı işleme etkinleştirilene kadar Context.getSystemService(Context.AUDIO_SERVICE) için engelleme çağrısını erteleyin. Bu sayede, ses odağı işleme etkinleştirilmemişse engelleme çağrısı yapılmaz (#1616).
    • Yükleme başarısız olduğunda, arabelleğe alınan süreye bakılmaksızın oynatmaya izin verme (#1571).
    • Ayrı oluşturucular oynatmanın hazır olmasına izin verdiğinde sinyal vermek için AnalyticsListener.onRendererReadyChanged() ekleyin.
    • MediaCodec, eşzamansız modda (API 31 ve sonraki sürümlerde varsayılan davranış) çalıştırıldığında MediaCodec.CryptoException bazen "beklenmeyen çalışma zamanı hatası" olarak bildiriliyordu. Bu sorun düzeltildi.
    • PreloadMediaSource.PreloadControl.onContinueLoadingRequested() ile bufferedPositionUs yerine bufferedDurationUs ödeyin. Ayrıca DefaultPreloadManager.Status.STAGE_LOADED_TO_POSITION_MS değerini DefaultPreloadManager.Status.STAGE_LOADED_FOR_DURATION_MS olarak değiştirir. Bu durumda uygulamaların, bir konum yerine, ilgili medya kaynağının bu IntDef ile önceden yüklenmesi gereken varsayılan başlangıç konumundan belirli bir süreyi temsil eden bir değer iletmesi gerekir.
    • Tüm yöntem çağrılarını başka bir oluşturucuya yönlendiren ForwardingRenderer uygulamasını ekleyin (1703).
    • Oynatma listesindeki bir sonraki öğe için oynatma listesi önceden yükleme özelliğini ekleyin. Uygulamalar, ExoPlayer.setPreloadConfiguration(PreloadConfiguration) yöntemini uygun şekilde çağırarak önceden yüklemeyi etkinleştirebilir. Önceden yükleme varsayılan olarak devre dışıdır. Özellik etkinleştirildiğinde ve oynatmayı engellememek için DefaultLoadControl, önceden yüklemeyi yalnızca oynatıcı oynatma için yükleme yapmadığında başlayacak ve devam edecek şekilde kısıtlar. Uygulamalar, LoadControl.shouldContinuePreloading() yöntemini uygun şekilde uygulayarak bu davranışı değiştirebilir (ör. DefaultLoadControl içinde bu yöntemi geçersiz kılarken). LoadControl yönteminin varsayılan uygulaması, bir uygulamanın LoadControl yönteminin özel bir uygulamasını kullanması durumunda önceden yüklemeyi devre dışı bırakır.
    • Alt sınıf işleyicilerin etkinliklerinin çağrılmasına izin vermek için MediaSourceEventListener.EventDispatcher.dispatchEvent() yöntemi eklendi (1736).
    • Sürekli olarak paylaşılan yapılandırmalarla DefaultPreloadManager ve ExoPlayer örneklerini oluşturan DefaultPreloadManager.Builder ekleyin.
    • DefaultLoadControl uygulaması, akış türlerini ExoTrackSelection[] öğesinden alabildiği için Renderer[] parametresi LoadControl.onTracksSelected() öğesinden kaldırıldı.
    • DefaultLoadControl.calculateTargetBufferBytes(Renderer[], ExoTrackSelection[]) desteği sonlandırıldı ve geçersiz kılmaları önlemek için yöntem "final" olarak işaretlendi. Bunun yerine yeni DefaultLoadControl.calculateTargetBufferBytes(ExoTrackSelection[]) kullanılmalıdır.
    • MergingMediaSource içinde ikincil kaynaklardan gelen MediaSourceEventListener etkinliklerini raporla. Bu, yan yüklenen altyazılar (MediaItem.LocalConfiguration.subtitleConfigurations ile eklenenler) için yükleme başlatma/hata/iptal edildi/tamamlandı etkinliklerinin raporlanmasına neden olur. Bu etkinlikler, AnalyticsListener tarafından yayınlanan yinelenen yükleme etkinlikleri olarak görünebilir.
    • Altyazı ve meta veri hatalarının oynatmayı tamamen durdurmasını önleyin. Bunun yerine, sorunlu parça devre dışı bırakılır ve kalan parçaların oynatılması devam eder (#1722).
      • Yeni altyazı işleme sırasında (ayıklama sırasında), ilişkili ayrıştırma (ör. geçersiz altyazı verileri) ve yükleme hataları (ör. HTTP 404) onLoadError geri çağırmaları aracılığıyla yayınlanır.
      • Eski altyazı işleme sırasında (oluşturma sırasında), yalnızca ilişkili yükleme hataları onLoadError geri çağırmaları aracılığıyla yayınlanırken ayrıştırma hataları sessizce yoksayılır (bu, önceden var olan bir davranıştır).
    • Oynatma listesi öğelerinin veya çok dönemli DASH akışlarındaki dönemlerin sürelerinin gerçek içerikle eşleşmemesi nedeniyle öğenin sonunda karelerin donmasına neden olabilen hata düzeltildi (#1698).
    • İstemcinin yeniden başlatılmasından sonraki son güncellemeden bu yana geçen maksimum süreyi ayarlamak için SntpClient sınıfına bir ayarlayıcı ekleyin (#1794).
  • Transformer:
    • Video verilerini bir Surface aracılığıyla Transformer'a sıraya eklemeyi destekleyen SurfaceAssetLoader öğesini ekleyin.
    • ImageAssetLoader, IllegalStateException hatası vermek yerine AssetLoader.onError üzerinden desteklenmeyen giriş bildiriyor.
    • Resim dışa aktarma için MediaItem.Builder.setImageDurationMs kullanarak resim süresini ayarlamayı zorunlu hale getirin.
    • Ses EditedMediaItem'ları dizilerindeki boşluklar için dışa aktarma desteği ekleyin.
  • Kanal seçimi:
    • DefaultTrackSelector: Diğer faktörler eşit olduğunda kanal tabanlı ses yerine nesne tabanlı sesi tercih edin.
  • Ayıklayıcılar:
    • Mp4Extractor ve FragmentedMp4Extractor, sonraki örnekler tarafından referans olarak kullanılmayan H264 örneklerini tanımlayabilir.
    • AmrExtractor içinde dizine dayalı aramayı etkinleştirme seçeneği ekleyin.
    • Geçerli kareler arasında 128 kB'tan fazla veri bulunan MP3 dosyalarını geçersiz yerine kesilmiş olarak değerlendirin. Bu, sonunda MP3 olmayan veriler bulunan ve MP3 baytlarının uzunluğunu gösteren başka meta verileri olmayan dosyaların artık ParserException: Searched too many bytes.{contentIsMalformed=true, dataType=1} (#1563) ile başarısız olmak yerine MP3 verilerinin sonunda oynatmayı durdurduğu anlamına gelir.
    • MP4 dosyalarındaki düzenleme listeleri işlenirken anahtar kare olmayan medya başlangıç konumları için videodan önce gösterilen reklam örneği işleme sorunu düzeltildi (#1659).
    • Mp4Extractor ve FragmentedMp4Extractor'deki mdhd kutusundan medya süresi kullanılarak kare hızı hesaplaması iyileştirildi (#1531).
    • MP4 düzenleme listelerinde media_time öğesinin yanlış ölçeklendirilmesi düzeltildi. segment_duration, film zaman ölçeği kullanılarak doğru şekilde ölçeklendirilmişti. media_time ise artık MP4 biçim standardında belirtildiği gibi parça zaman ölçeği kullanılarak doğru şekilde ölçeklendiriliyor (#1792).
    • Düzenleme listesi içeren MP4 için endIndices hesaplamasında sıra dışı kareleri işleme (#1797).
    • -1 değerlerini işlemek için MP4 dosyalarının mdhd kutusundaki medya süresi ayrıştırması düzeltildi (#1819).
    • H.263 video için MP4 dosyalarında h263 kutusunu tanımlama desteği eklendi (#1821).
    • AC-4 Seviye 4 ISO temel medya dosyası biçimi desteği eklendi (#1265).
  • DataSource:
    • HttpEngineDataSource, API düzeyi 34 yerine S uzantısı 7 sürümünden itibaren kullanıma izin verecek şekilde güncellendi (#1262).
    • DataSourceContractTest: DataSource.getUri() yönteminin, çözümlenen URI'yi (belgelendiği şekilde) döndürdüğünü doğrulayın. Bu, istenen URI'den farklıysa testler yeni DataSourceContractTest.TestResource.Builder.setResolvedUri() yöntemini kullanarak bunu belirtebilir.
    • DataSourceContractTest: DataSource.getUri() ve getResponseHeaders(), open() için başarısız bir çağrıdan sonra ("bulunamadı" kaynağı nedeniyle) ve sonraki bir close() çağrısından önce "açık" değerlerini döndürür.
      • DataSourceContractTest.getNotFoundResources() yöntemini geçersiz kılmak, test alt sınıflarının birden fazla "bulunamadı" kaynağı ve beklenen tüm üstbilgileri sağlamasına olanak tanır. Bu sayede, HTTP 404 (üstbilgilerle) ve "sunucu bulunamadı" (üstbilgi yok) arasında ayrım yapılabilir.
  • Ses:
    • Medyada varsa codec'te CTA-2075 ses düzeyi meta verilerini otomatik olarak yapılandırın.
    • İleri veya geri sararken ses seviyesinin sorunsuz bir şekilde azalmasını sağlayın.
    • İleri/geri sarma sırasında oluşabilecek patlama seslerini düzeltme
    • Sonic'in zaman uzatma/perde kaydırma algoritması için kesme hatası birikimini düzeltme.
    • SpeedChangingAudioProcessor içinde, çıkış karelerinin düşmesine neden olan hata düzeltildi.
  • Video:
    • MediaCodecVideoRenderer, oluşturulmayan veya diğer örnekler tarafından referans olarak kullanılmayan örneklerin kodunu çözmez.
    • API 35 ve sonraki sürümlerde MediaCodecAdapter artık configure içinde null Surface alabilir ve codec destekliyorsa (MediaCodecInfo.detachedSurfaceSupported) önceden ayarlanmış bir Surface değerini kaldırmak için yeni bir detachOutputSurface yöntemini çağırabilir.
    • onOutputFormatChanged işlenirken sağlanmışsa MediaCodecAdapter tarafından sağlanan piksel en boy oranı değerlerini kullanın (#1371).
    • Galaxy Tab S7 FE'de 60 fps güvenli H264 akışlarının desteklenmiyor olarak işaretlenmesine neden olan bir cihaz sorunu için geçici çözüm eklendi (#1619).
    • Son örnekten sonra akış sonu sinyali döndürmeden takılan codec'ler için geçici çözüm ekleyin.
  • Metin:
    • Özel bir VoiceSpan ekleyin ve WebVTT ses aralıkları için doldurun (#1632).
    • HLS'de çok büyük altyazı zaman damgalarına sahip WebVTT'nin (mikrosaniye olarak gösterildiğinde ve 90,000 MPEG zaman tabanıyla çarpıldığında 64 bit long taşan) gösterildiğinden emin olun (#1763).
    • Dolby Vision içeriklerinde CEA-608 altyazıları desteklenir (#1820).
    • CEA-608 altyazıları etkinleştirildiğinde DASH çok dönemli akışlarda oynatmanın takılması sorunu düzeltildi (#1863).
  • Meta veriler:
    • Icy veya vnd.dvb.ait içeriği barındıran parçalara C.TRACK_TYPE_METADATA türünü atayın.
  • Resim:
    • Glide veya Coil gibi harici resim yükleme kitaplıklarıyla basitleştirilmiş entegrasyon için ExternallyLoadedImageDecoder ekleyin.
  • DataSource:
    • FileDescriptor öğesinden okuma yapmak için kullanılabilecek yeni bir DataSource olan FileDescriptorDataSource eklendi (#3757).
  • Etki:
    • Küçük SurfaceTexture ölçeklendirme için DefaultVideoFrameProcessor geçici çözümü ekleyin. SurfaceTexture, kırpılmış bir arabelleğin kenarındaki 1 teksellik kenarlığı kesen küçük bir ölçeklendirme içerebilir. Bu sorun artık çözüldü. Çıktı, beklenen sonuca daha yakın.
    • DefaultVideoFrameProcessor.queueInputBitmap() hızlandırın. Bu sayede, Transformer ile Resimden Videoya Dönüştürme işlemi daha hızlı tamamlanır.
  • IMA uzantısı:
    • Oynatma listesini temizlemenin ImaServerSideAdInsertionMediaSource uygulamasında ArrayIndexOutOfBoundsException hatasına neden olabileceği hata düzeltildi.
    • Preroll içermeyen sunucu tarafı eklenmiş DAI akışlarının, son midroll'den sonra oynatıldığında ArrayIndexOutOfBoundsException ile sonuçlanmasına neden olan hata düzeltildi (#1741).
  • Oturum:
    • Uygulamaların bu yöntemi geçersiz kılarak oynatmayı devam ettirmek için gelen oynatma komutunu engellemesine izin vermek için MediaButtonReceiver.shouldStartForegroundService(Intent) ekleyin. Varsayılan olarak hizmet her zaman başlatılır ve sistem, hizmeti ForegroundServiceDidNotStartInTimeException ile kilitlenmeden oynatma engellenemez (#1528).
    • Eski bir hizmete bağlıyken MediaBrowser üzerinden gönderilen özel komutların, yöntemin MediaBrowserServiceCompat varyantı yerine MediaSessionCompat.Callback varyantına gönderilmesine neden olan hata düzeltildi. Bu durum, MediaBrowser hizmetinin eski hizmet tarafından gönderilen gerçek dönüş değerini almasını engelliyordu (#1474).
    • Medya düğmesi intent'leri için yayın alıcısı ayarlanırken belirli üreticilerin cihazları tarafından oluşturulan IllegalArgumentException hatası düzeltildi (#1730).
    • Medya öğeleri için komut düğmeleri ekleyin. Bu işlem, eski kitaplıkta Custom browse actions olarak bilinen Media3 API'sini MediaBrowserCompat ile ekler. Media3 ile medya öğeleri için komut düğmelerinin hem MediaBrowser hem de MediaController için kullanılabildiğini unutmayın. Özel göz atma işlemlerini uygulama başlıklı makaleyi inceleyin. * Media3 denetleyicisinin bazen bir oturum uygulamasının play() isteğinde bulunduktan sonra ön plan hizmeti başlatmasına izin vermemesine neden olan hata düzeltildi.
    • CommandButton.Builder.setIconUri öğesini yalnızca içerik URI'lerini kabul edecek şekilde kısıtlayın.
    • Eski bir MediaBrowserCompat hizmetine bağlanırken Media3 tarayıcısının bağlantı ipuçlarını ilk MediaBrowserCompat hizmetine iletin. Hizmet, onGetRoot() için yapılan ilk çağrıyla kök ipuçları olarak iletilen bağlantı ipuçlarını alabilir.
    • Eski bir tarayıcı hizmetine bağlı olan MediaBrowser, tarayıcı bir parentid hizmetine abone olduktan sonra hizmet tarafından gönderilen hatayı almadığı hata düzeltildi.
    • Eski bir MediaBrowserService hizmetine bağlı Media3 tarayıcısının, bir üst öğeye abone olurken parentId alt öğelerini iki kez istememesi için birlikte çalışabilirlik davranışını iyileştirin.
  • Kullanıcı arayüzü:
    • XML tabanlı paylaşılan geçişlerle ilgili sorunlar nedeniyle PlayerView-in-Compose-AndroidView geçici çözümünde uzatılmış/kırpılmış videoyu etkinleştirin. AndroidView içinde PlayerView kullanan uygulamaların, etkinleştirmek için PlayerView.setEnableComposeSurfaceSyncWorkaround çağrısı yapması gerekir (#1237, #1594).
    • Tam ekran düğmesinin simgesinin isteğe bağlı olarak (ör. bant dışı ve tıklama etkileşimine tepki vermeden) güncellenmesine izin vermek için PlayerView öğesine setFullscreenButtonState ekleyin (#1590, #184).
    • Uygulama tarafından tanımlanmış metin parçası seçim tercihleri varsa metin seçimindeki "Hiçbiri" seçeneğinin çalışmamasıyla ilgili hata düzeltildi.
  • DASH uzantısı:
    • Bir segmentin ortasında başlayan dönemler için destek eklendi (#1440).
  • Smooth Streaming Uzantısı:
    • Metin parçaları içeren SmoothStreaming akışları oynatılırken oluşan Bad magic number for Bundle hatası düzeltildi (#1779).
  • RTSP uzantısı:
    • Kodlanmış @ karakterleri içeren URL'lerde kullanıcı bilgilerinin kaldırılmasıyla ilgili sorun düzeltildi (#1138).
    • Başlık uzantıları içeren RTP paketleri ayrıştırılırken oluşan kilitlenme sorunu düzeltildi (#1225).
  • Kod çözücü uzantıları (FFmpeg, VP9, AV1 vb.):
    • Sesi sentezlemek için libiamf yerel kitaplığını kullanarak IAMF parçaları içeren MP4 dosyalarının oynatılmasını destekleyen IAMF kod çözücü modülünü ekleyin.
      • Oynatma, stereo düzenin yanı sıra isteğe bağlı kafa hareketi izleme özelliği etkinleştirilmiş uzamsallaştırma ile 5.1 düzeninde etkinleştirilir ancak çift kulaklı oynatma desteği şu anda kullanılamamaktadır.
    • Android 15'te kod çözücü uzantıları için 16 KB sayfa desteği eklendi (#1685).
  • Cast Uzantısı:
    • CastSession bağlantısı kesildikten sonra zaman çizelgesini temizlemeyi durdurur. Bu sayede, gönderen uygulama bağlantı kesildikten sonra oynatmayı yerel olarak devam ettirebilir.
    • Context sağlandığında CastPlayer'ın DeviceInfo değerini doldurun. Bu sayede MediaSession, RoutingSession ile bağlanabilir. Bu, çıkış değiştiriciyi (#1056) entegre etmek için gereklidir.
  • Test Yardımcı Programları:
    • DataSourceContractTest artık aşağıdakileri doğrulamak için testler içeriyor:
      • read position giriş akışı güncellendi.
      • Çıkış arabelleği offset doğru şekilde uygulanıyor.
  • Demo uygulama
    • Demo kısa video uygulamasındaki bellek sızıntıları giderildi (#1839).
  • Desteği sonlandırılan simgeleri kaldırın:
    • Kullanımdan kaldırılan Player.hasPrevious, Player.hasPreviousWindow() öğesini kaldırın. Bunun yerine Player.hasPreviousMediaItem() politikasını kullanın.
    • Desteği sonlandırılan Player.previous() yöntemini kaldırın. Bunun yerine Player.seekToPreviousMediaItem() kullanın.
    • Desteği sonlandırılan DrmSessionEventListener.onDrmSessionAcquired yöntemini kaldırın.
    • Desteği sonlandırılan DefaultEncoderFactory oluşturucuları kaldırın. Bunun yerine DefaultEncoderFactory.Builder kullanın.

Sürüm 1.5.0-rc02

19 Kasım 2024

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

Sürüm 1.5.0-rc01

13 Kasım 2024

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

Sürüm 1.5.0-beta01

30 Ekim 2024

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

Sürüm 1.5.0-alpha01

10 Eylül 2024

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

Sürüm 1.4.0

Sürüm 1.4.1

27 Ağustos 2024

androidx.media3:media3-*:1.4.1 yayınlandı. 1.4.1 sürümü bu kayıtları içerir.

  • ExoPlayer:
    • PreloadMediaSource içinde önceden yükleme geri çağırmalarını eşzamansız olarak işleme (#1568).
    • Yükleme başarısız olduğunda, arabelleğe alınan süreye bakılmaksızın oynatmaya izin verme (#1571).
  • Ayıklayıcılar:
    • MP3: Info çerçevesindeki uzunluk alanına göre MP3 olmayan verileri doğru şekilde yoksayarak Searched too many bytes hatası düzeltildi (#1480).
  • Metin:
    • TTML: Yüzde tts:fontSize değerlerinin, yüzde tts:fontSize değerlerine sahip üst düğümlerden doğru şekilde devralınmasını sağlamak için bu değerlerin işlenmesi düzeltildi.
    • İstenen çıkış başlangıç zamanının Subtitle içindeki son etkinlik zamanından büyük veya ona eşit olması durumunun yanlış işlenmesi nedeniyle LegacySubtitleUtil içindeki IndexOutOfBoundsException düzeltildi (#1516).
  • DRM:
    • L1 Widevine içeriği oynatan API 31 ve sonraki sürüme sahip cihazlarda android.media.MediaCodec$CryptoException: Operation not supported in this configuration: ERROR_DRM_CANNOT_HANDLE hatası düzeltildi. Bu hata, çerçeve MediaDrm.requiresSecureDecoder yönteminin (#1603) eksik uygulanmasından kaynaklanır.
  • Etki:
    • GlObjectsProvider için release() yöntemi ekleyin.
  • Oturum:
    • KEYCODE_HEADSETHOOK için iki kez dokunma işlemini, belgelendiği gibi "sonrakine atla" işlemine dönüştürün (#1493).
    • ForegroundServiceDidNotStartInTimeException'yi önlemek için KEYCODE_HEADSETHOOK komutunun yoksayılıp yoksayılmayacağına karar verirken bu komutu MediaButtonReceiver içinde "oynat" komutu olarak işleyin (#1581).
  • RTSP uzantısı:
    • SDP ayrıştırmada geçersiz medya açıklamalarını atlama (#1087).

Sürüm 1.4.0

25 Temmuz 2024

androidx.media3:media3-*:1.4.0 yayınlandı. 1.4.0 sürümü bu kayıtları içerir.

  • Ortak Kitaplık:
    • İşlem yapmadığı varsayılan arama çağrılarını yoksaymak yerine korumalı 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şmiş Java 8 desugaring işlemindeki derleme bağımlılığı kaldırıldı (#1312).
    • MediaItem.Builder.setImageDurationMs() yöntemine iletilen sürenin, resim olmayan MediaItem için yoksayıldığından (belgelendiği gibi) emin olun.
    • Format örnekleri hakkında uygulama tarafından sağlanan özel bilgileri depolamak için Format.customData ekleyin.
  • ExoPlayer:
    • rankingData tarafından tanımlanan önceliklere göre birden fazla kaynak için önceden yüklemeyi koordine eden BasePreloadManager ekleyin. Bu sınıfı genişleterek özelleştirme yapabilirsiniz. Kaynakların medya örneklerini belleğe önceden yüklemek için PreloadMediaSource kullanan ve kullanıcı arayüzündeki bir öğenin dizinini belirten bir tam sayı rankingData kullanan DefaultPreloadManager ekleyin.
    • LoadControl uygulamalarının birden fazla oynatıcıyı desteklemesini sağlamak için çoğu LoadControl yöntemine PlayerId ekleyin.
    • Buffer.isDecodeOnly() ve C.BUFFER_FLAG_DECODE_ONLY araçlarını kaldırın. Oluşturucular ve kod çözücüler, zaman damgasına göre arabellekleri atlamaya karar vereceğinden bu işaretin ayarlanmasına gerek yoktur. Özel Renderer uygulamaları, bir örneğin gösterilip gösterilmeyeceğine karar vermek için ara zamanın en az BaseRenderer.getLastResetPositionUs() olup olmadığını kontrol etmelidir. Özel SimpleDecoder uygulamaları, gerekirse isAtLeastOutputStartTimeUs() değerini kontrol edebilir veya diğer arabellekleri atlamak için DecoderOutputBuffer.shouldBeSkipped ile işaretleyebilir.
    • Belirli bir rankingData ile MediaSource önceden yüklenmemesi gerektiğini belirtmek için TargetPreloadStatusControl.getTargetPreloadStatus(T) tarafından boş değer döndürülmesine izin verin.
    • remove(MediaSource) öğesini BasePreloadManager adlı listeye ekleyin.
    • Önceden yükleme yöneticisi örneğini korurken tüm tutma kaynaklarını serbest bırakmak için BasePreloadManager öğesine reset() ekleyin.
    • PriorityTaskManager ve API 35'ten itibaren MediaCodec önemi için kullanılan öncelik değerini tanımlamak üzere ExoPlayer.setPriority() (ve Builder.setPriority()) ekleyin.
    • CMCD'de yanlış bs (tampon yetersizliği) anahtarına neden olan son yeniden arabelleğe alma süresini güncelleme sorunu düzeltildi (#1124).
    • Kaynağın sonuna kadar yüklendiğini belirtmek için PreloadMediaSource.PreloadControl.onLoadedToTheEndOfSource(PreloadMediaSource) ekleyin. Bu sayede DefaultPreloadManager ve özel PreloadMediaSource.PreloadControl uygulamaları, bir sonraki kaynağı önceden yükleyebilir veya başka işlemler yapabilir.
    • Öğelerin sonunda sessizliği atlamanın oynatma istisnasına neden olabildiği hata düzeltildi.
    • Önceden yükleme süresini silmek için PreloadMediaSource öğesine clear ekleyin.
    • Daha yüksek öncelikli görevler için codec kaynakları geri alındığında kullanılan yeni hata kodu PlaybackException.ERROR_CODE_DECODING_RESOURCES_RECLAIMED eklendi.
    • AdsMediaSource, ilk içerik medya hazırlığı tamamlanmadan önce videodan önce gösterilen reklamları yüklesin (#1358).
    • Orijinal dönem manifestten kaldırıldıktan sonra çok dönemli DASH canlı yayını yeniden hazırlanırken oynatmanın STATE_ENDED değerine taşınmasına neden olan hata düzeltildi.
    • PreloadMediaSource.PreloadControl içinde onTimelineRefreshed() öğesini onSourcePrepared(), onPrepared() öğesini onTracksSelected() olarak yeniden adlandırın. DefaultPreloadManager.Stage içindeki IntDef'leri de buna göre yeniden adlandırın.
    • Çalışmayı CPU uyanma döngüleriyle daha iyi uyumlu hale getirmek ve oluşturucular ilerleyene kadar uyanmayı geciktirmek için dinamik planlamaya deneysel destek ekleyin. ExoPlayer örneğinizi ayarlarken experimentalSetDynamicSchedulingEnabled() kullanarak bu özelliği etkinleştirebilirsiniz.
    • Renderer.getDurationToProgressUs() ekleyin. Renderer, oluşturucunun ilerlemesi için oynatmanın ilerlemesi gereken süreyi ExoPlayer'a döndürmek üzere bu yöntemi uygulayabilir. ExoPlayer, experimentalSetDynamicSchedulingEnabled() ile ayarlanırsa ExoPlayer, iş görevini planlama zamanını hesaplarken bu yöntemi çağırır.
    • Giriş ve çıkış arabellekleri MediaCodecRenderer tarafından kullanılabilir olduğunda uyarı göndermek için MediaCodecAdapter#OnBufferAvailableListener ekleyin. MediaCodecRenderer, bu geri çağırmaları alırken ExoPlayer sinyali verir ve ExoPlayer, experimentalSetDynamicSchedulingEnabled() ile ayarlanırsa ExoPlayer, oluşturucular ilerleme kaydedebileceği için çalışma döngüsünü planlar.
    • LoadControl yöntemleri için ayrı parametreler yerine veri sınıfı kullanın.
    • Exoplayer.release() işlevinin çağrılıp çağrılmadığını kontrol etmek için ExoPlayer.isReleased() ekleyin.
    • seekToPrevious() öğesinin önceki öğeye (#1425) geçiş yapacağı maksimum konumu yapılandırmak için ExoPlayer.Builder.setMaxSeekToPreviousPositionMs() eklendi.
    • Oynatıcı duraklatıldığında tam veya geçici odak kaybının bildirilmemesi gibi bazı ses odağı tutarsızlıkları düzeltildi (#1436).
    • İlk hazırlık adımından sonra ek parçalar bildiren ayıklayıcıların neden olduğu olası IndexOutOfBoundsException sorununu düzeltme (#1476).
    • ExoPlayer.setVideoEffect() sürümündeki Effects, oluşturucu ofseti kaldırılmış zaman damgalarını alacak (#1098).
    • Başka bir oynatma listesi öğesi önceden okunurken meydana gelen oynatıcı hatası işlenirken ortaya çıkabilecek IllegalArgumentException düzeltildi (#1483).
  • Transformer:
    • Çıkış dosyasındaki ilgili parçanın nasıl oluşturulduğunu belirtmek için ExportResult öğesine audioConversionProcess ve videoConversionProcess ekleyin.
    • Kırpma optimizasyonu H.264 seviye kontrollerini esnetme
    • Bir sekans içinde SDR ve HDR giriş medyası arasında geçiş yapma desteği eklendi.
    • Oluşturma düzeyinde ses efektleri için destek ekleyin.
    • Ultra HDR resimleri HDR videolara kod dönüştürme desteği ekleyin.
    • DefaultAudioMixer sıfırlanıp yeniden kullanıldıktan sonra doğru miktarda bayt çıkışı yapmamasıyla ilgili sorun düzeltildi.
    • PCM girişi işlenirken ses kanalı sayısının stereo ile sınırlandırıldığı bir kod çözücü hatası düzeltildi.
    • ExoPlayerAssetLoader uygulamasında parça seçerken ses kanalı sayısı kısıtlamalarını yoksayın. Bu kısıtlamalar yalnızca oynatma için geçerlidir.
    • androidx.media3.transformer.Muxer arayüzünü androidx.media3.muxer.Muxer ile değiştirin ve androidx.media3.transformer.Muxer arayüzünü kaldırın.
    • İçerik URI şemalarından HEIC resim yükleme sorunu düzeltildi. (#1373).
    • Ses ve görüntü senkronizasyonunu iyileştirmek için AudioGraphInput uygulamasında ses parçasının süresini ayarlayın.
    • ExportResult.processedInputs alanını kaldırın. Bu alanı codec ayrıntıları için kullanıyorsanız bunun yerine DefaultDecoderFactory.listener kullanın. Codec istisnası durumunda codec ayrıntıları ExportException.codecInfo içinde yer alı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ğlayan değişikliği ileri sarı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 yapıldı.
    • MP3: Temel akış tarafından bildirilen boyut (ör. dosya boyutu veya HTTP Content-Length başlığı) yerine Info çerçevesindeki veri boyutunu tercih edin. Bu sayede, oynatılamayan fragman verileri (ör. albüm kapağı) sabit bit hızı arama hesaplamalarından hariç tutulur ve aramalar daha doğru hale gelir (#1376).
    • MP3: Sabit bit hızı arama için ortalama bit hızını hesaplamak amacıyla Info karesindeki (varsa) kare sayısını ve diğer verileri kullanın. Info karesinden sonraki karenin bit hızından tahmin yürütmeyin. Bu, yapay olarak küçük olabilir (ör. PCUT karesi) (#1376).
    • AVI kapsayıcılarında PCM ses biçimi ayıklama sorunu düzeltildi.
  • Ses:
    • Doğrudan geçişli oynatma için DTS:X Profile 2 kodlama özellikleri düzeltildi (#1299).
    • Yükü azaltılmış oynatma için AudioTrack.stop() çağrılmadan önce DefaultAudioSink içinde akış tamamlama izleme alanını sıfırlayın. Böylece AudioTrack.StreamEventCallback#onPresentationEnded, bekleyen tüm verilerin ne zaman oynatıldığını doğru şekilde tanımlar.
    • SilenceSkippingAudioProcessor'da farklı ses biçimleri (ör. stereodan monoya) arasındaki geçişlerin, işlemcinin istisna oluşturmasına neden olabildiği hata düzeltildi (#1352).
    • ExoPlayer'ın ana çalışma döngüsünü MediaCodecAudioRenderer'ın ilerleme kaydedebileceği zamana dinamik olarak planlaması için MediaCodecAudioRenderer.getDurationToProgressUs() uygulayın.
  • Video:
    • Oynatma sırasında yüzey değiştirirken Listener.onRenderedFirstFrame() öğesinin çok erken gelmesine neden olan sorun düzeltildi.
    • Dolby Vision için kod çözücü yedek mantığı, gerektiğinde uyumlu bir AV1 kod çözücü kullanacak şekilde düzeltildi (#1389).
    • Oynatma sırasında video oluşturucunun etkinleştirilmesinden kaynaklanabilecek codec istisnası düzeltildi.
  • Metin:
    • Arama konumundan önce başlayan altyazıların atlanmasına neden olan sorun düzeltildi. Bu sorun yalnızca Media3 1.4.0-alpha01 sürümünde ortaya çıkmıştır.
    • Varsayılan altyazı ayrıştırma davranışını, oluşturma 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 diyagramına bakın).
      • Bu değişiklik, hem MediaSource.Factory.experimentalParseSubtitlesDuringExtraction(false) hem de TextRenderer.experimentalSetLegacyDecodingEnabled(true) çağrılarak geçersiz kılınabilir. Bu bileşenleri bir ExoPlayer örneğine nasıl ekleyeceğinizi öğrenmek için özelleştirmeyle ilgili belgelere göz atın. Bu yöntemler (ve eski altyazı kod çözme desteğinin tamamı) gelecekteki bir sürümde kaldırılacaktır.
      • Özel SubtitleDecoder uygulamaları olan uygulamaların, bunun yerine SubtitleParser (ve SubtitleDecoderFactory yerine SubtitleParser.Factory) uygulayacak şekilde güncellenmesi gerekir.
    • PGS: 0 değerini gerçek bir renk değeri yerine renk dizini olarak çözmek için çalışma uzunluğu kod çözme işlemini düzeltme (#1367).
    • CEA-708: rowLock değeri yok sayılır. CEA-708-E S-2023 spesifikasyonu, akıştaki değerlerden bağımsız olarak rowLock ve columnLock değerlerinin her ikisinin de doğru olarak kabul edilmesi gerektiğini belirtir (columnLock desteği uygulanmadığından her zaman yanlış olduğu varsayılır).
      • Bu değişiklik, ilk olarak 1.3.0-alpha01 sürüm notlarına dahil edilmişti ancak 1.3.0-rc01 sürümünden önce yanlışlıkla geri alındı. Bu sorun düzeltildi ve değişiklik tekrar uygulanıyor.
    • CEA-708: ExoPlayer'ın "kalem konumunu ayarla" komutunu basit bir şekilde işlemesi nedeniyle yinelenen yeni satırların eklenmesini önleme (#1315).
    • WebVTT altyazı örneği, örneğin bir DASH akışının parçası olarak işaret içermediğinde LegacySubtitleUtil kaynaklı IllegalArgumentException düzeltildi (#1516).
  • Meta veriler:
    • MP4'ün ID3 sıralama etiketleriyle eşlemesi düzeltildi. Daha önce "albüm sıralama" (soal), "sanatçı sıralama" (soar) ve "albüm sanatçısı sıralama" (soaa) MP4 etiketleri, TSO2, TSOA ve TSOP ID3 etiketleriyle yanlış eşleniyordu (#1302).
    • 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 yayma (#1305).
  • Resim:
    • Kare olmayan DASH küçük resim ızgaraları için destek eklendi (#1300).
    • API 34 ve sonraki sürümler için AVIF desteği ekleyin.
    • Daha önce ayarlanmış bir ImageOutput değerini temizlemek için ExoPlayer.setImageOutput() parametresi olarak null değerine izin verin.
  • DataSource:
    • package, mevcut uygulamanın paketinden farklı olduğunda android.resource://package/id ham kaynak URI'leri için destek uygulayın. Bu yöntem daha önce belgelendirilmemişti ancak başka bir paketteki kaynaklara adla erişmekten daha verimli bir yöntemdir.
    • DataSpec oluşturucularında url değerinin boş olmadığını kontrol edin. Bu parametre, boş olmayan olarak zaten ek açıklamayla belirtilmiş.
    • ByteArrayDataSource öğesinin, oluşturma sırasında sabit kodlanmış olmak yerine open() sırasında bir URI'yi bayt dizisine çözümlemesine izin verin (#1405).
  • DRM:
    • DefaultDrmSessionManagerProvider üzerinde LoadErrorHandlingPolicy ayarlanmasına izin verilir (#1271).
  • Etki:
    • SpeedChangeEffect uygulamasında aynı EditedMediaItem veya Composition içinde birden fazla hız değişikliğini destekleme
    • Ultra HDR bitmap girişinden HLG ve PQ çıkışı desteği sunar.
    • ExoPlayer.setVideoEffect ve Transformer'ın hata ayıklama SurfaceView'unda 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 ters çevirerek yer paylaşımı matrisi uygulamasını dokümanlarla tutarlı olacak şekilde güncelleyin. OverlaySettings.Builder.setOverlayFrameAnchor() kullanıyorsanız x ve y değerlerini -1 ile çarparak ters çevirin.
    • ExoPlayer#setVideoEffects ile kullanıldığında TimestampWrapper uygulamasının kilitlenmesine neden olan hata düzeltildi (#821).
    • Varsayılan SDR renk çalışma alanını doğrusal renklerden elektrikli BT 709 SDR videoya değiştirin. Ayrıca orijinal renk alanını korumak için üçüncü bir seçenek sunun.
    • EditedMediaItemSequences'ın belirsiz z sırasının tanımlanmasına izin verilir (#1055).
    • Farklı HDR içerik parçalarında tutarlı bir parlaklık aralığı sağlar (HLG aralığını kullanır).
    • HDR içeriklerde Ultra HDR (bit eşlem) yer paylaşımları için destek ekleyin.
    • API 26'dan önce SeparableConvolution efektlerinin kullanılmasına izin ver.
    • Yer paylaşımının ve karenin dinamik aralığı 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.Builder.setHdrLuminanceMultiplier() ile ayarlanabilir.
  • IMA uzantısı:
    • Uygulamaların DAI reklam akışlarını oynatması için gereken API'yi kararlı sürüme yükseltme
    • Çalışma zamanında reklam etiketi parametrelerinin değiştirilmesine olanak tanıyan replaceAdTagParameters(Map <String, String>) özelliğini ImaServerSideAdInsertionMediaSource.AdLoader sınıfına ekleyin.
    • Reklam oynatma sırasında oynatıcı hatası oluştuğunda VideoAdPlayer.VideoAdPlayerCallback.onError() işlevinin çağrılmamasına neden olan hata düzeltildi (#1334).
    • data:// reklam etiketi URI'leri kullanılırken oluşan NullPointerException sorununu düzeltmek için IMA SDK sürümünü 3.33.0'a yükseltin (#700).
  • Oturum:
    • CommandButton.enabled için varsayılan değeri true olarak değiştirin ve ilişkili komut kullanılabilir olsa bile kumandalar için değerin yanlış kalabileceğinden emin olun.
    • Özel simge kaynakları yerine kullanılması gereken CommandButton için simge sabitleri ekleyin.
    • Uygulamaların, hizmetin onTaskRemoved() içinde durdurulması gerekip gerekmediğini sorgulamasına olanak tanımak için MediaSessionService.isPlaybackOngoing() 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 hizmetin ön planda çalışmasını sağlayan, aksi takdirde hizmeti durduran güvenli bir varsayılan uygulama sağlamak için MediaSessionService.onTaskRemoved(Intent) yöntemini geçersiz kılın.
    • Platform oturumu meta verilerinde süreyi ayarlamayarak canlı yayınlar için medya bildirimindeki arama çubuğunu gizleme (#1256).
    • MediaMetadata dönüşümünü MediaDescriptionCompat ile uyumlu hale getirerek meta veri özelliklerini seçerken media1 ile aynı tercih sırasını ve mantığı kullanın.
    • Media3 denetleyicisine önemli olmayan hatalar göndermeye olanak tanıyan MediaSession.sendError() ekleyin. Bildirim denetleyicisi kullanılırken (bkz. MediaSession.getMediaNotificationControllerInfo()), özel hata, platform oturumunun PlaybackState değerini verilen hata bilgileriyle (#543) bir hata durumuna güncellemek için kullanılır.
    • Belirli bir kumandadan gelen bir dizi oyuncu etkileşimi tamamlandığında oturumları bilgilendirmek için MediaSession.Callback.onPlayerInteractionFinished() ekleyin.
    • Hata hakkında daha fazla bilgi vermek ve mümkünse hatanın nasıl çözüleceğini açıklamak için SessionError öğesini ekleyin ve hata kodu yerine SessionResult ile LibraryResult içinde kullanın.
    • Medya oturumu yayınlayan uygulamalarla etkileşimleri test etmek için kullanılabilecek media3 denetleyici test uygulamasının kodunu yayınlayın.
    • Media3'ün MediaSession[Builder].setSessionExtras() öğesine iletilen ekstraları media1 denetleyicisinin PlaybackStateCompat.getExtras() öğesine yayınlayın.
    • Önemli ve önemsiz hataları platform oturumuyla eşleyin. PlaybackException, PlaybackStateCompat'nin önemli hata durumuna eşlenir. MediaSession.sendError(ControllerInfo, SessionError) ile medya bildirimi denetleyicisine gönderilen bir SessionError, PlaybackStateCompat içinde önemli olmayan bir hatayla eşlenir. Bu, hata kodunun ve mesajın ayarlandığı ancak platform oturumunun durumunun STATE_ERROR değerinden farklı kaldığı anlamına gelir.
    • Genel oturum etkinliğini geçersiz kılmak için oturum etkinliğinin her denetleyici için ayarlanmasına izin verin. Oturum etkinliği, bağlantı sırasında AcceptedResultBuilder.setSessionActivivty(PendingIntent) ile bir ConnectionResult oluşturularak kumanda için tanımlanabilir. Bağlantı kurulduktan sonra oturum etkinliği MediaSession.setSessionActivity(ControllerInfo, PendingIntent) ile güncellenebilir.
    • MediaLibrarySession.Callback çağrılarının hata replikasyonunu iyileştirme. Hata replikasyonu artık hata türünü seçmek veya varsayılan olarak etkin olan hata replikasyonunu devre dışı bırakmak için MediaLibrarySession.Builder.setLibraryErrorReplicationMode() kullanılarak yapılandırılabilir.
  • Kullanıcı arayüzü:
    • ExoPlayer cihazına bağlıyken PlayerView için resim görüntüleme desteği ekleyin (#1144).
    • Genel geçersiz kılmalar yerine her PlayerView örneği için farklı çizilebilir öğelere izin vermek amacıyla xml özellikleri aracılığıyla PlayerControlView içindeki çeşitli simgelerin özelleştirilmesi eklendi (#1200).
    • API 34'te bir Compose AndroidView içinde SurfaceView kullanıldığında videonun uzatılmasına/kırpılmasına neden olan bir platform hatası düzeltildi (#1237).
  • İndirilenler:
    • DownloadHelper öğesinin, yayınlanmamış Renderer örneklerini sızdırmadığından emin olun. Bu durum, uygulamanın IllegalStateException: Too many receivers, total of 1000, registered for pid ile kilitlenmesine neden olabilir (#1224).
  • Cronet Uzantısı:
    • CronetDataSource uygulamasında SocketTimeoutException sorununu düzeltin. Cronet'in bazı sürümlerinde, geri çağırma tarafından sağlanan istek her zaman aynı değildir. Bu durum, geri çağırmanın 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 EMSG örneklerinin yanlış bir ofsetle HlsSampleStreamWrapper içinde atanarak IndexOutOfBoundsException veya IllegalArgumentException hatasına neden olduğu hata düzeltildi (#1002).
    • LL-HLS yayınları için birincil olmayan oynatma listelerinin sürekli yeniden yüklenmesine neden olan hata düzeltildi (#1240).
    • Başlatma segmentleriyle HLS için CMCD'nin etkinleştirilmesinin Source Error ve IllegalArgumentException ile sonuçlanmasına neden olan hata düzeltildi.
    • Canlı oynatma sırasında birincil olmayan oynatma listelerinin yenilenmemesine neden olan hata düzeltildi (#1240).
    • HLS canlı yayınları için CMCD'nin etkinleştirilmesinin neden olduğu hata düzeltildi. ArrayIndexOutOfBoundsException (#1395).
  • DASH uzantısı:
    • Çok dönemli bir canlı yayının yeniden hazırlanmasının hataya neden olabileceği hata düzeltildi IndexOutOfBoundsException (#1329).
    • dashif:Laurl lisans URL'leri için destek eklendi (#1345).
  • Cast Uzantısı:
    • Media3 medya öğesinde MediaQueueItem albüm başlığını sanatçıya dönüştüren hata düzeltildi (#1255).
  • Test Yardımcı Programları:
    • FakeRenderer'de onInit() ve onRelease() uygulayın.
    • TestPlayerRunHelper.runUntil()/playUntil() yöntemlerini, önemli olmayan hatalarda (ör. AnalyticsListener.onVideoCodecError() yöntemine 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 video demo uygulamasında DefaultPreloadManager kullanın.
    • Komut satırından Intent bağımsız değişkenleriyle tekrar modunun ayarlanmasına izin verilir (#1266).
    • Cihaz tarafından desteklendiğinde HttpDataSource olarak HttpEngineDataSource kullanın.
  • Desteği sonlandırılan simgeleri kaldırın:
    • CronetDataSourceFactory öğesini kaldır Bunun yerine CronetDataSource.Factory kullanın.
    • Bazı DataSpec oluşturucuları kaldırın. Bunun yerine DataSpec.Builder politikasını kullanın.
    • setContentTypePredicate(Predicate) yöntemi DefaultHttpDataSource, OkHttpDataSource ve CronetDataSource öğelerinden kaldırıldı. 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) kullanın.
    • Timeline.Window.isLive alanını kaldırın. Bunun yerine isLive() yöntemini kullanın.
    • DefaultHttpDataSource kurucuyu 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.
    • AnalyticsListener.onAudioInputFormatChanged(EventTime, Format), AnalyticsListener.onVideoInputFormatChanged(EventTime, Format), AudioRendererEventListener.onAudioInputFormatChanged(Format), VideoRendererEventListener.onVideoInputFormatChanged(Format) kaldırın. 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 sabitlerini kaldırın. Bunun yerine androidx.media3.common.C içinde eşdeğer IntDef ve sabitleri (ör. C.FORMAT_HANDLED) kullanın.
    • Bundleable arayüzünü kaldırın. Buna, tüm Bundleable.Creator<Foo> CREATOR sabit alanlarının kaldırılması da dahildir. Arayanlar bunun yerine her türde Bundle toBundle() ve static Foo fromBundle(Bundle) yöntemlerini kullanmalıdır.

Sürüm 1.4.0-rc01

10 Temmuz 2024

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

Sürüm 1.4.0-beta01

26 Haziran 2024

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

Sürüm 1.4.0-alpha02

7 Haziran 2024

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

Sürüm 1.4.0-alpha01

17 Nisan 2024

1.4.0 kararlı sürümü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ı. 1.3.1 sürümü bu commit'leri içerir.

  • Ortak Kitaplık:
    • Yerelleştirilmiş veya diğer alternatif etiketlere izin vermek için Format.labels ekleyin.
  • ExoPlayer:
    • PreloadMediaPeriod tekrar önceden yüklendiğinde akışları koruyamamasıyla ilgili sorun düzeltildi.
    • Parça yeniden seçimi sırasında çalma süresine doğru TrackSelectionResult değerini uygulayın.
    • Medya öğeleri arasında geçiş yaparken oynatma süresini ilerlettikten sonra erken etkinleştirilen oluşturucuları başlatma (#1017).
    • DefaultVideoFrameProcessor.Factory.Builder.build() için proguard -keepclasseswithmembers kuralına eksik dönüş türü eklendi (#1187).
  • Transformer:
    • API 30'dan önce negatif sunum zaman damgalarını desteklemeyen MediaMuxer nedeniyle oluşan istisna için geçici çözüm ekleyin.
  • Kanal seçimi:
    • DefaultTrackSelector: Kare hızı daha düşük veya ayarlanmamış olanlar 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 çıkarılan MP4'lerde "gerçek" video parçasını seçer (#1051).
  • Ayıklayıcılar:
    • WAV dosyalarından tek boyutlu parçalar okunurken dolgunun atlanmaması sorunu düzeltildi (#1117).
    • MP3: Format.averageBitrate alanını 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ı sağlamayı amaçlayan bir değişikliği geri alma (#7909). Bunun nedeni, değişikliğin yalnızca I-frame HLS akışları (#1150) ve H.262 HLS akışları (#1126) ile ilgili yeni sorunlara yol açmasıdır.
  • Ses:
    • Ses parçası boşaltma modunda başlatılamazsa boşaltmayı 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 yayınların desteklenmiyor olarak işaretlenmesine neden olan cihaz sorunu için geçici çözüm eklendi.
    • Cihaz, API'nin gerektirdiği şekilde bunu otomatik olarak yapmasa bile tünel oluşturma sırasında ilk karenin her zaman oluşturulmasını sağlayan geçici çözüm eklendi (#1169). (#966).
    • HDR renk bilgisi işlemenin codec'in hatalı çalışmasına neden olduğu ve SDR video parçaları için uyarlanabilir biçim geçişlerini engellediği sorun düzeltildi (#1158).
  • Metin:
    • WebVTT: Doğrudan ardışık işaretlerin, WebvttParser.parse kaynağından sahte ek CuesWithTiming örnekleri oluşturmasını önleme (#1177).
  • DRM:
    • Bazı Android 14 cihazlarda ResourceBusyException veya NotProvisionedException yerine MediaDrm çerçevesi tarafından oluşturulabilen NoSuchMethodError ile ilgili geçici çözüm uygulandı (#1145).
  • Etki:
    • Renk alanları dönüştürülerek PQ'dan SDR'ye ton eşleme iyileştirildi.
  • Oturum:
    • Denetleyici mevcut öğeyi değiştirdiğinde mevcut konumun geri atlaması sorunu düzeltildi (#951).
    • Yalnızca boş olmayan extras içeren MediaMetadata öğesinin medya kumandaları ve oturumlar arasında aktarılmaması sorunu düzeltildi (#1176).
  • Kullanıcı arayüzü:
    • Locale bir görünen ad tanımlayamazsa ses parçası dil adını içerecek şekilde yedekleme (#988).
  • DASH uzantısı:
    • Manifestteki tüm Label öğelerini Format.labels içine doldurun (#1054).
  • RTSP uzantısı:
    • SDP ayrıştırmada boş oturum bilgisi değerlerini (i etiketleri) atlama (#1087).
  • Kod çözücü uzantıları (FFmpeg, VP9, AV1, MIDI vb.):
    • MIDI uzantısı, ek bir Maven deposunun yapılandırılmasını gerektirdiğinden bu uzantıyı varsayılan olarak yerel bağımlılık olarak devre dışı bırakın. Bu modüle yerel bir bağımlılıktan ihtiyaç duyan kullanıcılar modülü yeniden etkinleştirebilir.

Sürüm 1.3.0

6 Mart 2024

androidx.media3:media3-*:1.3.0 yayınlandı. 1.3.0 sürümü bu kayıtları içerir.

  • Ortak Kitaplık:
    • package, mevcut uygulamanın paketinden farklı olduğunda android.resource://package/[type/]name ham kaynak URI'leri için destek uygulayın. Bu özelliğin çalıştığı her zaman belgelenmişti ancak şimdiye kadar doğru şekilde uygulanmamıştı.
    • Uygulama kodu tarafından ayarlanan veya medyadan okunan MIME türlerini tamamen küçük harf olacak şekilde normalleştirin.
    • AdPlaybackState içinde tek bir Uri yerine tam MediaItem ile 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 yeni sürümlerine yükseltme yapmamız için gereklidir.
    • En az biri boş olmadığında MediaMetadata.Builder.populate(MediaMetadata) içinde hem artworkUri hem de artworkData değerlerini doldurun (#964).
  • ExoPlayer:
    • Uygulamaların, oynatmadan önce belirli bir başlangıç konumunda içerik medya kaynağını önceden yüklemesine olanak tanıyan PreloadMediaSource ve PreloadMediaPeriod eklendi. PreloadMediaSource, Timeline almak için içerik medya kaynağını hazırlama, belirtilen başlangıç konumunda dönemi hazırlama ve önbelleğe alma, parçaları seçme ve dönem için medya verilerini yükleme işlemlerini gerçekleştirir. Uygulamalar, PreloadMediaSource.PreloadControl öğesini uygulayarak önceden yükleme işlemini kontrol eder ve önceden yüklenen kaynağı oynatıcıya ayarlar.
    • Uygulamaların ImageRenderer.ImageOutput ayarlamasına olanak tanıyan ExoPlayer.setImageOutput ekleyin.
    • DefaultRenderersFactory artık varsayılan olarak boş ImageOutput ve ImageDecoder.Factory.DEFAULT ile oyuncuya ImageRenderer sağlar.
    • Sessiz bölümler atlandığında Player.Listener.onPositionDiscontinuity etkinliğini yayınlama (#765).
    • Ayıklama sırasında altyazıları ayrıştırmak için deneysel destek ekleyin. Bu özelliği MediaSource.Factory.experimentalParseSubtitlesDuringExtraction() kullanarak etkinleştirebilirsiniz.
    • PreloadMediaSource ile uyarlanabilir medya kaynaklarını destekleyin.
    • HttpEngine API'yi kullanarak HttpEngineDataSource (HttpDataSource) uygulayın.
    • CompositeSequenceableLoader alt sınıflandırmasını önleyin. Bu bileşen daha önce genişletilebilir hale getirilmişti ancak kitaplıkta hiçbir zaman alt sınıflandırılmadı. Özelleştirmeler, dekoratör kalıbı kullanılarak bir örneğin sarmalanması ve özel bir CompositeSequenceableLoaderFactory uygulanmasıyla yapılabilir.
    • Aynı zamanın tekrarlanmasının bu öğenin meta verilerinin temizlenmesine neden olduğu sorun düzeltildi (#1007).
    • BundledChunkExtractor.Factory ve DefaultHlsExtractorFactory'deki experimentalSetSubtitleParserFactory yöntemlerini setSubtitleParserFactory olarak yeniden adlandırın ve null'nin iletilmesine izin vermeyin. Ayrıştırma davranışını kontrol etmek için yeni experimentalParseSubtitlesDuringExtraction(boolean) yöntemlerini kullanın.
    • Ayıklama sırasında kullanılan SubtitleParser.Factory öğesini özelleştirme desteği ekleyin. Bu, MediaSource.Factory.setSubtitleParserFactory() ile yapılabilir.
    • MergingMediaSource kaynağından oluşturulan tüm Format.id alanlarına kaynak öneki ekleyin. Bu sayede, hangi kaynağın Format ürettiği belirlenebilir (#883).
    • Özel Common Media Client Data (CMCD) anahtar adlarını doğrulamak için kullanılan normal ifadeyi, yalnızca kısa çizgiyi kontrol edecek şekilde değiştirerek düzeltme (#1028).
    • CMCD sorgu parametrelerinin çift kodlanması durduruldu (#1075).
  • Transformer:
    • H.265/HEVC SEF ağır çekim videoları düzleştirme desteği eklendi.
    • Özellikle "videoyu kaldır" düzenlemelerinde transmuxing hızını artırın.
    • Çıkış dosyasının bir video karesinde başlamasını sağlamak için API ekleyin. Bu sayede, kırpma işlemlerinin çıkışı, ilk video karesini sunum zaman damgasına kadar göstermeyen oynatıcı uygulamalarıyla daha uyumlu hale gelebilir (#829).
    • Tek öğeli MP4 kırpma işlemlerini optimize etme desteği 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 kareyle başlayan çıkış dosyaları düzeltildi (#829).
  • Kanal seçimi:
    • Resim parçası seçimini etkinleştirmek için DefaultTrackSelector.selectImageTrack ekleyin.
    • Hem resim parçası hem de video parçası mevcutsa resim parçasının seçilip seçilmeyeceğini belirlemek için TrackSelectionParameters.isPrioritizeImageOverVideoEnabled ekleyin. Varsayılan değer false'dir. Bu, video parçasının seçilmesine ö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 özelliği eklendi (#692).
    • MP3: Info üstbilgisine (Xing üstbilgisinin CBR eşdeğeri) sahip dosyalar için sabit bit hızı (CBR) aramasını kullanın. Daha önce Info başlığındaki arama tablosunu kullanıyorduk ancak bu, başlığı yok sayıp dosyanın CBR olduğunu varsaydığımız duruma göre daha az hassas arama yapılmasına neden oluyor.
    • MPEG2-TS: DTS, DTS-LBR ve DTS:X Profile2 desteği eklendi (#275).
    • TS tanımlayıcılarından ses türlerini ayıklayıp bunları rol işaretleriyle eşleyerek kullanıcıların daha bilinçli ses parçası seçimleri yapmasına olanak tanıma (#973).
  • Ses:
    • Sessizliği atlama algoritması, yumuşak ses geçişiyle iyileştirildi. Minimum sessizlik ve daha doğal sessizlik süreleri korundu (#7423).
    • Atlanan sessizliğin daha kesin bir şekilde raporlanması (#1035).
  • Video:
    • VideoFrameProcessor.Factory bağımsız değişkenini alan MediaCodecVideoRenderer kurucusunu, VideoSinkProvider bağımsız değişkenini alan bir kurucuyla değiştirin. Özel bir VideoFrameProcessor.Factory eklemek isteyen uygulamalar, özel VideoFrameProcessor.Factory kullanan bir CompositingVideoSinkProvider örneklendirebilir ve video alıcı sağlayıcısını MediaCodecVideoRenderer öğesine iletebilir.
  • Metin:
    • DefaultExtractorsFactory.setTextTrackTranscodingEnabled kullanırken Tried to marshall a Parcel that contained Binder objects hatasını çözmek için bitmap işaretlerinin serileştirilmesi düzeltildi (#836).
    • CEA-708: rowLock değeri yok sayılır. CEA-708-E S-2023 spesifikasyonu, akıştaki değerlerden bağımsız olarak rowLock ve columnLock değerlerinin her ikisinin de doğru olarak kabul edilmesi gerektiğini belirtir (columnLock desteği uygulanmadığından her zaman yanlış olduğu varsayılır).
  • Resim:
    • DASH küçük resimleri için destek eklendi. Izgara resimleri kırpılır ve tek tek küçük resimler, sunum zamanlarına yakın bir zamanda ImageOutput iletilir.
  • DRM:
    • DRM içeriğindeki "clear lead" şifrelenmemiş örnekleri, daha sonraki şifrelenmiş örneklerin anahtarları henüz hazır olmasa bile varsayılan olarak hemen oynatın. Oynatma konumu şifrelenmiş örneklere ulaştığında anahtarlar hâlâ hazır değilse bu durum, oynatma sırasında duraklamalara neden olabilir (ancak daha önce oynatma bu noktada hiç başlamamış olurdu). Bu davranış, MediaItem.DrmConfiguration.Builder.setPlayClearContentWithoutKey veya DefaultDrmSessionManager.Builder.setPlayClearSamplesWithoutKeys ile devre dışı bırakılabilir.
      • IMA uzantısı:
    • Uygun dosya uzantısına sahip olmayan DASH ve HLS reklamlarının oynatılamaması sorunu düzeltildi.
  • Oturum:
    • TV uygulamaları için çift tıklama algılama devre dışı bırakıldı (#962).
    • Yalnızca boş olmayan ekstralara sahip MediaItem.RequestMetadata öğesinin medya kumandaları ve oturumlar arasında iletilmemesi sorunu düzeltildi.
    • MediaLibrarySession.Builder sınıfına MediaLibraryService yerine yalnızca Context alan bir kurucu ekleyin.
  • HLS uzantısı:
    • HlsMediaPeriod öğesini pakete özel görünürlüğe düşürün. Bu tür, HLS paketinin dışından doğrudan bağımlı olmamalıdır.
    • Bir segmentin başına daha verimli bir şekilde atlama sorunu çözüldü (#1031).
  • Kod çözücü uzantıları (FFmpeg, VP9, AV1, MIDI vb.):
    • MIDI kod çözücü: SysEx etkinlik mesajlarını yoksayma (#710).
  • Test Yardımcı Programları:
    • TestPlayerRunHelper.playUntilPosition uygulamasında oynatmayı duraklatma. Test, oynatmayı oynatma durumunda tutar ancak test, onaylar 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 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ışındaki manuel aramaların, ofseti min/maxOffset değerine geri ayarlamaya devam etmesiyle ilgili sorun düzeltildi.
    • 3, 5, 6, 7 ve 8 kanallı OPUS ve VORBIS kanal düzenlerinin yanlış olması sorunu düzeltildi (#8396).
    • Canlı yayında sıfıra sarma işleminden sonra yapılan parça seçimlerinin, yayının varsayılan konumunda başlamasına neden olan sorun düzeltildi (#9347).
    • Yeni CmcdData.Factory örneklerinin, parça kaynaklarından bufferedDurationUs için negatif değerler alarak IllegalArgumentException hatasına yol açması sorunu düzeltildi (#888).
  • Transformer:
    • Yüksek çalışma hızı ayarlandığı için kodlayıcının yapılandırma sırasında hata vermesine neden olan sorun için geçici çözüm uygulandı.
  • Ayıklayıcılar:
    • JPEG hareketli fotoğraflardaki ikincil (oynatılamayan) HEVC parçalarını ROLE_FLAG_ALTERNATE olarak işaretleyerek daha yüksek çözünürlükleri nedeniyle oynatma için otomatik olarak seçilmelerini önleyin.
    • TS H264 akışları için yanlış animasyon karesi algılama sorunu düzeltildi (#864).
    • 47.721 saniyeden uzun TS akışlarının süre tahminini düzeltme (#855).
  • Ses:
    • Birden çok kez çağrıldığında SilenceSkippingAudioProcessor için EOS'un 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 cihaz sorunu için geçici çözüm eklendi (#693).
  • Meta veriler:
    • MediaMetadata alanının yalnızca büyük harfli anahtarlar içeren Vorbis yorumlarından doldurulmasıyla ilgili hata düzeltildi (#876).
    • Çok büyük ID3 çerçeveleri ayrıştırılırken OutOfMemoryError yakalanır. Bu sayede, oynatma tamamen başarısız olmak yerine etiket bilgileri olmadan devam edebilir.
  • DRM:
    • Sahte ClearKey https://default.url lisans URL'si için geçici çözüm, API 33+ sürümüne genişletildi (önceden geçici çözüm yalnızca API 33 sürümünde geçerliydi) (#837).
    • Oynatıcıya bağlı bir yüzey olmadan şifrelenmiş içerikten şifrelenmemiş içeriğe geçiş yaparken ERROR_DRM_SESSION_NOT_OPENED düzeltildi. Hata, şifrelenmemiş içeriği oynatmak için güvenli bir kod çözücünün yanlış kullanılmasından kaynaklanmıştır.
  • Oturum:
    • Özel anahtarları ve değerleri MediaMetadataCompat ile MediaMetadata.extras ve MediaMetadata.extras ile MediaMetadataCompat arasına yerleştirin (#756, #802).
    • Eski denetleyiciler için notifyChildrenChanged yayınlama sorunu düzeltildi (#644).
    • Bildirimin devre dışı bırakılmış setWhen zamanlayıcısı için negatif bir süre ayarlandığında bazı cihazlarda kilitlenmeye neden olan hata düzeltildi (#903).
    • IllegalStateExceptionİlk bildirim güncellemesi istendiğinde medya bildirim denetleyicisinin bağlantıyı tamamlamaması sorunu (#917) düzeltildi.
  • Kullanıcı arayüzü:
    • BottomSheetDialogFragment'te Materyal Tasarım ile kullanıldığında ileri ve geri sarma düğmelerinin görünmemesi sorunu düzeltildi (#511).
    • PlayerControlView uygulamasının ileri sarma düğmesindeki sayıların yanlış hizalanmasıyla ilgili sorun düzeltildi (#547).
  • DASH uzantısı:
    • DASH manifestinde Dolby için kanal sayısı 5 olarak "f800" ayrıştırılır (#688).
  • Kod çözücü uzantıları (FFmpeg, VP9, AV1, MIDI vb.):
    • MIDI: İleri sarma sırasında Program Değişikliği etkinliklerinin atlanması sorunu düzeltildi (#704).
    • FFmpeg 6.0'a geçiş yapın ve desteklenen NDK'yi r26b olarak güncelleyin (#707, #867).
  • Cast Uzantısı:
    • Yayın cihazında medya yükleme başarısız olduğunda 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 iletilen Throwable hakkında bilgi içermiyor. Bu nedenle, uygulamaların istenirse bu bilgileri manuel olarak eklemesi gerekir (Logger.appendThrowableString(String, Throwable) kullanarak).
    • Boş değer atanabilir genel tür parametrelerinin ve boş değer atanabilir dizi öğesi türlerinin boş değer atanabilir olarak algılanmadığı Kotlin uyumluluk sorunu düzeltildi. TrackSelectorResult ve SimpleDecoder yöntem parametreleri buna örnek verilebilir (#6792).
    • Oynatma geçici olarak durdurulduğunda (ör. geçici ses odağı kaybı nedeniyle) "oynat" düğmesini göstermek için Util.shouldShowPlayButton uygulamasındaki varsayılan kullanıcı arayüzünü ve bildirim davranışını değiştirin. Eski davranış, PlayerView.setShowPlayButtonIfPlaybackIsSuppressed(false) veya MediaSession.Builder.setShowPlayButtonIfPlaybackIsSuppressed(false) kullanılarak sürdürülebilir (#11213).
    • https://issuetracker.google.com/251172715 sorununu düzeltmek için androidx.annotation:annotation-experimental sürümü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 şekilde tanımlanmamasından kaynaklanan AC4 akışlarındaki arama sorunları düzeltildi (#11000).
    • Bu özellik ExoPlayer.Builder.setSuppressPlaybackOnUnsuitableOutput üzerinden etkinleştirildiğinde uygun olmayan ses çıkış cihazlarında (ör. Wear OS cihazlardaki yerleşik hoparlör) oynatmayı engelleme özelliği eklendi. Uygun ses çıkışı yokken oynatma denenirse veya oynatma sırasında tüm uygun çıkışların bağlantısı kesilirse oynatma 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 ekleyin.
    • Player.replaceMediaItem(s) aracılığıyla kitaplık tarafından sağlanan tüm MediaSource sınıfları için MediaItem güncellemelerine izin verin (#33, #9978).
    • MimeTypes.TEXT_EXOPLAYER_CUES adlı öğeyi MimeTypes.APPLICATION_MEDIA3_CUES olarak yeniden adlandırın.
    • Tüm PNG dosyasını tek bir örnek olarak TrackOutput içine gönderen ve okuyan PngExtractor ekleyin.
    • SequenceableLoader arayüzündeki SequenceableLoader.continueLoading(long) yöntemi SequenceableLoader.continueLoading(LoadingInfo loadingInfo) olarak geliştirildi. LoadingInfo, mevcut playbackPositionUs parametresine ek olarak playbackSpeed ve lastRebufferRealtimeMs gibi ek parametreler içerir.
    • ChunkSource arayüzündeki ChunkSource.getNextChunk(long, long, List, ChunkHolder) yöntemi ChunkSource.getNextChunk(LoadingInfo, long, List, ChunkHolder) olarak iyileştirildi.
    • Ortak Medya İstemci Verileri (CMCD) günlüğüne ek alanlar ekleyin: arabellek yetersizliği (bs), son tarih (dl), oynatma hızı (pr) ve başlatma (su) (#8699).
    • ColorInfo için luma ve kroma bit derinliği ekleyin (#491).
    • Ortak Medya İstemci Verileri (CMCD) günlüğüne ek alanlar ekleyin: sonraki nesne isteği (nor) ve sonraki aralık isteği (nrr) (#8699).
    • Sorgu parametrelerini kullanarak Common Media Client Data (CMCD) verilerini iletme işlevi eklendi (#553).
    • ExperimentalBandwidthMeter uygulamasında ConcurrentModificationException sorununu düzeltin (#612).
    • CompositeMediaSource.getMediaTimeForChildMediaTime öğesine MediaPeriodId parametresini ekleyin.
    • ConcatenatingMediaSource2 içinde ClippingMediaSource (ve dönem/pencere zamanı ofsetleri olan diğer kaynaklar) desteği (#11226).
    • BaseRenderer.onStreamChanged() işlevini, MediaPeriodId bağımsız değişkenini de alacak şekilde değiştirin.
  • Transformer:
    • 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 sabitlerini kaldırın. Bunun yerine Composition.HdrMode ve ilişkili sabitlerini kullanın.
    • Döndürme sorunlarını düzeltmek için OverlaySettings basitleştirin.
    • SampleConsumer.queueInputBitmap adlı öğenin frameRate ve durationUs parametreleri TimestampIterator olarak değiştirildi.
  • Kanal seçimi:
    • Sorunsuz olmayan uyarlamaya açıkça izin vermek veya izin vermemek için DefaultTrackSelector.Parameters.allowAudioNonSeamlessAdaptiveness ekleyin. Varsayılan ayar, mevcut 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ğlayın (#7909).
    • rotationDegrees belirlenirken yapılan yazım hatasını düzeltin. projectionPosePitch, projectionPoseRoll olarak değiştirildi (#461).
    • Extractor örneklerinin doğrudan instanceof ile incelenebileceği varsayımını kaldırın. Bir Extractor öğesinin uygulama ayrıntılarına çalışma zamanı erişimi istiyorsanız önce Extractor.getUnderlyingInstance öğesini çağırmanız gerekir.
    • BmpExtractor ekleyin.
    • WebpExtractor ekleyin.
    • HeifExtractor ekleyin.
    • Mp4Extractor için QuickTime klasik desteği ekleyin.
  • Ses:
    • MP4 ve Matroska'da 24/32 bit big-endian PCM desteği eklendi ve MP4'te lpcm için PCM kodlaması ayrıştırıldı.
    • MP4'te Vorbis ses çıkarma desteği eklendi.
    • Alıcının, biçim için sağlayabileceği boşaltma desteği düzeyini DefaultAudioOffloadSupportProvider aracılığıyla alan AudioSink.getFormatOffloadSupport(Format) ekleyin. isFormatSupported, isGaplessSupported ve isSpeedChangeSupported içeren yeni AudioOffloadSupport değerini döndürür.
    • Ses havuzundaki boşaltma yapılandırmasının ayarlandığı AudioSink.setOffloadMode() ekleyin. Varsayılan değer: AudioSink.OFFLOAD_MODE_DISABLED.
    • Kullanılmayan uygulamaları kaldırma özelliği, TrackSelectionParameters uygulamasında setAudioOffloadPreference üzerinden etkinleştirilebilir. Tercih etkinleştirme olarak ayarlanırsa, cihaz biçim için boşaltmayı desteklerse 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 bu parça yalnızca biçimi boşaltmada destekleniyorsa seçilir. Yük devretmede desteklenen ses parçası yoksa parça seçilmez.
    • Parça geçişinden sonra oynatma konumu sorunu nedeniyle API düzeyi 33'ten önceki sürümlerde boşluksuz oynatma desteği devre dışı bırakıldı.
    • enableOffload parametresini DefaultRenderersFactory.buildAudioSink yöntem imzasından kaldırın.
    • DefaultAudioSink.Builder.setOffloadMode yöntemini kaldırın.
    • intdef değerini kaldırın DefaultAudioSink.OffloadMode.OFFLOAD_MODE_ENABLED_GAPLESS_DISABLED.
    • Boşaltma sırasında Opus boşluksuz meta verileri için destek ekleyin.
    • İlk yazma işleminde başarısız olursa boşaltmayı devre dışı bırakarak oluşturucu kurtarmaya izin verilir (#627).
    • Yalnızca ses aktarımlı oynatma için Aktarım Planlama'yı varsayılan olarak etkinleştirin.
    • ExoPlayer.experimentalSetOffloadSchedulingEnabled ve AudioOffloadListener.onExperimentalOffloadSchedulingEnabledChanged silinsin mi?
    • onExperimentalSleepingForOffloadChanged, onSleepingForOffloadChanged olarak; 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 öğelerine onAudioTrackInitialized ve onAudioTrackReleased geri çağırmaları ekleyin.
    • DTS Express ses arabelleği yetersizliği sorunu düzeltildi (#650).
    • E-AC3-JOC için özellik kontrolünün IllegalArgumentException hatası vermesine neden olan hata düzeltildi (#677).
  • Video:
    • MediaCodecVideoRenderer uygulamasının özel bir VideoFrameProcessor.Factory kullanmasına izin verin.
    • Ses akışı negatif zaman damgalarıyla başladığında ilk karenin oluşturulamamasına neden olan hata düzeltildi (#291).
  • Metin:
    • ExoplayerCuesDecoder öğesini kaldır sampleMimeType = application/x-media3-cues içeren metin parçaları artık SubtitleDecoder örneğine gerek olmadan doğrudan TextRenderer tarafından işlenir.
  • Meta veriler:
    • Uygulamanın her durumda null döndürmesi gerektiğinden MetadataDecoder.decode artık "yalnızca kod çözme" örnekleri için çağrılmayacak.
  • Etki:
    • VideoFrameProcessor.queueInputBitmap(Bitmap, Iterator<Long>) ekleyin Bitmap girişi zaman damgasına göre sıraya ekleniyor.
    • VideoFrameProcessor.registerInputStream() değerini engelleyici olmayacak şekilde değiştirin. Uygulamalar VideoFrameProcessor.Listener#onInputStreamRegistered() yöntemini uygulamalıdır.
    • VideoFrameProcessor.queueInputBitmap adlı öğenin frameRate ve durationUs parametreleri TimestampIterator olarak değiştirildi.
  • IMA uzantısı:
    • Oynatma listesindeki ilk öğe olmayan çok dönemli bir DASH canlı yayınının istisna oluşturmasına neden olan hata düzeltildi (#571).
    • AdsLoader.destroy() yöntemini çağırmadan önce StreamManager'ı serbest bırakın
    • IMA SDK sürümü 3.31.0'a yükseltildi.
  • Oturum:
    • DefaultMediaNotificationProvider (#167) içinde bildirimler ön plan hizmeti davranışını FOREGROUND_SERVICE_IMMEDIATE olarak ayarlayın.
    • Samsung cihazlarda desteği sonlandırılmış API ile ilgili sorunları önlemek için API 31'in üzerinde yalnızca android.media.session.MediaSession.setMediaButtonBroadcastReceiver() kullanın (#167).
    • Kullanılabilir komutları ve bildirimi ve platform oturumunu doldurmak için kullanılan özel düzeni ayarlamak üzere medya bildirimi denetleyicisini proxy olarak kullanın.
    • MediaSessionService.onStartCommand() tarafından alınan medya düğmesi etkinliklerini platform oturumuna ve tekrar Media3'e yönlendirmek yerine Media3 içinde dönüştürün. Bu sayede, arayan denetleyici her zaman medya bildirimi denetleyicisi olur ve uygulamalar, desteklenen tüm API düzeylerinde bildirimden gelen aramaları aynı şekilde kolayca tanıyabilir.
    • Eski bir MediaSessionCompat cihazına bağlandığında MediaController.getCurrentPosition() cihazının ilerlememesine neden olan hata düzeltildi.
    • Kolaylık için MediaLibrarySession.getSubscribedControllers(mediaId) ekleyin.
    • Denetleyicinin abone olduğu üst kimliğin kullanılabilirliğini onaylamak için MediaLibrarySession.Callback.onSubscribe() öğesini geçersiz kılın. İşlem başarılı olursa abonelik kabul edilir ve tarayıcıyı bilgilendirmek için hemen notifyChildrenChanged() çağrılır (#561).
    • Automotive OS için oturum demosu modülü ekleyin ve Android Auto için oturum demosunu etkinleştirin.
    • Medya bildirim denetleyicisi için COMMAND_GET_TIMELINE kullanılamıyorsa çerçeve oturumunun sırasını ayarlamayın. Android Auto, çerçeve oturumundan okuma yapan istemci denetleyicisi olarak kullanıldığında Android Auto kullanıcı arayüzündeki queue düğmesi gösterilmez (#339).
    • SimpleBitmapLoader yerine varsayılan olarak DataSourceBitmapLoader kullanın (#271, #327).
    • Uygulamaların varsayılan medya düğmesi etkinlik işlemeyi geçersiz kılmasına olanak tanıyan MediaSession.Callback.onMediaButtonEvent(Intent) ekleyin.
  • Kullanıcı arayüzü:
    • Kullanıcının uygun bir ses çıkışı (ör. Bluetooth kulaklık) bağlamasına olanak tanıyan bir sistem iletişim kutusu başlatarak Player.PLAYBACK_SUPPRESSION_REASON_UNSUITABLE_AUDIO_OUTPUT nedeniyle oynatmanın engellenmesini yöneten Wear OS cihazlar için bir Player.Listener uygulaması ekleyin. Yapılandırılabilir bir zaman aşımı süresi içinde (varsayılan olarak 5 dakika) uygun bir cihaz bağlanırsa dinleyici, oynatmayı otomatik olarak devam ettirir.
  • İndirilenler:
    • Android 14 uyumluluğu için DownloadService uygulamasında "veri senkronizasyonu" ön plan hizmet türünü beyan edin. Uygulama bu hizmeti kullanırken manifest dosyasına dataSync öğesini foregroundServiceType olarak eklemeli ve FOREGROUND_SERVICE_DATA_SYNC iznini eklemelidir (#11239).
  • HLS uzantısı:
    • HLS canlı oynatma listesini, son yükleme tamamlanma zamanı yerine son yükleme başlangıç zamanından hesaplanan bir aralıkla yenileyin (#663).
  • DASH uzantısı:
    • Segment şablonu URL'sinde aynı DASH tanımlayıcısından birden fazla kullanılmasına izin verin.
    • Ayıklama sırasında altyazıları ayrıştırmak için deneysel destek ekleyin. Bu, altyazı segmentleri arasında geçiş yaparken titremeyi çözme de dahil olmak üzere, çakışan altyazıları birleştirme konusunda daha iyi destek sunar. Bu özelliği DashMediaSource.Factory.experimentalParseSubtitlesDuringExtraction() (#288) kullanarak etkinleştirebilirsiniz.
  • RTSP uzantısı:
    • TCP'ye geri dönüldüğünde IndexOutOfBoundsException hatasına veya bazı durumlarda oynatmanın takılmasına neden olabilen yarışma durumu düzeltildi.
    • RtspMediaPeriod yükleme durumu döndürülürken RTSP kurulumundaki durum kontrolü (#577).
    • Options yanıtı genel başlığındaki özel Rtsp istek yöntemlerini yoksayma (#613).
    • Etkin tutma RTSP seçenekleri istekleri gönderme zaman aralığında RTSP kurulum yanıtı zaman aşımı değerini kullanma (#662).
  • Kod çözücü uzantıları (FFmpeg, VP9, AV1, MIDI vb.):
    • Ses sentezlemek için Jsyn kitaplığını kullanarak standart MIDI dosyalarının oynatılmasını destekleyen MIDI kod çözücü modülünü yayınlayın.
    • Sunulması gerekmeyen çıkış arabelleklerini doğrudan işaretlemek için DecoderOutputBuffer.shouldBeSkipped ekleyin. Bu, desteği sonlandırılacak olan C.BUFFER_FLAG_DECODE_ONLY yerine tercih edilir.
    • Kod çözücülerin başlangıç zamanından önce yalnızca kod çözme örneklerini bırakmasına izin vermek için Decoder.setOutputStartTimeUs ve SimpleDecoder.isAtLeastOutputStartTimeUs ekleyin. Bu, desteği sonlandırılacak olan Buffer.isDecodeOnly yerine tercih edilmelidir.
    • MIDI kod çözücü yapısının Maven deposunda yayınlanmasıyla ilgili hata düzeltildi. Öğe, media3-exoplayer-midi (#734) olarak yeniden adlandırıldı.
  • Leanback uzantısı:
    • Bir yüzeyin devre dışı bırakılmasının Leanback kodunda ArithmeticException hatasına neden olabileceği hata düzeltildi (#617).
  • Test Yardımcı Programları:
    • TestExoPlayerBuilder ve FakeClock'yi Espresso kullanıcı arayüzü testleri ve Compose kullanıcı arayüzü testleriyle uyumlu hale getirme Bu sayede, Espresso veya Compose görünüm etkileşimleri sırasında oynatmanın rastgele ilerlemesine neden olan bir hata düzeltildi.
  • Desteği sonlandırılan simgeleri kaldırın:
    • TransformationRequest.Builder.setEnableRequestSdrToneMapping(boolean) ve TransformationRequest.Builder.experimental_setEnableHdrEditing(boolean) araçlarını kaldırın. Bunun yerine Composition.Builder.setHdrMode(int) kullanın ve Composition değerini Transformer.start(Composition, String) öğesine iletin.
    • Desteği sonlandırılan DownloadNotificationHelper.buildProgressNotification yöntemini kaldırın ve 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ünü kullanın.

Sürüm 1.2.0-beta01

19 Ekim 2023

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

Sürüm 1.2.0-alpha02

29 Eylül 2023

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

Sürüm 1.2.0-alpha01

17 Ağustos 2023

1.2.0 kararlı sürümünü 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ığı tüm modüllerden kaldırıldı (#499).
  • ExoPlayer:
    • PlaybackStatsListener uygulamasında, oynatma listesi temizlendikten sonra sahte PlaybackStats oluşturulması sorunu düzeltildi.
    • Ortak Medya İstemci Verileri (CMCD) günlüğüne ek alanlar ekleyin: akış biçimi (sf), akış türü (st), sürüm (v), en yüksek bit hızı (tb), nesne süresi (d), ölçülen işleme hızı (mtp) ve nesne türü (ot) (#8699).
  • Ses:
    • Çok kısa dosyalar oynatılırken Player.getState() durumunun hiçbir zaman STATE_ENDED durumuna geçmemesine neden olan hata düzeltildi (#538).
  • Ses Boşaltma:
    • RFC 7845'e uygun olarak, boşaltılmış Opus oynatma için bit akışına Ogg kimlik başlığı ve yorum başlığı sayfalarını ekleyin.
  • Video:
    • H.265/HEVC: SPS kısa ve uzun vadeli referans resim bilgilerini ayrıştırma sorunu düzeltildi.
  • Metin:
    • CEA-608: İşaret kısaltma mantığı, yalnızca görünür metni dikkate alacak şekilde değiştirildi. Daha önce, işaret uzunluğu 32 karakterle sınırlandırılırken girinti ve sekme ofseti dahil ediliyordu (bu, spesifikasyona göre teknik olarak doğruydu) (#11019).
  • IMA uzantısı:
    • IMA SDK sürümü 3.30.3'e yükseltildi.
  • Oturum:
    • Denetleyicinin durumuna özel düzen ekleyin ve buna erişmek için bir alıcı sağlayın. Özel düzen değiştiğinde MediaController.Listener.onCustomLayoutChanged çağrılır. Farklı Media3 denetleyicilerine farklı özel düzenler göndermek isteyen uygulamalar, bağlantı tamamlandığında özel düzenin denetleyici tarafından kullanılabilmesi için MediaSession.Callback.onConnect içinde AcceptedResultBuilder kullanarak bunu yapabilir.
    • MediaLibraryServiceLegacyStub, bunu desteklemeyen bir Result'e hata gönderdiğinde UnsupportedOperationException hatasının oluştuğu durumlar düzeltildi (#78).
    • Hem eski komutlar (COMMAND_ADJUST_DEVICE_VOLUME ve COMMAND_SET_DEVICE_VOLUME) hem de yeni komutlar (COMMAND_ADJUST_DEVICE_VOLUME_WITH_FLAGS ve COMMAND_SET_DEVICE_VOLUME_WITH_FLAGS) aracılığıyla volumeControlType değerini belirleyerek PlayerWrapper aracının VolumeProviderCompat oluşturma şekli düzeltildi (#554).

Sürüm 1.1.0

5 Temmuz 2023

  • Ortak Kitaplık:
    • Uygun olmayan ses rotası için engelleme nedeni ekleyin ve hazır olduğunda oynatın. Çok uzun süre engellenme nedenini değiştirin. (#15).
    • Player'a komut ekleme:
      • COMMAND_GET_METADATA
      • COMMAND_SET_PLAYLIST_METADATA
      • COMMAND_SET_DEVICE_VOLUME_WITH_FLAGS
      • COMMAND_ADJUST_DEVICE_VOLUME_WITH_FLAGS
    • Kullanıcıların ses düzeyi işaretlerini belirtebilmesi için Player'a aşırı yüklenmiş yöntemler ekleyin:
      • void setDeviceVolume(int, int)
      • void increaseDeviceVolume(int)
      • void decreaseDeviceVolume(int)
      • void setDeviceMuted(boolean, int)
    • DeviceInfo için Builder eklendi ve mevcut kurucunun desteği sonlandırıldı.
    • Uzaktan oynatma için yönlendirme denetleyici kimliğini belirtmek üzere DeviceInfo.routingControllerId ekleyin.
    • Aynı konumda öğe ekleme ve kaldırma için kısayol olarak Player.replaceMediaItem(s) ekleyin (#8046).
  • ExoPlayer:
    • ExoPlayer'ın cihaz ses seviyesi yöntemlerini kontrol etmesine yalnızca açıkça etkinleştirildiğinde izin verin. ExoPlayer.Builder.setDeviceVolumeControlEnabled kullanarak şunlara erişebilirsiniz:
      • getDeviceVolume()
      • isDeviceMuted()
      • setDeviceVolume(int) ve setDeviceVolume(int, int)
      • increaseDeviceVolume(int) ve increaseDeviceVolume(int, int)
      • decreaseDeviceVolume(int) ve decreaseDeviceVolume(int, int)
    • MediaSource içindeki kullanılabilir parça türlerini filtrelemeye olanak tanıyan FilteringMediaSource ekleyin.
    • DASH, HLS ve SmoothStreaming gibi uyarlanabilir akış biçimlerinin giden isteklerine Ortak Medya İstemci Verileri'ni (CMCD) dahil etme desteği eklendi. br, bl, cid, rtp ve sid alanları dahil edildi (#8699). API yapısı ve API yöntemleri:
      • CMCD günlüğü 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 kaydedilen anahtarları filtrelemek için CmcdConfiguration.RequestConfig.isKeyAllowed(String key) değerini geçersiz kılın.
      • Özel tuş kaydını etkinleştirmek için CmcdConfiguration.RequestConfig.getCustomData() ayarını geçersiz kılın.
    • Demo uygulamasını ö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.
    • SampleQueue öğesini, sourceId değerini int yerine long olarak depolayacak şekilde güncelleyin. Bu işlem, herkese açık yöntemlerin (SampleQueue.sourceId ve SampleQueue.peekSourceId) imzalarını değiştirir.
    • LoadControl yöntemleri shouldStartPlayback ve onTracksSelected'ye, bu yöntemlerin ilgili MediaPeriod ile ilişkilendirilmesine olanak tanıyan parametreler eklendi.
    • ServerSideAdInsertionMediaSource.setAdPlaybackStates(Map<Object, AdPlaybackState>) imzasını, haritada anahtar olarak kullanılan UID'leri içeren dönemleri içeren bir zaman çizelgesi parametresi ekleyerek değiştirin. Bu, çok dönemli canlı yayınlarda eşzamanlılık sorunlarını önlemek için gereklidir.
    • EventDispatcher.withParameters(int windowIndex, @Nullable MediaPeriodId mediaPeriodId, long mediaTimeOffsetMs) ve BaseMediaSource.createEventDispatcher(..., long mediaTimeOffsetMs)'in desteği sonlandırıldı. Bunun yerine, yöntemlerin mediaTimeOffsetUs içermeyen varyantı çağrılabilir. Desteği sonlandırılan varyantlarda bile, dağıtıcı tarafından gönderilen MediaLoadData nesnelerinin startTimeUs ve endTimeUs değerlerine artık ofset eklenmediğini unutmayın.
    • ExoTrackSelection.blacklist öğesini excludeTrack, isBlacklisted öğesini ise isTrackExcluded olarak yeniden adlandırın.
    • Boş bir oynatma listesinde çağrıldığında ExoPlayer.setMediaItem(s) ve addMediaItem(s) arasındaki tutarsız davranışı düzeltin.
  • Transformer:
    • Transformer.Builder.setMediaSourceFactory(MediaSource.Factory) öğesini kaldır Bunun yerine ExoPlayerAssetLoader.Factory(MediaSource.Factory) ve Transformer.Builder.setAssetLoaderFactory(AssetLoader.Factory) politikalarını kullanın.
    • Transformer.startTransformation(MediaItem, ParcelFileDescriptor) öğesini kaldır
    • Giriş karesinin işlenmesi beklenirken video akışının sonu işaretlendiğinde dönüşümün takılmasına (çoğullayıcı zaman aşımına neden olur) yol açan hata düzeltildi.
    • Desteği genişletmek için findDecoder/EncoderForFormat yardımcı programlarını kullanmak yerine MediaCodecList aracılığıyla codec'leri sorgulayın.
    • Bazı cihazlarda çalışmadığı için DefaultEncoderFactory uygulamasındaki B-frame yapılandırmasını kaldırın.
  • Parça seçimi:
    • Varsayılan olarak devre dışı olan DefaultTrackSelector.Parameters.allowInvalidateSelectionsForRendererCapabilitiesChange öğesini ekleyin. Etkinleştirildiğinde DefaultTrackSelector, oluşturucu özellikleri değiştiğinde 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 öğesinin, emsg atomundan meta veri örnek süresiyle yanlış bir zaman damgası ofseti başlatması sorunu düzeltildi (#356).
  • Ses:
    • Tünel oluşturma etkinleştirildiğinde ve AudioProcessors etkin olduğunda (ör. boşluksuz kırpma için) bazı oynatma işlemlerinin başarısız olmasına neden olan hata düzeltildi (#10847).
    • Doğrudan oynatmalarda (boşaltma) Opus karelerini Ogg paketlerine kapsülleyin.
    • Yük devretme planlamasıyla uyku sırasında mevcut konumu tahmin etme
    • Oynatıcının yaşam döngüsünün sonunda kaynakları serbest bırakmak için Renderer.release() ve AudioSink.release() yöntemlerini ekleyin.
    • DefaultAudioSink uygulamasında ses özelliklerindeki değişiklikleri dinleyin. DefaultAudioSink oluşturucusuna gerekli bir context parametresi ekleyin. DefaultAudioSink, bu parametreyle AudioCapabilitiesReceiver için dinleyici olarak kaydolur ve özellik değişikliği bildirildiğinde audioCapabilities özelliğini günceller.
    • Ses özellikleri değişikliklerini onAudioCapabilitiesChanged arayüzündeki yeni bir etkinlik AudioSink.Listener ve onRendererCapabilitiesChanged etkinliklerini tetikleyen yeni bir RendererCapabilities.Listener arayüzü aracılığıyla yayma.
    • Ses kanallarına ölçeklendirme/karıştırma uygulamak için ChannelMixingAudioProcessor ekleyin.
    • Ses özellikleri değiştikten sonra baypas modu mümkün olduğunda ses kod çözücüyü silmek için DecoderDiscardReasons öğesine yeni tam sayı değeri DISCARD_REASON_AUDIO_BYPASS_POSSIBLE ekleyin.
    • DTS Express ve DTS:X için doğrudan oynatma desteği eklendi (#335).
  • Video:
    • Oluşturucu devre dışı bırakıldığında MediaCodecVideoRenderer öğesinin genişliği ve yüksekliği 0 olan bir VideoSize bildirmesini sağlayın. Player.getVideoSize() değiştiğinde Player.Listener.onVideoSizeChanged buna göre çağrılır. Bu değişiklikle birlikte, Player.getCurrentTracks video desteklemediğinde veya desteklenen video parçasının boyutu henüz belirlenmediğinde ExoPlayer'ın MediaCodecVideoRenderer ile video boyutunun genişliği ve yüksekliği 0 olur.
  • DRM:
    • DefaultDrmSession üzerinde, DRM paketinin dışından çağrılması beklenmeyen, yalnızca dahili kullanıma yönelik birkaç yöntemin görünürlüğünü azaltın:
      • void onMediaDrmEvent(int)
      • void provision()
      • void onProvisionCompleted()
      • onProvisionError(Exception, boolean)
  • Muxer:
    • MP4 kapsayıcı dosyası oluşturmak için kullanılabilecek yeni bir muxer kitaplığı ekleyin.
  • IMA uzantısı:
    • DAI için çok dönemli canlı DASH yayınlarını etkinleştirme Mevcut uygulamanın canlı yayınlarda ileri/geri sarmayı henüz desteklemediğini lütfen unutmayın (#10912).
    • Ardışık zaman çizelgelerinde hesaplanan içerik konumu biraz farklı olduğu için canlı yayınlara yeni bir reklam grubunun eklenmesine neden olan hata düzeltildi.
  • Oturum:
    • Şu anda bir Player yöntemini çağıran denetleyici hakkında bilgi edinmek için MediaSession.getControllerForCurrentRequest yardımcı yöntemini ekleyin.
    • Uygulamaların, örneğin bir Bluetooth mikrofonlu kulaklık tarafından gönderilen medya düğmesi etkinlikleriyle oynatmayı devam ettirmesini sağlamak için androidx.media3.session.MediaButtonReceiver ekleyin (#167).
    • LocalConfiguration (ör. URI) varsa istenen MediaItems değerinin Player değerine aktarılmasına izin vermek için MediaSession.Callback.onAddMediaItems öğesine varsayılan uygulama ekleyin (#282).
    • Android 12 ve önceki sürümlerde varsayılan olarak kompakt medya bildirimi görünümüne "önceki öğeye git" ve "sonraki öğeye git" komut düğmeleri eklendi (#410).
    • LocalConfiguration (ör. URI) varsa istenen MediaItems değerinin Player değerine aktarılmasına izin vermek için MediaSession.Callback.onAddMediaItems öğesine varsayılan uygulama ekleyin (#282).
    • Android 12 ve önceki sürümlerde varsayılan olarak kompakt medya bildirimi görünümüne "önceki öğeye git" ve "sonraki öğeye git" komut düğmeleri eklendi (#410).
  • Kullanıcı arayüzü:
    • Oynat/duraklat düğmesiyle özel kullanıcı arayüzü öğeleri yazmak için shouldShowPlayButton ve handlePlayPauseButtonAction yardımcı yöntemlerini ekleyin.
  • RTSP uzantısı:
    • MPEG4-LATM için, Describe Response SDP mesajında yoksa varsayılan profile-level-id değerini kullanın (#302).
    • DESCRIBE yanıt başlığında varsa RTSP oturumundan göreli yol çözümü için temel URI kullanın (#11160).
  • DASH uzantısı:
    • Çok dönemli DASH akışları için MediaLoadData.startTimeMs ve MediaLoadData.endTimeMs'den medya zaman farkını kaldırın.
    • Çok dönemli canlı Dash medya kaynağının yeniden hazırlanması sırasında IndexOutOfBoundsException hatasının oluşmasına neden olan hata düzeltildi (#10838).
  • HLS uzantısı:
    • Yükleme iş parçacığının TimestampAdjuster başlatılmasını beklemesi için bir zaman aşımı süresi ayarlamak üzere HlsMediaSource.Factory.setTimestampAdjusterInitializationTimeoutMs(long) ekleyin. Başlatma işlemi zaman aşımından önce tamamlanmazsa oynatmanın sonsuza kadar duraklamasını önlemek için PlaybackException hatası verilir. Zaman aşımı varsayılan olarak sıfıra ayarlanır (#323).
  • Test Yardımcı Programları:
    • DataSourceContractTest uygulamasında URI şemasının büyük/küçük harfe duyarlı olup olmadığını kontrol edin.
  • Desteği sonlandırılan simgeleri kaldırın:
    • DefaultAudioSink yapıcılarını kaldırın, bunun yerine DefaultAudioSink.Builder kullanın.
    • HlsMasterPlaylist kaldırılacak, bunun yerine HlsMultivariantPlaylist kullanılacak.
    • Player.stop(boolean) öğesini kaldır Bunun yerine Player.stop() ve Player.clearMediaItems() (reset, true ise) kullanın.
    • Desteği sonlandırılan iki SimpleCache oluşturucuyu kaldırın. Daha iyi performans için bunun yerine DatabaseProvider alan ve desteği sonlandırılmamış bir oluşturucu kullanın.
    • DefaultBandwidthMeter oluşturucusunu kaldırın, bunun yerine DefaultBandwidthMeter.Builder kullanın.
    • DefaultDrmSessionManager oluşturucularını kaldırın, bunun yerine DefaultDrmSessionManager.Builder kullanın.
    • Kullanımdan kaldırılan iki HttpDataSource.InvalidResponseCodeException oluşturucuyu kaldırın. Hata günlük kaydını iyileştirmek için ek alanları(cause, responseBody) kabul eden, kullanımdan kaldırılmamış bir oluşturucu kullanın.
    • DownloadHelper.forProgressive, DownloadHelper.forHls, DownloadHelper.forDash ve DownloadHelper.forSmoothStreaming politikalarını kaldırın, bunun yerine DownloadHelper.forMediaItem politikasını kullanın.
    • Desteği sonlandırılan DownloadService oluşturucuyu kaldırın, channelDescriptionResourceId parametresi sağlama seçeneğini içeren ve desteği sonlandırılmamış bir oluşturucu kullanın.
    • Karakter kümeleri için desteği sonlandırılmış dize sabitlerini (ASCII_NAME, UTF8_NAME, ISO88591_NAME, UTF16_NAME ve UTF16LE_NAME) kaldırın. Bunun yerine kotlin.text paketindeki Kotlin karakter kümelerini, java.nio.charset.StandardCharsets veya com.google.common.base.Charsets kullanın.
    • Desteği sonlandırılan WorkManagerScheduler kurucusunu kaldırın ve bunun yerine Context parametresi sağlama seçeneğini içeren, desteği sonlandırılmamış bir kurucu kullanın.
    • Format sınıfını örneklendirmek için kullanılan, desteği sonlandırılmış createVideoSampleFormat, createAudioSampleFormat, createContainerFormat ve createSampleFormat yöntemleri kaldırıldı. Bunun yerine Format örnekleri oluşturmak için Format.Builder kullanın.
    • Desteği sonlandırılan copyWithMaxInputSize, copyWithSubsampleOffsetUs, copyWithLabel, copyWithManifestFormatInfo, copyWithGaplessInfo, copyWithFrameRate, copyWithDrmInitData, copyWithMetadata, copyWithBitrate ve copyWithVideoSize yöntemlerini kaldırın, bunun yerine Format.buildUpon() ve ayarlayıcı yöntemlerini kullanın.
    • Desteği sonlandırılan ExoPlayer.retry() politikasını kaldırın ve bunun yerine prepare() politikasını kullanın.
    • Kullanımdan kaldı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şturucusunu kaldırın, bunun yerine OfflineLicenseHelper(DefaultDrmSessionManager, DrmSessionEventListener.EventDispatcher) kullanın.
    • Desteği sonlandırılan DownloadManager oluşturucusunu kaldırın, bunun yerine Executor alan 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şturucusunu kaldırın, bunun yerine OfflineLicenseHelper(DefaultDrmSessionManager, DrmSessionEventListener.EventDispatcher) kullanın.
    • Desteği sonlandırılan dört AnalyticsListener yöntemi kaldırıldı:
      • 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.
    • Desteği sonlandırılan Player.Listener.onSeekProcessed ve AnalyticsListener.onSeekProcessed işlemlerini kaldırın, bunun yerine onPositionDiscontinuity işlemini DISCONTINUITY_REASON_SEEK ile kullanın.
    • ExoPlayer.setHandleWakeLock(boolean) politikasını kaldırın, bunun yerine setWakeMode(int) politikasını kullanın.
    • Desteği sonlandırılan DefaultLoadControl.Builder.createDefaultLoadControl() politikasını kaldırın ve bunun yerine build() politikasını kullanın.
    • Desteği sonlandırılan MediaItem.PlaybackProperties politikasını kaldırın, bunun yerine MediaItem.LocalConfiguration politikasını 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ünü kullanın.

Sürüm 1.1.0-beta01

7 Haziran 2023

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

Sürüm 1.1.0-alpha01

10 Mayıs 2023

1.1.0 kararlı sürümünü 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 commit'leri 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çerir:

  • Çekirdek kitaplık:
    • Buffer, C.BUFFER_FLAG_LAST_SAMPLE işaretini içeriyorsa bunu belirten Buffer.isLastSample() ekleyin.
    • Kare içeren son örnek, "akışın sonu" örneği okunmadan sıradan çıkarılırsa son karenin oluşturulmamasına neden olan sorun düzeltildi. (#11079).
  • Ayıklayıcılar:
    • RTSP ve MP4 ayıklayıcılar tarafından kullanılan ayrıştırma mantığını yeniden kullanarak MPEG-TS dosyalarındaki H.265 SPS ayrıştırma sorunu düzeltildi (#303).
  • Metin:
    • SSA: Bayt sırası işaretiyle başlıyorlarsa UTF-16 dosyaları için destek ekleyin (#319).
  • Oturum:
    • MediaController, işlemlerini güncelleyen eski bir MediaSessionCompat cihazına bağlandığında kullanılabilir komutlarını güncellememesiyle ilgili sorun düzeltildi.
    • API 30'da sistem kullanıcı arayüzünden params.isRecent == true ile Callback.onGetLibraryRoot için yapılan bir çağrıda MediaLibraryService öğesinin null değerini döndürmesini engelleyen hata düzeltildi (#355).
    • MediaSessionService veya MediaLibraryService bellek sızıntısını düzeltme (#346).
    • MediaSession içinde birleştirilmiş Timeline ve konum güncellemesinin, MediaController tarafından IllegalStateException hatası verilmesine neden olabileceği hata düzeltildi.

Sürüm 1.0.1

18 Nisan 2023

androidx.media3:media3-*:1.0.1 yayınlandı. 1.0.1 sürümü bu kayıtları içerir.

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

  • Çekirdek kitaplık:
    • Varsayılan konuma sararken hedef canlı yayın geçersiz kılma işlemini sıfırlama (#11051).
    • Medyadaki boş örnek akışların oynatmanın takılmasına neden olabileceği hata düzeltildi.
  • Oturum:
    • Eski bir MediaSessionCompat tarafından yayınlanan birden fazla aynı sıra öğesinin MediaController içinde bir istisnaya neden olduğu hata düzeltildi (#290).
    • Eski MediaControllerCompat.Callback.onSessionEvent için eksik olan MediaSession.broadcastCustomCommand yönlendirmesini ekleyin (#293).
    • MediaSession.setPlayer çağrıldığında kullanılabilir komutların güncellenmemesine neden olan hata düzeltildi.
    • MediaController tarafından gönderilen TrackSelectionOverride örneklerinin, Format.metadata içeren bir gruba referans vermeleri durumunda yoksayılmasına neden olan sorun düzeltildi (#296).
    • Eski MediaSessionCompat aracılığıyla meta verilere erişmek için Player.COMMAND_GET_CURRENT_MEDIA_ITEM uygulamasının kullanılabilir olması gereken sorun düzeltildi.
    • Arka plan iş parçacığındaki MediaSession örneklerinin MediaSessionService içinde kullanıldığında kilitlenmelere neden olması sorunu düzeltildi (#318).
    • Uygulama amaçlamadığı halde kitaplık tarafından bir medya düğmesi alıcısının beyan edilmesiyle ilgili sorun düzeltildi (#314).
  • DASH:
    • Boş segment zaman çizelgelerinin işlenmesiyle ilgili sorun düzeltildi (#11014).
  • RTSP:
    • UDP ile RTSP kurulumu, RTSP hatası 461 UnsupportedTransport ile başarısız olursa TCP ile tekrar deneyin (#11069).

Sürüm 1.0.0

22 Mart 2023

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

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

1.0.0-rc02 sürümünden bu yana herhangi bir değişiklik yapılmadı.

Sürüm 1.0.0-rc02

2 Mart 2023

androidx.media3:media3-*:1.0.0-rc02 yayınlandı. 1.0.0-rc02 sürümü şu commit'leri içerir:

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

  • Çekirdek kitaplık:
    • API 33'te ağ türü algılama düzeltildi (#10970).
    • ExoPlayer.isTunnelingEnabled aranırken NullPointerException sorunu düzeltildi (#10977).
  • İndirilenler:
    • Birleştirilecek iki segmentin başlangıç zamanı arasındaki maksimum farkı SegmentDownloader ve alt sınıflarında yapılandırılabilir hale getirin (#248).
  • Ses:
    • Samsung cihazlarda bozuk olan kesintisiz MP3 oynatma özelliği düzeltildi (#8594).
    • Ses devre dışı bırakıldıktan hemen sonra ayarlanan oynatma hızlarının önceki bir hız değişikliği tarafından geçersiz kılınmasına neden olan hata düzeltildi (#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 cihaz sorunu için geçici çözüm eklendi (#10898).
    • Ekran yenileme hızından çok daha yüksek kare hızına sahip medya oynatılırken kare yayınlama performans sorunlarını düzeltme
  • Oyuncular:
    • Medya öğeleri arasında geçiş yaparken geçici STATE_IDLE sorununu düzeltme (#245).
  • RTSP:
    • Geçersiz RTSP Describe yanıt mesajlarının ayrıştırılması sırasında ortaya çıkan IllegalArgumentException hatasını yakalama (#10971).
  • Oturum:
    • Bildirim oynat/duraklat düğmesinin oynatıcı durumuyla güncellenmemesine neden olan hata düzeltildi (#192).
  • IMA uzantısı:
    • İlk (ve reklamsız durumda tek) LOADED etkinliği alınmadığı için reklamsız DAI akışlarının başlamasını engelleyen bir hata düzeltildi.

Sürüm 1.0.0-rc01

16 Şubat 2023

androidx.media3:media3-*:1.0.0-rc01 yayınlandı. 1.0.0-rc01 sürümü şu commit'leri içerir:

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

  • Çekirdek kitaplık:
    • Oluşturucunun kod çözücü sıralama mantığını, bir kod çözücü medyayı yüksek performansla oynatamayabileceğini bildirse bile MediaCodecSelector tercihlerini koruyacak şekilde ayarlayın. Örneğin, varsayılan seçici kullanıldığında, biçimi tam olarak destekleyen yazılım tabanlı kod çözücü yerine yalnızca işlevsel destek sunan donanım tabanlı kod çözücü tercih edilir (#10604).
    • Yeni bir ExoPlayer örneği için önceden var olan bir oynatma iş parçacığı ayarlayan ExoPlayer.Builder.setPlaybackLooper ekleyin.
    • İndirme yöneticisi yardımcılarının temizlenmesine izin verilir (#10776).
    • İleri/geri sarma için kullanılan komutu da belirtmek üzere BasePlayer.seekTo parametresini ekleyin.
    • API 21 ve sonraki sürümlerde çizilebilir öğeler yüklenirken tema kullanma (#220).
    • Birden fazla medya öğesinin tek bir pencerede birleştirilmesine olanak tanıyan ConcatenatingMediaSource2 ekleyin (#247).
  • Ayıklayıcılar:
    • Trak atomları ayrıştırılırken örnek tablosunda (stbl) gerekli bir örnek açıklaması (stsd) eksikse NullPointerException yerine ParserException oluşturun.
    • fMP4'te doğrudan bir senkronizasyon karesine atlarken örnekleri doğru şekilde atlama (#10941).
  • Ses:
    • Doğrudan oynatmalarda (geçiş) AudioTrack için minimum arabellek boyutunu hesaplamak üzere sıkıştırılmış ses biçimi bit hızını kullanın.
  • Metin:
    • Bir altyazı dosyası işaret içermiyorsa Subtitle.getEventTime öğesine geçersiz (negatif) bir dizin ileten TextRenderer sorununu düzeltin.
    • SubRip: Bayt sırası işaretiyle başlayan UTF-16 dosyaları için destek ekleyin.
  • Meta veriler:
    • ID3 v2.4 tarafından izin verildiği şekilde, ID3 çerçevelerinden null ile ayrılmış birden fazla değeri ayrıştırın.
    • Meta verilerle açıklanan içerik türünü veya klasör türünü belirtmek için MediaMetadata.mediaType ekleyin.
    • MediaMetadata.folderType yerine MediaMetadata.isBrowsable ekleyin. Klasör türünün desteği bir sonraki sürümde sonlandırılacak.
  • DASH:
    • Kare sayıları da dahil olmak üzere resim uyarlama setleri için tam ayrıştırma eklendi (#3752).
  • Kullanıcı arayüzü:
    • Görünürlük değişikliklerinin kayıtlı dinleyiciye iletilmesini sağlamak için desteği sonlandırılan PlayerView.setControllerVisibilityListener(PlayerControlView.VisibilityListener) öğesini düzeltin (#229).
    • Sağdan sola (RTL) düzen kullanılırken PlayerView uygulamasında ortadaki oynatıcı kontrollerinin sıralaması düzeltildi (#227).
  • Oturum:
    • Özel oynatıcılar için Player arayüzünün uygulanmasına yardımcı olmak amacıyla soyut SimpleBasePlayer eklendi.
    • Platform oturum jetonunu Media3'e dönüştürmek için yardımcı yöntem eklendi SessionToken (#171).
    • Platform medya oturumunun güncellemelerini tetiklemek için onMediaMetadataChanged kullanın (#219).
    • Medya oturumunu DefaultMediaNotificationProvider sınıfının getMediaButtons() yöntemine bağımsız değişken olarak ekleyin ve netlik için sabit listeler kullanın (#216).
    • Oynatıcıda ayarlamadan önce oturuma göre MediaItem listesini, başlangıç dizinini ve konumunu değiştirme/ayarlama imkanı sağlamak için onSetMediaItems geri çağırma dinleyicisi ekleyin (#156).
    • Bluetooth dışı medya düğmesi etkinlikleri için iki kez dokunma algılamasından kaçının (#233).
    • Şüpheli bir eski oturum durumu olması durumunda QueueTimeline daha sağlam hale getirildi (#241).
  • Meta veriler:
    • ID3 v2.4 tarafından izin verildiği şekilde, ID3 çerçevelerinden null ile ayrılmış birden fazla değeri ayrıştırın.
    • Meta verilerle açıklanan içerik türünü veya klasör türünü belirtmek için MediaMetadata.mediaType ekleyin.
    • MediaMetadata.folderType yerine MediaMetadata.isBrowsable ekleyin. Klasör türünün desteği bir sonraki sürümde sonlandırılacak.
  • Yayınlama uzantısı:
    • Cast SDK sürümü 21.2.0'a yükseltildi.
  • IMA uzantısı:
    • İş parçacığı sorunlarını önlemek için uygulama iş parçacığında ImaServerSideAdInsertionMediaSource öğesinin oynatıcı dinleyicisini kaldırın.
    • TV cihazlarında atla düğmesine odaklanılmasını istemek için ImaServerSideAdInsertionMediaSource.AdsLoader.Builder öğesine focusSkipButtonWhenAvailable özelliğini ekleyin ve varsayılan olarak "true" değerine ayarlayın.
    • Atla düğmesine odaklanmayı programatik olarak istemek için ImaServerSideAdInsertionMediaSource.AdsLoader sınıfına focusSkipButton() yöntemini ekleyin.
    • IMA SDK sürümü 3.29.0'a yükseltildi.
  • Demo uygulama:
    • Çalışma zamanında indirme bildirimleri için bildirim izni isteyin (#10884).

Sürüm 1.0.0-beta03

22 Kasım 2022

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

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

  • Çekirdek kitaplık:
    • Seçili parçalar için tünel oluşturmanın etkin olup olmadığını kontrol etmek üzere ExoPlayer.isTunnelingEnabled ekleyin (#2518).
    • Tek bir MediaSource sarmalamayı basitleştirmek için WrappingMediaSource eklendi (#7279).
    • Yetersiz bellek nedeniyle oynatma takılmadan önce arka arabelleği silin.
    • Yük devretme etkinleştirildiğinde Tracing "doSomeWork" bloğunu kapatın.
    • PlaybackStatsListener içinde hızlı aramalarla ilgili oturum izleme sorunu düzeltildi (#180).
    • Tek öğeli bir oynatma listesinde seekToNext veya seekToPrevious çağrılırken eksik onMediaItemTransition geri çağırma işlevi gönderiliyor (#10667).
    • Videonun oluşturulduğu yüzeyin boyutunu döndüren Player.getSurfaceSize ekleyin.
    • Oynatıcı yayınlanırken dinleyicilerin kaldırılmasının IllegalStateException hatasına neden olabildiği hata düzeltildi (#10758).
  • Oluşturun:
    • Derleme hatalarını önlemek için minimum compileSdkVersion sürümünü zorunlu kılın (#10684).
    • Başka bir Gradle derlemesine dahil edildiğinde yayınlama engellemesini önleyin.
  • Parça seçimi:
    • Ekran Dolby Vision'ı desteklemiyorsa Dolby Vision yerine diğer parçaları tercih edin. (#8944).
  • İndirilenler:
    • Aynı PriorityTaskManager ile eşzamanlı indirme ve oynatmanın neden olduğu ProgressiveDownloader içindeki olası sonsuz döngü düzeltildi (#10570).
    • İndirme bildiriminin hemen görünmesini sağlama (#183).
    • Aşırı iş parçacığı 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ıyı serbest bırakırken OutOfMemory hatalarını önlemek için AudioTrack örneklerini serbest bırakmak üzere SingleThreadExecutor kullanın (#10057).
    • AudioTrack boşaltma durumu için AudioOffloadListener.onExperimentalOffloadedPlayback ekler. (#134).
    • AudioTrackBufferSizeProvider öğesini herkese açık bir arayüz yapın.
    • Tercih edilen ses çıkış cihazını ayarlamak için ExoPlayer.setPreferredAudioDevice ekleyin (#135).
    • androidx.media3.exoplayer.audio.AudioProcessor adlı öğeyi androidx.media3.common.audio.AudioProcessor olarak yeniden adlandırın.
    • Tüm Android sürümlerinde 8 kanallı ve 12 kanallı sesleri sırasıyla 7.1 ve 7.1.4 kanal maskeleriyle eşleme (#10701).
  • Meta veriler:
    • MetadataRenderer artık meta verileri kullanılabilir hale gelir gelmez oluşturacak şekilde yapılandırılabilir. Oluşturucunun meta verileri erken 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 ClearKey uygulamasında boş olmayan ancak geçersiz bir lisans URL'si döndüren hatayı düzeltir.
    • Bir oynatma listesindeki DRM şemaları arasında geçiş yaparken (ör. Widevine'dan ClearKey'e) karşılaşılan setMediaDrmSession failed: session not opened hatası düzeltildi.
  • Metin:
    • CEA-608: 2. alandaki hizmet değiştirme komutlarının doğru şekilde işlendiğinden emin olun (#10666).
  • DASH:
    • Manifestlerden EventStream.presentationTimeOffset ayrıştırın (#10460).
  • Kullanıcı arayüzü:
    • Oynatıcının mevcut geçersiz kılma işlemlerini TrackSelectionDialogBuilder içinde hazır ayar olarak kullanın (#10429).
  • Oturum:
    • Bazı komutlar eşzamansız çözüm gerektirse bile komutların her zaman doğru sırada yürütülmesini sağlayın (#85).
    • DefaultMediaNotificationProvider örnek oluşturmak için DefaultMediaNotificationProvider.Builder ekleyin. Oluşturucu, sağlayıcı tarafından kullanılan bildirim kimliğini, bildirim kanalı kimliğini ve bildirim kanalı adını yapılandırabilir. Ayrıca, bildirimlerin küçük simgesini ayarlamak için DefaultMediaNotificationProvider.setSmallIcon(int) yöntemini ekleyin. (#104).
    • MediaController.release() tarihinden önce gönderilen komutların silinmediğinden emin olun (#99).
    • SimpleBitmapLoader, file:// URI'lerinden bit eşlem yükleyebilir (#108).
    • MediaController öğesinin bir dönemdeki reklamda arama yapmasını engelleyen onaylama düzeltildi (#122).
    • Oynatma sona erdiğinde MediaSessionService ön planda durdurulur ve en son oynatılan medya öğesinin oynatılmasını yeniden başlatmak için bir bildirim gösterilir (#112).
    • Duraklatma için beklemede olan intent ile ön plan hizmeti 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 IllegalStateExceptions'a neden olduğu hata düzeltildi (#49).
  • RTSP:
    • H263 parçalı paket işleme özelliği eklendi (#119).
    • MP4A-LATM için destek eklendi (#162).
  • IMA:
    • IMA SDK'nın bir reklamı yüklerken takıldığı durumları (#10510) ele almak için reklam bilgilerini yüklemeye zaman aşımı eklendi.
    • İçeriğin sonuna doğru ileri sararken ara reklamların atlanmasını önleme (#10685).
    • Sunucu tarafında reklam eklenen canlı yayınlar (ör. IMA DAI) için pencere süresini doğru şekilde hesaplama (#10764).
  • FFmpeg uzantısı:
    • FFmpeg kitaplıklarını NDK 23.1.7779620 ve sonraki sürümlere bağlamak için yeni gerekli işaretleri 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ınlama uzantısı:
    • MediaController ile oynatmayı kontrol ederken CastPlayer öğesini tanımlayabilmek için getDeviceInfo() öğesini uygulayın (#142).
  • Transformer:
    • Çıkış örneği oluşturma işleminin çok yavaş olduğunu algılamak için muxer watchdog zamanlayıcısı ekleyin.
  • Desteği sonlandırılan simgeleri kaldırın:
    • Transformer.Builder.setOutputMimeType(String) öğesini kaldır Bu özellik kaldırıldı. 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ı. 1.0.0-beta02 sürümü bu commit'leri içerir.

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

  • Çekirdek kitaplık:
    • ShuffleOrder değerini ExoPlayer.setShuffleOrder ile değiştirmenin, reason=Player.TIMELINE_CHANGE_REASON_PLAYLIST_CHANGED ile Player.Listener#onTimelineChanged çağrısına neden olduğundan emin olun (#9889).
    • Aşamalı medya için yalnızca seçili parçaları arabelleğe alınmış konuma dahil edin (#10361).
    • Tüm ExoPlayer günlük çıkışları için özel günlükçüye izin verilir (#9752).
    • DefaultMediaSourceFactory içinde bazı durumlarda çalışmayan setDataSourceFactory uygulamasını düzeltme (#116).
  • Ayıklayıcılar:
    • H265 kısa süreli referans resim setlerinin ayrıştırılması düzeltildi (#10316).
    • esds kutularından bit hızlarının ayrıştırılması düzeltildi (#10381).
  • DASH:
    • ClearKey lisans URL'sini manifestlerden ayrıştırma (#10246).
  • Kullanıcı arayüzü:
    • TalkBack'in, oynatma kontrolleri menüsünde etkin olan hız seçeneğini duyurmasını sağlayın (#10298).
  • RTSP:
    • VP8 parçalı paket işleme özelliği eklendi (#110).
  • Leanback uzantısı:
    • LeanbackAdapter (10420) için playWhenReady değişikliklerini dinleyin.
  • Oyuncular:
    • Oynatma listesi yöntemlerine CastTimeline içinde Window.mediaItem olarak iletilen MediaItem kullanın (#25, #8212).
    • CastPlayer (#25) ile Player.getMetadata() ve Listener.onMediaMetadataChanged()'i destekleyin.

Sürüm 1.0.0-beta01

16 Haziran 2022

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

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

  • Çekirdek kitaplık:
    • MediaMetricsManager üzerinden Android platformu teşhisleri için desteği etkinleştirin. ExoPlayer, oynatma etkinliklerini ve performans verilerini platforma iletir. Bu sayede cihazda sistem performansı ve hata ayıklama bilgileri sağlanır. Bu veriler, cihaz kullanıcısı tarafından kullanım ve teşhis bilgileri paylaşımı etkinleştirilmişse Google tarafından da toplanabilir. Uygulamalar, ExoPlayer.Builder.setUsePlatformDiagnostics(false) ile ExoPlayer için platform teşhisine katkıda bulunmaktan kapsamı dışında kalmayı seçebilir.
    • MergingMediaSource kullanılırken parçaların çok sık sıfırlanmasına neden olan hata düzeltildi. Örneğin, altyazılar yan yüklenirken ve seçilen altyazı oynatma sırasında değiştirilirken (#10248).
    • API 29 ve 30'da 5G-NSA ağ türü algılamayı durdurun. Bu oynatmalarda 4G ağı kullanılacağı varsayılır.
    • null'in MediaSource.Factory.setDrmSessionManagerProvider ve MediaSource.Factory.setLoadErrorHandlingPolicy'a geçirilmesine izin verme Gerekirse DefaultDrmSessionManagerProvider ve DefaultLoadErrorHandlingPolicy örnekleri açıkça iletilebilir.
    • Tam LocalConfiguration bilinmediğinde medyayı oynatmak için gereken meta verileri temsil etmek üzere MediaItem.RequestMetadata ekleyin. Ayrıca artık RequestMetadata içinde yer aldığından MediaMetadata.mediaUrl öğesini de kaldırın.
    • Oyuncuların tek bir öğe ayarlamasına izin vermek için Player.Command.COMMAND_SET_MEDIA_ITEM ekleyin.
  • Parça seçimi:
    • TrackSelectionOverrides sınıfını TrackSelectionParameters sınıfına düzleştirin ve TrackSelectionOverride sınıfını üst düzey bir sınıfa yükseltin.
    • TracksInfo öğesini Tracks, TracksInfo.TrackGroupInfo öğesini Tracks.Group olarak yeniden adlandırın. Player.getCurrentTracksInfo ve Player.Listener.onTracksInfoChanged, Player.getCurrentTracks ve Player.Listener.onTracksChanged olarak yeniden adlandırıldı. Buna, Player.Listener.onTracksChanged yöntem adının "kullanımdan kaldırılmaması" ancak farklı parametre türleriyle kullanılması da dahildir.
    • DefaultTrackSelector.buildUponParameters ve DefaultTrackSelector.Parameters.buildUpon değerlerini, desteği sonlandırılan DefaultTrackSelector.ParametersBuilder yerine DefaultTrackSelector.Parameters.Builder değerini döndürecek şekilde değiştirin.
    • Varsayılan olarak etkin olan DefaultTrackSelector.Parameters.constrainAudioChannelCountToDeviceCapabilities ekleyin. Etkinleştirildiğinde DefaultTrackSelector, kanal sayısı cihazın çıkış özelliklerini aşmayan ses parçalarını tercih eder. El cihazlarında DefaultTrackSelector, çok kanallı ses biçimi üç boyutlu ses (Android 12L+) olarak ayarlanmadığı veya Dolby surround ses biçimi olmadığı sürece çok kanallı ses biçimleri yerine stereo/mono ses biçimlerini tercih eder. Ayrıca, ses uzamsallaştırmayı destekleyen cihazlarda DefaultTrackSelector, Spatializer özelliklerindeki değişiklikleri izler ve bunlara göre yeni bir parça seçimi tetikler. television Kullanıcı arayüzü modu olan cihazlar bu kısıtlamalardan hariç tutulur ve en yüksek kanal sayısına sahip biçim tercih edilir. Bu özelliği etkinleştirmek için DefaultTrackSelector örneği, Context ile oluşturulmalıdır.
  • Video:
    • DummySurface adlı öğeyi PlaceholderSurface olarak yeniden adlandırın.
    • MediaCodecVideoRenderer.getCodecMaxInputSize için AV1 desteği ekleyin.
  • Ses:
    • Standart olmayan MIME türünü bildiren LG AC3 ses kod çözücüsünü kullanın.
    • API < 21'de yavaş ART doğrulamasını önlemek için AudioAttributes.getAudioAttributesV21() dönüş türünü android.media.AudioAttributes yerine yeni bir AudioAttributesV21 sarmalayıcı sınıfı olarak değiştirin.
    • Biçim ses kanalı sayısı ayarlanmadığında (HLS parçasız hazırlıkta gerçekleşir) ses geçişi için platformu (API 29+) sorgulayın veya ses kodlama kanalı sayısını varsayın (10204).
    • Kod çözücü 12 kanallı PCM ses çıkışı veriyorsa AudioTrack öğesini AudioFormat.CHANNEL_OUT_7POINT1POINT4 kanal maskesiyle yapılandırın (#10322).
  • DRM
    • Biçim değişikliğinden hemen sonra ileri veya geri sarma işlemi yapıldığında DRM oturumunun her zaman doğru şekilde güncellenmesi sağlandı (10274).
  • Metin:
    • Player.getCurrentCues(), List<Cue> yerine CueGroup döndürecek şekilde değiştirin.
    • SSA: BorderStyle == 3 olduğunda OutlineColour stil ayarını destekleyin (ör. OutlineColour, işaretin arka planını ayarlar) (#8435).
    • CEA-708: Verileri birden fazla hizmet bloğuna ayrıştırın ve seçili hizmet numarasıyla ilişkili olmayan blokları yoksayın.
    • Yalnızca Google'ın dahili altyazı biçimini işlemek için kullanılan RawCcExtractor kaldırıldı.
  • Ayıklayıcılar:
    • AVI desteği eklendi (#2092).
    • Matroska: Opus parçaları için DiscardPadding ayrıştırın.
    • MP4: esds kutularından bit hızlarını ayrıştırın.
    • Ogg: Yinelenen Opus kimliği ve yorum başlıklarına izin verilir (#10038).
  • Kullanıcı arayüzü:
    • useController=false durumunda PlayerView üzerinde ayarlanan OnClickListener öğelerine etkinliklerin teslimi düzeltildi (#9605). Ayrıca tüm görünüm yapılandırmaları için etkinliklerin OnLongClickListener adlı görünüme gönderilmesini düzeltin.
    • ACTION_UP'den önce PlayerView sınırlarının dışına çıkan bir dizi dokunma etkinliğinin yanlışlıkla tıklama olarak değerlendirilmesi sorunu düzeltildi (#9861).
    • Dokunulduğunda kontrolleri gizlemek yerine oynatmayı açıp kapatabilen PlayerView erişilebilirlik sorunu düzeltildi (#8627).
    • TrackSelectionView ve TrackSelectionDialogBuilder öğelerini ExoPlayer yerine Player arayüzüyle çalışacak şekilde yeniden yazın. Bu sayede görünümler diğer Player uygulamalarıyla kullanılabilir ve kullanıcı arayüzü modülünün ExoPlayer modülüne olan bağımlılığı ortadan kalkar. Bu, zarar veren bir değişikliktir.
    • Zorunlu metin parçalarını PlayerView parça seçicide göstermeyin ve "Yok" seçiliyse uygun bir zorunlu metin parçasını seçili tutun (#9432).
  • DASH:
    • DTS AudioChannelConfiguration öğelerinden kanal sayısını ayrıştırın. Bu, DTS akışları için ses geçişini yeniden etkinleştirir (#10159).
    • null değerinin DashMediaSource.Factory.setCompositeSequenceableLoaderFactory değerine aktarılmasına izin verme. Gerekirse DefaultCompositeSequenceableLoaderFactory örnekleri açıkça iletilebilir.
  • HLS:
    • Oynatma listesi CODECS özelliği ses codec'ini içermiyorsa parçalı hazırlığa geri dönme (#10065).
    • null parametresinin HlsMediaSource.Factory.setCompositeSequenceableLoaderFactory, HlsMediaSource.Factory.setPlaylistParserFactory ve HlsMediaSource.Factory.setPlaylistTrackerFactory parametrelerine aktarılmasına izin verme Gerekirse DefaultCompositeSequenceableLoaderFactory, DefaultHlsPlaylistParserFactory örnekleri veya DefaultHlsPlaylistTracker.FACTORY referansı açıkça iletilebilir.
  • Smooth Streaming:
    • null değerinin SsMediaSource.Factory.setCompositeSequenceableLoaderFactory değerine aktarılmasına izin verme. Gerekirse DefaultCompositeSequenceableLoaderFactory örnekleri açıkça iletilebilir.
  • RTSP:
    • H263 için RTP okuyucu ekleme (#63).
    • MPEG4 için RTP okuyucu ekleme (#35).
    • HEVC için RTP okuyucu ekleme (#36).
    • AMR için RTP okuyucu ekleyin. Şu anda yalnızca tek kanallı, aralıksız AMR akışları desteklenmektedir. Bileşik AMR RTP yükü desteklenmiyor. (#46)
    • VP8 için RTP okuyucu ekleme (#47).
    • WAV için RTP okuyucu ekleme (#56).
    • RTSP temel yetkilendirme üstbilgisini düzeltme (#9544).
    • ExoPlayer'ın zorunlu SDP alanlarına ihtiyacı olmadığından bu alanların kontrolü durduruldu (#10049).
    • RTSP zamanlaması ayrıştırılırken denetlenen istisna oluşturma (#10165).
    • VP9 için RTP okuyucu ekleme (#47).
    • OPUS için RTP okuyucu ekleme (#53).
  • Veri kaynakları:
    • DummyDataSource adlı öğeyi PlaceholderDataSource olarak yeniden adlandırın.
    • OkHttp kesinti işleme için geçici çözüm.
  • Oturum:
    • İsteklerin eşzamansız çözümlenmesine izin vermek için MediaSession.MediaItemFiller yerine MediaSession.Callback.onAddMediaItems kullanın.
    • MediaController eski bir medya oturumuna bağlandığında setMediaItems(s) yöntemlerini destekleyin.
    • MediaController.setMediaUri ve MediaSession.Callback.onSetMediaUri araçlarını kaldırın. Aynı işlev MediaController.setMediaItem ve MediaSession.Callback.onAddMediaItems kullanılarak da elde edilebilir.
    • Eski MediaController çağrılarını onSetMediaUri yerine MediaSession.Callback.onAddMediaItems hedefine yönlendirerek medya oynatın.
    • Bildirimin özelleştirilebilmesi için MediaNotification.Provider ve DefaultMediaNotificationProvider ekleyin.
    • Albüm kapağı 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şitliği sağlamak için MediaSession.setSessionExtras() ekleyin.
    • MediaSession.MediaSessionCallback öğesini MediaSession.Callback, MediaLibrarySession.MediaLibrarySessionCallback öğesini MediaLibrarySession.Callback ve MediaSession.Builder.setSessionCallback öğesini setCallback olarak yeniden adlandırın.
    • MediaControllerImplLegacy içindeki NPE'yi düzeltin (#59).
    • Zaman çizelgesindeki oturum konumu bilgilerini güncelleme değişikliği(#51).
    • Denetleyiciyi yayınladıktan sonra MediaControllerImplBase içindeki NPE'yi düzeltin (#74).
  • Reklam oynatma / IMA:
    • Medya Derecelendirme Konseyi (MRC) önerilerine uymak için reklam yoklama sıklığını her 100 ms'den her 200 ms'ye düşürün.
  • FFmpeg uzantısı:
    • Android Studio'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).
  • Desteği sonlandırılan simgeleri kaldırın:
    • Player.Listener.onTracksChanged(TrackGroupArray, TrackSelectionArray) öğesini kaldır Bunun yerine Player.Listener.onTracksChanged(Tracks) kullanın.
    • Player.getCurrentTrackGroups ve Player.getCurrentTrackSelections araçlarını kaldırın. Bunun yerine Player.getCurrentTracks kullanın. Ayrıca, desteği sonlandırılmış olsa da ExoPlayer.getCurrentTrackGroups ve ExoPlayer.getCurrentTrackSelections yöntemlerini kullanmaya devam edebilirsiniz.
    • DownloadHelper DEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_VIEWPORT ve DEFAULT_TRACK_SELECTOR_PARAMETERS sabitlerini kaldırın. Mümkünse getDefaultTrackSelectorParameters(Context), aksi takdirde DEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_CONTEXT kullanın.
    • DefaultTrackSelector(ExoTrackSelection.Factory) oluşturucusunu kaldırın. Bunun yerine DefaultTrackSelector(Context, ExoTrackSelection.Factory) politikasını kullanın.
    • Transformer.Builder.setContext öğesini kaldır Bunun yerine Context, Transformer.Builder oluşturucusuna iletilmelidir.

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 kayıtları içerir.

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

  • Ses:
    • HLS'de Dolby Atmos (E-AC3-JOC) için ses özelliklerini kontrol etme hatası düzeltildi.
  • Ayıklayıcılar:
    • FMP4: Hem v0 hem de v1 emsg atomları içeren akışlar için emsg örnek meta verilerinin yanlış sırada çıkış yapmasına neden olan sorun düzeltildi (#9996).
  • Metin:
    • SubtitleConfiguration alanına öncelik vermek ve ayarlanmamışsa Factory değerine geri dönmek için SingleSampleMediaSource.Factory.setTrackId ve MediaItem.SubtitleConfiguration.Builder.setId etkileşimini düzeltin (#10016).
  • Reklam oynatma:
    • Canlı HLS SSAI akışlarında reklam dönemleri arasındaki ses kesintilerini düzeltme

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ü şu taahhütleri içerir:

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

  • Core Library:
    • buildVideoRenderers() veya buildAudioRenderers() yöntemini geçersiz kılan DefaultRenderersFactory alt sınıflarının, codec bağdaştırıcı fabrikasına erişebilmesi ve oluşturdukları MediaCodecRenderer örneklerine iletebilmesi için korumalı DefaultRenderersFactory.getCodecAdapterFactory() yöntemini ekleyin.
    • ICY üstbilgi alanları name ve genre, sırasıyla MediaMetadata.station ve MediaMetadata.genre alanlarına yayılır. Böylece Player.Listener.onMediaMetadataChanged() üzerinden uygulamaya ulaşırlar (#9677).
    • DefaultHttpDataSource#getResponseHeaders öğesinden boş anahtarları kaldırın.
    • MediaCodec örneği oluşturma işlemi başarısız olduğunda bekleyip tekrar deneyin. Bu sayede, bazı cihazlarda bir yüzey güvenli bir codec'ten başka bir codec'e geçirilirken ortaya çıkan sorun (#8696) giderilir.
    • Kullanıcıların MediaCodec üzerinden metrik verileri almasına izin vermek için MediaCodecAdapter.getMetrics() ekleyin. (#9766).
    • Maven bağımlılık çözümlemesi düzeltildi (#8353).
    • Düşük gecikme özellikleri olmayan ve kullanıcının hızı ayarlamadığı canlı yayınlar için otomatik hız ayarını devre dışı bırakma (#9329).
    • DecoderCounters#inputBufferCount adlı öğeyi queuedInputBufferCount olarak yeniden adlandırın.
    • SimpleExoPlayer.renderers gizli hale getirilsin. Oluşturuculara ExoPlayer.getRenderer üzerinden erişilebilir.
    • Bazı AnalyticsListener.EventFlags sabit değerleri, Player.EventFlags değerleriyle eşleşecek şekilde güncellendi.
    • Uygulamanın ihtiyaç duymaması halinde R8 tarafından kaldırılabilmesi için AnalyticsCollector öğesini bir arayüze ve varsayılan uygulamaya bölün.
  • Parça seçimi:
    • Parça seçiminde tercih edilen video rolü işaretlerini destekleme (#9402).
    • Uyarlama için birden fazla video parçası seçerken tercih edilen MIME türlerini ve rol işaretlerini dikkate alacak şekilde video parçası seçim mantığı güncellendi (#9519).
    • Video ve ses parçası seçim mantığı, yalnızca aynı düzeyde kod çözücü ve donanım desteğine sahip uyarlanabilir seçimler için biçimleri seçecek şekilde güncellendi (#9565).
    • Birincil, donanım hızlandırmalı kod çözücüler tarafından birden fazla codec destekleniyorsa daha verimli codec'leri tercih etmek için video parça seçim mantığı güncellendi (#4835).
    • Ses içeriği tercihlerini (ör. "varsayılan" ses parçası veya sistem yerel ayar diliyle eşleşen bir parça), teknik parça seçimi kısıtlamalarına (ör. tercih edilen MIME türü veya maksimum kanal sayısı) tercih edin.
    • Bir parça grubunu geçersiz kılmanın aynı türdeki diğer parça gruplarını devre dışı bırakmadığı parça seçimi sorunu düzeltildi (#9675).
    • Boş olmayan ve boş parça geçersiz kılmalarının karışımının doğru şekilde uygulanmadığı parça seçimi sorunu düzeltildi (#9649).
    • TrackGroupArray içinde yinelenen TrackGroup öğelerini yasaklayın. TrackGroups, TrackGroup oluşturucusunda bir id ayarlanarak her zaman ayırt edilebilir hale getirilebilir. Bu sayede, etkin bir parça geçersiz kılma işlemiyle uygulama arka plana alındıktan sonra oynatma devam ettirilirken oluşan kilitlenme sorunu düzeltildi (#9718).
    • Oynatma canlı yayına çok yakın olsa bile yeterli ağ bant genişliği altında kalite artışına izin vermek için AdaptiveTrackSelection içindeki mantık değiştirildi (#9784).
  • Video:
    • Dolby Vision için kod çözücü yedek mantığı düzeltilerek gerektiğinde uyumlu bir H264/H265 kod çözücü kullanılması sağlandı.
  • Ses:
    • Dolby Atmos (E-AC3-JOC) için kod çözücü yedek mantığı düzeltilerek gerektiğinde uyumlu bir E-AC3 kod çözücü kullanılması sağlandı.
    • AudioCapabilities API'lerini, null yerine açıkça AudioCapabilities.DEFAULT_AUDIO_CAPABILITIES iletilecek ş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 oluşturma işlemini yeniden deneyin. (#9712).
  • Ayıklayıcılar:
    • WAV: RF64 akışları için destek eklendi (#9543).
    • H.265 SPS NAL birimlerinin yanlış ayrıştırılması düzeltildi (#9719).
    • Ogg Opus ve Ogg Vorbis dosyalarındaki Vorbis yorumlarını (METADATA_BLOCK_PICTURE dahil) ayrıştırın.
  • Metin:
    • Yapılandırmadan oluşturulan altyazı parçasının Format.id alanına yayılan bir MediaItem.SubtitleConfiguration.id alanı ekleyin (#9673).
    • Matroska kapsayıcılarında WebVTT altyazıları için temel destek eklendi (#9886).
    • Cea708Decoder uygulamasının, bir hizmet bloğunun beyan edilen boyutundan daha fazlasını okumasını engelleyin.
  • DRM:
    • playbackLooper, DrmSessionManager.(pre)acquireSession hesabından kaldırılsın mı? Bir uygulama tarafından özel bir MediaSource içinde DrmSessionManager kullanıldığında playbackLooper'nin DrmSessionManager.setPlayer'ye iletilmesi gerekir.
  • Reklam oynatma / IMA:
    • IMA Dinamik Reklam Ekleme (DAI) için destek eklendi (#8213).
    • AdPlaybackState için bir reklam grubunun sıfırlanmasına ve tekrar oynatılmasına olanak tanıyan bir yöntem ekleyin (#9615).
    • Reklam oynatılırken oynatma hızını 1,0 olarak zorunlu kılma (#9018).
    • Yüklenemeyen bir reklam grubunun oynatmanın hemen sıfırlanmasına neden olduğu sorun düzeltildi (#9929).
  • Kullanıcı arayüzü:
    • Belirli temalar kullanılırken StyledPlayerView geri sarma ve ileri sarma düğmelerindeki sayıların rengi düzeltildi (#9765).
    • Oynatma hızı dizeleri doğru şekilde çevrildi (#9811).
  • DASH:
    • Ayrıştırılmış temel ve ek özellikleri Representation öğesine ekleyin (#9579).
    • forced-subtitle parça rolünü destekleyin (#9727).
    • main parça rolünü C.SELECTION_FLAG_DEFAULT olarak yorumlamayı durdurun.
    • DVB ad alanını bildirmeyen manifestler için ana URL hariç tutma mantığı düzeltildi (#9856).
    • Göreceli MPD.Location URL'leri destekleme (#9939).
  • HLS:
    • Yalnızca ses içeren HLS akışları için Format.label değerini doğru şekilde doldurun (#9608).
    • Başlatma süresini iyileştirmek için varsayılan olarak parçasız hazırlığı kullanın. Yorumlarınız, ana oynatma listesinde belirtilmeyen, birleştirilmiş altyazı dosyaları içeriyorsa bunları ana oynatma listesine ekleyerek oynatılabilir hale getirmeniz veya HlsMediaSource.Factory.setAllowChunklessPreparation(false) ile parçasız hazırlığı devre dışı bırakmanız gerekir.
    • HLS'de animasyon karesi hassasiyetinde arama desteği (#2882).
  • RTSP:
    • Herhangi bir sunucu bağlantısı için kullanılan SocketFactory değerini geçersiz kılmak üzere bir istemci API'si sağlayın (#9606).
    • Her ikisi de mevcutsa BASIC yerine DIGEST kimlik doğrulama yöntemini tercih etme (#9800).
    • RTSP parça zamanlaması kullanılamadığında işleme (#9775).
    • Geçersiz RTP-Info üstbilgi değerlerini yoksayma (#9619).
  • Transformer:
    • Gerekli minimum API sürümü 21'e yükseltildi.
    • TransformationException artık dönüşüm sırasında oluşan hataları açıklamak için kullanılıyor.
    • Dönüşüm seçeneklerini belirtmek için TransformationRequest ekleyin.
    • Birden fazla dinleyicinin kaydedilmesine izin verin.
    • Codec çıkışı kısmen okunduğunda Transformer'ın takılması sorunu düzeltildi.
    • Muxer serbest bırakılırken Transformer.getProgress içinde olası NPE'yi düzeltme hataları.
    • Dönüşümleri uygulamak için bir demo uygulaması ekleyin.
  • MediaSession uzantısı:
    • MediaSessionConnector, varsayılan olarak durdurulduğunda oynatma listesini temizler. Oynatma listesinin saklanmasını isteyen uygulamalar, bağlayıcıda setClearMediaItemsOnStop(false) yöntemini çağırabilir.
  • Yayınlama uzantısı:
    • CastPlayer öğesinin onIsPlayingChanged öğesini doğru şekilde çağırmasını engelleyen hata düzeltildi (#9792).
    • Albüm kapağı da dahil olmak üzere ses meta verilerini destekleme DefaultMediaItemConverter (#9663).
  • FFmpeg uzantısı:
    • build_ffmpeg.sh, GNU'nun ikili yardımcı programları yerine LLVM'nin ikili yardımcı programlarına bağlı hale getirildi (#9933).
  • Android 12 uyumluluğu:
    • Cast uzantısını com.google.android.gms:play-services-cast-framework:20.1.0'e bağlı olacak şekilde yükseltin. play-services-cast-framework'nin önceki sürümleri Android 12'yi hedefleyen uygulamalarla uyumlu değildir ve PendingIntent oluştururken IllegalArgumentException ile kilitlenir (#9528).
  • Desteği sonlandı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 öğelerini 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, DashMediaSource, HlsMediaSource ve SsMediaSource hesaplarından kaldırılsın mı? Bunun yerine MediaItem.Builder#setTag politikasını kullanın.
    • DashMediaSource#setLivePresentationDelayMs(long, boolean) öğesini kaldır Manifesti geçersiz kılmak için MediaItem.Builder#setLiveConfiguration ve MediaItem.LiveConfiguration.Builder#setTargetOffsetMs, yedek değer sağlamak için DashMediaSource#setFallbackTargetLiveOffsetMs kullanın.
    • (Simple)ExoPlayer.setThrowsWhenUsingWrongThread öğesini kaldır İleti dizisi yaptırımını devre dışı bırakmak artık mümkün değildir.
    • ActionFile ve ActionFileUpgradeUtil araçlarını kaldırın. Eski işlem dosyalarını DefaultDownloadIndex ile birleştirmek için ActionFileUpgradeUtil kullanmak üzere ExoPlayer 2.16.1 veya önceki bir sürümü kullanın.
    • ProgressiveMediaSource#setExtractorsFactory öğesini kaldır Bunun yerine ProgressiveMediaSource.Factory(DataSource.Factory, ExtractorsFactory) oluşturucusunu kullanın.
    • ProgressiveMediaSource.Factory#setTag ve ProgressiveMediaSource.Factory#setCustomCacheKey araçlarını kaldırın. Bunun yerine MediaItem.Builder#setTag ve MediaItem.Builder#setCustomCacheKey politikalarını kullanın.
    • DefaultRenderersFactory(Context, @ExtensionRendererMode int) ve DefaultRenderersFactory(Context, @ExtensionRendererMode int, long) oluşturucularını kaldırın. Bunun yerine DefaultRenderersFactory(Context) oluşturucusunu, DefaultRenderersFactory#setExtensionRendererMode ve DefaultRenderersFactory#setAllowedVideoJoiningTimeMs'yi kullanın.
    • Herkese açık tüm CronetDataSource yapıcıları kaldırın. 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ımların derlenmesini bozabilir. Bu sorun, ek açıklama türü (Int) ek açıklama ekleyecek şekilde taşınarak düzeltilebilir.
    • @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 paketinde)
    • @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ü şu taahhütleri içerir.

Yeni özellikler

Media3, ExoPlayer dahil olmak üzere medya destek kitaplıklarının yeni adresidir. İlk alfa sürümü, medya kullanım alanlarını uygulamak için kitaplıkların erken ve işlevsel uygulamalarını içerir. Bunlar arasında şunlar yer alır:

  • ExoPlayer, Android için özelleştirilmesi ve genişletilmesi kolay, uygulama düzeyinde bir medya oynatıcıdır.
  • 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ıcı arayüzü bileşenleri.
  • ExoPlayer ile kullanılmak üzere diğer kitaplıklardaki işlevleri sarmalayan modüller (ö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'te paket adı androidx.media3.exoplayer şeklindedir. Uygulamaların Media3'e geçiş yapmasına zaman tanımak için ExoPlayer GitHub projesini bir süre daha sürdürmeyi ve yayınlamayı planlıyoruz. Media3, yeni media3-session modülüyle değiştirilen eski media2 ve mediasession uzantıları hariç tüm ExoPlayer modüllerinin yerine kullanılabilir. Bu sayede, bağdaştırıcı/bağlayıcı sınıfı kullanmaya gerek kalmadan oynatıcılar ile medya oturumları arasında doğrudan entegrasyon sağlanır.