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ü
11 Kasım 2026 1.11.1 - 1.12.0-beta01 -

Bağımlılıkları bildirme

Media3'e bağımlılık eklemek için Google Maven deposunu projenize 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 bildirimleriniz Jetpack'i geliştirmemize 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-beta01

11 Kasım 2026

1.12.0-beta01 sürümü aşağıdaki kayıtları içerir.

  • Ortak Kitaplık:
    • C.DEFAULT_BUFFER_SEGMENT_SIZE değerini 65536 yerine 65520 olarak ayarlayın. Böylece her arabellek tahsisi (byte[] nesne başlığı dahil), ART'nin büyük nesne alanındaki tüm OS sayfalarına sığar ve örnek arabellek bellek kullanımı 4 KiB sayfalık cihazlarda yaklaşık %6, 16 KiB sayfalık cihazlarda ise yaklaşık %20 azalır.
    • androidx.media3.common.util.NullableType yerine JSpecify kullanın org.jspecify.annotations.Nullable.
    • androidx.media3.common.util.UnknownNull öğesini kaldırıp JSpecify nullness ek açıklamalarını kullanın. Boş değer atanabilir sonuç türüne (ör. Void?) sahip RunnableFutureTask sınıfının Kotlin alt sınıfları, boş değer atanabilir tür bağımsız değişkeni (ör. RunnableFutureTask<Void?, Exception>) belirtmelidir.
    • Reklam oynatma sırasında yeniden boyutlandırılabilen video kapsayıcısını View sağlamak için AdViewProvider.getAdVideoView() ekleyin.
    • MimeTypes.getMediaMimeType içinde mlpa RFC 6381 codec dizesini MimeTypes.AUDIO_TRUEHD ile eşleyerek HLS parçasız hazırlık sırasında eksik çoğullanmış Dolby TrueHD ses parçalarını düzeltme (#3485).
    • AdPlaybackState.withAdDurationsUs yöntemini, iletilen diziyi kopyalayacak şekilde ve AdPlaybackState.fromAdPlaybackState yöntemini, reklam gruplarının tüm dizi alanlarını kopyalayacak şekilde düzeltin. Böylece, bir örnek artık saklanan veya paylaşılan diziler aracılığıyla değiştirilemez.
    • Player.listen veya Player.listenTo, oynatıcının uygulama iş parçacığı dışındaki bir iş parçacığından (ör. Compose kullanıcı arayüzü testi kaldırma sırasında) iptal edildiğinde IllegalStateException ("Oynatıcıya yanlış iş parçacığından erişildi.") hatası düzeltildi (#3005).
  • ExoPlayer:
    • Yaklaşan bir medya dönemi için erken etkinleştirilen bir oluşturucunun, oynatma bu döneme geçmeden önce oluşturmaya başlayabilmesi sorunu düzeltildi.
    • Boş değer atanabilir alt kaynak kimlikleri (ör. Void?) kullanan CompositeMediaSource sınıfının Kotlin alt sınıfları, boş değer atanabilir bir tür bağımsız değişkeni (ör. CompositeMediaSource<Void?>) belirtmelidir.
    • AdsMediaSource metriğinin AdPlaybackState güncelleme boyunca AdPlaybackState.removedAdGroupCount değerinin altına düşmediğini doğrulayın.
    • Farklı oluşturucular kullanan medya dönemleri arasında geçiş yaparken, giden oluşturucu oluşturma işlemini tamamlamadan önce gelen oluşturucunun erken etkinleştirilmesine (ör. Flags.FLAG_PER_STREAM_MEDIA_PROGRESSION etkinleştirildiğinde IllegalStateException ["Birden fazla oluşturucu medya saati etkinleştirildi."] hatası verilmesine) neden olan sorun düzeltildi.
    • Flags.FLAG_PER_STREAM_MEDIA_PROGRESSION etkinleştirildiğinde özel oynatma hızında bir reklama geçişin, tüm oluşturucuların reklam dönemine ilerlemesini geciktirebilmesine neden olan sorun düzeltildi.
    • Medya dönemi geçişleri sırasında oluşturucuları önceden ısıtma ve parça yeniden seçimleriyle ilgili sorunlar düzeltildi.
    • MediaPeriod.supportsStreamPrerollFlags() (varsayılan olarak false) ekleyin. Böylece özel MediaPeriod uygulamaları, SampleStream.getFlags() kullanarak ilk kesintileri bildirmeyi etkinleştirebilir. Desteklenmediğinde ve Flags.FLAG_PER_STREAM_MEDIA_PROGRESSION etkinleştirildiğinde MediaPeriod.readDiscontinuity() kullanılır.
    • Bir reklamın atlanmasının ardından aynı reklam grubundaki başka bir reklamın atlanmasının DISCONTINUITY_REASON_SKIP yerine DISCONTINUITY_REASON_AUTO_TRANSITION ile raporlanması veya AdsMediaSource geç içerik kaynağı hazırlama özelliğini kullandığında hiç raporlanmaması sorunu düzeltildi.
  • Transformer:
    • Ölçülen kodlayıcı kalite verilerinden mevcut cihaz için video kodlayıcı yapılandırmaları (codec, kodlayıcı ayarları ve bit hızı) öneren CodecDB (androidx.media3.transformer.codecdb) eklendi.
  • Ayıklayıcılar:
    • ADTS: Kısmi bir ilk karenin yükündeki yanlış senkronizasyon kelimesinden ses biçimini türeten AdtsExtractor düzeltildi. Bu sorun, kare ortasında katılan canlı AAC akışlarının oynatılmasının başarısız olmasına veya durmasına neden olabiliyordu (#3464).
    • Bir parçada örnek içermeyen bir trun kutusu olduğunda FragmentedMp4Extractor içindeki ArrayIndexOutOfBoundsException düzeltildi (#3471).
    • ADTS: Akıştaki ID3 verilerinin application/id3 parçası olarak çıkışını durdurmak için FLAG_DISABLE_ID3_METADATA öğesini AdtsExtractor öğesine ekleyin.
    • MP4: Kodlayıcı dolgusunu hariç tutmak için son stts girişini kısaltan ve dolgunun elst düzenleme listesinden 0 olarak türetilmesine ve son karenin sonunun oynatılmasına neden olan çoklayıcısı (FFmpeg gibi) bulunan AAC parçalarının kesintisiz oynatılması düzeltildi (#3489).
    • ID3 ile başlayan bozuk veya medya olmayan dosyalar algılanırken oluşan büyük önceden peek arabelleği ayırmaları ve OutOfMemoryError düzeltildi (#3502).
  • Denetleyici:
    • MetadataRetriever.retrieveDurationUs() tarafından döndürülen geleceğin iptal edilmesi nedeniyle close() öğesinin temel MediaSource öğesini yayınlamasını engelleyen sorun düzeltildi (#3468).
    • MediaExtractorCompat işlevini, MediaExtractor platformuyla eşleşen bir tam sayı olarak MediaFormat.KEY_FRAME_RATE döndürecek şekilde düzeltin.
  • Ses:
    • Oynatma atlanan bölgeye ulaşmadan önce, arabelleğe alınmış atlanan sessizliğin AudioSink.getCurrentPositionUs(boolean) içine dahil edilmesi ve AudioSink.Listener.onSilenceSkipped() kullanılarak bildirilmesiyle ilgili sorun düzeltildi (#3472).
    • Sıkıştırılmış bir biçimden kodu çözülen uzamsal çok kanallı PCM ses çalarken API 37 ve sonraki sürümlerde AudioTrack.Builder.setCodecProvenance kullanarak codec kaynağını ayarlayın.
    • 1 saniyelik sesin en az ilk arabellek boyutu kadar olduğu durumlarda AudioTrack başlatma yeniden denemelerinin atlanması sorunu düzeltildi. Bu sorun, sınırlı ses belleğine sahip cihazlarda DTS-HD geçişinin başarısız olmasına neden oluyordu (#3487).
  • Video:
    • Geriye dönük uyumlu Dolby Vision Profile 7 akışları için H.265/HEVC kod çözücüye geri dönme izni verildi. Temel katmanı, belirtilmemiş aktarım özellikleriyle tam aralık sinyali veren Profile 10 akışları için artık AV1 kod çözücüye geri dönülmeyecek (#3486).
    • Biçimi tam olarak destekleyen bir kod çözücü olmadığında, biçimin profilini işlevsel olarak desteklemeyen birincil kod çözücülerin (farklı bir profil için Dolby Vision kod çözücü gibi) seçilmesini önlemek amacıyla MediaCodecUtil içindeki kod çözücü seçimi düzeltildi (#3486).
  • Metin:
    • DvbParser uygulamasında, tam ekran bir geçici bit eşlem tutmak yerine altyazı bölgelerini doğrudan bölge boyutundaki bit eşlemlere dönüştürerek bellek kullanımını azaltın.
  • Etki:
    • Temizleme sırasında (örneğin, CompositionPlayer içinde arama veya ileri geri oynatma yaparken) DefaultVideoFrameProcessor içinde NullPointerException düzeltildi (#3470).
    • Sağlayıcı bir sürümden sonra yeniden kullanıldığında DefaultGlObjectsProvider.release öğesinin GlException hatası vermesi sorunu düzeltildi (#2016).
  • Çoğullayıcılar:
    • Mp4Muxer veya FragmentedMp4Muxer'ye parça eklerken Format parçasını doğrulayın. Bu sayede, daha sonra örnek yazarken veya muxer'ı kapatırken hata oluşmaz.
    • Tüm kitaplık uygulamalarında Muxer.close() işlevini tekrarlayarak çağırın ve close() hata verse bile çoklayıcıyı kapalı olarak değerlendirin.Muxer close() yönteminden sonra başka bir yöntem çağrıldığında artık IllegalStateException hatası veriliyor.
  • IMA uzantısı:
    • Etkileşimli reklamların reklam kapsayıcısı içindeki video oynatıcı görünümünü yeniden boyutlandırmasına ve yeniden konumlandırmasına olanak tanımak için IMA SDK'nın ResizablePlayer arayüzünü destekleyin ve ImaAdsLoader.requestAds(DataSpec, Object, AdViewProvider) (ImaAdsLoader.requestAds(DataSpec, Object, ViewGroup) desteği sonlandırılıyor) ekleyin.
  • Oturum:
    • Medya düğmesi tercihleri API'lerini kararlı hale getirme.
    • Sıkıştırılmış albüm kapağı verilerini CacheBitmapLoader içinde tutmayarak bellek kullanımını azaltın.
    • Platform oturum sırası zaten null olduğunda (örneğin, Player.COMMAND_GET_TIMELINE kullanılamadığında) zaman çizelgesi güncellemelerinde gereksiz MediaSession.setQueue(null) çağrılarından kaçının.
    • MediaSessionService öğesinin, yeni bir oturum oluşturmaya çalışmayarak bir hizmet uygulamasının düzgün şekilde kurtarılmasına izin vermemesiyle ilgili sorun düzeltildi (#3490).
    • Eski bir MediaSessionCompat meta veri güncellemesi, sırayı değiştirmeden etkin sıra öğesinin meta verilerini veya süresini değiştirdiğinde Player.TIMELINE_CHANGE_REASON_PLAYLIST_CHANGED yerine Player.TIMELINE_CHANGE_REASON_SOURCE_UPDATE değerini bildirin.
    • Geçerli bir METADATA_KEY_ALBUM_ART ile birlikte null METADATA_KEY_DISPLAY_ICON (veya poster URI'si) ayarlayan eski oturumlarda eksik posterleri düzeltin: Eski meta veriler dönüştürülürken boş poster değerleri artık atlanıyor.
  • Kullanıcı arayüzü:
    • ContentFrame ve Player için subtitles composable alanı ekleyin. media3-ui-compose-material3, bitmap ve yatay metin altyazı işaretlerini oluşturmak için varsayılan desteğe sahiptir.
    • Çift yönlü altyazı metin kaydırma için kullanılan metin yönü buluşsal yönteminin özelleştirilmesine olanak tanımak amacıyla SubtitleView.setTextDirectionHeuristic eklendi (#3454).
    • media3-ui-compose-material3 içinde Player'deki tüm kontrol alanlarını (özel olanlar dahil) canlandırın ve visible parametresini PlayerDefaults.TopControls, CenterControls ve BottomControls'ten kaldırın. Bu, kararsız bir API'de zarar veren bir değişikliktir.
    • exo_content_frame öğesini exo_content_frame_container içine sarmalayarak PlayerView içinde AdViewProvider.getAdVideoView() desteği sağlayın.
    • SubtitleView uygulamasında, işaretler temizlendiğinde önbelleğe alınmış altyazı bitmap'lerini ve metin düzenlerini serbest bırakarak bellek kullanımını azaltın. Ayrıca, bir işaretin düzenleme için yeterli genişliği olmadığında eski altyazı metninin görünür kalmasına neden olan sorunu düzeltin.
  • HLS uzantısı:
    • Başarısız veya iptal edilmiş bir HLS medya parçasının yeniden yüklenmesinin, kısmen arabelleğe alınmış örnekleri silmeden veya birleştirmeden tutabileceği ya da yükleme konumunu eski bir arama konumuna sıfırlayabileceği sorunlar düzeltildi (#3362).
    • Uyarlanabilir parça geçişinden sonra arabelleğe alınmış bir segmentin başına gidildiğinde oluşan IllegalStateException hatası düzeltildi.
    • HLS Content Steering ile yollar arasında geçiş yaparken karşılaşılan çeşitli oynatma sorunları düzeltildi (#3465).
  • DASH uzantısı:
    • Bir yayında birden fazla yerleşik altyazı dosyası olduğunda yinelenen veya bozuk CEA-608 altyazıları düzeltildi (#887).
  • Yayınlama uzantısı:
    • RemoteCastPlayer yükleme isteklerinin Android TV alıcıları tarafından bırakılması sorunu düzeltildi (#3462).
    • com.google.android.gms:play-services-cast-framework bağımlılığını 23.0.0 olarak güncelleyin.
    • AndroidManifest.xml içinde MediaTransferReceiver beyan edilmesine gerek kalmadan Cast cihazlarının sistem çıkış değiştiricide görünüp görünmeyeceğini yapılandırmak için CastParams.Builder.setSystemOutputSwitcherEnabled(boolean) ekleyin ve API 37 ve sonraki sürümleri çalıştıran cihazlarda API 37 ve sonraki sürümleri hedefleyen uygulamalar için sistem çıkış değiştiriciyi varsayılan olarak etkinleştirin.
    • Özel bir MediaItem.mediaMetadata özelliği olmayan alanları MediaItem.mediaMetadata.extras ile eşleyerek DefaultMediaItemConverter içinde önceden tanımlanmış Cast MediaMetadata alanlarını destekleyin ve MediaInfo.customData içinde özel ekstraları koruyun.
    • Oynatma URI'si eksik olduğunda veya dönüşüm başarısız olduğunda DefaultMediaItemConverter içinde istisna oluşturmayı durdurun. Oynatma URI'si olmayan yayın sırası öğeleri için medya kimliğini ve meta verileri CastPlayer zaman çizelgesinde koruyun.
    • Kullanılabilir bir Cast oturumunun Intent to Join kullanılarak başlatılıp başlatılmadığını belirtmek için SessionAvailabilityListener.onCastSessionAvailable(boolean) eklendi ve CastPlayer sürümünde Intent to Join kullanılarak bir Cast oturumuna katılırken uzaktan oynatma durumu, yerel oynatıcı durumuyla üzerine yazılmak yerine korundu.
    • DefaultMediaItemConverter ve RemoteCastPlayer içindeki canlı olmayan öğeler için MediaInfo ve zaman çizelgesi sürelerini MediaMetadata.durationMs ile doldurun ve alıcı tarafından çözümlenen süreleri ve canlı yayın durumunu sıra aramalarında koruyun.
  • Demo uygulama:
    • Oturum demo uygulamasında sürükleyerek oynatma listesi öğelerinin yeniden sıralanmasına izin verin.
  • Desteği sonlandırılan simgeleri kaldırın:
    • androidx.media3.transformer.TextureAssetLoader öğesini kaldır Bunun yerine androidx.media3.transformer.RawAssetLoader kullanın.
    • Herkese açık DefaultDecoderFactory yapıcıları kaldırın. Bunun yerine DefaultDecoderFactory.Builder kullanın.
    • DefaultLoadErrorHandlingPolicy.DEFAULT_TRACK_BLACKLIST_MS öğesini kaldır Bunun yerine DefaultLoadErrorHandlingPolicy.DEFAULT_TRACK_EXCLUSION_MS kullanın.
    • DefaultVideoFrameProcessor.Factory.Builder.setRequireRegisteringAllInputFrames(boolean) öğesini kaldırın. Bunun yerine VideoFrameProcessor.INPUT_TYPE_SURFACE_AUTOMATIC_FRAME_REGISTRATION kullanın.
    • EditedMediaItemSequence.Builder.experimentalSetForceAudioTrack(boolean) ve EditedMediaItemSequence.Builder.experimentalSetForceVideoTrack(boolean) araçlarını kaldırın. Bunun yerine EditedMediaItemSequence.Builder(Set) politikasını kullanın.
    • EditedMediaItemSequence.forceAudioTrack öğesini kaldır Bunun yerine trackTypes.contains(C.TRACK_TYPE_AUDIO) kullanın.
    • EditedMediaItemSequence.forceVideoTrack öğesini kaldır Bunun yerine trackTypes.contains(C.TRACK_TYPE_VIDEO) kullanın.
    • ExportResult.durationMs ve ExportResult.Builder.setDurationMs öğelerini kaldırın. Bunun yerine ExportResult.approximateDurationMs ve ExportResult.Builder.setApproximateDurationMs kullanın.
    • SilenceSkippingAudioProcessor.DEFAULT_PADDING_SILENCE_US öğesini kaldır Bunun yerine silenceRetentionRatio kullanarak sessizlik davranışını belirtin.
    • Timeline.getPeriodPosition(Window, Period, int, long, long) öğesini kaldır Bunun yerine Timeline.getPeriodPositionUs(Window, Period, int, long, long) kullanın.

Sürüm 1.12.0-alpha02

26 Ekim 2026

1.12.0-alpha02 sürümü aşağıdaki kayıtları 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 kayıtları 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:
    • Bir sonraki dönemin ilk parçası yüklenemediğinde DASH çok dönemli oynatmanın 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çeriklerde (ör. DASH) reklam desteği ekleyin.
    • Devam eden bir hazırlık isteğinin iptal edilmesinin arka planda indirme işlemlerini başlatmasına neden olan PreCacheHelper içindeki 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ı daha doğru çalışı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 beklenmeyen bir azalma veya sıfırlamanın yanlışlıkla tam sayı taşması olarak değerlendirilmesine ve oynatmanın arabelleğe alma sırasında durmasına neden olan 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, yaklaşan bir oynatma listesi öğesindeki oluşturucu hatasının mevcut oynatmayı erken kesintiye uğratmasına 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.
    • preload() aynı kaynakta birden fazla kez çağrıldığında PreloadMediaSource ve DefaultPreloadManager öğelerindeki bellek sızıntısı düzeltildi (#3445).
    • İçerik zaman çizelgesi yenilemesi beklenirken AdsMediaSource yayınlandığında oluşan NullPointerException düzeltildi (#3442).
    • İleri sarma 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ının neden olduğu ç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ının neden olduğu ç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 bulunup AudioProcessor uygulandığında sıkıştırılmış çıkış elde ediliyordu.
  • Parça seçimi:
    • Bazı cihazlarda SDR parçasının desteklenen bir Dolby Vision parçası yerine yanlışlıkla tercih edilmesine neden olan sorun düzeltildi (#3135).
  • Ayıklayıcılar:
    • Mp4Extractor: MP4'te Opus için dOps kutusu 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 öğelerini kaldırın.
    • Mp4Extractor: Mp4LocationData değerini doldurmak için rakım koordinatlarını içeren xyz kutularından konum meta verilerinin ayrıştırılması düzeltildi.
    • Kodlanmış ses biçimleri için örnek başına ses karesi sayısını hesaplamak üzere ExtractorUtil.getFramesPerEncodedSample ekleyin (#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 bozuk AC-3, DTS ve LPCM sesleri düzeltmek için yük, ses okuyucuya (#3327) iletilmeden önce PsExtractor içindeki her PES paketinden private_stream_1 alt akış başlığı kaldırıldı.
    • 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 Profil 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. Bu durumda 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 bir sayfaya gittikten sonra örnek zaman damgalarını düzeltme.
    • Ogg: Zincirleme Ogg Opus akışlarında akış ortasındaki Opus kimliği ve yorum başlığı paketlerini yoksayarak kod çözme hatalarını ve yaklaşık 1 saniyelik zaman damgası atlamalarını düzeltme.
  • Denetleyici:
    • 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 tabanlı görüntüdeki geniş gamutlu BT.2020 renklerinin kırpılmasını düzeltin. Gam dışı renkler artık kırpılmak yerine sRGB gamına hafifçe sıkıştırılıyor.
  • Ses:
    • Yanlış ileti dizisinde android.media.AudioDeviceCallback çağrısı yapan 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, dönem geçişleri sırasında AC-3 sesin 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 boşluksuz geçişlere ek olarak, tek akışlarda ve oynatma listesindeki son akışta kodlayıcı bitiş dolgusunu kırpma (#2576).
    • Akış başı kodlayıcı gecikmesi kırpma işlemi 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 atlanmış yerine bırakılmış olarak raporlanacak.
  • Metin:
    • Başka bir kaynaktan 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:
    • Mp4Muxer ve FragmentedMp4Muxer içinde Opus için dOps kutu yazma hatası düzeltildi. Burada PreSkip, InputSampleRate ve OutputGain, big-endian yerine little-endian olarak yazılmıştı (#3431).
    • Mp4Muxer kullanarak Mp4LocationData biçiminde GPS rakımı yazma desteği.
    • Doğrudan ParcelFileDescriptor dosyasına çoklama yapılmasına izin vermek 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ı Temel 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ı yazma desteği.
    • 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üzeltin (#3369).
    • Mp4Muxer ve FragmentedMp4Muxer içinde 32 bit kayan noktalı PCM ses parçaları desteklenir (#3389).
    • Parça eklerken Mp4Muxer ve FragmentedMp4Muxer biçimlerindeki desteklenmeyen Dolby Vision profillerini reddetme
    • Mp4Muxer ve FragmentedMp4Muxer'da 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'da 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 ileri geri oynatma modu desteği ekleyin.
    • PresentationState için showArtwork desteği ekleyin ve bunu ContentFrame ve Player'da 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 öğelerinin composable 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 eklendi. media3-ui-compose-material3'e LiveButton Composable ekleyin (#2213).
  • Ktor uzantısı:
    • KtorDataSource, akış ortasındaki bağlantı hatalarını HttpDataSourceException hatası vermek yerine 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'yi (PQ ve HLG) Format.colorInfo olarak ayrıştırın (#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 değerlerinin 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).
    • Hile 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ırma, AdaptationSet.producerReferenceTimes içinde gösterme ve VOD akışları için Timeline.Window.presentationStartTimeMs ve Timeline.Window.windowStartTimeMs doldurmak üzere kullanma desteği.
    • DASH Content Steering için destek eklendi (#1689).
    • <UTCTiming> öğesinde eksik özellik bulunan bir DASH manifesti ayrıştırılırken oluşabilecek NullPointerException hatası 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ı ileri geri oynatmanı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şabilen IllegalStateException kilitlenmesi düzeltildi.
    • Oynatma yeniden başlatılmadan önce tekrar ileri/geri sarmanın IllegalStateException kilitlenmesine neden olabileceği 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 ana kare erişim birimlerinin ana kare olarak işaretlenmemesi nedeniyle oynatmanın arabelleğe alma aşamasında takılı kalmasına neden olan 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 dolguyu silme aynı pakete denk geldiğinde dolguyu silmenin 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.
    • Yayın oturumu durdurulduktan sonra oynatmanın beklenmedik ş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üğe kaydedilir (#3373).
    • Bir arama işlemi beklemedeyken Cast alıcı sırası değiştiğinde veya küçüldüğünde RemoteCastPlayer içindeki 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ıyla ilgili 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 sırayla güvenilir bir şekilde yürütülmeleri için ardışık oynatma listesi işlemlerini sıraya alın (#2639, #3272).
    • RemoteCastPlayer içinde boş bir sırada addMediaItems çağrıldığında medya öğelerinin Cast 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 RemoteCastPlayer üzerinde ayarlandığında playWhenReady, repeatMode ve playbackParameters değerlerinin aktarılmaması veya uygulanmaması sorunu düzeltildi (örneğin, CastPlayer uygulamasında yerelden uzaktan oynatmaya aktarım sırasında) (#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) öğelerini kaldırın. Bunun yerine DashUtil.buildDataSpec(Representation, BaseUrl, RangedUri, int, Map<String, String>) kullanın.
  • Oluştur:
    • 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 yöntemi 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 oluşturucu önceden ısıtılı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, ileri geri oynatma 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çindeki arabellek boyutu hesaplaması düzeltildi. Böylece minimum sessizlik süresi, kare boyutu (#3271) tarafından yanlış şekilde ölçeklendirilmeyecek.
    • PcmAudioUtil içinde 8 bit PCM işleme, örnekleri Android tarafından tanımlandığı şekilde işaretsiz olarak değerlendirecek şekilde düzeltildi (#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 hatası 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 bir HlsMediaChunk, ayıklayıcıdan EOFException aldığında yüklemeyi yeniden denemesi sorunu 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 ve bunu 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 edicisine ve MediaCodecAudioRenderer içindeki codec çıkış biçimine geri dönün ve gereksiz codec sıfırlamalarından kaçının.
    • Ana oynatıcıda istemci tarafı 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 uygulamasının OOM riskini azaltın.
    • MediaItem.imageDurationUs ayarlanmadığında hareketsiz resimlerin işlenmesini uyumlu hale getirme: JPEG ve HEIC hareketsiz 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ındaki farkı ölçmek için MediaSource.prepareSource(MediaSourceCaller, PlayerId, BandwidthMeter) ekleyin. Özel uygulama içeren desteği sonlandırılmış yöntem varsayılan olarak çağrılmaya devam eder. Ancak 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ştirme ExoPlayer oynatma iş döngüsü, statik bir aralık yerine dinamik olarak çalışır.
    • Videodan önce gösterilen örneklerin bulunduğu parçalar etkin oynatmaya katılırken gerçekleşebilecek gereksiz sıfırlama işlemini kaldırma
    • DefaultBandwidthMeter içinde, ülke grubu atamalarını bir dizi yerine 32 bitlik bir tam sayı olarak döndürmek için getInitialBitrateCountryGroupAssignment işlevini optimize edin. Böylece kod boyutu küçülür ve tahsisat yapılmaz.
    • Diğer yeniden denemeler (arabellek boyutu yarıya indirilerek) başarısız olursa yeniden deneme mantığının 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ı" önlenir (#3122).
    • 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).
    • İleri yönlü 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 ekleyin (#3236).
    • Akışın sonuna sarma sırasında sarmanın durmasına neden olabilen potansiyel ileri geri oynatma modu sorunu düzeltildi.
  • CompositionPlayer:
    • TrackSelector örneklerinin yayınlanmamasına neden olan sorun düzeltildi.
  • Transformer:
    • ExportResult.fileSizeBytes değerinin fazla raporlanmasına neden olabilecek bir sorun düzeltildi.
  • Kanal seçimi:
    • BaseTrackSelection.DEFAULT_FORMAT_COMPARATOR öğesini gösterin ve 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 AdaptiveTrackSelection.Factory.setTrackFormatComparator öğesini ekleyin.
    • Seçim parametrelerini izlemek için yapılan hızlı sıralı güncellemelerin bazı güncellemelerin kaybolmasına veya üzerine yazılmasına neden olabileceği, zamana 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 vermek üzere FLAG_DISABLE_ARTWORK_METADATA eklendi (#2077). Bu özellik, DefaultExtractorsFactory.setDisableArtworkMetadata üzerinden merkezi olarak da etkinleştirilebilir.
    • it35 zamanlanmış meta veri parçalarını ayıklamak için ITU-T T.35 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 verileri yoksayılır.
    • MP4: fpcm kutularında big-endian kayan nokta PCM desteği 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üleri ve sınır dışı okumaları önleme 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ı nedeniyle ses kaybı ve OutOfMemoryError yaşanması sorunu 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 değil durumuna 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ında varsayılan PCM arabellek boyutu mantığını, cihaza daha az bağımlı hale getirmek için sabit 500 ms arabellek kullanacak şekilde değiştirin.
    • MediaCodecAudioRenderer, platform kod çözücüsünden uzamsal channelMask'i çıkaracak şekilde 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ın süresini uzatırken perdeyi koruma desteği ekleyin.
    • 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 desteklemek için ToFloatPcmAudioProcessor iyileştirildi (#3090).
    • DecoderAudioRenderer.getChannelMapping işlevinin 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'ye 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 oynatma için EAC3-JOC'nin EAC3'e yedek yolu kaldırıldı. Bu cihazların standart EAC3 kod çözücüleri, EAC3-JOC akışlarının kodunu çözemez (#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:
    • Oynatıcının arama sırasında 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 ekleyin. 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 dosyasına setAttemptStreamableOutputEnabled ekleyin.
    • Mp4Muxer ve FragmentedMp4Muxer'da 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 uygulama döngüleyici iş parçacığına otomatik olarak 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 kilitlenmesi (MediaUtils.mergePlayerInfo içinde IllegalStateException) düzeltildi.
    • Etkin medya oturumlarını sorgulama ve Media3 SessionToken örneklerini döndürme desteği sağlamak için androidx.media3.session.MediaSessionManager ekleyin.
    • Yöntem, güvenilmeyen denetleyicilere yalnızca okuma erişimi sağlayacak şekilde geçersiz kılınmazsa MediaSession.Callback.onConnect öğesinin 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ıyla ilgili 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 bir 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 öğesi içinde arama yaparken MediaController üzerinde beklenmedik onMediaItemTransition() geri çağırma sorunu 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, çalınmakta olan 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.
    • MiniController composable'ı media3-ui-compose-material3 modülüne 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 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 tüm HTTP yanıt gövdesinin belleğe yüklenmesiyle ilgili KtorDataSource 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ı seç-izle yeniden çözümleme için tekrar 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 için SCORE özelliğini ayrıştırın ve Format.selectionPriority özelliğini doldurun (#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üzeltir.
  • Yayınlama uzantısı:
    • Cast.initialize(CastParams) çağrılarak 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ştiricisinin 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 eklendi ve MediaRouteButton'e state parametresi eklendi (#3172).
    • RemoteCastPlayer, parça seçiminden sonra kalıcı olarak parça maskeleme durumunda takılı kalabiliyor ve Cast alıcısından gelen sonraki parça güncellemelerini yoksayabiliyordu. Bu 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 oynatıcı değiştirilirken CastPlayer uygulamasının oynatılamayan 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, başlık ve gövde içeren POST isteklerini destekleyecek şekilde genişletin, HttpDataSourceTestEnv'ye bazı POST kaynakları ekleyin ve WebServerDispatcher'de 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 öğesine 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 derlemelerini (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 dillerinde 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 kilitlenmelerini düzeltme
    • AV1 tabanlı Dolby Vision codec kullanılırken başlatma verileri sağlanması nedeniyle video yapaylıklarının oluşmasına neden olan sorun düzeltildi (#3153).
  • Kanal 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 (#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ı "ileri geri oynatmayı durdurduğunda" geçerli olduğu ileri geri oynatma 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üncellemelerine taşınmamasına neden olan sorun düzeltildi (#3105).
  • DASH uzantısı:
    • SampleQueue uygulamasında, iptal edilmekte olan bir parçaya atlanırken 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 zamana daha iyi uyarlamak 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 minimum/basit/tesadüfi olduğunda önerilir (#2985).
      • Bu nedenle, DEFAULT_STUCK_PLAYING_DETECTION_TIMEOUT_MS ExoPlayer'den ExoPlayer.Builder'ye taşındı (desteği sonlandırılmadan).
    • 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 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 ArrayIndexOutOfBoundsException oluşturduğu hata düzeltildi (#3125).
  • 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.
  • Kanal 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çili olup olmadığına 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.
  • Denetleyici:
    • 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 (veya varsa Spatializer'ın) çıkış düzenini 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 varsayılan meta veri oluşturucu 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 uygulamak için işlevsellik sağlayan yeni bir :media3-effect-lottie modülü sunun.
  • IMA uzantısı:
    • En son reklam medya bilgisi 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 eklenerek kullanıcıların reklam tıklama URL'lerinin özel sekmeler kullanılarak başlatılıp başlatılmayacağını kontrol etmesine olanak tanır.
    • 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 eklemeyi mümkün kılın (#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, sistem tarafından ForegroundServiceDidNotStartInTimeException hatası verilmesini önler. Bu, yeni bir zorunlu yöntem olduğu için özel MediaNotification.Provider uygulayan uygulamalarda 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, "AUTO" ve "SEEK" süreksizlik nedeniyle belirli bir medya öğesi dizininden aynı medya öğesine sahip başka bir dizine geçtiğinde 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).
    • Belirli bir boyuttaki medya oturumu resminin SysUI'nin kilitlenmesine ve cihazın yeniden başlatılmasına neden olabildiği API 29'daki 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 öğesine 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 media3-ui-compose-material3 öğesine ProgressSlider Composable 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 geçiş reklamlarıyla 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).
    • Farklı konumlardan yedek akışlar varsa yükleme hatalarıyla karşılaşıldığında konum yedeğine izin verilir (#1988).
    • Başlangıç ve devam konumunu doğru şekilde hesaplamak için HLS geçiş reklamlarında X-SNAP davranışını düzeltme (#3013).
  • DASH uzantısı:
    • Segment başlangıç zamanları hizalanmamış parçaların, oynatmanın başında gecikmelere veya örneklerin kaçırılmasına neden olduğu 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ı:
    • Cast 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 bir ses/video senkronizasyonu sağlamak için dinamik planlamanın doSomeWork aralığını yalnızca ses başladıktan sonra 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, doSomeWork'ın mevcut iterasyonunun geçen süresi kadar yanlışlıkla azaltılmasına neden olan hata düzeltildi. Bu sorunun giderilmesi, CPU boşta kalma süresini uzatır ve güç tasarrufu sağlar.
    • Yedek AVC veya HEVC codec'i kullanılmaya çalışıldığında 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, oynatmanın takılmasını önlemek için API 30'un altındaki cihazlarda video codec'leri silinir (#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:
    • Platform oturumuna bağlı bir MediaController durdurulduğunda, durdurma işlemi reklam oynatılırken gerçekleşirse 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 bitmap ölçeklendirmeyi 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 ortaya çıkabilecek sonsuz döngüler düzeltildi (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 yapılan ve bu geri çağırmayı uygulayan uygulamaların JSONObject türünde ek bir bağımsız değişken eklemesini gerektiren zarar veren bir değişikliktir (#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:
    • Diğer AndroidX kitaplıklarıyla uyumlu olacak şekilde minSdk, 23 sürümüne güncellendi.
    • Player örnekleri arasında oynatma durumunun 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 öğesini 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 gerçekleşir. 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ğinde
      • 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.
      • Oynatılmaya çalışılırken 10 dakika boyunca oynatma engelleme nedeni olduğunda.
    • 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 ekleyin.
    • Oluşturucuların, oynatma listesindeki bir sonraki öğeden veri tüketmeye mevcut öğenin bitişinden en fazla 10 saniye önce başladığından emin olun.
    • Oluşturma işleminden sonra bu ayarları güncellemek için setSeekBackIncrementMs, setSeekForwardIncrementMs ve setMaxSeekToPreviousPositionMs öğelerini ExoPlayer öğesine 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 biçimli 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.
    • Önceden 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 kare hızı 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ına olanak tanıyan DefaultLoadControl.Builder.setPlayerTargetBufferBytes(String, int) özelliğini 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ın atlama bilgilerini taşımak için 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 sorunu 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 PlayerId.Preload.name ("preload") playerName için DefaultLoadControl.Builder.setPlayerTargetBufferBytes(String, int) aracılığıyla önceden yükleme amacıyla hedef arabellek baytlarını ayarlayabilir ve oluşturulan DefaultLoadControl öğesini DefaultPreloadManager.Builder.setLoadControl(LoadControl) aracılığıyla ekleyebilir.
    • Varsayılan bir uygulama ile cloneAndSet(int, int), ShuffleOrder öğesine 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 ayarlayıp 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() 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 sorununu düzeltin (#2885).
    • Uygun videolarda ileri/geri sarma performansını iyileştirir.
    • 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 varsayılan değerini 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 içinde 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, sona yakın bir yerde kaydırma modunda arama yapıldığında bir sonraki medya öğesine geçilmesine neden olan hata düzeltildi.
  • CompositionPlayer:
    • CompositionPlayer, denemeye hazır olduğunu ancak geliştirme aşamasında olduğunu belirtmek için yeni bir @ExperimentalApi ek açıklamasıyla yayınlanır. Bazı API'lerin gelecekteki sürümlerde önemli ölçüde değişmesi muhtemeldir ve bazı kullanım alanlarıyla ilgili bilinen sorunlar ve sınırlamalar vardır (bazıları belgelenmemiştir).
    • CompositionPlayer içinde COMMAND_SET_AUDIO_ATTRIBUTES ve ses odağı işleme desteği ekleyin.
    • CompositionPlayer uygulamasında ikincil sekanslarda 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() eklendi ve Effects#createExperimentalSpeedChangingEffects() yönteminin desteği sonlandırıldı.
    • EditedMediaItemSequence içinde forceAudioTrack ve forceVideoTrack yerine trackTypes kullanın.
  • Parça seçimi:
    • Diğer daha spesifik tercihleri 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ın bulunma 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, meta veri arama özelliği olan 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 ayarlanacak ş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 anlam belirsizliğini 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.
  • Denetleyici:
    • Medya denetleme yardımcı programları için özel bir ana sayfa olarak kullanılacak 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 bulunuyor. 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 medya dosyasından temsili bir 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 sınıfı, bu yeni sınıfın kullanıma sunulmasıyla birlikte kullanımdan kaldırıldı.
  • Ses:
    • AudioProcessor örneği, arama işleminden haberdar edin.
    • Özel ses çıkış yollarını desteklemek için yeni AudioOutputProvider arayüzünün DefaultAudioSink.Builder içine yerleştirilmesine izin ver. 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 kullanma (#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ımı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ı ileri geri oynatırken 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ğerini döndürmeden önce new Response ile sarmalayarak sorunları kolayca çözebilirsiniz.
    • URL ve gecikme gibi önemli istek bilgilerini AnalyticsListener.onDrmKeysLoaded (#1001) tablosuna 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ılabilecek 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 özel proguard kurallarını kullanabilmesi için bu 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'a 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 ölümcül olmayan 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, media1'in ve platformun yaptığıyla (#2637) eşitlik sağlar.
    • Komut kullanılamadığında bile getCurrentTimeline() komutunun 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, onStartCommand() içinde Intent medya tuşu etkinliği geldiğinde oynatıcıyı başlatmıyordu. Bu 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. Denetleyici 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.
    • Player ses seviyesinin sesini kapatma işlemini gerçekleştiren ui-compose öğesine MuteButtonState ekleyin. Bu durum bilgisi depolayıcı, demo-compose içinde ses açma/kapatma düğmesini görüntülemek için kullanılır.
    • ProgressStateWithTickCount sınıflarını ve ilgili rememberProgressStateWithTickCount Composable'ı media3-ui-compose modülüne ekleyin. Bu durum bilgisi depolayıcı, ilerleme durumunu yatay ve 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ı için geçici çözüm uygulandı (#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ırma
    • HLS oynatma listesi ve öğe listesi dokümanındaki 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ını giderme (#2613).
  • Kod çözücü uzantıları (FFmpeg, VP9, AV1 vb.):
    • AV1 Uzantısı: AV1 yazılım kod çözücüsü, daha yüksek kod çözme hızı için önceki libgav1 uygulamasının yerine artık yüksek performanslı dav1d kitaplığını kullanıyor.
    • FFmpeg uzantısı: STREAMINFO bloğunun doğru şekilde ayrıştırılmasını ve kod çözücüye iletilmesini sağlayarak bazı FLAC dosyalarının oynatılmasını engelleyen bir sorun düzeltildi (#2887).
  • Yayınlama uzantısı:
    • CastPlayer.Builder ekleyin. Bu sayede CastPlayer hem yerel hem de yayınlama oynatması yapabilir. Yalnızca Cast oynatmayı destekleyen eski CastPlayer davranışını korumak için RemoteCastPlayer kullanabilirsiniz. Mevcut CastPlayer oluşturucular eski davranışlarını korur ancak bunların yerine CastPlayer veya RemoteCastPlayer oluşturucuların kullanılması önerilir.
    • DefaultMediaItemConverter içinde boş olmayan bir MIME türünü zorunlu kılmayı durdurun.
    • 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 yerel ortama aktarımları etkinleştirin.
    • Session demosuna Cast 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 View kullanıcı arayüzü olarak gösterme desteği eklendi.
  • Test Yardımcı Programları:
    • FakeClock için otomatik ilerleme davranışının maksimum zaman farkını 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şınacak.
  • 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 oluşturucular 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.
    • Desteği sonlandı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 ileti dizisinden erişilirse daha net bir şekilde istisna oluşturun. Bu durum, oynatıcı dışından RendererCapabilities.getFormatSupport çağrısı yapılması nedeniyle ortaya çıkıyorsa 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 sanal cihaz kimliğini kullanma desteği ekleyin.
    • Sarma modunda dinamik planlamayı varsayılan olarak etkinleştirin.
    • Bir öğenin sonuna giderken kaynağın gereksiz yere yeniden yüklenmesini önleme.
    • Sarma modunda varsayılan olarak MediaCodec.BUFFER_FLAG_DECODE_ONLY kullanın.
    • PreloadMediaSource, önceden yükleme iş parçacığından farklı bir oynatma iş parçacığına sahip bir ExoPlayer tarafından oynatıldığında IllegalStateException hatası verilir (#2495).
    • Varsayılan bir uygulama ile cloneAndMove, ShuffleMode öğesine eklendi (#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ışken sona doğru ilerlerken 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 üzerinde setScrubbingModeParameters(..) ile özelleştirilebilir.
    • Sarma modunda kesirli arama toleransının özelleştirilmesine izin ver.
    • İleri geri oynatma 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 modülünde, örneğin altyazılar başka bir kaynaktan yüklenirken kullanılan bellek sızıntısı düzeltildi (#2338).
    • CmcdConfiguration.Factory'ın, belirli medya öğeleri için CMCD günlük kaydını devre dışı bırakmak üzere 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 yeterlidir (#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.
    • addGap() aracılığıyla eklenen ilk boşluğu sessiz sesle doldurmak için artık EditedMediaItemSequence.Builder içinde experimentalSetForceAudioTrack(true) değerini açıkça ayarlamak gerekiyor. Boşluk, dizinin ortasındaysa bu işaret gerekli değildir.
    • Muxer arayüzünü media3-transformer konumundan media3-muxer konumuna taşıyın.
    • Medya öğesini resim olarak içe aktarmak için MediaItem.Builder().setImageDuration(long) ayarını zorunlu hale getirin.
    • Kırpma sırasında MP4 düzenleme listesi içeren Transformer.Builder().experimentalSetMp4EditListTrimEnabled(boolean) ekleyin. Böylece oynatıcılara, kırpma başlangıç noktasından önceki ana kare ile kırpma başlangıç noktası arasındaki örnekleri yoksayma talimatı verilir.
    • 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 dosyayı ayrıştırırken ses biçimi için başlık uzantısının SubFormat verilerini kullanacak şekilde WavExtractor güncellendi.
    • 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ı aramaya 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 öğesinin çağrılmamasıyla ilgili hata düzeltildi.
    • ChannelMappingAudioProcessor ve TrimmingAudioProcessor için tüm doğrusal PCM örnek biçimlerine destek ekleyin.
    • 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 sürekli güçle yukarı/aşağı miksaj yapılmasına izin verilir.
    • ChannelMappingAudioProcessor, TrimmingAudioProcessor ve ToFloatPcmAudioProcessor'yi herkese açık hale getirin (#2339).
    • DefaultAudioSink'deki yetersizlikleri en iyi tahmin yerine AudioTrackPositionTracker'deki AudioTrack#getUnderrunCount() ile tespit edin.
    • Ses çıkış cihazından kaynaklanan beklenmedik konum kayması için ses zaman damgası yumuşatmayı iyileştirme.
    • 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, sesin ilerlemeye başladığı zamanı değil, ilk ölçümün zamanını bildiriyordu. Bu 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ı kesilen yüzey geçici çözümü "lenovo" ve "motorola" cihazlara genişletildi (#2059).
    • Ses örnekleri tam olarak istenen konumda başlamadığında, başlangıçta sorunsuz video karesi yayınlama özelliğini 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 ve böylece daha hızlı arama yapılmasını sağlar. 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 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 eklendi. 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 ö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'deki 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ılan boyutla 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 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 muxer'a ö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.
    • Seç-izle 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çin 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ın. Bu, eski bir uygulamaya bağlandığında eski denetleyicilerin/tarayıcıların davranışıyla aynıdır.
    • Oynatıcının 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 olabileceği 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 neden olan hata düzeltildi (#2265).
    • Bir oynatıcı, medya öğeleri hazırlanmadan veya oynatılmadan bu öğelerle ayarlanırsa 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 olduğu hata düzeltildi.
    • Canlı yayınlarda, Android Auto kullanıcı arayüzünde (ve platform medya oturumundaki bu bilgileri kullanan diğer kumandalarda) konum kusurlarını önlemek için oynatma konumunun yayınlanmasını ve platform medya kumandaları için mevcut öğede arama yapma özelliğini durdurun (#1758).
    • Eski bir MediaBrowserServiceCompat'ye bağlı MediaBrowser'nin getLibraryRoot değerine null iletildiğinde 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 ileri geri oynatma modu desteğini ekleyin. Bu özellik etkinleştirildiğinde, kullanıcı ilerleme noktasını sürüklemeye başladığında oynatıcı ileri geri oynatma moduna geçer, her hareket için bir player.seekTo çağrısı yapar ve ardından dokunma ekrandan kaldırıldığında ileri geri oynatma modundan çıkar. Bu entegrasyon, XML'de time_bar_scrubbing_enabled = true veya Java/Kotlin'deki setTimeBarScrubbingEnabled(boolean) yöntemiyle etkinleştirilebilir.
    • PlayerSurface işlevinin null değer alabilen 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 ekleyin. 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ştirildiğ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 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 parça yokken HlsSampleStreamWrapper arabellekte arama yapmaya çalıştığında oluşan 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).
    • Bir 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).
    • Grup altyazı yorumları, ses yorumlarının gruplandırılmasına benzer şekilde NAME etiketiyle gruplandırılır (#1666).
    • HlsInterstitialsAdsLoader ile X-ASSET-LIST ve canlı yayınları destekleyin.
  • DASH uzantısı:
    • Hızlı ileri/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).
    • Sonda boşluk karakterleri içeren satırlara sahip SessionDescription'lar için ayrıştırma desteği eklendi (#2357).
  • Kod çözücü uzantıları (FFmpeg, VP9, AV1 vb.):
    • Ses kod çözücü uzantıları için DefaultTrackSelector.setAllowInvalidateSelectionsOnRendererCapabilitiesChange parametresinin etkili 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.
    • FakeDownloader öğesini, diğer testlerde yeniden kullanmak üzere 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:
    • Kullanımdan kaldı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 (aşağıya bakın) "daha yeni" bir sürüm olarak görünmesini sağlamak için yayınlanmaktadır.

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ı sorunu 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'den 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 uygulamasının ExoPlayer.setVideoEffects ve CompositionPlayer ile çalışmasını sağlayın.
    • 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ın yerine 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ığını 1.8.1'den 1.9.0'a yükseltin.
    • 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 işlemeyi kolaylaştırmak için SimpleBasePlayer.State erişimini korumalıdan herkese açık olarak değiştirin (#2128).
  • ExoPlayer:
    • MediaExtractor platformuna eşdeğer özellikler sağlayan 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 DefaultRenderersFactory ayarlarını experimentalSetEnableMediaCodecVideoRendererPrewarming üzerinden 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ı 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 ekleyin.
    • MediaSourceEventListener.onLoadStarted ve ilgili MediaSourceEventListener.EventDispatcher yöntemlerine retryCount parametresi ekleyin.
    • 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 kare donmaları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. Önceden yükleme, oynatma sırasında medya öğesi geçişlerinin daha hızlı olması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 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ı alabilmesi için DefaultRenderersFactory iki MetadataRenderer örneği ekler.
    • Oynatma duraklatıldığında devam eden parça yükleme işleminin iptal edilip edilmeyeceğini yeniden değerlendirin (#1785).
    • ClippingMediaSource için, ileri/geri sarılamayan medyalarda klip oluşturmaya izin verme seçeneği ekleyin.
    • Ön ısıtma ile arama yapmanın, sonraki medya öğesi geçişini engelleyebildiği hata düzeltildi.
    • ExoPlayer.isLoading(), STATE_IDLE veya STATE_ENDED durumuna geçiş yaparken true durumunda kalmasına neden olan hata düzeltildi (#2133).
    • lastRebufferRealtimeMs'i LoadControl.Parameter'e 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şhislerine katkıda bulunmayı devre dışı bırakabilir.
    • 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 ekran kaydedicisini ekleyin ve Transformer demo uygulamasına ekran kaydı desteği ekleyin.
    • #getInputFormat() öğesini Codec arayüzüne 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 olmayan, senkronize edilmemiş 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 videolar IllegalStateException: Playback stuck buffering and not loading (#2197) ile oynatılamıyordu.
  • Ses:
    • onAudioPositionAdvancing, oynatma devam ettirildiğinde çağrılacak şekilde düzeltildi (önceden oynatma duraklatıldığında çağrılıyordu).
    • SpeedChangingAudioProcessor varsayılan parametrelerle yapılandırıldığında SonicAudioProcessor atlanmaz.
    • Sonic#getOutputSize() içinde DefaultAudioSink uygulamasının 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 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ı olunmayan 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ç tutuldu (#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üklenmesini durdurun ve bunun yerine, parça seçimi tarafından seçilirse yalnızca bir tane yükleyin (#1721).
    • TTML: style kullanarak tts:origin ve tts:extent referansları için destek ekleyin (#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ıyorduk ancak değerin her zaman milisaniye cinsinden olduğunu varsayıyorduk. Bu da yanlış zaman damgalarına (#1997) neden oluyordu.
    • 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ında ç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şlevini StaticOverlaySettings hizmetine taşıdık. OverlaySettings, dinamik yer paylaşımı ayarlarına izin verecek şekilde alt sınıfa ayrılabilir.
  • Çoğullayıcılar:
    • Çok uzun bir tam nitelikli ad kullanmamak için MuxerException, Muxer arayüzünden çıkarıldı.
    • Mp4Muxer.Builder ve FragmentedMp4Muxer.Builder'da setSampleCopyEnabled() yöntemi setSampleCopyingEnabled() olarak yeniden adlandırıldı.
    • Mp4Muxer.addTrack() ve FragmentedMp4Muxer.addTrack() artık TrackToken yerine int izleme 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, durduğ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 yöntemini geçersiz kılarken stopSelf() yönteminden önce ön plan hizmetini durdurmak için artık yalnızca player.pause() yönteminin çağrılamayacağını unutmayın. Bunun yerine MediaSessionService.pauseAllPlayersAndStopSelf() yöntemini kullanın.
    • Oynatma sırasında hata oluştuğunda veya oynatma durdurulduğunda 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şlemlerinin (ACTION_PLAY ve ACTION_PAUSE) işleyişini iyileştirerek mevcut komutlara göre yalnızca birini ayarlayın ve yalnızca biri ayarlandığında kabul edin.
    • 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 silmesine neden olan hata düzeltildi.
    • MediaSession.setSessionActivity(PendingIntent)'nin 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 hatası 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şulunu gevşetme (#2209).
  • DASH uzantısı:
    • DASH için AC-4 Seviye 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, beyan edilen 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 uyarlama 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 sürümüne 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öntemi kaldırıldı. 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() 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 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() öğesine iletilen EditedMediaItem listesinden kaldırmak için EditedMediaItem.Builder.setRemoveVideo() 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), RenderersFactory ile bir DefaultRendererCapabilitiesList oluşturup DefaultRendererCapabilitiesList.getRendererCapabilities() yöntemini çağırarak eşdeğer işlevsellik 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 zamanında etkin olan (daha önce başlamış ancak henüz sona ermemiş) 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 düzenlemelerle 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 çalıştıracak Player.listen askıya alma uzantısı işlevi ekleyin.
    • Çalışma zamanı sınıf doğrulama hatalarını önlemek için tasarlanmış, manuel olarak satır dışı bırakılmış 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ışı hale getiriyor (bu nedenle manuel satır dışı hale getirme işlemine artık gerek yok). compileSdk = 35 nedeniyle, kitaplığın tüm Gradle kullanıcıları, Android Gradle eklentisinin bu işlemi yapan bir R8 sürümünü kullanan bir sürümünü kullanıyor olmalıdır. Gradle dışı derleme sistemleri kullanan kitaplık kullanıcılarını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. Bunu 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 istemci 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 belirtilir) 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 olduğunu bildirdiğinde 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 kart geçişi. 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 çağırarak önceden yüklemeyi etkinleştirebilir. Önceden yükleme varsayılan olarak devre dışıdır. Özellik etkinleştirildiğinde, oynatmayı engellememek için DefaultLoadControl, önceden yüklemenin yalnızca oynatıcı oynatma için yükleme yapmadığı zamanlarda başlatılmasını ve devam etmesini sağlar. Uygulamalar, LoadControl.shouldContinuePreloading() yöntemini uygun şekilde uygulayarak (ör. DefaultLoadControl sınıfında bu yöntemi geçersiz kılarak) bu davranışı değiştirebilir. LoadControl sınıfının varsayılan uygulaması, bir uygulamanın LoadControl sınıfının ö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).
    • Tutarlı bir şekilde 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[] parametresini LoadControl.onTracksSelected() öğesinden kaldırın.
    • 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çindeki 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ı önleme 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ır, ayrıştırma hataları ise 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 kare donmaları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 Surface aracılığıyla Transformer'a sıraya eklemeyi destekleyen SurfaceAssetLoader öğesini ekleyin.
    • ImageAssetLoader, IllegalStateException hatası vermek yerine AssetLoader.onError aracılığıyla 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.
  • Parça 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'nin, sonraki örnekler tarafından referans olarak kullanılmayan H264 örneklerini tanımlamasına izin verin.
    • 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 veriler içermeyen 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 içindeki 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 tabanlı 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ü onaylayın. Bu, istenen URI'dan farklıysa testler yeni DataSourceContractTest.TestResource.Builder.setResolvedUri() yöntemini kullanarak bunu belirtebilir.
    • DataSourceContractTest: DataSource.getUri() ve getResponseHeaders()'nin, 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ürdüğünü onaylayın.
      • 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 yüksekliği meta verilerini otomatik olarak yapılandırın.
    • İleri veya geri sararken ses seviyesinin sorunsuz bir şekilde azalmasını sağlar.
    • İleri/geri sarma sırasında oluşabilecek patlama seslerini düzeltme
    • Sonic'in zaman uzatma/perde kaydırma algoritması için kesme hatası birikmesi düzeltildi.
    • 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).
    • Akış sonu sinyali döndürmeden son örnekten sonra 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 (mikrosaniye olarak gösterildiğinde ve 90,000 MPEG zaman tabanıyla çarpıldığında 64 bit long değerini aşan) sahip WebVTT'nin 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'den 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 resimleri video olarak dışa aktarma işlemi daha hızlı tamamlanır.
  • IMA uzantısı:
    • Oynatma listesini temizlemenin ImaServerSideAdInsertionMediaSource uygulamasında ArrayIndexOutOfBoundsException hatasına neden olabildiği hata düzeltildi.
    • Videodan önce gösterilen reklam içermeyen, sunucu tarafında eklenen DAI akışlarının, son videonun ortasında gösterilen reklamdan (#1741) sonra oynatılırken ArrayIndexOutOfBoundsException hatasına neden olabildiği hata düzeltildi.
  • Oturum:
    • Uygulamaların bu yöntemi geçersiz kılarak kaldığı yerden oynatma için gelen oynatma komutunu engellemesine izin vermek istiyorsanız 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'in eski hizmet tarafından geri gönderilen gerçek dönüş değerini almasını engelledi (#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 play() isteğinde bulunduktan sonra oturum uygulamasının ön plan hizmeti başlatmasına izin veremediği 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.
    • Birlikte çalışabilirlik davranışını iyileştirerek eski bir MediaBrowserService hizmetine bağlı Media3 tarayıcısının, bir üst öğeye abone olurken parentId öğesinin alt öğelerini iki kez istememesini sağlama.
  • 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).
    • Üstbilgi 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ı baş takibi ö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 durdurun. 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öntemi kaldırıldı.
    • Desteği sonlandırılan DefaultEncoderFactory yapıcıları 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.
    • Subtitle içinde istenen çıkış başlangıç zamanının 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:
    • Belgelendiği gibi, KEYCODE_HEADSETHOOK öğesine iki kez dokunulduğunda "sonrakine atla" işlemi gerçekleştirilir (#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() öğesine iletilen sürenin, resim olmayan bir 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 kaynağın önceden yüklenmesini 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 oyuncuyu desteklemesini sağlamak için çoğu LoadControl yöntemine PlayerId ekleyin.
    • Buffer.isDecodeOnly() ve C.BUFFER_FLAG_DECODE_ONLY öğelerini kaldırın. Oluşturucular ve kod çözücüler, zaman damgasına göre arabellekleri atlamaya karar vereceğinden bu işaretin ayarlanması gerekmez. Ö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 öğesine ekleyin.
    • Önceden yükleme yöneticisi örneğini korurken tüm tutma kaynaklarını serbest bırakmak için BasePreloadManager öğesine reset() ekleyin.
    • PriorityTaskManager'de kullanılan öncelik değerini ve API 35'ten itibaren MediaCodec önemi için ExoPlayer.setPriority() (ve Builder.setPriority()) ekleyin.
    • CMCD'de yanlış bs (tampon yetersizliği) anahtarına neden olan, son yeniden arabelleğe alma süresinin güncellenmesiyle ilgili sorun 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 clear öğesini PreloadMediaSource öğesine ekleyin.
    • Daha yüksek öncelikli görevler için codec kaynakları geri alındığında kullanılan yeni hata koduPlaybackException.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 bunu 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, Work Tasks 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'e sinyal gönderir. 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()'in önceki öğeyi aradığı maksimum konumu yapılandırmak için ExoPlayer.Builder.setMaxSeekToPreviousPositionMs() ekleyin (#1425).
    • 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 gevşetme
    • 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 ekleme
    • 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ı sorunu düzeltildi.
    • PCM girişi işlenirken ses kanalı sayısının stereoyla sınırlandırıldığı bir kod çözücü hatası düzeltildi.
    • ExoPlayerAssetLoader içinde 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 öğesini kaldırın.
    • İçerik URI şemalarından HEIC resim yükleme sorunu düzeltildi. (#1373).
    • Ses-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 üstbilgisi) yerine Info karesindeki 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 sonuç verir (#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 oynatma için DTS:X Profile 2 kodlama özellikleri düzeltildi (#1299).
    • Yük devretmeli oynatma için AudioTrack.stop() yöntemini çağırmadan önce DefaultAudioSink yönteminde 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ımlayabilir.
    • SilenceSkippingAudioProcessor uygulamasında, 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 şekilde dinamik olarak planlaması için MediaCodecAudioRenderer.getDurationToProgressUs() uygulayın.
  • Video:
    • Oynatma sırasında yüzey değiştirirken Listener.onRenderedFirstFrame() öğesinin çok erken gelmesiyle ilgili 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ını düzeltme.
  • Metin:
    • Arama konumundan önce başlayan altyazıların atlanması sorunu 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 sırasında değil, 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, SubtitleParser (ve SubtitleDecoderFactory yerine SubtitleParser.Factory) uygulamak için bunları güncellemesi 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üzeltin (#1367).
    • CEA-708: rowLock değerini yoksay. CEA-708-E S-2023 spesifikasyonu, akıştaki değerlerden bağımsız olarak rowLock ve columnLock değerlerinin doğru olarak kabul edilmesi gerektiğini belirtir (columnLock desteği uygulanmadığından her zaman yanlış olarak kabul edilir).
      • Bu değişiklik başlangıçta 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 "set pen location" komutunu basit bir şekilde işlemesi nedeniyle yinelenen yeni satırların eklenmesi engellendi (#1315).
    • WebVTT altyazı örneği işaret içermediğinde (ör. DASH akışının bir parçası olarak) LegacySubtitleUtil kaynaklı IllegalArgumentException düzeltildi (#1516).
  • Meta veriler:
    • MP4'ün ID3 sıralama etiketleriyle eşlenmesi düzeltildi. Daha önce "albüm sıralama" (soal), "sanatçı sıralama" (soar) ve "albüm sanatçısı sıralama" (soaa) MP4 etiketleri yanlışlıkla TSO2, TSOA ve TSOP ID3 etiketleriyle 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öntemin işe yaradığı daha önce belgelenmemiş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 bir değer olarak zaten ek açıklamayla belirtilmiş.
    • ByteArrayDataSource'nin, oluşturma sırasında sabit kodlu 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'ında HLG yüzey çıkışını iyileştiren EGL_GL_COLORSPACE_BT2020_HLG_EXT için destek 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.
    • TimestampWrapper, ExoPlayer#setVideoEffects ile kullanıldığında 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ükseltin.
    • Ç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 değerin denetleyiciler için 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() yöntemini çağırı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üre ayarlanmayarak canlı yayınlar için medya bildirimindeki arama çubuğu gizlendi (#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 birlikte hata durumuna güncellemek için kullanılır (#543).
    • Belirli bir kumandadan gelen bir dizi oyuncu etkileşimi sona erdiğinde oturumları bilgilendirmek için MediaSession.Callback.onPlayerInteractionFinished() ekleyin.
    • Hata ve mümkünse hatanın nasıl çözüleceği hakkında daha fazla bilgi sağlamak için hata kodu yerine SessionError ekleyin ve bunu 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ın.
    • Önemli ve önemsiz hataları platform oturumuyla eşleyin. PlaybackException, PlaybackStateCompat'in ö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.
    • Oturum etkinliğinin, genel oturum etkinliğini geçersiz kılacak şekilde denetleyici başına 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 HlsSampleStreamWrapper içinde yanlış bir ofsetle 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 içinde 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 HttpEngineDataSource adresini HttpDataSource olarak 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 yapıcıyı ve OkHttpDataSourceFactory 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 oluşturucuyu kaldırın. Bunun yerine DefaultHttpDataSource.Factory kullanın.
    • DashMediaSource.DEFAULT_LIVE_PRESENTATION_DELAY_MS öğesini kaldır Bunun yerine DashMediaSource.DEFAULT_FALLBACK_TARGET_LIVE_OFFSET_MS kullanın.
    • MediaCodecInfo.isSeamlessAdaptationSupported(Format, Format, boolean) öğesini kaldır Bunun yerine MediaCodecInfo.canReuseCodec(Format, Format) politikasını kullanın.
    • DrmSessionManager.DUMMY ve getDummyDrmSessionManager() yöntemini kaldırın. Bunun yerine DrmSessionManager.DRM_UNSUPPORTED politikasını kullanın.
    • 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çindeki 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ı sorunu 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 sunu zaman damgalarını desteklemeyen MediaMuxer nedeniyle oluşan istisna için geçici çözüm ekleyin.
  • Parça 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ıyla ilgili sorun 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şiklik geri alındı (#7909). Bu durum, değişikliğin yalnızca I-frame HLS akışları (#1150) ve H.262 HLS akışları (#1126) ile ilgili yeni sorunlara neden olmasından kaynaklanmaktadır.
  • Ses:
    • Ses parçası, aktarma modunda başlatılamazsa aktarmayı devre dışı bırakarak oluşturucunun kurtarılmasına izin ver.
  • 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 ekleme
    • 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şleme özelliğinin 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 öğesinden sahte ek CuesWithTiming örnekleri oluşturmasını önleyin (#1177).
  • DRM:
    • Bazı Android 14 cihazlarda ResourceBusyException veya NotProvisionedException yerine MediaDrm çerçevesi tarafından oluşturulabilen NoSuchMethodError için 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 iletilmemesi 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.):
    • Ek bir Maven deposunun yapılandırılmasını gerektirdiğinden MIDI uzantısını varsayılan olarak yerel bağımlılık olarak devre dışı bırakın. Yerel bir bağımlılıktan bu modüle 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.
    • Reklamları AdPlaybackState içinde tek bir Uri yerine tam MediaItem ile 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ükseltmemiz için gereklidir.
    • En az biri boş olmadığında (#964) MediaMetadata.Builder.populate(MediaMetadata) içinde hem artworkUri hem de artworkData değerlerini doldurun.
  • 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 öğedeki meta verilerin 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 ön eki ekleyin. Bu, hangi kaynağın Format (#883) ürettiğini belirlemeye yardımcı olur.
    • Ö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 karesiyle başlamasını sağlamak için API ekleyin. Bu sayede, kırpma işlemlerinin çıkışı, sunum zaman damgasına kadar ilk video karesini 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).
  • Parça 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 sahip dosyalar için sabit bit hızı (CBR) aramasını kullanın (Xing üstbilgisinin CBR eşdeğeri). Daha önce Info başlığındaki arama tablosunu kullanıyorduk ancak bu, başlığı yoksayıp dosyanın CBR olduğunu varsaydığımız duruma kıyasla 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 düzeyi artışıyla iyileştirildi; minimum sessizlik ve daha doğal sessizlik süreleri korundu (#7423).
    • Atlanan sessizliğin daha kesin bir şekilde bildirilmesi (#1035).
  • Video:
    • VideoFrameProcessor.Factory bağımsız değişkenini alan MediaCodecVideoRenderer oluşturucusunu, VideoSinkProvider bağımsız değişkenini alan bir oluşturucuyla 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 bit eşlem ipuçlarının serileştirilmesini düzeltme (#836).
    • CEA-708: rowLock değerini yoksay. CEA-708-E S-2023 spesifikasyonu, akıştaki değerlerden bağımsız olarak rowLock ve columnLock değerlerinin doğru olarak kabul edilmesi gerektiğini belirtir (columnLock desteği uygulanmadığından her zaman yanlış olarak kabul edilir).
  • Resim:
    • DASH küçük resimleri için destek ekleyin. Izgara resimleri kırpılır ve ImageOutput, sunum zamanlarına yakın bir zamanda tek tek küçük resimler sağlar.
  • 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ır. 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şlamazdı). 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ılamayı devre dışı bırakma (#962).
    • Yalnızca boş olmayan ekstralara sahip MediaItem.RequestMetadata öğesinin medya kumandaları ve oturumlar arasında iletilmemesi sorunu düzeltildi.
    • MediaLibrarySession.Builder öğesine, 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ı devam ettirir 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 parça seçimlerinin, yayının varsayılan konumunda yanlış şekilde 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 bir 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, oynatmanın tamamen başarısız olması yerine etiket bilgileri olmadan devam edebileceği anlamına gelir.
  • DRM:
    • Sahte ClearKey https://default.url lisans URL'si için geçici çözüm, API 33 ve sonraki sürümleri kapsayacak şekilde genişletildi (önceden geçici çözüm yalnızca API 33 için geçerliydi) (#837).
    • Oynatıcıya bağlı bir yüzey olmadan şifrelenmiş içerikten net 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 kumandalar için notifyChildrenChanged yayını 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).
    • İlk bildirim güncellemesi istendiğinde medya bildirimi denetleyicisinin bağlantıyı tamamlamamasıyla ilgili IllegalStateException sorunu düzeltildi (#917).
  • 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ına neden olan 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 (büyük olasılıkla Logger.appendThrowableString(String, Throwable) kullanılarak).
    • 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).
    • Util.shouldShowPlayButton uygulamasında varsayılan kullanıcı arayüzünü ve bildirim davranışını değiştirerek oynatma geçici olarak durdurulduğunda (ör. geçici ses odağı kaybı nedeniyle) "oynat" düğmesini gösterin. 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 ileri/geri sarma 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 iyileş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 içinde ConcurrentModificationException ile ilgili sorunları 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 için frameRate ve durationUs parametreleri TimestampIterator olarak değiştirildi.
  • Parça seçimi:
    • Sorunsuz olmayan uyarlamaya açıkça izin vermek veya 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 uygulamasının ayrıntılarına çalışma zamanında erişmek istiyorsanız önce Extractor.getUnderlyingInstance yöntemini çağırmanız gerekir.
    • BmpExtractor ekleyin.
    • WebpExtractor ekleyin.
    • HeifExtractor ekleyin.
    • Mp4Extractor 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 çıkışındaki boşaltma yapılandırmasının ayarlandığı AudioSink.setOffloadMode() ekleyin. Varsayılan değer: AudioSink.OFFLOAD_MODE_DISABLED.
    • Boşaltma, 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 seçim yalnızca parçanın biçimi boşaltmada destekleniyorsa yapılır. 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 oynatma için Opus boşluksuz meta veri desteği ekleyin.
    • İlk yazma işleminde başarısız olursa boşaltmayı devre dışı bırakarak oluşturucu kurtarmaya izin verme (#627).
    • Yalnızca ses aktarımlı oynatma için Aktarma 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ı eklendi.
    • DTS Express ses arabelleği yetersizliği sorunu düzeltildi (#650).
    • E-AC3-JOC için özellik kontrolünün bir IllegalArgumentException oluşturmasına 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şleniyor.
  • 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:
    • Zaman damgasına göre bit eşlem girişini sıraya alan VideoFrameProcessor.queueInputBitmap(Bitmap, Iterator<Long>) ekleyin.
    • VideoFrameProcessor.registerInputStream() değerini engelleyici olmayacak şekilde değiştirin. Uygulamalar VideoFrameProcessor.Listener#onInputStreamRegistered() yöntemini uygulamalıdır.
    • VideoFrameProcessor.queueInputBitmap öğesinin 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:
    • Bildirimler ön plan hizmeti davranışını DefaultMediaNotificationProvider içinde FOREGROUND_SERVICE_IMMEDIATE olarak ayarlayın (#167).
    • Samsung cihazlarda desteği sonlandırılan 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() yöntemini 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 denetleyici olarak kullanıldığında Android Auto kullanıcı arayüzündeki queue düğmesi gösterilmez (#339).
    • Varsayılan olarak SimpleBitmapLoader yerine 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 (varsayılan olarak 5 dakika) içinde 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 foregroundServiceType olarak dataSync 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, çakışan altyazıları birleştirme konusunda daha iyi destek sunar. Altyazı segmentleri arasında geçiş yaparken titremeyi çözme de buna dahildir. Bunu DashMediaSource.Factory.experimentalParseSubtitlesDuringExtraction() (#288) kullanarak etkinleştirebilirsiniz.
  • RTSP uzantısı:
    • TCP'ye geri dönerken IndexOutOfBoundsException hatasına veya bazı durumlarda oynatmanın askıya alınmasına neden olabilecek bir yarışma durumu düzeltildi.
    • RtspMediaPeriod yükleme durumu döndürülürken RTSP kurulumundaki durumu kontrol edin (#577).
    • Seçenekler yanıtı genel başlığındaki özel Rtsp istek yöntemlerini yoksayma (#613).
    • Etkin tutma RTSP seçenekleri isteklerini 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 olarak yeniden adlandırıldı (#734).
  • 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'yı 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 belirsiz bir şekilde ilerlemesine neden olan 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) yöntemine 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:
    • Oynatma listesi temizlendikten sonra PlaybackStatsListener içinde sahte PlaybackStats oluşturulmasıyla ilgili sorun 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, yük devretmeli Opus oynatma için bit akışına Ogg kimlik üstbilgisi ve yorum üstbilgisi 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şmasına neden olan sorunlar düzeltildi (#78).
    • PlayerWrapper aracının 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 VolumeProviderCompat oluşturma yöntemi 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 ekleyin ve mevcut oluşturucuyu kullanımdan kaldırın.
    • 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 öğesinden kullanılabilir parça türlerini filtrelemeye olanak tanıyan FilteringMediaSource ekleyin.
    • Uyarlanabilir akış biçimleri DASH, HLS ve SmoothStreaming'in 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 değerini, 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.
    • Haritada anahtar olarak kullanılan UID'leri içeren dönemleri kapsayan bir zaman çizelgesi parametresi ekleyerek ServerSideAdInsertionMediaSource.setAdPlaybackStates(Map<Object, AdPlaybackState>) imzasını 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) desteğini sonlandırın. 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 dosyasını excludeTrack, isBlacklisted dosyasını 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) kullanın.
    • Transformer.startTransformation(MediaItem, ParcelFileDescriptor) öğesini kaldır
    • Giriş karesinin işlenmeyi beklediği sırada video akışının sonu sinyali verilirse dönüşümün takılmasına (muxer 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 üzerinden codec'leri sorgulayın.
    • Bazı cihazlarda çalışmadığı için DefaultEncoderFactory uygulamasındaki B-frame yapılandırmasını kaldırın.
  • Kanal 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 alınan meta veri örnek zamanıyla yanlış bir zaman damgası ofseti başlatması sorunu düzeltildi (#356).
  • Ses:
    • Tünel oluşturma etkinleştirildiğinde ve AudioProcessors etkinken bazı oynatma işlemlerinin başarısız olmasına neden olan hata düzeltildi (ör. boşluksuz kırpma için) (#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 dinleyicisi 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 arayüz RendererCapabilities.Listener 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 int 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 boyutu 0 genişlik ve yüksekliğe sahip 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ştirin. Meveut 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 kaldığı yerden oynatma özelliğini uygulayabilmesi için androidx.media3.session.MediaButtonReceiver ekleyin (#167).
    • İstenen MediaItems değerlerinin LocalConfiguration (ör. URI) varsa Player değerine aktarılmasına izin vermek için MediaSession.Callback.onAddMediaItems değerine 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).
    • İstenen MediaItems değerlerinin LocalConfiguration (ör. URI) varsa Player değerine aktarılmasına izin vermek için MediaSession.Callback.onAddMediaItems değerine 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ünürlüğü için temel URI kullanın (#11160).
  • DASH uzantısı:
    • Çok dönemli DASH akışları için MediaLoadData.startTimeMs ve MediaLoadData.endTimeMs öğelerinden 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ı ayarlamak üzere HlsMediaSource.Factory.setTimestampAdjusterInitializationTimeoutMs(long) ekleyin. Başlatma işlemi zaman aşımından önce tamamlanmazsa oynatmanın sonsuza kadar duraklatılmasını önlemek için PlaybackException hatası verilir. Zaman aşımı varsayılan olarak sıfıra ayarlanır (#323).
  • Test Yardımcı Programları:
    • DataSourceContractTest içinde URI şeması büyük/küçük harf duyarlılığı 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 öğesini kaldırın, bunun yerine HlsMultivariantPlaylist öğesini kullanın.
    • 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 yapıcıları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üğü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 ve channelDescriptionResourceId parametresi sağlama seçeneğini içeren, desteği sonlandırılmamış bir oluşturucu kullanın.
    • Karakter kümeleri için desteği sonlandırılan 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 oluşturucusunu kaldırın ve bunun yerine Context parametresi sağlama seçeneğini içeren, desteği sonlandırılmamış bir oluşturucu 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, bunun yerine prepare() politikasını kullanın.
    • Desteği sonlandırılan sıfır bağımsız değişkenli DefaultTrackSelector oluşturucuyu kaldırın, bunun yerine DefaultTrackSelector(Context) kullanın.
    • Desteği sonlandırılan OfflineLicenseHelper oluş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 ile DISCONTINUITY_REASON_SEEK işlemlerini kullanın.
    • ExoPlayer.setHandleWakeLock(boolean) öğesini kaldırın, bunun yerine setWakeMode(int) 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 kayıtları 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ış 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şlayan UTF-16 dosyaları için destek eklendi (#319).
  • Oturum:
    • MediaController, işlemlerini güncelleyen eski bir MediaSessionCompat cihazına bağlandığında kullanılabilir komutlarını güncellememesine neden olan sorun düzeltildi.
    • API 30'da params.isRecent == true ile sistem kullanıcı arayüzünden 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'nin IllegalStateException hatası vermesine 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 commit'leri 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ı sorunu 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 olduğu sorun düzeltildi (#318).
    • Uygulama amaçlamadığı halde kitaplık tarafından bir medya düğmesi alıcısının tanımlanmasıyla 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 yeniden 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 commit'leri 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 taahhütleri 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 sorunu 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ı performanslı bir şekilde oynatamayabileceğini bildirse bile MediaCodecSelector tercihlerini koruyacak şekilde ayarlayın. Örneğin, varsayılan seçiciyle, biçimi tam olarak destekleyen yazılım kod çözücü yerine yalnızca işlevsel desteğe sahip donanım kod çözücü tercih edilir (#10604).
    • Yeni bir ExoPlayer örneği için önceden mevcut 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 öğesini tek bir pencerede birleştirmeye olanak tanıyan ConcatenatingMediaSource2 eklendi (#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 hatası verilir.
    • fMP4'te doğrudan bir senkronizasyon karesine sararken ö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:
    • Altyazı dosyası işaret içermiyorsa Subtitle.getEventTime öğesine geçersiz (negatif) bir dizin ileten TextRenderer sorununu düzeltin.
    • SubRip: UTF-16 dosyaları için destek ekleyin (bayt sırası işaretiyle başlıyorlarsa).
  • 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 veya klasör türünü belirtmek için MediaMetadata.mediaType ekleyin.
    • MediaMetadata.folderType yerine MediaMetadata.isBrowsable ekleyin. Klasör türü, bir sonraki sürümde kullanımdan kaldırılacak.
  • DASH:
    • Karo sayıları da dahil olmak üzere görüntü uyarlama setleri için tam ayrıştırma ekleyin (#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ındaki orta 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 üzere soyut SimpleBasePlayer eklendi.
    • Platform oturum jetonunu Media3'e dönüştürmek için yardımcı yöntem ekleyin SessionToken (#171).
    • Platform medya oturumunun güncellemelerini tetiklemek için onMediaMetadataChanged 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 MediaItem listesini, başlangıç dizinini ve oturuma göre konumu değiştirme/ayarlama imkanı sunmak için onSetMediaItems geri çağırma dinleyicisi ekleyin (#156).
    • Bluetooth dışı medya düğmesi etkinlikleri için iki kez dokunma algılamasını önleme (#233).
    • Şüpheli 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 veya klasör türünü belirtmek için MediaMetadata.mediaType ekleyin.
    • MediaMetadata.folderType yerine MediaMetadata.isBrowsable ekleyin. Klasör türü, bir sonraki sürümde kullanımdan kaldı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 commit'leri içerir.

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

  • Çekirdek kitaplık:
    • Şu anda 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 ekleyin (#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ı arama ile 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önderiliyordu (#10667).
    • Videonun oluşturulduğu yüzeyin boyutunu döndüren Player.getSurfaceSize ekleyin.
    • Oynatıcı sürümü sırasında dinleyicilerin kaldırılmasının IllegalStateException hatasına neden olabileceği hata düzeltildi (#10758).
  • Oluştur:
    • 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 bloğundan kaçının.
  • Kanal 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:
    • AudioTrack örneklerini yayınlamak için SingleThreadExecutor kullanın. Böylece birden fazla oynatıcıyı aynı anda yayınlarken OutOfMemory hatalarını önleyebilirsiniz (#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) oluşan setMediaDrmSession failed: session not opened hatası düzeltildi.
  • Metin:
    • CEA-608: 2. alandaki hizmet anahtarı 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'larından bit eşlem yükleyebilir (#108).
    • MediaController öğesinin bir dönemdeki reklamda ileri/geri sarması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).
    • DefaultNotificationProvider tarafından oluşturulan bildirimle ilişkili "rozet"i API 26 ve API 27'de 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 eklendi (#119).
    • MP4A-LATM için destek eklendi (#162).
  • IMA:
    • IMA SDK'nın bir reklamı yüklerken takıldığı durumları ele almak için reklam bilgilerini yükleme zaman aşımı ekleyin (#10510).
    • İçeriğin sonuna doğru ilerlerken ara reklamların atlanmasını önleme (#10685).
    • Sunucu tarafı reklam eklenmiş 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şaretler eklendi (#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 tanımlayabilmek için getDeviceInfo() 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 verin (#9752).
    • DefaultMediaSourceFactory içinde bazı durumlarda çalışmayan setDataSourceFactory uygulamasını düzeltme (#116).
  • Ayıklayıcılar:
    • H265 kısa vadeli 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 eklendi (#110).
  • Leanback uzantısı:
    • LeanbackAdapter (10420) için playWhenReady değişikliklerini dinleyin.
  • Oyuncular:
    • CastTimeline içinde Window.mediaItem olarak oynatma listesi yöntemlerine iletilen MediaItem öğesini 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 bulunmayı devre dışı bırakabilir.
    • 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ünün algılanması durduruldu. Bu oynatmalarda 4G ağı kullanıldığı 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 , RequestMetadata kapsamına dahil edildiğinden 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.
  • Kanal seçimi:
    • TrackSelectionOverrides sınıfını TrackSelectionParameters ile birleş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 "desteğinin sonlandırılmasının iptal edilmesi" de dahildir ancak farklı parametre türleri kullanılır.
    • 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ı biçim üç boyutlu ses (Android 12L+) olarak ayarlanmadığı veya Dolby surround ses biçimi olmadığı sürece çok kanallı ses biçimleri yerine stereo/mono 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 dosyasını 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 sorgulayın (API 29+) 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 arama yaparken DRM oturumunun her zaman doğru şekilde güncellendiğinden emin olun (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 etkinliklerinin yayınlanması düzeltildi (#9605). Ayrıca tüm görünüm yapılandırmaları için etkinliklerin OnLongClickListener hedefine yayınlanmasını düzeltin.
    • PlayerView sınırlarından ACTION_UP öncesinde çıkan bir dokunma etkinliği dizisinin 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 işlemlerini, 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 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 hedefine iletilmesine 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.
  • Sorunsuz Akış:
    • null değerinin SsMediaSource.Factory.setCompositeSequenceableLoaderFactory hedefine iletilmesine 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 ekleyin (#47).
    • OPUS için RTP okuyucu ekleme (#53).
  • Veri kaynakları:
    • DummyDataSource dosyasını 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 öğelerini kaldırın. Aynı işlev MediaController.setMediaItem ve MediaSession.Callback.onAddMediaItems kullanılarak da elde edilebilir.
    • Eski MediaController aramalarını onSetMediaUri yerine MediaSession.Callback.onAddMediaItems cihazına yönlendirerek medya oynatın.
    • Bildirimin özelleştirilebilmesi için MediaNotification.Provider ve DefaultMediaNotificationProvider ekleyin.
    • Albüm kapak 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çinde NPE'yi düzeltme (#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ı 100 ms'den 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 öğelerini kaldırın. Bunun yerine Player.getCurrentTracks kullanın. ExoPlayer.getCurrentTrackGroups ve ExoPlayer.getCurrentTrackSelections yöntemlerini de kullanmaya devam edebilirsiniz ancak bu yöntemler artık desteklenmemektedir.
    • 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ü şu commit'leri 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 başlık alanları name ve genre, Player.Listener.onMediaMetadataChanged() aracılığıyla uygulamaya ulaşmaları için sırasıyla MediaMetadata.station ve MediaMetadata.genre alanlarına yayılır (#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 dosyasını 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.
  • Kanal seçimi:
    • Parça seçiminde tercih edilen video rolü işaretleri desteklenir (#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ığı, uyarlanabilir seçimler için yalnızca aynı düzeyde kod çözücü ve donanım desteğine sahip 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ılma işlemlerinin karışımının doğru şekilde uygulanmadığı parça seçimi sorunu düzeltildi (#9649).
    • TrackGroupArray içinde yinelenen TrackGroup kullanımını 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ığı değiştirin (#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ığını, gerekirse uyumlu bir E-AC3 kod çözücü kullanacak şekilde düzeltme
    • AudioCapabilities API'lerini, null yerine açıkça AudioCapabilities.DEFAULT_AUDIO_CAPABILITIES iletilmesini gerektirecek şekilde değiştirin.
    • DefaultAudioSink öğesine AudioTrackBufferSizeProvider ekleyerek AudioTrack arabellek boyutu hesaplamasının özelleştirilmesine izin verin. (#8891).
    • İstenen arabellek boyutu 1 MB'tan büyükse AudioTrack 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ı önleyin.
  • 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 sınıfına, reklam grubunun sıfırlanarak tekrar oynatılabilmesini sağlayan bir yöntem ekleyin (#9615).
    • Reklam oynatılırken 1.0 oynatma hızını 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 kanal 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 destekleyin (#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çalara ayrılmamış hazırlığı kullanın. Yorumlarınız, ana oynatma listesinde beyan edilmeyen çoklanmış altyazı dosyaları içeriyorsa bunları oynatılabilmeleri için ana oynatma listesine eklemeniz 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ılacak 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ünü 21'e yükseltin.
    • 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 verilir.
    • 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 DefaultMediaItemConverter ile destekleyin (#9663).
  • FFmpeg uzantısı:
    • build_ffmpeg.sh, GNU'nun ikili yardımcı programları yerine LLVM'nin ikili yardımcı programlarına bağımlı 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 öğelerini 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) yapıcılarını kaldırın. Bunun yerine DefaultRenderersFactory(Context) oluşturucusunu, DefaultRenderersFactory#setExtensionRendererMode ve DefaultRenderersFactory#setAllowedVideoJoiningTimeMs'yi kullanın.
    • Tüm herkese açık 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 commit'leri 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.
  • Oynatma işlemlerini 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. Uygulamalara Media3'e geçiş için zaman tanımak amacıyla 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.