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ü
24 Haziran 2026 1.10.1 - - 1.11.0-alpha01

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 deposunu okuyun.

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

Eski

dependencies {
    def media3_version = "1.10.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.10.1"

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

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

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

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

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

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

    // For inspecting media files
    implementation("androidx.media3:media3-inspector:$media3_version")
    // For extracting and processing video frames
    implementation("androidx.media3:media3-inspector-frame:$media3_version")

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

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

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

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

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

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

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

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

Geri bildirim

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

Sürüm 1.11.0

1.11.0-alpha01

  • Ortak kitaplık:
    • Ses kanalı maskesini açıkça temsil etmek için Format.channelMask, bunu güvenli bir şekilde çözmek için de yeni bir Util.getAudioTrackChannelConfig(Format) aşırı yüklemesi ekleyin.
    • Kotlin 2.0.20 sürümünden 2.2.0 sürümüne yükseltildi.
  • ExoPlayer:
    • ExoPlayer'da IllegalStateException veya IndexOutOfBoundsException'ye neden olabilecek, zamanlamaya bağlı eşzamanlılık hatası düzeltildi.
    • AdsMediaSource'da reklam grubu sayısı kontrollerini gevşeterek bir reklam grubu tamamen işlendiğinde reklam grubu sayısının azalmasına izin verin (hasUnplayedAds() false), sıfırlama iş akışları sırasında dinamik reklam grubu yeniden boyutlandırmasına olanak tanıyın.
    • Her dönem için AdPlaybackState öğesini bölerek ve kaydırarak çok dönemli içeriklerde (ör. DASH) reklam desteği ekleyin.
    • Yayınların bildirim işaretlerini 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'in çalışma hızını hesaplamak için MediaCodecVideoRenderer bölümündeki kare hızı tahmincisine ve MediaCodecAudioRenderer bölümündeki codec çıkış biçimine geri dönerek gereksiz codec sıfırlamalarını önleyin.
    • Temel oynatıcıda istemci tarafında eklenen reklamlar için içerik kırpma özelliğini kaldırın. Bunun yerine, AdsMediaSource kırpma mantığını ele alır. Özel istemci tarafında eklenen reklam kaynaklarının, içeriği dahili olarak kırpmak için güncellenmesi gerekir.
    • İyi biçimlendirilmiş ancak tanınmayan codec profili veya düzeyi olan parçaları supported=YES yerine supported=NO_EXCEEDS_CAPABILITIES olarak işaretleyin (eksik veya yanlış biçimlendirilmiş profil ya da düzey bilgisi olan parçalar bu şekilde işaretlenir). Bu sayede, cihaz tarafından desteklenmesi muhtemel olmayan bu parçaların, daha iyi desteklenen alternatifler olduğunda seçilmemesi sağlanır.
    • DefaultPreloadManager.SimpleRankingDataComparator işlevini ekleyin. Bu işlev, medya öğelerinin sıralarını, şu anda oynatılan medya öğesinin dizinine olan mesafelerine göre karşılaştıran bir RankingDataComparator işlevidir. Daha ayrıntılı bir karşılaştırma mantığına ihtiyaç duyulması halinde uygulamalar compare(Integer, Integer) yöntemini geçersiz kılabilir. Özel SimpleRankingDataComparator, DefaultPreloadManager.Builder öğesinin yeni bir oluşturucusu aracılığıyla eklenebilir.
    • Kullanılabilir yığın belleği az görünüyorsa arabellek bayt boyutu sınırlarına geri dönerek DefaultLoadControl.prioritizeTimeOverSizeThresholds'nın OOM riskini azaltın.
    • MediaItem.imageDurationUs ayarlanmadığında hareketsiz resimlerin işlenmesiyle ilgili düzenleme: JPEG ve HEIC hareketsiz resimleri artık çok kısa bir varsayılan süreyle "oynatılıyor" (PNG ve diğer resimlerin daha önce davrandığı şekilde).
    • MediaSource.prepareSource(MediaSourceCaller, PlayerId, BandwidthMeter) öğesini MediaSource öğesine bağlamak için BandwidthMeter öğesini ekleyin. Özel uygulama içeren, desteği sonlandırılan yöntem varsayılan olarak çağrılmaya devam edecek olsa da yeni yöntemin uygulanması ve eski yöntemle eşitlik sağlamak için BandwidthMeter.getTransferListener() kullanılması önerilir.
    • DefaultBandwidthMeter bölümünde özel bir InitialBitrateSupplier için destek ekleyin. Bu sayede uygulamalar, DefaultBandwidthMeter oluşturulurken ve ağ türü değişikliklerinde kullanılacak olan ilk bit hızı tahminini belirlemek için kendi mantıklarını sağlayabilir. Tedarikçi, DefaultBandwidthMeter.Builder.setInitialBitrateSupplier() üzerinden ayarlanabilir.
    • Dinamik planlamayı varsayılan olarak etkinleştirin. ExoPlayer oynatma iş döngüsü statik bir aralıkta değil, dinamik olarak çalışır.
    • Parçaları, etkin oynatmaya videodan önce gösterilen reklam örnekleriyle birleştirirken oluşabilecek gereksiz sıfırlamayı kaldırın.
    • 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. Bu sayede kod boyutu küçülür ve tahsislerden kaçınılır.
    • 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ı cihazlarda AudioTrack başlatma hatalarını düzeltir (#3207).
    • Giriş arabellekleri alınmadan önce temizlendiyse bazı cihazlarda codec'in tüm örnekleri yutmasına neden olan codec sorununu düzeltir.
    • Akış bazında medya işlemeye izin vermek için deneysel ExoPlayer.Builder.enablePerStreamMediaProgression() seçeneğini ekleyin. Bu sayede, oynatma listesi öğeleri arasındaki başlatma gecikmesi azalır ve oynatma, çok kısa içeriklerde "takılıp kalmaz" (#3122).
    • ExoPlayer tarafından otomatik olarak oluşturulan ilk ses oturumu kimliğinin, setAudioSessionId tarafından ayarlanan değer yerine kullanıldığı ses oturumu kimliği kullanımıyla ilgili yarış durumu düzeltildi (#3241).
    • Aşamalı 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ümlerdeki cihazlarda bant dışı olarak kod çözücüye iletir. Bu davranış, DefaultMediaSourceFactory.setExperimentalEnableHagcPlayback(false) üzerinden devre dışı bırakılabilir.
  • CompositionPlayer:
    • TrackSelector örneklerinin serbest bırakılmamasına neden olan sorun düzeltildi.
  • Dönüştürücü:
    • ExportResult.fileSizeBytes öğesinin fazla raporlanmasına neden olabilecek bir sorun düzeltildi.
  • Parça seçimi:
    • BaseTrackSelection.DEFAULT_FORMAT_COMPARATOR öğesini kullanıma sunun ve AdaptiveTrackSelection.Factory.setTrackFormatComparator öğesini ekleyin. Böylece, 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 verilir.
  • 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 albüm kapaklı video meta verilerinin atılmasına izin vermek üzere FLAG_DISABLE_ARTWORK_METADATA eklendi (#2077). Bu özellik, DefaultExtractorsFactory.setDisableArtworkMetadata üzerinden merkezi olarak da etkinleştirilebilir.
    • MP4: ITU-T T.35 (it35) zamanlanmış meta veri parçalarının ayıklanması için destek eklendi.
    • MP4: Bölüm meta verilerini (hem Nero hem de QuickTime biçimleri) ayıklama desteği eklendi. Her ikisi de varsa QuickTime bölümleri tercih edilir. Ayıklanan bölüm bilgileri, parçanın Chapter girişleri olarak gösterilir. Bu sayede MP4, M4A ve M4B dosyalarında (ör. sesli kitaplar ve podcast'ler) yerel bölüm navigasyonu sağlanır (#2803).Metadata
    • WAV, Matroska ve MP4: 64 bit kayan noktalı PCM ses için destek eklendi (#3090).
    • Matroska: Doğru ColorInfo değerini doldurmak için codec bit akışı meta verilerini kullanın.
    • MP4: mfra kutusu yokken sidx kutusu kullanılarak parçalı MP4 dosyalarında arama yapma desteği eklendi. Bunu etkinleştirmek için FLAG_READ_MFRA_FOR_SEEK_MAP değerini FragmentedMp4Extractor öğesine sağlayın. Bu işlem artık DefaultExtractorsFactory'da varsayılan olarak yapılır (#3088).
    • Desteklenmeyen sürümdeki av1C verilerini yoksay.
    • MP4: fpcm kutularında büyük endian kayan noktalı PCM için destek eklendi.
    • Matroska: Bir parçanın Chapter bölümündeki Metadata girişleri için bölüm bilgilerini 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 ayıklanmasını iyileştirin. Bu sayede, daha önce iki akışın ayrı örnekler olarak çıktısı alındığı durumlarda görülen oynatma sorunları düzeltilir (#3147).
    • MP4: Boş meta veri etiketi öğeleri ayrıştırılırken sonsuz döngüleri ve sınırların dışındaki okumaları önleme (#3191).ilst
    • MPEG-TS: Son PES paketinin bilinen bir uzunluğa sahip olduğu akışlarda 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şleyin (#3250).
    • Matroska: ALAC desteği eklendi (#3268).
    • MP4: Parçalanmış MP4 dosyalarında değişken uzunluklu sgpd kutularına izin verilir (#3243).
  • Ses:
    • Geçici yetersizlikleri azaltmak ve etkin oynatma sırasında beklenmedik arabelleğe alma durumlarını önlemek için hazır durumdan hazır olmayan duruma geçiş yaparken ExoPlayer'ın ses oluşturucularına 100 ms'lik bir ek süre ekleyin (#3210).
    • DefaultAudioTrackBufferSizeProvider bölümündeki 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 mekansal channelMask'ı çıkaracak şekilde güncellenir. Böylece MediaCodecAudioRenderer, kanal sayısından maske çıkarmak yerine bu açık maskeyi kullanabilir.DefaultAudioSink
    • AudioSink.configure parametrelerini veri sınıfına dönüştürün. ForwardingAudioSink.configure'nın özel geçersiz kılmaları yeni yöntem imzasına taşınmalıdır.
    • EditedMediaItem.Builder#setSpeed(SpeedParameters) ile bir ses akışının süresini uzatırken perdenin korunması için destek eklendi.
    • 8 bit PCM, 16 bit büyük endian PCM ve 64 bit kayan nokta PCM'nin 32 bit kayan nokta PCM'ye dönüştürülmesini desteklemek için ToFloatPcmAudioProcessor geliştirildi (#3090).
    • DecoderAudioRenderer.getChannelMapping işlevinin döndürdüğü değeri ImmutableIntArray olarak değiştirin.
    • Sıkıştırılmış boşaltma modunda aralıksız ses oynatma listesi oynatılırken oynatmanın takılmasına neden olan hata düzeltildi.
    • Ses işlemcilere 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şleme özelliğinin kullanılabilmesi için doğru AudioProcessor.StreamMetadata.positionOffsetUs değerini ayarlayın (#418).
    • Big endian 32 bit ve 64 bit kayan noktalı PCM için destek eklendi.
  • Video:
    • Birleştirme sırasında düşen arabelleklerin atlanmış olarak sayılması için video birleştirme mantığı düzeltildi.
    • Yeni yüzey ayarlanırken, yer tutucu yüzeyleri desteklemeyen cihazlarda kare düşmelerini önlemek için anında oluşturma kararı düzeltildi.
    • Düşen veya atlanan kareleri hesaba katarak MediaCodecVideoRenderer içindeki kare hızı tahminini daha doğru hale getirin.
    • Karelerin erken planlanması için kullanılan eşiğin yapılandırılmasına izin verin. Varsayılan değer 50 ms'dir ancak MediaCodecVideoRenderer.Builder.setMaxEarlyUsThreshold() aracılığıyla özelleştirilebilir.
  • Metin:
    • TTML: Bölgeler için style yerine displayAlign'ya geri dönme ( #2559).
    • TTML: <p> öğelerinin üst öğesinden ipucu başlangıç zamanını devralın (#3246).
  • Meta veri:
    • MediaMetadata.discSubtitle alanını ekleyin ve ID3v2.4 TSST ve Vorbis DISCSUBTITLE verilerinden ayrıştırın.
    • ID3 TPOS çerçevesinden disk numarasını ve sayısını ayrıştırın.
  • Etki:
    • Oynatıcıda arama yaparken donmayı önlemek için FinalShaderProgramWrapper öğesine boşaltma işlemi yaparken yeniden çizme durumunu temizleyin.
  • Muxer'lar:
    • Yeni bir addTrackReference API'si aracılığıyla Mp4Muxer'de parça referansları (tref kutusu) için destek ekleyin. Bu sayede, parçalar arasında ilişkiler oluşturulabilir. Örneğin, bir meta veri parçası, tanımladığı video parçasına bağlanabilir.
    • OPUS veya VORBIS medya akışlarının ogg dosya biçiminde çoklanmasına izin vermek için OggMuxer seçeneğini ekleyin.
    • WAV dosyası oluşturmak için WavMuxer ekleyin (tam sayı ve kayan noktalı PCM'yi destekler).
    • Ayrılmış alan olmadan daha küçük ve akışa alınamayan dosyaların yazılmasına izin vermek için setAttemptStreamableOutputEnabled öğesini InAppMp4Muxer.Factory öğesine ekleyin.
    • Mp4Muxer ve FragmentedMp4Muxer'de IAMF ses desteği eklendi.
  • IMA uzantısı:
    • Duraklatılmış reklamlar için kullanılacak bir reklam alanı sağlanmasına izin vermek üzere ImaServerSideAdInsertionMediaSource.AdsLoader.Builder.setPauseAdSlot ekleyin.
    • Arka arkaya gösterilen atlanabilir VAST reklamlarında, atla düğmesinin ikinci reklamda hemen gösterilmesine neden olan hata düzeltildi (#3165).
  • Oturum:
    • Arka plan iş parçacığı oynatıcı döngüsüyle oturum kullanırken IllegalStateException içinde olası kilitlenmeleri ve MediaNotificationManager kilitlenmelerini düzeltir.
    • MediaSession yöntemleri için daha katı iş parçacığı oluşturma koşulları zorunlu kılınır. Void yöntemleri artık yürütme işleminden sonra otomatik olarak uygulama döngücüsü iş parçacığına gönderiliyor ve durum alıcıları (getters), uygulama döngücüsü dışındaki bir iş parçacığından çağrılırsa açıkça bir IllegalStateException hata veriyor.
    • Oturum tarafında denetleyici başına durum tutarlılığı izlenerek sınırların dışında kalan zaman çizelgesi birleştirme kilitlenmesi (IllegalStateException in MediaUtils.mergePlayerInfo) düzeltildi.
    • Etkin medya oturumlarını sorgulama ve Media3 SessionToken örneklerini döndürme desteği sağlamak için androidx.media3.session.MediaSessionManager eklendi.
    • Yöntem, yalnızca güvenilmeyen denetleyicilere okuma erişimi sağlamak için geçersiz kılınmadıysa 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, oturumun paket adını geçersiz kılmak için android.permission.OVERRIDE_MEDIA_SESSION_OWNER iznine sahip olmalıdır.
    • MediaSession.Callback.onConnectAsync() ekleyin. Yeni yöntem, bir kumandanın bağlantı girişiminin eşzamansız olarak işlenmesine olanak tanır. Uygulamalar, önceki davranışı elde etmek için Future ile birlikte anında Futures.immediateFuture(ConnectionResult) döndürebilir. Callback.onConnect kullanımdan kaldırılmaya aday olduğundan yeni yönteme geçmeniz önerilir.
    • Bluetooth AVRCP'de gezinmenin API 36 ve 37'de MediaLibraryService öğesini tanımamasına neden olan sorun düzeltildi.
  • Kullanıcı arayüzü:
    • ContentFrame, oynatma sırasında yeniden oluşturulduğunda ilk karenin yanlış boyutta oluşturulması sorunu düzeltildi (#3238).
    • CurrentMediaItemState sınıfını ve ilgili rememberCurrentMediaItemState Composable'ı media3-ui-compose modülüne ekleyin. Bu durum bilgisi depolayıcı, demo-compose içinde şu anda çalınan MediaItem ile ilgili çeşitli meta veri bilgilerini göstermek için kullanılır.
    • PlaylistState sınıfını ve karşılık gelen rememberPlaylistState Composable'ı media3-ui-compose modülüne ekleyin. Bu durum bilgisi depolayıcı, oynatıcıda MediaItems ayarlanmış demo-compose hakkında çeşitli meta veri bilgilerini göstermek için kullanılır.
    • PlaybackSpeedState'ya hızlı ileri sarma/ağır çekim API'si ekleyin. Uzun basmayla ileri sarmayı göstermek için demo-compose'daki bu işlevden yararlanın.
    • MiniController composable'ı media3-ui-compose-material3 modülüne ekleyin. Mevcut medya öğesinin başlığını, sanatçısını, resmini ve ilerleme durumunu gösterirken Player kontrol etmek için kompakt bir olanak sunar.
    • ErrorState sınıfını ve karşılık gelen rememberErrorState Composable'ı media3-ui-compose modülüne ekleyin. ErrorText Composable'ı media3-ui-compose-material3 öğesine ekleyin ve Player öğesinde varsayılan yer paylaşımı yapın.
    • TopControls, CenterControls, BottomControls ve ErrorOverlay için composable'lar içeren PlayerDefaults nesnesini yayınlayın.
    • FocusRequester öğesini Player Composable ve içerik yuvalarına ekleyin.
    • Kayar pencere kullanıcı arayüzü ortamlarında MediaItems'nin önceden yüklenmesini desteklemek için PlayerPool (common-ktx) ve rememberPooledPlayer (ui-compose) yayınlayın. Bu işlevi demo-compose'da yeni bir ShortFormPlayerScreen ile sergileyin.
  • Ktor uzantısı:
    • Ktor HTTP yığını tarafından desteklenen bir KtorDataSource sağlayan yeni bir media3-datasource-ktor uzantı modülü ekleyin.
  • HLS uzantısı:
    • HLS İçerik Yönlendirme ve Yol Klonlama için destek eklendi (#1689).
    • Uygulamaların, tamamen işlenmiş öğe listesi geçiş reklamlarını isteğe bağlı yeniden çözünürlük için kullanılamayan bir duruma sıfırlamasına izin vermek üzere setWithAssetListReset öğesini HlsInterstitialsAdsLoader öğesine ekleyin.
  • DASH uzantısı:
    • CEA altyazılarını dile göre farklı TrackGrouplere ayırın (#3113).
  • 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.
  • Cast uzantısı:
    • CastParams sınıfı ekleyerek Cast.initialize(CastParams) çağrısıyla yayın yapılandırmasına izin verin.
    • Yeni bir CastParams.getShowSystemOutputSwitcherOnCastIconClick() seçenek eklendi. Bu seçenek, kullanılabilir olduğunda uygulama içi yayın cihazı seçici yerine SystemUI Output Switcher'ın kullanılmasını tetikler.
  • Test yardımcı programları:
    • DataSourceContractTest, başlıklar ve gövdeler içeren POST istekleri için destek içerecek şekilde genişletildi, HttpDataSourceTestEnv'ye bazı POST kaynakları eklendi ve WebServerDispatcher'ye beklenen HTTP yöntemi, başlıklar ve gövde için onaylamalar eklendi.
    • DataSourceContractTest içinde, DataSource.open()'den döndürülen uzunluklar için onayları sıkılaştırın. C.LENGTH_UNSET ile sonuçlanabilecek kaynaklar, TestResource.Builder.setMayResolveToUnknownLength(boolean) kullanarak bunu belirtmelidir.
  • Desteği sonlandırılan sembolleri 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.
  • Oluşturma
    • Media3'e yerel olarak bağlı olma ile ilgili README.md talimatları, Gradle Composite Builds'u (includeBuild) kullanacak şekilde güncelledik. core_settings.gradle komut dosyası kaldırıldı ve androidxMediaModulePrefix ile androidxMediaEnableMidiModule özellikleri artık kullanılmıyor.

Sürüm 1.10.0

1.10.1

12 Mayıs 2026

  • Ortak kitaplık:
    • SimpleBasePlayer ve ForwardingSimpleBasePlayer içinde onAudioSessionIdChanged işleme sorununu düzeltin.
  • ExoPlayer:
    • Tünel oluşturma moduyla IllegalStateException'ya yol açabilecek ses oturumu kimliği oluşturmayla ilgili yarış durumu düzeltildi. (#3099).
    • Oluşturucu ön ısıtma ile kod çözücü hatalarından kurtarılırken olası uygulama kilitlenmelerini düzeltir.
    • AV1 tabanlı Dolby Vision codec'i kullanılırken başlatma verileri sağlandığında video artefaktlarına neden olan sorun düzeltildi (#3153).
  • Parça seçimi:
    • Yedek MIME türlerini çözmek ve HDR ile codec puanı tercihlerini kalite tercihlerine taşımak için VideoTrackInfo bölümünde parça seçimi mantığını ayarlayın (#3135).
  • Ayıklayıcılar:
    • MP3: Bilinen akış uzunluğundan daha uzunsa Xing veri uzunluğunu yoksay (#3117).
    • FLAG_OMIT_TRACK_SAMPLE_TABLE ayarlandığında ve parçada senkronizasyon örneği (stss) kutusu olmadığında Mp4Extractor içindeki ArrayIndexOutOfBoundsException sorununu düzeltin.
  • Ses:
    • Birden fazla ses oluşturucu oynatıcıya eklendiğinde ses etkinliklerinin yanlış yönlendirilebileceği hata düzeltildi.
  • Video:
    • 30'dan düşük API'lerde kare hızı değişikliklerinde codec'in yeniden kullanılmasıyla ilgili mantığı, yararlı olmayan durumlarda codec'in sıfırlanmasını önleyecek şekilde ayarlayın (#3120).
    • API 31 ve sonraki sürümlerde queueSecureInputBuffer için zorunlu senkronizasyon geçici çözümünü devre dışı bırakın. Geçici çözüm, şifre çözme işleminin seri olarak çalışmasını zorlayan yapay bir performans sorunuydu. Bu durum, API 31'den önce mevcut olan bir çerçeve sorunu nedeniyle videonun bozulmasını engelliyordu.
  • Resim:
    • Görüntü güncellemelerinin yalnızca kullanıcı "kaydırmayı durdurduğunda" geçerli olduğu kaydırma modundaki sorun düzeltildi (#2815).
  • Oturum:
    • Uygulama iş parçacığı ana iş parçacığı değilse ForegroundServiceStartNotAllowedException değerinin iş parçacığı sınırları arasında yayılmamasına neden olan hata düzeltildi (#2499).
    • Yalnızca platform oturumuna bağlanırken COMMAND_SEEK_TO_MEDIA_ITEM seçeneğinin MediaController içinde kullanılamamasına neden olan hata düzeltildi. Bu oturumda diğer öğelerde arama destekleniyor ancak oynatma listesi değişiklikleri desteklenmiyor.
    • PREPARE_FROM işlemlerine izin vermeyen platform medya oturumlarında MediaController'nın medya öğelerini ayarlayamamasına neden olan sorun düzeltildi.
    • Platform denetleyicileri üzerinden bağlanırken kendi işleminin API 27 veya önceki sürümlerde Controller.isTrusted() ile işaretlenmemesine neden olan hata düzeltildi.
  • HLS uzantısı:
    • Parça seçimi, mevcut parçaların bir alt kümesi olduğunda akış geri dönüşü sırasında ArrayIndexOutOfBoundsException hatası 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üncellemelerinde taşınmamasına neden olan sorun düzeltildi (#3105).
  • DASH uzantısı:
    • Şu anda iptal edilen bir parçaya arama yaparken SampleQueue uygulamasında kilitlenme sorunu düzeltildi.

1.10.0

26 Mart 2026

  • Ortak kitaplık:
    • Player.mute() ve Player.unmute()UnstableApi'dan kararlı sürüme yükseltin.
    • Format.pcmEncoding ve C.PcmEncodingUnstableApi'dan kararlı sürüme yükseltin.
    • Yerleştirilmiş Format örneklerinin birincil grubunu tanımlamak için Format.primaryTrackGroupId ekleyin (#294).
  • ExoPlayer:
    • AdsMediaSource'e kırpma özellikleri ekleyin.
    • MediaCodecVideoRenderer'da dinamik planlama desteği ekleyerek planlama çalışmalarını ve CPU uyandırma döngülerini video karelerinin işlenebileceği zamanlarla daha iyi eşleştirin. Bu özelliği DefaultRenderersFactory bölümündeki experimentalSetEnableMediaCodecVideoRendererDurationToProgressUs() seçeneğini kullanarak etkinleştirebilirsiniz.
    • DefaultPreloadManager.Builder içinde özel DataSource.Factory ayarlamaya izin verin.
    • Bazı varsayılan sabitleri ExoPlayer.Builder konumuna taşıyarak ExoPlayer öğesinin 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 işlem için DEFAULT_STUCK_PLAYING_DETECTION_TIMEOUT_MS öğesinin ExoPlayer konumundan ExoPlayer.Builder konumuna (kullanımdan kaldırma olmadan) taşınması gerekiyordu.
    • ProgressiveMediaSource'nın güncel olmayan zaman çizelgesi bilgilerini oynatıcıya yaymasına ve sıraya alınmış dönemlerin beklenmedik şekilde kaldırılmasına neden olan hata düzeltildi (#3016).
    • ExoPlayer'ın, telefon görüşmesi sırasında oynatma isteğinde bulunulduğunda gecikmeli ses odağı istememesi sorunu düzeltildi.
    • İstek üzerine içerikten canlı içeriğe geçişlerin, istek üzerine içeriğin sonunda yeniden arabelleğe alma işlemine neden olabileceği hata düzeltildi (#3052).
    • Dolby Vision Profile 10 desteği eklendi (#2830).
    • Başlatılmamış bir videodan önce gösterilen reklamın ArrayIndexOutOfBoundsException(#3125) hatasına neden olduğu hata düzeltildi.
  • CompositionPlayer:
    • EditedMediaItem.removeVideo için destek ekleyin.
  • Dönüştürücü:
    • EditedMediaItem.Builder.setFrameRate() artık video için maksimum çıkış kare hızı ayarlayabilir. Bu özellik, özellikle setSpeed() ile medya hızını artırırken faydalıdır.
  • Parça seçimi:
    • DefaultTrackSelector.selectAllTracks işlevinin imzasını, parça geçersiz kılma işlemleriyle önceden doldurulmuş bir parametre olarak çıkış dizisini içerecek şekilde değiştirin.
    • İlgili birincil parça seçilip seçilmediğine bakılmaksızın yerleştirilmiş meta veri parçalarının seçilmesi sorununu düzeltir (#294).
    • preferredVideoLanguages, preferredVideoLabels, preferredAudioLabels, preferredTextLabels ve selectTextByDefault için TrackSelectionParameters seçeneklerini sabitleme.
  • Ayıklayıcılar:
    • MP4: uuid gibi büyük kutular içeren dosyalar, moov gibi diğer kutulardan önce desteklenir (#3046).
    • MP4: MP4 kapsayıcılarında Versatile Video Coding (VVC) parçaları için destek eklendi.
  • İnceleyici:
    • Zarar veren değişiklik: FrameExtractor kaldırıldı. Kullanıcılar artık yeni :media3-inspector-frame modülünü kullanmalı ve içe aktarmaları androidx.media3.inspector.frame.FrameExtractor olarak güncellemelidir.
    • Kod çö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ığını libiamf yerine iamf_tools olarak değiştirin.
    • IAMF kod çözme, kod çözücü (IAMF kod çözücü uzantısı kullanılırken) veya Android Spatializer aracılığıyla iki kanallı çıkışı destekler.
    • Otomotiv senaryolarında AC-4 kod çözücü desteği değerlendirilirken AC4Profile22 ve diğer eski profiller için destek düzgün şekilde kaldırılır (#2609).
    • AudioOutput başlatma işleminin yeniden deneme mantığı iyileştirildi. DefaultAudioSink (#2905).
    • IAMF uzantısı ve medya codec'i kod çözücüleriyle birlikte IAMF 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ıkla desteklenir.
    • Sıkıştırılmış boşaltma modunda aralıksız ses oynatma listesi oynatılırken oynatmanın takılmasına neden olan hata düzeltildi.
  • Metin:
    • VobSub: Her zaman 5 saniye varsayılan değerini kullanmak yerine START ve STOP SPU kontrol komutlarını kullanarak ipucu süresini elde edin (#2935).
  • Meta veri:
    • HLS varyantları ve sürümleri tarafından yayınlanan tüm olası meta veri parçalarını kapsamak için meta veri oluşturucuların varsayılan sayısını dörde çıkarın (#3043).
  • Etki:
    • LottieOverlay, yeni bir :media3-effect-lottie modülüne taşındı (bu işlem, LottieOverlay öğesinin androidx.media3.effect.LottieOverlay olan adının androidx.media3.effect.lottie.LottieOverlay olarak değiştirilmesini de içeriyordu).
  • Efekt Lottie'si:
    • Lottie efektlerini video karelerine uygulama işlevi sağlayan yeni bir :media3-effect-lottie modülü kullanıma sunuldu.
  • IMA uzantısı:
    • En yeni reklam medyası bilgileri API'sine erişebilmek 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 medyası bilgilerini kullanarak reklam MIME türünü eşliyor.
    • setEnableCustomTabs ve ImaServerSideAdInsertionMediaSource'ye ImaAdsLoader eklendi. Bu sayede kullanıcılar, reklam tıklama URL'lerinin özel sekmeler kullanılarak başlatılıp başlatılmayacağını kontrol edebilir.
    • ImaAdTagUriBuilder ekleyin. Bu sınıf, adTagUri oluşturmak için alternatif bir yöntem sunar. setPreferredLinearOrientation API'si dahildir. Bu, alfa testinde olan bir API'dir ve doğrusal reklamlar için tercih ettiğiniz yönü ayarlamanıza olanak tanır. 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ı kilitlenmesine neden olan 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 öğelerini LifecycleService yapın. Böylece, hizmetin yaşam döngüsüne yaşam döngüsü farkında olan işlemler eklenebilir (#187).
    • Yerel oynatmalarda MediaController ve MediaBrowser cihazlarından gelen ses düzeyi değiştirme komutları artık desteklenmeyecek. Uygulamalar yerel cihazın 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 oluşturulmasını engeller. Bu, özel MediaNotification.Provider uygulayan uygulamalar için kararsız bir API'de yapılan ve yeni bir zorunlu yöntem olduğu için uyumluluğu bozan bir değişikliktir.
    • Ana ekran widget'larıyla kullanılacak PendingIntent örnekleri için oluşturucular eklendi (#2933).
    • Compose tabanlı ana ekran widget'ları için Intent örnekleri oluşturmaya yönelik statik yöntemler ekleyin (#2933).
    • Oynatma, kesintinin nedeni olarak "AUTO" ve "SEEK" ile belirli bir medya öğesi indeksinden aynı medya öğesine sahip başka bir indekse geçtiğinde medya öğesi geçişinin denetleyicilere bildirilmemesine neden olan hata düzeltildi (#2997).
    • Sistem kullanıcı arayüzü düğmelerinin yerleştirilmesiyle 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 edilmemesine neden olan sorun düzeltildi (#3056).
    • API 29'da, belirli bir boyuttaki medya oturumu resminin SysUI'nin kilitlenmesine ve cihazın yeniden başlatılmasına neden olabilen SysUI hatası için geçici çözüm (#3118).
    • Android Q'da bildirim sanat eseri simgesinin ölçeklendirilmesiyle ilgili sorun düzeltildi ( #3084).
  • Kullanıcı arayüzü:
    • Oynatma hızını görüntülemek ve değiştirmek için PlaybackSpeedControl Composable'ı media3-ui-compose'ye ekleyin.
    • Oynatma hızını kontrol etmek için PlaybackSpeedToggleButton Composable'ı media3-ui-compose-material3'ye ekleyin.
    • Oyuncunun ilerleme durumunu göstermek ve sürükleme ile dokunma hareketlerini kullanarak arama yapmak için ProgressSlider Composable'ı media3-ui-compose-material3 öğesine ekleyin (#2288).
    • PlayerControlView'u canlandırırken büyük ekran dışı arabellekten kaçının.
    • Player Composable'ı media3-ui-compose-material3'ye ekleyin. Bu, üst, orta ve alt kısımlara hizalanmış özelleştirilebilir denetimlere sahip bir ContentFrame içerir.
    • PlayerControlView görünürken sürekli duyuru güncellemelerini ö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ştiricilerini önbelleğe alarak HLS oynatma listesi ayrıştırmasını optimize edin (#3008).
    • Ses oluşturma işlemlerinde ID3 (EMSG) meta veri parçasını kullanıma sunma (#3043).
    • Farklı konumlardan yedekli akışlar varsa yükleme hatalarıyla karşılaşıldığında konum geri dönüşümüne izin verin (#1988).
    • HLS geçiş reklamları için X-SNAP davranışını düzelterek başlangıç ve devam ettirme konumunun doğru şekilde hesaplanmasını sağlayın (#3013).
  • DASH uzantısı:
    • Hizalanmamış segment başlangıç zamanlarına sahip parçaların, oynatmanın başında gecikmelere veya örneklerin atlanmasına neden olması sorunu düzeltildi (#3057).
    • Bant içi EMSG v0 meta verilerinin zaman damgalarının doğru ayarlanmaması hatası düzeltildi (#3024).
  • RTSP uzantısı:
    • Birden fazla RTP paketini kapsayan aynı erişim biriminin örneklerini yanlış ayrıştıran H.264 ve H.265 akışındaki regresyon düzeltildi. Bu durum, videoda görsel bozulmalara ve hasara neden oldu (#3121).
  • Kod çözücü uzantıları (FFmpeg, VP9, AV1 vb.):
    • MPEG-H UI yöneticisi desteğini MPEG-H kod çözücü uzantısına ekleyin (#3066).
  • Cast 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 sembolleri 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 commit'leri 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 commit işlemlerini içerir.

  • Ses:
    • Sıkıştırılmış boşaltma modunda aralıksız 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 commit işlemlerini içerir.

  • ExoPlayer:
    • ProgressiveMediaSource'nın güncel olmayan zaman çizelgesi bilgilerini oynatıcıya yaydığı ve sıraya alınmış dönemlerin beklenmedik şekilde kaldırıldığı hata düzeltildi (#3016).
  • Oturum:
    • Sistem kullanıcı arayüzü düğmelerinin yerleştirilmesiyle 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).
  • Cast uzantısı:
    • Cast'ten 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 saatlerin bulunduğu tarih ve saat dizeleri desteklenir (#2929).
  • ExoPlayer:
    • Oynatmanın başında daha sorunsuz bir A/V senkronizasyonu sağlamak için dinamik planlamanın doSomeWork aralığını yalnızca ses başlatıldıktan sonra yavaşlatmasına izin verin.
    • DefaultLoadErrorHandlingPolicy içinde FileNotFoundException ve benzeri istisna türlerinin birden çok kez yeniden denenmesine neden olan hata düzeltildi.
    • Bir sonraki doSomeWork için hesaplanan sürenin, doSomeWork'nın mevcut yinelemesinin geçen süresiyle yanlışlıkla azaltıldığı dinamik planlama ile ilgili hata düzeltildi. Bu sorunu çözmek, 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 bazı oynatmalarının başarısız olmasına neden olan sorun düzeltildi.
    • Çalınan öğe oynatma listesinden kaldırıldığında oynatma bittikten sonra yüklemenin devam etmesi hatası düzeltildi (#2873).
    • Aynı öğede ExoPlayer.replaceMediaItem işlevi tekrar tekrar kullanıldığında MediaItem örneklerinin sızmasını önleyin (#2993).
    • Acil uyanık kalma kilitlerinin serbest bırakılmasından kaynaklanan olası ANR'leri önleyin (#2979).
  • Ayıklayıcılar:
    • MP3: Parse LAME ReplayGain data (#2840).
  • Ses:
    • Otomotiv senaryolarında AC-4 kod çözücü desteği değerlendirilirken AC4Profile22 ve diğer eski profiller için destek düzgün şekilde kaldırılır (#2609).
  • Video:
    • İçerik kare hızı değiştiğinde, oynatmanın takılmasını önlemek için API 30'dan önceki sürümlerdeki cihazlarda video codec'lerini atın (#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üzeltin (#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şmemesi sorunu düzeltildi. Düzeltme, artık reklam MIME türünü reklam kapsülü dizinini ve reklam konumunu kullanarak eşliyor.
    • getAdsManager() ve AdEvent.getAd() sonuçlarına erişmeden önce null kontrolü ekleyin.
  • Oturum:
    • Bir platforma bağlı MediaController oturumunun durdurulması, durdurma işlemi reklam oynatma sırasında gerçekleştiğinde 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ğrulama işlemleri ekleyin.
    • COMMAND_SEEK_NEXT veya COMMAND_SEEK_BACK için eksik komutların sistem medya bildiriminde boşluklara neden olabildiği sorun düzeltildi (#2976).
    • Bildirim simgesi için bit eşlem ölçeklendirmeyi ana iş parçacığından çıkarma (#2829).
    • Eski MediaMetadataCompat ve MediaDescriptionCompat biçimlerinden dönüştürülürken yazar, yazan ve bestecinin yedek olarak kullanılmaması hatası düzeltildi (#3018).
  • İndirilenler:
    • PriorityTooLowException, SegmentDownloader tarafından işlendiğinde olası sonsuz döngüleri düzeltin (DASH, HLS ve SmoothStreaming için). Korunan execute yöntemi kullanılarak SegmentDownloader için özel geçersiz kılmaların, yeniden oluşturulabilmesi için görevlerini Supplier içine sarmaları gerekir (#2931).
  • HLS uzantısı:
    • Ham öğe listesi JSON dokümanını Listener.onAssetListLoadCompleted geri çağırmasına 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 bir hataya neden olan değişikliktir (#2950).
  • RTSP uzantısı:
    • Zaman damgaları sarılmış 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 oluşabilecek olası NullPointerException düzeltildi (#2965).
  • Cast 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 olması için minSdk sürümünü 23 olarak güncelleyin.
    • Oynatma durumunun Player örnekleri arasında aktarılmasını kolaylaştıran PlayerTransferState işlevi eklendi.
    • void mute() ve void unmute() yöntemlerini, Player'ın sesini sıfıra ayarlamadan önce ve sonra koruyup geri yükleyen Player'a ekleyin.
    • Daha önce ExoPlayer tarafından dahili olarak kullanılan WakeLockManager, WifiLockManager, AudioFocusManager, AudioBecomingNoisyManager ve StuckPlayerDetector yardımcı sınıflarını yayınlayarak diğer oyuncuların bunları yeniden kullanmasına olanak tanıyın (#1893).
    • Temel temsilci oynatıcı, dinleyici örneklerini karşılaştırmak için referans eşitliğini kullandığında ForwardingPlayer dinleyici işleme sorununu düzeltir (#2675).
    • Üzerinde işlem yapılması gereken belirli Player.Events öğesini belirten Player.listenTo askıya alma uzantısı işlevi ekleyin.media3-common-ktx
    • Bildirilen arabelleğe alınmış konum, bildirilen süreden çok daha uzun olduğunda BasePlayer.getBufferedPercentage içinde tamsayı taşmasından kaynaklanan kilitlenme düzeltildi (#2750).
    • Özel örnek MIME türünü yoksaymayarak 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 olarak algılanması düzeltildi (#2860).
  • ExoPlayer:
    • Oynatıcı takılmış gibi görünüyorsa StuckPlayerException oynatıcı hatasını tetikleyen takılmış oynatıcı algılama özelliği eklendi. Bu durum aşağıdaki durumlarda meydana gelir. Gerekirse her varsayılan zaman aşımı ExoPlayer.Builder içinde yapılandırılabilir:
      • Oynatmaya çalışırken 10 dakika boyunca STATE_BUFFERING simgesi gösteriliyor ve arabelleğe alma işlemi ilerlemiyor.
      • Oynatmaya çalışırken 10 saniye boyunca STATE_READY simgesi gösteriliyor ve oynatma ilerlemiyor.
      • Öğenin sonuna ulaşılmadan, belirtilen sürenin 1 dakika aşılması durumunda STATE_READY.
      • Oynatma sırasında oynatma engelleme nedeni ile 10 dakika sonra
    • Arka planda oynatma sırasında arabelleğe alma ile ilgili sorunları düzeltmek için uyandırma kilidi işlemeyi varsayılan olarak etkinleştirin. Bu, ExoPlayer.Builder.setWakeMode öğesini C.WAKE_MODE_LOCAL olarak ayarlamaya eşdeğerdir.
    • Context öğesine başlangıçta iletilen ExoPlayer.Builder öğesinde değişiklik bildirildiğinde sanal cihaz kimliğini otomatik olarak güncellemek için dinleme mantığı ekleyin.
    • ExoPlayer.setVirtualDeviceId'yı ekleyerek ExoPlayer.Builder'ye aktarılan Context'den alınan sanal cihaz kimliğini manuel olarak güncelleyin.
    • Oynatıcıların, mevcut öğenin bitiminden 10 saniye önce sonraki oynatma listesi öğesinden veri tüketmediğinden emin olun.
    • İnşaat tamamlandıktan sonra bu ayarları güncellemek için setSeekBackIncrementMs, setSeekForwardIncrementMs ve setMaxSeekToPreviousPositionMs öğelerini ExoPlayer'e ekleyin (#2736).
    • DefaultPreloadManager'e önden belleğe alma işlevi ekleyin. Uygulamalar artık bir medya öğesinin önbelleğe alınması gerektiğini belirtmek için DefaultPreloadManager.PreloadStatus.specifiedRangeCached(startPositionMs, durationMs) veya DefaultPreloadManager.PreloadStatus.specifiedRangeCached(durationMs) değerini TargetPreloadStatusControl.getTargetPreloadStatus(T rankingData) üzerinden döndürebilir.
    • Shorts demo uygulamasında DefaultPreloadManager'nın ö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 ayarlamanın oynatıcıyı STATE_READY veya STATE_BUFFERING durumunda bırakabildiği hata düzeltildi.
    • Ön yükleme yöneticisi API'lerini geliştirin:
      • Medya öğelerini veya medya kaynaklarını toplu olarak ekleyen ve ardından invalidate() işlevini otomatik olarak çağıran addMediaItems(List<MediaItem>, List<T>) ve addMediaSources(List<MediaSource>, List<T>) işlevlerini ekleyin.
      • Medya öğelerini veya medya kaynaklarını toplu olarak kaldıran removeMediaItems((List<MediaItem>) ve removeMediaSources(List<MediaSource>) öğelerini ekleyin. Ayrıca, önceden yükleme yöneticisinin, kaldırılan öğeleri önceden yüklemeye başlamadığından veya önceden yüklemeye devam etmediğinden emin olun.
      • DefaultPreloadManager.setCurrentPlayingIndex(int) cihazının kendini otomatik olarak geçersiz kılmasına izin verin. Uygulamaların, mevcut oynatma dizinini güncelledikten sonra artık invalidate() işlevini açıkça çağırması gerekmez.
    • Fırçalama modundayken aynı resim grubunda ileri sarma işlemlerinde animasyon karesi sıfırlamayı atlama özelliği eklendi.
    • DefaultLoadControl.Builder.setPlayerTargetBufferBytes(String, int) ekleyin. Bu, uygulamaların belirtilen playerName ile bir oynatıcı için hedef arabellek baytları değeri ayarlamasını sağlar. DefaultLoadControl artık her oyuncu için ayrı ayrı karar verebilir. Bu kararlar, ayrılan bayt sayısına ve hedef arabellek bayt sayısına göre verilir.
    • Reklam grubundaki her reklam için atlama bilgilerini taşımak üzere SkipInfo öğesini AdPlaybackState.AdGroup öğesine ekleyin.
    • Videodan sonra gösterilen reklam oynatılırken removeMediaItems(List)'ı aramanın kilitlenmeye neden olduğu 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).
    • Ön yükleme için toplam arabellek baytlarının rastgele büyümesini önlemek amacıyla, DefaultPreloadManager içindeki kaynakların toplam arabellek baytlarını kontrol etme desteği ekleyin. Varsayılan kontrol mantığını kullanmak için uygulamalar, DefaultLoadControl.Builder.setPlayerTargetBufferBytes(String, int) aracılığıyla önceden yükleme için hedef arabellek baytlarını playerName olarak PlayerId.Preload.name ("preload") ayarlayabilir ve oluşturulan DefaultLoadControl öğesini DefaultPreloadManager.Builder.setLoadControl(LoadControl) aracılığıyla ekleyebilir.
    • Varsayılan bir uygulama ile cloneAndSet(int, int) öğesini ShuffleOrder öğesine ekleyin (#2834).
    • Arama ayarlaması veya otomatik geçişten sonra reklam oynatmayı atladığınızda içeriği devam ettirme ofsetini ekleyin (#2484).
    • Ses ve video parçaları için codec parametrelerini ayarlamak ve gözlemlemek üzere API ekleyin. Bu özellik, MediaCodec tabanlı oluşturucular için uygulanır ve API 29 veya sonraki sürümleri gerektirir.
      • Parametreleri uygulamak için ExoPlayer.setAudioCodecParameters() ve ExoPlayer.setVideoCodecParameters() özelliğini kullanın.
      • Değişiklikleri dinlemek için ExoPlayer.addAudioCodecParametersChangeListener() ve ExoPlayer.addVideoCodecParametersChangeListener()'ı kullanın. Tedarikçiye özel anahtarların gözlemlenmesi için API 31 veya sonraki sürümler gerekir.
    • Sıfır olmayan bir konuma arama yapıldıktan sonra boş bir medya kaynağı ayarlanması ve ardından oynatıcının boş olmayan bir medya kaynağıyla hazırlanması nedeniyle oluşan IllegalStateException sorunu düzeltildi.
    • Sarma modundayken diğer medya öğelerinde arama yapmanın IllegalStateException'ya neden olabildiği hata düzeltildi.
    • DefaultPlaybackSessionManager içinde olası NullPointerException sorununu düzeltin (#2885).
    • Uygun videolarda arama performansını iyileştirin.
    • Bu platform API'sindeki 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ştirin (#1641).
    • MediaCodecVideoRenderer.experimentalSetLateThresholdToDropDecoderInputUs öğesinin varsayılan değerini 15 ms olarak değiştirin ve uygun videolarda kod çözme işleminden önce video karelerinin daha verimli şekilde bırakılmasını sağlayın.
    • DefaultLoadControl bölümündeki otomatik bellek hesaplamasına maksimum bellek sınırı ekleyin. Bu durum yalnızca çok sayıda parça seçildiğinde geçerli olmalıdır (#2860).
    • Oynatma listesinde veya tekrar modunda oynatılırken, sonlara doğru hızlıca ileri/geri sarma modunda arama yapmanın bir sonraki medya öğesine arama yapılmasına neden olabileceği hata düzeltildi.
  • CompositionPlayer:
    • Deneme için kullanıma sunulduğunu ancak geliştirme aşamasında olduğunu belirtmek üzere CompositionPlayer, yeni bir @ExperimentalApi ek açıklaması altında yayınlayın. Bazı API'lerin gelecekteki sürümlerde önemli ölçüde değişmesi muhtemeldir. Ayrıca bazı kullanım alanlarıyla ilgili bilinen sorunlar ve sınırlamalar (bazıları belgelenmemiştir) vardır.
    • CompositionPlayer'da COMMAND_SET_AUDIO_ATTRIBUTES ve ses odağı işleme desteği eklendi.
    • CompositionPlayer'daki ikincil dizilerde hız değiştirme desteği eklendi.
    • EditedMediaItem.removeVideo için destek ekleyin.
  • Dönüştürücü:
    • Varsayılan muxer olarak InAppMp4Muxer uygulamasını kullanın.
    • EditedMediaItem.Builder#setSpeed() eklendi ve Effects#createExperimentalSpeedChangingEffects() desteği sonlandırıldı.
    • forceAudioTrack ve forceVideoTrack öğelerini trackTypes ile değiştirin EditedMediaItemSequence.
  • 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.
    • preferredVideoLabels, preferredAudioLabels ve preferredTextLabels öğelerini TrackSelectionParameters içine ekleyerek belirli bir etikete sahip parçalarla ilgili tercihi belirtebilirsiniz. Örneğin, HLS NAME etiketlerinden (#1666) okunan parçalar.
  • Ayıklayıcılar:
    • FLAC: Kodlanmış FLAC verilerinde sahte üstbilgilerin bulunma olasılığını azaltmak için üstbilgi algılamayı sıkılaştırın. Bu, kod çözme hatalarına neden olur (#558).
    • MP3: MP3 dosyalarının başında ID3 etiketleri arasında (ve öncesinde) boşluklara izin verin (#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ükseltin (#2713).
    • MP3: FLAG_ENABLE_INDEX_SEEKING değerini, mevcut olduğunda meta veri üstbilgilerinden (Xing ve VBRI gibi) bilgi aramayı tercih edecek şekilde değiştirin. Başka arama bilgisi yoksa dizine dayalı aramaya geri dönülür. Bu, arama meta verileri içeren dosyaların performansını artırır (#2839).
    • MP3: Mp3Extractor, arama meta verileri (ör. Xing, VBRI) bulunmadığında, FLAG_ENABLE_INDEX_SEEKING ayarlanmış olsa bile sabit bit hızına (CBR) varsayılan olarak 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 dayanmaktadır. Bu işlem, başlık içermeyen VBR dosyalarının doğruluğu pahasına meta verileri olmayan dosyaların anında aranabilirliğini artırır. CBR varsayımı aranabilir değilse (ör. uzunluğu bilinmeyen yayınlar için) artık dizin arama yedek olarak kullanılır (#2848).
    • MP4: Ayıklayıcıdan bir parça biçimi yayınlamadan önce ilk örneğin katman değerine göz atarak audio/mpeg (MP3), audio/mpeg-L1 ve audio/mpeg-L2 MIME türleri arasındaki belirsizliği giderin (#2683).
    • MP4: 1 MB'tan büyük bir stbl kutusunun, dosyanın parçalanmamış 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. Bu meta veriler artık sırasıyla MVNM ve MVIN kimlikleriyle Format.metadata içinde TextInformationFrame nesneleri olarak yayınlanıyor (#2754).
    • MP4: Eksik stsd kutusu olan parçaları yoksay (dosyanın tamamını ayrıştırmayı başaramamak yerine).
    • Matroska: DTS-HD algılama desteği eklendi (#6225).
    • Birden fazla parça içeren dosyalarda arama işleminin yanlış olmasına neden olan MatroskaExtractor sorunu düzeltildi. İşaret noktaları artık ilgili parçalarıyla doğru şekilde ilişkilendiriliyor. Bu sayede daha hassas bir şekilde arama yapılabiliyor.
    • MPEG-TS: Zaman damgası olmayan PES paketlerinden kaynaklanan IllegalArgumentException ile ReorderingBufferQueue arasındaki IllegalArgumentException sorunu düzeltildi (#2764).
    • HEIC hareketli fotoğrafları ayıklama desteği eklendi. HeifExtractor artık yerleştirilmiş video ve ses parçaları içeren HEIC dosyalarını ayrıştırabilir.
  • İnceleyici:
    • Medya inceleme yardımcı programları için özel bir ana sayfa görevi görecek yeni bir :media3-inspector modülü kullanıma sunuldu. Bu modülde artık hem meta veri hem de çerçeve çıkarma için birleşik bir API sağlayacak yeni bir androidx.media3.inspector.MetadataRetriever bulunuyor. Mevcut androidx.media3.exoplayer.MetadataRetriever, bu yeni sürüm lehine kullanımdan kaldırıldı.
    • Kare çıkarma için yeni bir genel 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 aracılığıyla oluşturulmalıdır.
    • FrameExtractor: Belirli bir zaman damgası gerektirmeden bir medya dosyasından temsili bir küçük resim karesi çıkarmak için getThumbnail() ekleyin.
    • androidx.media3.inspector.MediaExtractorCompat platformunun android.media.MediaExtractor yerine kullanılabilen ve medya dosyasından ham, kodlanmış medya örnekleri ayıklama olanağı sunan androidx.media3.inspector.MediaExtractorCompat öğesini ekleyin. Mevcut androidx.media3.exoplayer.MediaExtractorCompat, bu yeni sınıf lehine artık kullanımdan kaldırılmıştır.
  • Ses:
    • AudioProcessor örneklerinin arama işleminden haberdar olmasını sağlayın.
    • Özel ses çıkışı yollarını desteklemek için yeni AudioOutputProvider arayüzünün DefaultAudioSink.Builder içine yerleştirilmesine izin verin. Varsayılan değer AudioTrackAudioOutputProvider'dır.
    • GainProcessor uygulamasında arama çubuğunu kullanma
    • Parça biçimindeki AC-4 kod çözücü profilini ve düzey özelliklerini kullanma destek değerlendirmesi (#2580).
    • Oynatma başlangıcında yönlendirme değişikliği geri aramalarının işlenmesinden kaynaklanan olası gecikmeleri önleyin (#2646).
    • EAC3, EAC3-JOC ve AC-4 biçimleri için codec'in yeniden kullanılmasına izin verin (#1346).
    • Sonic'da kayan noktalı PCM örnekleri için destek ekleyin.
    • ToFloatPcmAudioProcessor'da 16 bit PCM örnekleri için destek ekleyin.
  • Video:
    • Farklı profillere sahip Dolby Vision içeriklerinde codec 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ştirildi (#2856).
  • Metin:
    • Dolby Vision içeriklerinde CEA-6/708 altyazılarının ayrıştırılması düzeltildi (#2775).
  • Resim:
    • DASH küçük resim parçası üzerinde geri sarma işlemi yapılırken oynatıcının takılmasına neden olan ScrubbingMode sorunu düzeltildi (#2815).
  • DRM:
    • Ek isteğe bağlı bilgilerin döndürülmesine izin vermek için MediaDrmCallback yöntemlerinin dönüş türünü byte[] türünden yeni bir MediaDrmCallback.Response türüne değiştirin. Bu, kaynağı bozan bir değişikliktir ancak önceki byte[] dönüş değerini döndürmeden önce new Response ile sarmalayarak bozulmalar kolayca çözülebilir.
    • URL ve gecikme gibi önemli istek bilgilerini AnalyticsListener.onDrmKeysLoaded (#1001) numaralı hata koduna ekleyin.
    • Temel hazırlık isteği verilerini 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.
  • Muxer'lar:
    • MediaMuxerCompat (framework MediaMuxer için doğrudan değiştirme) eklendi.
    • Hareketli fotoğraf oluşturulmasına izin vermek için MuxerUtil.createMotionPhotoFromJpegImageAndBmffVideo() ekleyin.
    • WebmMuxer, OPUS, VORBIS, VP8 ve VP9 medya akışlarının webm dosya biçiminde çoklamasına izin vermek için ekleyin.
  • IMA uzantısı:
    • Özel ProGuard kurallarının kaldırılması. Böylece uygulamalar, bunun yerine IMA Android arşivinde yayınlananları kullanabilir.
    • 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 ayarlamaya yönelik 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ığını 3.37.0 sürümüne yükseltin. Bu sürümde temel kitaplıkta desugaring'in etkinleştirilmesi gerekir. Bu, bağımlı uygulamalar tarafından da etkinleştirilmelidir. IMA'nın config notes bölümüne bakın. * SSAI URI oluşturucuda IMA DAI özel kullanıcı arayüzü seçenekleri desteklenir. Sunucu taraflı reklam ekleme için özel kullanıcı arayüzü seçenekleri arasında "Atlanabilir" ve "Bu Reklam Hakkında" oluşturma desteği yer alır. 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ü 3.38.0'a (sürüm notları) da 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:
    • Çağrının yalnızca bilgi toplamak için mi yoksa oynatmayı başlatmak için mi yapıldığını belirtmek üzere MediaSession.Callback.onPlaybackResumption parametresine yeni parametre eklendi (#1764).
    • MediaSession.ControllerInfo.isTrusted, kendi uygulamasındaki denetleyicileri de güvenilir olarak bildirecek şekilde güncellendi (#2542).
    • Bildirim güncellemesini manuel olarak tetiklemek için MediaSessionService.triggerNotificationUpdate simgesini ekleyin (#1833).
    • Özel komut yöntemlerine ProgressListener ekleyin.
    • MediaLibrarySession.Builder.setLibraryErrorReplicationMode için varsayılan değeri ölümcül olmayan olarak değiştirin.
    • Context parametresini MediaButtonReceiver.onForegroundServiceStartNotAllowedException(#2625) öğesine ekleyin.
    • Cilt aracılığıyla getirmek yerine PlaybackInfo platformundan ses kontrolü kimliğini okuyun. Bu, oynatma türü ve ses kontrolü kimliğinin atomik olarak okunmasını ve birbirleriyle eşleşmesini sağlar.
    • ACTION_UP önemli etkinliklerinin, özel işleme için geri çağırma işlevine iletilmeden önce filtrelendiği hata düzeltildi. Bu, media1'in yaptığı ve platformun yaptığı işlemlerle eşitlik sağlar (#2637).
    • Komut kullanılamadığında bile getCurrentTimeline() işlevinin PlayerWrapper tarafından çağrılması hatası düzeltildi (#2665).
    • Hizmet sonlandırıldıktan sonra bellek sızıntısına neden olan, ana döngücünün mesaj kuyruğunda mesaj bırakılması hatası düzeltildi (#2692).
    • MediaBrowser ile 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 denetleyicilerini bilgilendirmek için onAudioSessionIdChanged uygulandı (#244).
    • KEYCODE_HEADSETHOOK ve onStartCommand()'ye medya tuşu etkinliği Intent geldiğinde oynatıcının başlatılmamasına neden olan hata düzeltildi. Bu sorun, "KEYCODE_HEADSETHOOK" öğesini KEYCODE_MEDIA_PLAY_PAUSE gibi işleyerek düzeltildi (#2816).
    • Oturum ile denetleyici arasında yüzey boyutunun iletilmemesi nedeniyle demo oturumunda video efektlerinin uygulanamamasına neden olan hata düzeltildi. Kumanda kullanıyorsanız ve oynatıcınız setVideoSurfaceHolder çağrısını işleyemiyorsa bu, uyumluluğu bozan bir değişiklik olabilir.
    • String CharSequence olmayan meta veri değerlerinin (ör. span stilinde dizeler) yayılmasını düzeltir (#2853).
    • CommandButton.executeAction ekleyin. Böylece kontrol cihazları, amaçlanan işlemi daha kolay tetikleyebilir. Ayrıca, hangi işlemin tetikleneceğini tanımlamak için bazı oynatıcı ve oturum komutları için parametreler belirtmeye de izin verin.
    • İşlemlerini tanımlamak için CommandButton veya özel olmayan SessionCommand kullanan Player.Command örnekleri için geriye dönük uyumluluk ekleyin. Bunlar artık platform medya oturumlarında (ör. Sistem Arayüzü veya Android Auto) doğru şekilde gösteriliyor.
    • 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ü:
    • ProgressStateWithTickInterval sınıfını ve ilgili rememberProgressStateWithTickInterval Composable'ı media3-ui-compose modülüne ekleyin. Bu durum bilgisi depolayıcı, demo-compose içinde geçerli konumu ve süreyi metin biçiminde göstermek için kullanılır.
    • MuteButtonState öğesini, Player sesinin kapatılmasını sağlayan ui-compose öğesine ekleyin. Bu durum bilgisi depolayıcı, demo-compose içinde sesi kapatma/sesi açma açma/kapatma düğmesini göstermek için kullanılır.
    • ProgressStateWithTickCount sınıflarını ve bunlara karşılık gelen rememberProgressStateWithTickCount Composable'ı media3-ui-compose modülüne ekleyin. Bu durum bilgisi depolayıcı, demo-compose içinde ilerlemeyi yatay salt okunur ilerleme çubuğu olarak göstermek için kullanılır.
    • PlayerSurface yönetimini en boy oranı yeniden boyutlandırma ve örtü ile birleştiren media3-ui-compose'ye ContentFrame Composable'ı ekleyin.
    • API 34 platformunda, Compose AndroidView içinde SurfaceView kullanılırken videoların uzamasına/kırpılmasına neden olan ve dolayısıyla SURFACE_TYPE_SURFACE_VIEW ile ContentFrame ve PlayerSurface composable'ları etkileyen bilinen bir hatayı geçici olarak çözme (#1237, #2811).
    • Yeni bir media3-ui-compose-material3 modülü oluşturun ve bu modüle Material3 temalı Composables (PlayPauseButton, NextButton, PreviousButton, SeekBackButton, SeekForwardButton, RepeatButton, ShuffleButton, MuteButton) ekleyin.
    • Oyuncunun ilerleme durumunu metin biçiminde göstermek için TimeText composable'ı media3-ui-compose-material3 öğesine 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 eklendi.
    • RTL metin altyazılarında noktalama işaretlerinin doğru şekilde gösterilmesi için BidiFormatter kullanın (#11214).
  • HLS uzantısı:
    • HLS geçiş reklamı atlama özelliklerini ayrıştırın.
    • HLS oynatma listesindeki ve öğe listesi 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 düşmesine neden olan hata düzeltildi (#2760).
    • Oynatma listesindeki belirli bir konumun segment dizinini bulmak için ikili arama kullanın (#2826).
    • HlsInterstitialsAdsLoader.skipCurrentAd() ve skipCurrentAdGroup() ile reklamları ve reklam gruplarını dizine göre atlamak için ilgili yöntemleri ekleyin.
    • 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şluğu kabul eder.
    • Segment içermeyen bir HlsMediaPlaylist için sonraki parçanın getirilmesini düzgün şekilde işleyin (#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 manifest'i ile DASH akışları oynatılırken UnsupportedOperationException sorununu düzeltin (#2688).
    • LiveConfiguration, yayınlandığında ve medya öğesi kullanıcı tarafından güncellendiğinde DashMediaSource'ın MediaItem tarafından sağlanan değere sıfırlanır (#2606).
    • Geçersiz manifest güncellemelerinin neden olduğu ve oynatıcı hatası olarak bildirilmeyen kilitlenmeleri önleyin (#2805).
  • RTSP uzantısı:
    • H264 ve H265 için parçalanmış NAL birimleri işlenirken eksik RTP paketlerinin hatasını işleme (#2613).
  • Kod çözücü uzantıları (FFmpeg, VP9, AV1 vb.):
    • AV1 Uzantısı: AV1 yazılım kod çözücüsü artık yüksek performanslı dav1d kitaplığını kullanarak önceki libgav1 uygulamasının yerini alıyor ve kod çözme hızını artırıyor.
    • FFmpeg uzantısı: STREAMINFO bloğunun doğru şekilde ayrıştırılıp kod çözücüye iletilmesini sağlayarak bazı FLAC dosyalarının oynatılmasını engelleyen sorun düzeltildi (#2887).
  • Cast uzantısı:
    • CastPlayer.Builder ekleyin. Bu, CastPlayer cihazının hem yerel hem de Cast oynatma yapmasını sağlar. Yalnızca Cast oynatmayı destekleyen eski CastPlayer davranışını korumak için RemoteCastPlayer kullanabilirsiniz. Önceden var olan CastPlayer oluşturucular eski davranışlarını korur ancak bunun yerine CastPlayer veya RemoteCastPlayer oluşturucuların kullanılması tercih edilir.
    • DefaultMediaItemConverter içinde boş olmayan bir MIME türünün zorunlu kılınmasını durdurun.
    • Kullanılabildiğinde DefaultCastOptionsProvider#toMediaQueueItem içinde kullanılacak Cast MEDIA_TYPE'ı tahmin etmek için MediaItem.mediaMetadata.mediaType kullanın.
    • DefaultCastOptionsProvider uygulamasında uzaktan yerel aktarımları etkinleştirin.
    • Oturum demosunda Cast desteği eklendi.
    • Composable kullanıcı arayüzünde medya rotası düğmesinin gösterilmesi için destek ekleyin.
    • İşlem çubuğu menüsünde medya rotası düğmesi görüntüleme desteği eklendi.
    • Medya rotası düğmesinin View kullanıcı arayüzü olarak gösterilmesi için destek eklendi.
  • Test yardımcı programları:
    • FakeClock otomatik ilerleme davranışı için maksimum zaman farkı ekleyin. Varsayılan olarak 1 saniye ayarlanır ancak FakeClock.Builder üzerinden 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 tutarındaki bütçe, test-utils kampanyasından test-utils-robolectric kampanyasına aktarılacak.
  • Desteği sonlandırılan sembolleri kaldırın:
    • Desteği sonlandırılan DefaultPreloadManager oluşturucusunu kaldırın. Bunun yerine DefaultPreloadManager.Builder kullanın.
    • Kullanımdan kaldı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.
    • Kullanımdan kaldırılan ShadowMediaCodecConfig.withNoDefaultSupportedMimeTypes() öğesini kaldırın. Bunun yerine ShadowMediaCodecConfig.withNoDefaultSupportedCodecs() kullanın.

1.9.0-rc01

1 Aralık 2025

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

1.9.0-beta01

20 Kasım 2025

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

1.9.0-alpha01

22 Ekim 2025

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

Sürüm 1.8.0

1.8.1

21 Mayıs 2026

1.8.1 sürümü aşağıdaki commit işlemlerini 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 commit'leri içerir.

  • Ortak kitaplık:
    • ForwardingSimpleBasePlayer içinde oyuncu değiştirme desteği eklendi.
  • ExoPlayer:
    • Karışık modu için ExoPlayer arayüzüne getter ekleyin (#2522).
    • DefaultAudioSink öğesine birden fazla iş parçacığından erişilirse istisna daha net bir şekilde oluşturulur. Bu durum, oynatıcının dışında RendererCapabilities.getFormatSupport çağrısı yapıldığında meydana gelirse bu yöntemi ExoPlayer'ın oynatma iş parçacığıyla aynı iş parçacığında çağırdığınızdan veya oynatma için kullanılan örnekten farklı bir örnek kullandığınızdan emin olun (#1191).
    • TV'lerdeki stereo olmayan ses biçimlerinin DefaultTrackSelector tarafından desteklenmiyor olarak işaretlenmesi hatası 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.
    • Context öğesinden ExoPlayer.Builder öğesine iletilen sanal cihaz kimliğinin kullanılması için destek eklendi.
    • Sarma modunda varsayılan olarak dinamik planlamayı etkinleştirin.
    • Bir öğenin sonuna gitmek istediğinizde kaynağın gereksiz yere yeniden yüklenmesini önleyin.
    • Sarma modunda varsayılan olarak MediaCodec.BUFFER_FLAG_DECODE_ONLY kullanın.
    • Önceden yükleme iş parçacığından farklı bir oynatma iş parçacığına sahip bir ExoPlayer tarafından PreloadMediaSource oynatıldığında IllegalStateException hata verir (#2495).
    • Varsayılan uygulama ile cloneAndMove öğesini ShuffleMode öğesine ekleyin (#2226).
    • render çağrısı gerekmiyorsa Renderer.getMinDurationToProgressUs'nın varsayılan davranışını daha büyük bir değer döndürecek şekilde değiştirin.
    • Duraklatılmış durumdayken sona gidildiğinde son karenin gecikmesine neden olan dahili planlama hatası düzeltildi. Şimdilik hata düzeltmesi yalnızca ExoPlayer.Builder.experimentalSetDynamicSchedulingEnabled etkinse geçerli olur.
    • ExoPlayer.setScrubbingModeEnabled(boolean) yöntemini ekleyin. Bu, oynatıcıyı sık sık yapılan arama işlemleri (ör. kullanıcının kaydırma çubuğunu sürüklemesi) için optimize eder. Sarma modunun davranışı, setScrubbingModeParameters(..) ile ExoPlayer ve ExoPlayer.Builder üzerinde özelleştirilebilir.
    • Sarma modunda kısmi arama toleransının özelleştirilmesine izin verilir.
    • Sarma modunda codec'in çalışma hızını artırın.
    • AdsMediaSource içeriğindeki hazırlama hatalarının hiçbir zaman bildirilmemesine neden olan hata düzeltildi (#2337).
    • MergingMediaSource'daki bellek sızıntısı düzeltildi. Örneğin, altyazılar yan yüklenirken bu sızıntı oluşuyordu (#2338).
    • Belirli medya öğeleri için CMCD günlüğünü devre dışı bırakmak üzere CmcdConfiguration.Factory'nın null döndürmesine izin verin (#2386).
    • Varsayılan görüntü arabellek boyutunu 128 KB'tan (metin parçalarından kopyalama-yapıştırma hatası) 26 MB'a yükseltin. Bu boyut, 50 MP Ultra HDR görüntüler için yeterlidir (#2417).
    • Uygulamaların, belirtilen başlangıç konumu ve süresiyle tek bir medyayı önbelleğe almasına olanak tanıyan PreCacheHelper eklendi.
    • DefaultPreloadManager içinde belirtilen konumdan önceden yükleme desteği eklendi.
  • Dönüştürücü:
    • Video kodlama ayarlarının yonga setine özgü optimizasyonlarını sağlayan CodecDbLite eklendi.
    • CodecDB Lite ayarlarının optimizasyonunu etkinleştirmek için setEnableCodecDbLite işaretini DefaultEncoderFactory öğesine ekleyin. Bu işaret varsayılan olarak false değerine ayarlanır.
    • Başlangıçtaki bir boşluğu (addGap() ile eklenen) artık sessiz sesle doldurmak için EditedMediaItemSequence.Builder içinde experimentalSetForceAudioTrack(true) değerinin açıkça ayarlanması 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 kılın.
    • Kırpma işlemi sırasında, oyunculara kırpma başlangıç noktasından önceki ana kare ile kırpma başlangıç noktası arasındaki örnekleri yoksaymalarını söylemek için MP4 düzenleme listesi içeren Transformer.Builder().experimentalSetMp4EditListTrimEnabled(boolean) ekleyin.
    • Composition Demo uygulamasını Kotlin ve Jetpack Compose kullanacak şekilde güncelleyin ve dizileri 2x2 veya PiP düzeninde yerleştirmek için özel bir VideoCompositorSettings ekleyin.
  • Ayıklayıcılar:
    • Parçalanmış MP4 dosyalarından meta verileri ayrıştırma (#2084).
    • JPEG: Başlangıçta Exif segmenti olmayan hareketli fotoğrafları destekler (#2552).
    • Birden fazla sidx atomu içeren parçalanmış MP4'te arama için destek ekleyin. Bu davranış, FLAG_MERGE_FRAGMENTED_SIDX işaretinin FragmentedMp4Extractor üzerinde kullanılmasıyla etkinleştirilebilir (#9373).
    • FLAC dosyalarındaki boş arama tablolarını (yalnızca yer tutucu arama noktaları içerenler dahil) yoksayın ve dosyanın süresi biliniyorsa ikili arama aramasına geri dönün (#2327).
    • H.265 SEI birimlerinin ayrıştırılması, tanınmayan SEI türlerinin tamamen atlanacak şekilde düzeltildi (#2456).
    • WavExtractor türü bir dosya ayrıştırılırken ses biçimi için başlık uzantısının SubFormat verilerini kullanacak şekilde WavExtractor öğesini güncelleyin.WAVE_FORMAT_EXTENSIBLE
    • MP4: Ham PCM ses parçalarını tanımlayan ipcm ve fpcm kutuları için destek ekleyin (64 bit kayan noktalı PCM desteklenmez).
    • MP4: Hem videoyu döndüren hem de yansıtan tkhd dönüşüm matrislerinin döndürme kısmını işler. Bu sayede, iPhone ön kamerasıyla çekilen yansıtılmış videoların doğru şekilde yukarı bakması sağlanır ancak y ekseninde yanlış şekilde yansıtılır (#2012).
    • MP3: FLAG_ENABLE_CONSTANT_BITRATE_SEEKING(_ALWAYS) (#2194) nedeniyle sabit bit hızlı arama işlemine geri dönüldüğünde, aranamayan Xing, VBRI ve benzeri değişken bit hızlı meta verilerdeki süre ve veri boyutunu kullanın.
  • Ses:
    • Ses oynatma, medyanın sonuna çok yakın bir noktada başlatıldığında AnalyticsListener.onAudioPositionAdvancing işlevinin çağrılmamasına neden olan hata düzeltildi.
    • ChannelMappingAudioProcessor ve TrimmingAudioProcessor'daki tüm doğrusal PCM örnek biçimleri için destek eklendi.
    • CompositionPlayer içinde ses boşlukları için destek ekleyin.
    • BaseAudioProcessor#reset() adlı kişiden BaseAudioProcessor#flush() adlı kişiye yapılan sahte aramayı kaldırın.
    • DefaultAudioMixer'da sabit güç upmixing/downmixing'ine izin verin.
    • ChannelMappingAudioProcessor, TrimmingAudioProcessor ve ToFloatPcmAudioProcessor öğelerini herkese açık hale getirin (#2339).
    • En iyi çaba tahmini yerine DefaultAudioSink'deki yetersiz çalıştırmaları tespit etmek için AudioTrackPositionTracker'te AudioTrack#getUnderrunCount() kullanın.
    • Ses çıkış cihazından beklenmedik konum kayması durumunda ses zaman damgası düzeltme işlemini iyileştirir.
    • Bluetooth cihazlarına bağlıyken duraklatmadan devam ettikten sonraki ilk 10 saniyede A/V senkronizasyonunun bozulmasına neden olan hata düzeltildi.
    • AnalyticsListener.onAudioPositionAdvancing öğesinin, sesin ilerlemeye başladığı zamanı değil, ilk ölçümün zamanını bildirmesine neden olan hata düzeltildi.
    • Bazı cihazlarda stereo sese geri dönüş yapıldıktan sonra çok kanallı sese geri dönme sorunu düzeltildi (#2258).
  • Video:
    • Ayrılmış yüzey geçici çözümünü "lenovo" ve "motorola" cihazlara genişletme ( (#2059).
    • Ses örnekleri tam olarak istenen konumda başlamadığında başlangıçta video karelerinin sorunsuz şekilde yayınlanması iyileştirildi.
    • Ayrılmış yüzey geçici çözümünü "realme" cihazlara genişletme (#2059).
    • Yalnızca kod çözme giriş arabelleklerini sıraya alırken ExoPlayer işaretini eklemek için deneysel MediaCodec.BUFFER_FLAG_DECODE_ONLY API'sini ekleyin. Bu işaret, kod çözücüye yalnızca kod çözme arabelleklerini atlama sinyali vererek 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ını düzeltme (#2408).
  • Metin:
    • MP4 dosyalarında VobSub parçaları için destek eklendi (#2510).
    • Bir altyazı segmenti ilk başta yüklenemediğinde ve daha sonra başarıyla yüklendiğinde, ardından birkaç boş altyazı segmenti geldiğinde oynatmanın duraklaması düzeltildi (#2517).
    • Altyazılar etkinleştirildiğinde devam eden bir ipucunun gösterilmesi için SSA ve SubRip'i düzeltin (#2309).
    • Altyazı hatası içeren bir yayından boş altyazı parçası içeren bir canlı yayına geçiş yaparken oynatmanın takılması sorunu düzeltildi (#2328).
    • B kareleri içeren H.262 akışları oynatılırken bozuk çıkan CEA-608 altyazıları düzeltildi (#2372).
    • Matroska dosyalarında CodecId = S_TEXT/SSA ile SSA altyazıları için destek eklendi. Daha önce MatroskaExtractor yalnızca SubStation Alpha altyazılarının "gelişmiş" (v4+) varyantını temsil etmesi amaçlanan CodecId = S_TEXT/ASS biçimini destekliyordu (ancak ExoPlayer'ın ayrıştırma mantığı her iki varyant için de aynıdır) (#2384).
    • Aynı anda ekranda birden fazla ipucu gösterildiğinde ipuçlarının z sırasını tanımlamak için kullanılan SubStation Alpha (SSA) altyazı dosyalarında layer özelliği için destek eklendi (#2124).
  • Meta veri:
    • Timeline'a medya süresini ve Timeline'ı alma desteği eklendi ve bu API, örnek tabanlı AutoCloseable API'ye taşındı.MetadataRetriever Builder kullanarak MediaItem için bir örnek oluşturun, ardından meta veriler için ListenableFuture değerlerini almak üzere retrieveTrackGroups(), retrieveTimeline() ve retrieveDurationUs() işlevlerini çağırın. Önceki statik yöntemler artık kullanımdan kaldırıldı (#2462).
  • Resim:
    • Çok büyük (ör. 50 MP) resimleri görüntülemeye çalışırken uygulamanın PlayerView kaynaklı Canvas: trying to draw too large bitmap. ile kilitlenmesini önlemek için çözülmüş bit eşlemleri BitmapFactoryImageDecoder içindeki görüntü boyutuyla sınırlayın.
    • DefaultRenderersFactory.getImageDecoderFactory() işlevinin imzasını, Context parametresini alacak şekilde değiştirin.
    • CompositionPlayer içinde kullanılan maksimum bit eşlem çıkış boyutunu, Transformer içinde kullanılanla aynı olacak şekilde ayarlayın (yani CompositionPlayer, ExoPlayer'nin aksine bit eşlemleri çözerken ekran boyutunu dikkate almaz).
  • DRM:
    • HTTP istek başlıklarının doğru şekilde uygulanabilmesi için OfflineLicenseHelper.newWidevineInstance işlevine MediaItem.DrmConfiguration kabul eden yeni bir aşırı yükleme 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.
  • Muxer'lar:
    • Parçalanmış MP4'teki ses örnekleri için doğru örnek işaretlerinin ayarlanmamasına neden olan hata düzeltildi.
    • writeSampleData() API 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 özelliğini ekleyin.
  • IMA uzantısı:
    • Bir reklamdaki yükleme hatasının yanlışlıkla başka bir reklam grubunu geçersiz kılmasına neden olan hata düzeltildi.
    • VOD penceresinin sonundaki reklam gruplarının oynatmayı durdurmasına neden olan hata düzeltildi. Başlangıç zamanı pencereden sonra olan reklam grupları artık MediaPeriodQueue sırasına alınmıyor (#2215).
  • Oturum:
    • Ayrıcalıklı olmayan üçüncü taraf Media3 denetleyicilerinden gelen bağlantıların yoksayıldığı hata düzeltildi.
    • Eski bir MediaBrowserServiceCompat cihazına özel komutlar gönderirken kullanılabilir komutlar için işareti kaldırın. Bu, eski bir uygulamaya bağlandığında eski kumandaların/tarayıcıların davranışıyla aynıdır.
    • Oynatıcının ilk oynatma hatasının yanlışlıkla kalıcı özel durum 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 simgesine neden olabildiği hata düzeltildi.
    • Oturum tarafından işlenmeyen denetleyici işlemlerinin, denetleyiciyi geçersiz bir durumda bırakmasına neden olan hata düzeltildi.
    • StrictMode güvenli olmayan başlatma ihlali uyarısını düzeltin (#2330).
    • Oynatıcı, ana iş parçacığından farklı bir uygulama iş parçacığından çalıştırılırken ana iş parçacığından setSessionExtras çağrıldığında IllegalStateException'ye (#2265) neden olan hata düzeltildi.
    • Bir oynatıcı, medya öğeleri hazırlanmadan veya oynatılmadan ayarlanırsa otomatik olarak bildirim göstermeyin (#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 geri sarmaya çalışırken IllegalArgumentException hatasına neden olan hata düzeltildi.
    • Android Auto kullanıcı arayüzünde (ve platform medya oturumundan bu bilgileri kullanan diğer denetleyicilerde) konum artefaktlarını önlemek için canlı yayınlarda, platform medya denetleyicileri için oynatma konumunun yayınlanmasını ve mevcut öğede arama yapma özelliğini durdurun (#1758).
    • Eski bir MediaBrowserServiceCompat'ye bağlı MediaBrowser'ün getLibraryRoot'ına null iletilmesinin NullPointerException oluşturması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 öğesinin platform oturumlarının MediaMetadata ile paylaşılmasına neden olan hata düzeltildi. Denetleyicilerin medyayı yeniden istemesine izin vermek için URI'yi kasıtlı olarak paylaşmak istiyorsanız bunun yerine MediaItem.RequestMetadata.mediaUri değerini ayarlayın.
  • Kullanıcı arayüzü:
    • Yeniden kullanılabilir bileşenlerdeki PlayerSurface gibi öğelerin düzgün çalışmaması hatası düzeltildi (#2493).LazyColumn
    • İlk düğme durumlarını ayarlama ile durumdaki değişikliği (ör. simge şekilleri veya etkinleştirme) gözlemleme arasında boşluğa neden olan bir Compose hatası düzeltildi. Gözlem dönemi dışında oynatıcıda yapılan değişiklikler artık algılanıyor (#2313).
    • media3-ui-compose modülüne SeekBackButtonState ve SeekForwardButtonState için durum tutucular ve composable'lar ekleyin.
    • PlayerControlView'ya ExoPlayer'ın sarma modu için destek ekleyin. Etkinleştirildiğinde, kullanıcı kaydırma çubuğunu sürüklemeye başladığında oynatıcıyı kaydırma moduna geçirir, her hareket için bir player.seekTo çağrısı yapar ve dokunma işlemi ekrandan kaldırıldığında kaydırma modundan çıkar. Bu entegrasyon, XML'de time_bar_scrubbing_enabled = true veya Java/Kotlin'de setTimeBarScrubbingEnabled(boolean) yöntemiyle etkinleştirilebilir.
    • PlayerSurface işlevinin, boş değer atanabilir bir Player bağımsız değişkenini kabul etmesini sağlayın.
  • İndirilenler:
    • Aşamalı akışlar için kısmi indirme desteği eklendi. Uygulamalar, DownloadHelper ile aşamalı bir akış hazırlayabilir ve indirme işleminin kapsaması gereken zamana dayalı medya başlangıç ve bitiş konumlarını belirterek yardımcıdan DownloadRequest isteyebilir. Döndürülen DownloadRequest, çözümlenmiş bayt aralığını taşır. Bu aralıkla bir ProgressiveDownloader oluşturulabilir ve içerik buna göre indirilebilir.
    • Statik DownloadHelper.forMediaItem() yöntemlerinin yerine kullanılan DownloadHelper.Factory yöntemini ekleyin.
    • SegmentDownloader uygulamaları için Factory ekleyin.
    • Uyarlanabilir akışlar için kısmi indirme desteği eklendi. Uygulamalar, DownloadHelper ile uyarlanabilir bir akış hazırlayabilir ve indirme işleminin kapsaması gereken zamana dayalı medya başlangıç ve bitiş konumlarını belirterek yardımcıdan DownloadRequest isteyebilir. Döndürülen DownloadRequest, çözümlenmiş zaman aralığını taşır. Bu aralıkla somut bir SegmentDownloader oluşturulabilir ve içerik buna göre indirilebilir.
  • Cronet uzantısı:
    • Otomatik çerez işleme özelliği eklendi (#5975).
  • HLS uzantısı:
    • Arabellekte kullanılabilir parça olmadığında HlsSampleStreamWrapper arabelleğin içinde arama yapmaya çalıştığı 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ı sorunu düzeltildi (#2299).
    • CAN-BLOCK-RELOAD=YES sunucu tarafından karşılanmadığında hedef sürenin yarısı kadar bekleyerek aşırı yeniden yüklemeleri önleme (#2317).
    • Bir ara rulo reklamdan önce geçiş reklamı yayını başlatıldığında oynatmanın duraklatılması ve yanlış reklam için öğe listesi çözünürlüğünün denenmesiyle ilgili hata düzeltildi (#2558).
    • Alıntılanmış dizedeki özellik değerlerinde \f (form feed) kabul edilecek şekilde oynatma listesi ayrıştırma işlemi düzeltildi (#2420).
    • Aynı kimliğe sahip geçiş reklamlarının güncellenmesi desteklenir (#2427).
    • Canlı yayın yüklenecek segment kalmadığında oynatma listesi yükleme hatalarının bazen yayılmamasına neden olan hata düzeltildi (#2401https://github.com/androidx/media/issues/2401).
    • Altyazı yorumlarını, ses yorumlarının gruplandırılmasına benzer şekilde NAME etiketiyle gruplandırın (#1666).
    • X-ASSET-LIST ve HlsInterstitialsAdsLoader ile canlı yayınları destekleyin.
  • DASH uzantısı:
    • Hızlı oynatma 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 işlem hattı tarafından okunmuşsa DASH dönemi süresinin kısaltılmasının istisna oluşturmasına neden olan 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 uyarınca H265 için RTP toplama paketi desteği eklendi (#2413).
    • Bir HTTP 302 yanıtı işlenirken sağlanan konum URI'sinin kullanılması için RtspClient düzeltildi ( (#2398).
    • Satır sonlarında boşluk karakterleri içeren 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 işlevinin etkili olmaması hatası düzeltildi (#2258).
  • Cast 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ı:
    • Oyuncuyu belirtilen bir konuma ilerletmek için advance(player).untilPositionAtLeast ve untilMediaItemIndex öğelerini TestPlayerRunHelper öğesine ekleyin. Çoğu durumda bu yöntemler, mevcut untilPosition ve untilStartOfMediaItem yöntemlerinden daha güvenilirdir.
    • FakeDownloader öğesini diğer testlerde yeniden kullanmak için 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ında "exotest" öneki "media3" ile değiştirildi.
  • Desteği sonlandırılan sembolleri kaldırın:
    • Kullanımdan kaldırılan SegmentDownloader oluşturucusu SegmentDownloader(MediaItem, Parser<M>, CacheDataSource.Factory, Executor) ve alt sınıflarındaki (DashDownloader, HlsDownloader ve SsDownloader) ilgili oluşturucular kaldırıldı.
    • Kullanımdan kaldırılan Player.hasNext() ve 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ünde BaseAudioProcessor özelliğini 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 sürümüyle aynı koda sahiptir ve yanlışlıkla kararlı olarak etiketlenen bir alfa sürümü olan 1.7.0'dan "daha yeni" bir sürüm olarak görünmesi için yayınlanmaktadır (aşağıya bakın).

Sürüm 1.7.0

16 Mayıs 2025

Bu sürüm 1.7.0-alpha01 olmalıydı ancak maven.google.com'da yanlışlıkla 1.7.0 (yani kararlı) olarak etiketlendi. Lütfen 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 iptal edilir. 1.6.1 sürümü bu commit'leri içerir.

  • Ortak kitaplık:
    • Yeni bir pitch değeriyle PlaybackParameters.withPitch(float) kolayca kopyalamak için PlaybackParameters.withPitch(float) yöntemi eklendi (#2257).PlaybackParameters
  • ExoPlayer:
    • Bir sonraki medya öğesinin başlatılması sırasında kurtarılabilir oluşturucu hatası nedeniyle medya öğesi geçişinin başarısız olmasına neden olan sorun düzeltildi (#2229).
    • ProgressiveMediaPeriod, hazırlanmadan önce PreloadMediaSource kendi getBufferedDurationUs()'ünü çağırmaya çalıştığı için IllegalStateException hatası vermesi sorunu 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[][]) özelliğinin kullanılabildiğinden emin olun. Kullanıcının, kaldırılan reklam grupları için boş veya null olabilen bir süre dizisi iletmesi gerekir (#2267).
  • Ayıklayıcılar:
    • MP4: alternate_group değerini tkhd kutusundan ayrıştırın ve her parçanın Format.metadata bölümünde Mp4AlternateGroupData girişi olarak gösterin (#2242).
  • Ses:
    • Kısa içeriklerden oluşan bir oynatma listesi oynatılırken konumun takılabildiği boşaltma sorunu düzeltildi (#1920).
  • Oturum:
    • Platform MediaSession geri çağırmaları için toplama zaman aşımını 500 milisaniyeden 100 milisaniyeye düşürün ve uygulamaların bu değeri yapılandırmasına olanak tanıyan deneysel bir ayarlayıcı ekleyin.
    • Kullanıcı tarafından kapatılan bildirimlerin yeniden görünmesine neden olan sorun düzeltildi (#2302).
    • Oturumun, sarmalanmış oynatıcı aslında boşken tek öğeli bir zaman çizelgesi döndürmesine neden olan hata düzeltildi. Bu durum, sarmalanmış oynatıcıda COMMAND_GET_CURRENT_MEDIA_ITEM kullanılabilirken COMMAND_GET_TIMELINE kullanılamadığında ve sarmalanmış oynatıcı boş olduğunda meydana gelir (#2320).
    • MediaSessionService.setMediaNotificationProvider işlevinin, hizmetle setForegroundServiceTimeoutMs gibi diğer etkileşimlerden sonra sessizce yoksayıldığı hata düzeltildi (#2305).
  • Kullanıcı arayüzü:
    • PlayerSurface özelliğinin ExoPlayer.setVideoEffects ve CompositionPlayer ile çalışmasını sağlayın.
    • PlayerSurface öğesinin yeni bir Player ile yeniden oluşturulamaması hatası düzeltildi.
  • HLS uzantısı:
    • HLS medyası için CmcdData'da parça süresinin ayarlanmaması nedeniyle şifrelenmiş medya segmentleri işlenirken onaylama hatasına neden olan sorun düzeltildi (#2312).
  • RTSP uzantısı:
    • RTSP oturumunu TCP kullanacak şekilde yapılandırmak için RTSPT şemalı URI desteği eklendi (#1484).
  • Cast uzantısı:
    • Oynatma listesi meta verileri için destek eklendi (#2235).

1.6.0

26 Mart 2025

androidx.media3:media3-*:1.6.0 iptal edilir. 1.6.0 sürümü bu commit'leri içerir.

  • Ortak kitaplık:
    • androidx.media içindeki eşdeğer sınıfların yerine AudioManagerCompat ve AudioFocusRequestCompat sınıflarını ekleyin.
    • Kotlin'i 1.9.20'den 2.0.20'ye yükseltin ve Compose Compiler Gradle eklentisini kullanın. KotlinX Coroutines kitaplığı 1.8.1 sürümünden 1.9.0 sürümüne yükseltildi.
    • Format.toBundle(boolean excludeMetadata) yöntemini kaldırın, bunun yerine Format.toBundle() yöntemini kullanın.
    • SimpleBasePlayer bölümünde, null ile setPlaylist işleminden sonra State içinde yeni bir currentMediaItemIndex ayarlandığında meta verilerin yeniden değerlendirilmemesine neden olan hata düzeltildi (#1940).MediaMetadata
    • Diğer sınıflardaki güncellemeleri yönetmeyi kolaylaştırmak için SimpleBasePlayer.State erişimini korumalıdan herkese açık olarak değiştirmeSimpleBasePlayer.State(#2128).
  • ExoPlayer:
    • MediaExtractorCompat adlı yeni sınıfı ekleyin. Bu sınıf, MediaExtractor platformuyla eşdeğer özellikler sunar.
    • MediaCodecVideoRenderer kullanılarak oynatma için deneysel "ExoPlayer" ön ısıtma desteği eklendi. DefaultRenderersFactory'yı experimentalSetEnableMediaCodecVideoRendererPrewarming üzerinden yapılandırarak ExoPlayer'ye ikincil bir MediaCodecVideoRenderer sağlayabilirsiniz. Etkinleştirilirse ExoPlayer, medya öğeleri arasındaki geçiş gecikmesini azaltmak için oynatma sırasında ardışık medya öğelerinin videolarını önceden işler.
    • DefaultLoadControl'deki bufferForPlaybackMs ve bufferForPlaybackAfterRebufferMs için varsayılan değerleri sırasıyla 1.000 ve 2.000 ms olarak azaltın.
    • DeviceInfo ve cihaz sesini eşzamansız olarak başlatın (setDeviceVolumeControlEnabled kullanılarak etkinleştirilmişse). Bu değerler ExoPlayer.Builder.build() işleminden hemen sonra kullanılamaz ve Player.Listener, onDeviceInfoChanged ve onDeviceVolumeChanged aracılığıyla değişiklikleri bildirir.
    • İlk ses oturumu kimliği, oynatıcı oluşturulduktan sonra artık hemen kullanılamaz. Gerekirse AnalyticsListener.onAudioSessionIdChanged simgesini kullanarak ilk güncellemeyi dinleyebilirsiniz.
    • Video parçası seçerken dili göz önünde bulundurun. Varsayılan olarak, varsa seçilen ses parçasının diliyle eşleşen bir "ana" video parçası seçin. Uygunsuz video dili tercihleri TrackSelectionParameters.Builder.setPreferredVideoLanguage(s) ile ifade edilebilir.
    • DefaultTrackSelector.selectVideoTrack() yöntemine selectedAudioLanguage parametresi eklendi.
    • MediaSourceEventListener.onLoadStarted ve ilgili MediaSourceEventListener.EventDispatcher yöntemlerine retryCount parametresi eklendi.
    • Çok dönemli DASH akışlarındaki oynatma listesi öğelerinin veya dönemlerin, gerçek içerikle eşleşmeyen süreleri nedeniyle öğenin sonunda karelerin donmasına neden olabilmesiyle ilgili hata düzeltildi (#1698).
    • BasePreloadManager.Listener öğesini üst düzey bir PreloadManagerListener'ye taşıyın.
    • RenderersFactory.createSecondaryRenderer, ön ısıtma için ikincil oluşturucular sağlamak üzere uygulanabilir. Ön ısıtma, oynatma sırasında medya öğeleri arasında daha hızlı geçiş yapılmasını sağlar.
    • DASH, HLS ve SmoothStreaming gibi uyarlanabilir akış biçimlerindeki manifest istekleri için CmcdData gönderme özelliğini etkinleştirin (#1951).
    • MediaCodecRenderer.onReadyToInitializeCodec içinde başlatılacak codec'in MediaCodecInfo değerini sağlayın MediaCodecRenderer.onReadyToInitializeCodec (#1963).
    • Reklam grupları ekleyerek AdPlaybackStates'ın büyümesine izin vermek için AdsMediaSource seçeneğini 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şleminin yapıldığı ek karelerin hızlı bir şekilde gösterilmesiyle ilgili sorun düzeltildi.
    • Uygulamaların varsayılan olarak iki farklı meta veri şeması almasını sağlamak için DefaultRenderersFactory iki MetadataRenderer örneği ekleyin.
    • Oynatma duraklatıldığında devam eden bir parçanın yüklenmesinin iptal edilip edilmeyeceğini yeniden değerlendirin (#1785).
    • ClippingMediaSource'ya, sarılamayan medyada kırpmaya izin verme seçeneği ekleyin.
    • Ön ısıtma ile arama yapmanın sonraki medya öğesi geçişini engellemesine neden olan hata düzeltildi.
    • ExoPlayer.isLoading(), STATE_IDLE veya STATE_ENDED'ye geçiş yapmasına rağmen true olarak kalmasına neden olan hata düzeltildi (#2133).
    • lastRebufferRealtimeMs öğesini LoadControl.Parameter'ye ekleme (#2113).
  • Dönüştürücü:
    • Geriye dönük uyumlu alternatif biçimlere transmuks etme desteği eklendi.
    • Dolby Vision (profil 8) biçiminin kod dönüştürülmesi ve yeniden kapsama alınması için destek eklendi.
    • VideoFrameProcessor.registerInputStream ve VideoFrameProcessor.Listener.onInputStreamRegistered parametrelerini Format kullanacak şekilde güncelleyin.
    • DefaultEncoderFactory kullanılırken HDR statik meta verileri oluşturulur.
    • MediaMetricsManager kullanarak Android platformu teşhisleri için desteği etkinleştirin. Dönüştürücü, 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ştirilirse 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 MediaProjectionAssetLoader medya sağlayan MediaProjection öğesini ekleyin ve Transformer demo uygulamasına ekran kaydı desteği ekleyin.
    • #getInputFormat() öğesini Codec arayüzüne ekleyin.
    • Mümkün olduğunda GlObjectsProvider adlı kişiyi DefaultVideoFrameProcessor ve DefaultVideoCompositor'de serbest bırakma sorumluluğunu arayana devredin.
  • Ayıklayıcılar:
    • AVI: Akış başlığının parça sayısı yerine bayt sayısını depoladığı, sabit bit hızlı sıkıştırılmış ses içeren dosyaların işlenmesi düzeltildi.
    • Uzunlukları 1 veya 2 bayt (4 bayt yerine) olarak ifade edilen NAL birimlerinin işlenmesiyle ilgili sorun düzeltildi.
    • Düzenleme listesi, senkronizasyon çerçevesi olmayan ve öncesinde senkronizasyon çerçevesi bulunmayan bir çerçeveyle başladığında MP4 düzenleme listelerindeki ArrayIndexOutOfBoundsException simgesini düzeltir (#2062).
    • TS akışlarının bazı cihazlarda takılması sorunu düzeltildi (#2069).
    • FLAC: 32 bit FLAC dosyaları için destek eklendi. Daha önce bu videolar IllegalStateException: Playback stuck buffering and not loading ile oynatılamıyordu (#2197).
  • Ses:
    • Oynatma devam ettiğinde onAudioPositionAdvancing çağrılacak şekilde düzeltildi (daha önce oynatma duraklatıldığında çağrılıyordu).
    • SpeedChangingAudioProcessor, varsayılan parametrelerle yapılandırıldığında SonicAudioProcessor'ı atlamayın.
    • Sonic#getOutputSize()'da DefaultAudioSink'nin durmasına neden olabilecek taşma sorunu düzeltildi.
    • MediaCodecAudioRenderer.getDurationToProgressUs() ve DecoderAudioRenderer.getDurationToProgressUs() öğelerini, arama işlemlerinin sağlanan süreleri doğru şekilde sıfırlayacak şekilde düzeltin.
    • androidx.media3.common.audio.SonicAudioProcessor numaralı telefonu kalıcı yapın.
    • ChannelMappingAudioProcessor ve TrimmingAudioProcessor'a kayan nokta 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 protected olarak değiştirin (#1905).
    • Arama işlemini hızlandırmak için deneysel ExoPlayer AV1 örnek bağımlılığı ayrıştırması eklendi. Yeni DefaultRenderersFactory.experimentalSetParseAv1SampleDependencies API ile etkinleştirin.
    • Deneysel ExoPlayer API'sini, geç bırakılan MediaCodecVideoRenderer kod çözücü giriş arabelleklerini bırakmak için ekleyin. DefaultRenderersFactory.experimentalSetLateThresholdToDropDecoderInputUs ile etkinleştirin. * Yüzeyi olmayan bir oynatıcının hemen hazır olması ve bekleyen karelerin çok yavaş çözülmesi sorunu düzeltildi (#1973).
    • Ekranın titremesini önlemek için Xiaomi ve OPPO cihazları ayrılmış yüzey modunun dışında tutun (#2059).
  • Metin:
    • VobSub altyazıları için destek eklendi (#8260).
    • MediaItem.Builder.setSubtitleConfigurations ile yapılandırılan tüm altyazı dosyalarının önceden yüklenmesi durdurulur ve bunun yerine, parça seçimiyle seçilirse yalnızca bir altyazı dosyası yüklenir (#1721).
    • TTML: tts:origin ve tts:extent öğelerine style kullanılarak referans verilmesi için destek eklendi (#2953).
    • WebVTT ve SubRip zaman damgalarını tam olarak 3 ondalık basamakla sınırlayın. Daha önce, herhangi bir ondalık basamak sayısını yanlış ayrıştırıyor ancak her zaman değerin milisaniye cinsinden olduğunu varsayıyorduk. Bu da yanlış zaman damgalarına yol açıyordu (#1997).
    • Oynatma listesi, CEA-608 veya CEA-708 altyazılı kırpılmış öğeler içerdiğinde oynatmanın takılması sorunu düzeltildi.
    • Bir SSA dosyasında süresi sıfır olan bir ipucu (başlangıç ve bitiş zamanı eşit) olduğunda IllegalStateException hatası düzeltildi (#2052).
    • Altyazılar ses ve video ile aynı kapsayıcıya yerleştirildiğinde altyazı ayrıştırma hatalarını bastırın (ve günlüğe kaydedin) (#2052).
    • CR satır sonları kullanılan WebVTT dosyalarındaki çok baytlı UTF-8 karakterlerinin işlenmesi düzeltildi (#2167).
  • DRM:
    • API < 27 olan cihazlarda ClearKey içeriği oynatılırken MediaCodec$CryptoException: Operation not supported in this configuration hatası düzeltildi (#1732).
  • Etki:
    • OverlaySettings işlevini StaticOverlaySettings'e taşıdık. OverlaySettings, dinamik yer paylaşımı ayarlarına izin vermek için alt sınıflara ayrılabilir.
  • Muxer'lar:
    • Tam nitelikli adın çok uzun olmasını önlemek için MuxerException, Muxer arayüzünden taşındı.
    • setSampleCopyEnabled() yöntemi, hem Mp4Muxer.Builder hem de FragmentedMp4Muxer.Builder içinde setSampleCopyingEnabled() olarak yeniden adlandırıldı.
    • Mp4Muxer.addTrack() ve FragmentedMp4Muxer.addTrack() artık TrackToken yerine int parça kimliği döndürüyor.
    • Mp4Muxer ve FragmentedMp4Muxer artık Muxer arayüzünü uygulamıyor.
    • Varsayılan olarak Mp4Muxer örnek gruplandırma ve kopyalama devre dışı bırakılır.
    • Yalnızca ses parçası yazıldığında çok sayıda parça oluşturan FragmentedMp4Muxer ile ilgili hata düzeltildi.
  • Oturum:
    • Oynatma duraklatıldığında, durdurulduğunda veya başarısız olduğunda ön plan hizmeti durumunu 10 dakika daha korur. Bu sayede kullanıcılar, çeşitli cihazlarda ön plan hizmeti kısıtlamaları riski olmadan bu zaman aşımı içinde oynatmaya devam edebilir. player.pause() numarayı aramanın, stopSelf() öncesinde ön plan hizmetini durdurmak için artık kullanılamayacağını unutmayın. onTaskRemoved geçersiz kılınırken bunun yerine MediaSessionService.pauseAllPlayersAndStopSelf() kullanılmalıdır.
    • Oynatma hata durumuna girdiğinde veya durdurulduğunda bildirimi görünür tutun. Bildirim yalnızca oynatma listesi temizlendiğinde veya oyuncu serbest bırakıldığında kaldırılır.
    • Android platformundaki MediaSession işlemleri ACTION_PLAY ve ACTION_PAUSE'un işlenmesini iyileştirerek yalnızca kullanılabilir komutlara göre birini ayarlayın ve yalnızca biri ayarlanmışsa da kabul edin.
    • Context öğesini MediaButtonReceiver.shouldStartForegroundService (#1887) öğesine parametre olarak ekleyin.
    • Eski bir oturuma bağlı MediaController üzerinde Player yöntemi çağrıldığında bekleyen bir güncellemedeki değişikliklerin bırakılmasına neden olan hata düzeltildi.
    • MediaSession.setSessionActivity(PendingIntent) değerinin 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ü:
    • media3-ui-compose, PresentationState, PlayPauseButtonState, NextButtonState, PreviousButtonState, RepeatButtonState, ShuffleButtonState ve PlaybackSpeedState için media3-ui-compose modülüne durum tutucular ve composable'lar ekleyin.PlayerSurface
  • İndirilenler:
    • Veri kaynağı IOException dışında bir CacheWriter oluşturduğunda veri kaynaklarını açık ve önbellek alanlarını kilitli bırakan CacheWriter hatası düzeltildi (#9760).Exception
  • HLS uzantısı:
    • HlsInterstitialsAdsLoader ile ilgili ilk sürümü ekleyin. Reklam yükleyici, bir HLS medya oynatma listesinin HLS geçiş reklamlarını okur ve bunları AdsMediaSource'ye 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, AdsMediaSource örnekleri oluşturmak için bu API'yi kullanabilir. Bu örnekler, HlsInterstitialsAdsLoader öğesini kolay ve güvenli bir şekilde kullanır.
    • Dolby Vision biçimlerini algılamak için HLS oynatma listesinden SUPPLEMENTAL-CODECS etiketini ayrıştırın (#1785).
    • HLS yayınında konum senkronizasyonu arama koşulunu gevşetin (#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 manifestindeki scte214:supplementalCodecs özelliğini ayrıştırın (#1785).
    • Dönemin, belirtilen dönem süresinin ötesinde medya örnekleri içerdiği canlı yayınlarda dönem geçişlerinin işlenmesi iyileştirildi (#1698).
    • adaptation-set-switching ile işaretlenmiş ancak farklı diller veya rol işaretleri içeren uyarlama kümelerinin birleştirilmesi sorunu 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ünü ekleyin (#1826).
  • MIDI uzantısı:
    • Özel AudioSink ve AudioRendererEventListener örneklerini MidiRenderer'ye bağlayın.
  • Cast uzantısı:
    • Google Play Hizmetleri'nin yüklü ancak devre dışı olduğu cihazlarda API 34 ve sonraki sürümleri hedefleyen uygulamalarda play-services-cast-framework kilitlenmesini düzeltmek için FLAG_MUTABLE bağımlılığını 21.5.0 sürümüne yükseltin (#2178).
  • Demo uygulaması:
    • Ek düğmelerle demo-compose'ı genişletin ve ölçeklendirme ile deklanşör desteğiyle PlayerSurface entegrasyonunu geliştirin.
  • Desteği sonlandırılan sembolleri kaldırın:
    • Desteği sonlandırılan AudioMixer.create() yöntemi kaldırıldı. Bunun yerine DefaultAudioMixer.Factory().create() kullanın.
    • Aşağıdaki desteği sonlandırılan Transformer.Builder yöntemleri kaldırın:
      • setTransformationRequest(), bunun yerine setAudioMimeType(), setVideoMimeType() ve setHdrMode() kullanın.
      • setAudioProcessors(), ses işlemcisini bir EditedMediaItem.Builder.setEffects() içine yerleştirin ve Transformer.start() öğesine iletin.
      • setVideoEffects(), EditedMediaItem.Builder.setEffects() içinde video efekti ayarlayın ve bunu Transformer.start() öğesine iletin.
      • setRemoveAudio(), bunun yerine EditedMediaItem.Builder.setRemoveAudio() kullanarak sesi EditedMediaItem öğesinden kaldırın ve Transformer.start() öğesine iletin.
      • setRemoveVideo(), videoyu EditedMediaItem ile Transformer.start()'e aktarılanlardan kaldırmak için EditedMediaItem.Builder.setRemoveVideo() kullanın.
      • setFlattenForSlowMotion(), bunun yerine Transformer.start()'a iletilen EditedMediaItem öğesini düzleştirmek için EditedMediaItem.Builder.setFlattenForSlowMotion() işlevini kullanın.
      • setListener(), bunun yerine addListener(), removeListener() veya removeAllListeners() kullanın.
    • Aşağıdaki desteği sonlandırılan Transformer.Listener yöntemleri kaldırın:
      • onTransformationCompleted(MediaItem), use onCompleted(Composition, ExportResult) yerine kullanın.
      • onTransformationCompleted(MediaItem, TransformationResult), use onCompleted(Composition, ExportResult) yerine kullanın.
      • onTransformationError(MediaItem, Exception), use onError(Composition, ExportResult, ExportException) yerine kullanın.
      • onTransformationError(MediaItem, TransformationException), use onError(Composition, ExportResult, ExportException) yerine 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ı.
    • Aşağıdaki desteği sonlandırılan DownloadHelper yöntemleri kaldırıldı:
      • Oluşturucu DownloadHelper(MediaItem, @Nullable MediaSource, TrackSelectionParameters, RendererCapabilities[]), bunun yerine DownloadHelper(MediaItem, @Nullable MediaSource, TrackSelectionParameters, RendererCapabilitiesList) kullanın.
      • getRendererCapabilities(RenderersFactory), eşdeğer işlevsellik RenderersFactory ile DefaultRendererCapabilitiesList oluşturularak ve DefaultRendererCapabilitiesList.getRendererCapabilities() çağrılarak elde edilebilir.
      • PlayerNotificationManager.setMediaSessionToken(MediaSessionCompat) yöntemi kaldırıldı. PlayerNotificationManager.setMediaSessionToken(MediaSession.Token) kullanın ve bunun yerine (MediaSession.Token) compatToken.getToken() 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 iptal edilir. 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: VBRI çerçevesinin içindekiler tablosu, bir dosyadaki tüm MP3 verilerini kapsamıyorsa oynatmayı erken durdurmayın (#1904).
  • Video:
    • MediaCodecAdapter sağlanan piksel en boy oranı değerlerinin onOutputFormatChanged işlenirken kullanılması geri alındı (#1371).
  • Metin:
    • ReplacingCuesResolver.discardCuesBeforeTimeUs içinde, timeUs konumunda etkin olan (daha önce başlatılmış ancak henüz sona ermemiş) ipucunun yanlışlıkla silinmesine neden olan hata düzeltildi (#1939).
  • Meta veri:
    • Vorbis yorumlarındaki disk/parça numaralandırmasını ve türü MediaMetadata (#1958) içine ayıklayın.

Sürüm 1.5.0

27 Kasım 2024

androidx.media3:media3-*:1.5.0 iptal edilir. 1.5.0 sürümü bu commit'leri içerir.

  • Ortak kitaplık:
    • Tam tutarlılık ve dinleyici işleme sağlarken küçük ayarlamalarla başka bir oynatıcıya yönlendirmeye olanak tanıyan ForwardingSimpleBasePlayer işlevi eklendi (#1183).
    • SimpleBasePlayer.State.playlist yerine getPlaylist() yöntemini kullanın.
    • Oynatma listesi yapısı oluşturmak yerine SimpleBasePlayer.State.Builder.setPlaylist() için geçersiz kılma ekleyerek doğrudan Timeline, geçerli Tracks ve Metadata değerlerini belirtin.
    • minSdk değerini 21'e (Android Lollipop) yükseltin. Bu, diğer tüm AndroidX kitaplıklarıyla uyumludur.
    • Ortak kitaplığın üzerine kurulu 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 coroutine döndürmek üzere Player.listen askıya alma uzantısı işlevini ekleyin.
    • Çalışma zamanı sınıfı doğrulama hatalarını önlemek için tasarlanmış, manuel olarak satır dışı bırakılmış iç 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 satır dışı çağrıları otomatik olarak satır dışı hale getiriyor (bu nedenle, manuel satır dışı hale getirme artık gerekli değil). Kitaplığın tüm Gradle kullanıcıları, compileSdk = 35 nedeniyle bunu yapan bir R8 sürümünü kullanan Android Gradle eklentisinin bir sürümünü zaten kullanıyor olmalıdır. Gradle dışı derleme sistemlerine sahip kitaplık kullanıcılarının, çalışma zamanı sınıfı doğrulama hatalarını önlemek için R8'e eşdeğer küçültme/karartma adımı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ıldı.
  • ExoPlayer:
    • MediaCodecRenderer.onProcessedStreamChange() artık her medya öğesi için aranabilir. Daha önce ilkinde bu işlem yapılmıyordu. Bu özelliği etkinleştirmek için MediaCodecRenderer.experimentalEnableProcessedStreamChangedAtStart() kullanın.
    • Hata oluştuğunda PreloadMediaSource.PreloadControl.onPreloadError uygulamalarının işlem yapmasına izin vermek için PreloadMediaSource.PreloadControl ekleyin.
    • Önceden 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 verin (#1540).
    • Alan her zaman sıfır olduğundan MediaCodecAdapter.Configuration.flags kaldırıldı.
    • Kullanıcının, Wear OS 35+ API'de (cihazın bu desteği duyurduğu yerlerde) oynatma için yerleşik hoparlörü seçmesine izin verin.
    • Ses odağı işleme etkinleştirilene kadar Context.getSystemService(Context.AUDIO_SERVICE) numarasına yapılan engelleme çağrısını erteleyin. Bu, ses odak işleme etkinleştirilmemişse engelleme işleminin yapılmamasını sağlar (#1616).
    • Yükleme başarısız olduğunda arabelleğe alınan süreye bakılmaksızın oynatmaya izin verilir (#1571).
    • Tek tek oluşturucular oynatmaya hazır olduğunda bunu belirtmek için AnalyticsListener.onRendererReadyChanged() ekleyin.
    • MediaCodec.CryptoException, eşzamansız modda (API 31 ve sonraki sürümlerdeki varsayılan davranış) çalıştırıldığında bazen "beklenmeyen çalışma zamanı hatası" olarak bildirilen MediaCodec sorunu düzeltildi.
    • PreloadMediaSource.PreloadControl.onContinueLoadingRequested() ile bufferedPositionUs yerine bufferedDurationUs kartı. Ayrıca, DefaultPreloadManager.Status.STAGE_LOADED_TO_POSITION_MS değerini DefaultPreloadManager.Status.STAGE_LOADED_FOR_DURATION_MS olarak değiştirir. Uygulamaların, konum yerine, karşılık gelen medya kaynağının bu IntDef ile önceden yüklenmesi gereken varsayılan başlangıç konumundan itibaren 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ı ekleyin (1703).
    • Oynatma listesindeki bir sonraki öğe için oynatma listesi önceden yükleme özelliğini ekleyin. Uygulamalar, ExoPlayer.setPreloadConfiguration(PreloadConfiguration) işlevini uygun şekilde çağırarak önceden yüklemeyi etkinleştirebilir. Önceden yükleme varsayılan olarak devre dışıdır. Bu özellik etkinleştirildiğinde ve oynatmayı engellememek için DefaultLoadControl, ön yüklemeyi yalnızca oynatıcı oynatma için yüklenmediğinde başlatıp devam ettirecek şekilde kısıtlar. Uygulamalar, LoadControl.shouldContinuePreloading()'ı uygun şekilde uygulayarak (ör. DefaultLoadControl'da bu yöntemi geçersiz kılarken) bu davranışı değiştirebilir. LoadControl'ın varsayılan uygulaması, bir uygulama LoadControl'ın özel bir uygulamasını kullanıyorsa ön yüklemeyi devre dışı bırakır.
    • Alt sınıf işleyicilerinin 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.Builder, DefaultPreloadManager ve ExoPlayer örneklerini oluşturan DefaultPreloadManager.Builder ekleyin.
    • DefaultLoadControl uygulaması, yayın türlerini ExoTrackSelection[] öğesinden alabileceğinden Renderer[] parametresini LoadControl.onTracksSelected() öğesinden kaldırın.
    • Kullanımdan kaldırılan DefaultLoadControl.calculateTargetBufferBytes(Renderer[], ExoTrackSelection[]) ve geçersiz kılmaları önlemek için yöntem nihai olarak işaretlendi. Bunun yerine yeni DefaultLoadControl.calculateTargetBufferBytes(ExoTrackSelection[]) kullanılmalıdır.
    • MediaSourceEventListener içindeki ikincil kaynaklardan gelen MediaSourceEventListener etkinliklerini raporlayın.MergingMediaSource Bu durum, 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ına devam edilir (#1722).
      • Yeni altyazı işleme sürecinde (çıkarma 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 yönteminde (oluşturma sırasında), yalnızca ilişkili yükleme hataları onLoadError geri çağırmaları aracılığıyla yayınlanırken ayrıştırma hataları sessizce yoksayılır (bu, önceden var olan bir davranıştır).
    • Çok dönemli DASH akışlarındaki oynatma listesi öğelerinin veya dönemlerin, gerçek içerikle eşleşmeyen süreleri nedeniyle öğenin sonunda karelerin donmasına neden olabilmesiyle ilgili hata düzeltildi (#1698).
    • Müşterinin yeniden ilk kullanıma hazırlanacağı son güncellemeden bu yana geçen maksimum süreyi ayarlamak için SntpClient öğesine bir belirleyici ekleyin (#1794).
  • Dönüştürücü:
    • SurfaceAssetLoader ekleyin. Bu, video verilerinin Surface aracılığıyla Transformer'a sıraya alınmasını destekler.
    • ImageAssetLoader, IllegalStateException oluşturmak yerine AssetLoader.onError üzerinden desteklenmeyen girişleri bildirir.
    • Resim dışa aktarma için MediaItem.Builder.setImageDurationMs kullanılarak resim süresinin ayarlanmasını zorunlu kılın.
    • Ses EditedMediaItem dizilerindeki boşluklar için dışa aktarma desteği eklendi.
  • Parça Seçimi:
    • DefaultTrackSelector: Diğer faktörler eşit olduğunda nesne tabanlı ses, kanal tabanlı sese tercih edilir.
  • Ayıklayıcılar:
    • Mp4Extractor ve FragmentedMp4Extractor'nin, sonraki örnekler tarafından referans olarak kullanılmayan H264 örneklerini tanımlamasına izin verin.
    • AmrExtractor'da dizine dayalı arama özelliğini etkinleştirme seçeneği eklendi.
    • Geçerli kareler arasında 128 KB'tan fazla veri içeren MP3 dosyalarını geçersiz yerine kesilmiş olarak değerlendirin. Bu nedenle, sonunda MP3 olmayan veriler bulunan ve MP3 baytlarının uzunluğunu belirten başka meta verisi olmayan dosyalar artık ParserException: Searched too many bytes.{contentIsMalformed=true, dataType=1} (#1563) hatası vermek yerine MP3 verilerinin sonunda oynatmayı durduruyor.
    • MP4 dosyalarındaki düzenleme listeleri işlenirken anahtar kare olmayan medya başlangıç konumları için ön rulo örneği işleme sorunu düzeltildi (#1659).
    • mdhd kutusundaki medya süresini kullanarak kare hızı hesaplaması iyileştirildi Mp4Extractor ve FragmentedMp4Extractor (#1531).
    • MP4 düzenleme listelerinde media_time öğesinin yanlış ölçeklendirilmesi düzeltildi. segment_duration, film zaman ölçeği kullanılarak zaten doğru şekilde ölçeklendirilmişken media_time, MP4 biçim standardında belirtildiği gibi artık 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ırası bozuk kareleri işleme (#1797).
    • MP4 dosyalarının mdhd kutusundaki medya süresi ayrıştırma işlemini, -1 değerlerini işleyecek şekilde düzeltin (#1819).
    • H.263 video için MP4 dosyalarındaki h263 kutusunu tanımlama desteği eklendi ( (#1821)).
    • AC-4 Level-4 ISO temel medya dosyası biçimi desteği eklendi (#1265).
  • DataSource:
    • HttpEngineDataSource, API düzeyi 34 yerine S extension 7 sürümünden itibaren kullanıma izin verecek şekilde güncellendi (#1262).
    • DataSourceContractTest: DataSource.getUri()'nin çözümlenmiş URI'yi (belgelendiği gibi) döndürdüğünü onaylayın. Bu, istenen URI'den farklı olduğunda testler yeni DataSourceContractTest.TestResource.Builder.setResolvedUri() yöntemini kullanarak bunu belirtebilir.
    • DataSourceContractTest: DataSource.getUri() ve getResponseHeaders(), open() için başarısız bir çağrıdan (kaynak bulunamadığı için) sonra ve sonraki bir close() çağrısından önce "açık" değerini döndürür.
      • DataSourceContractTest.getNotFoundResources()'ı geçersiz kılmak, test alt sınıflarının birden fazla "bulunamadı" kaynağı ve beklenen tüm başlıkları sağlamasına olanak tanır. Bu sayede HTTP 404 (başlıklarla) ile "sunucu bulunamadı" (başlık yok) arasında ayrım yapılabilir.
  • Ses:
    • Medya içeriğinde varsa codec'te CTA-2075 ses yüksekliği meta verilerini otomatik olarak yapılandırın.
    • Arama sırasında sesin sorunsuz bir şekilde azaltılmasını sağlar.
    • Arama sırasında oluşabilecek pop seslerini düzeltir.
    • Sonic'in zaman genişletme/perde değiştirme algoritması için kesme hatası birikimini düzeltir.
    • SpeedChangingAudioProcessor'da çıkış karelerinin düşmesine neden olan hata düzeltildi.
  • Video:
    • MediaCodecVideoRenderer, ne oluşturulan ne de diğer örnekler tarafından referans olarak kullanılan örneklerin kodunu çözmekten kaçınır.
    • API 35 ve sonraki sürümlerde, codec destekliyorsa MediaCodecAdapter artık configure içinde null alabilir ve daha önce ayarlanan Surface öğesini kaldırmak için yeni bir detachOutputSurface yöntemi çağrılabilir (MediaCodecInfo.detachedSurfaceSupported).Surface
    • MediaCodecAdapter işlenirken sağlanan piksel en boy oranı değerlerini kullanın onOutputFormatChanged (#1371).
    • Galaxy Tab S7 FE'de 60 fps'den düşük güvenli H264 akışlarının desteklenmiyor olarak işaretlenmesine neden olan cihaz sorunu için geçici çözüm eklendi (#1619).
    • Son örnekten sonra akış sonu sinyali döndürmeden takılan codec'ler için geçici çözüm eklendi.
  • Metin:
    • Özel bir VoiceSpan ekleyin ve WebVTT ses aralıkları için doldurun (#1632).
    • Mikrosaniye olarak gösterilip long MPEG zaman tabanıyla çarpıldığında 64 bitlik 90,000 değeri aşan çok büyük altyazı zaman damgalarına sahip HLS'deki WebVTT'nin gösterildiğinden emin olun (#1763).
    • Dolby Vision içeriklerinde CEA-608 altyazılarını destekleme (#1820).
    • CEA-608 altyazıları etkinleştirildiğinde DASH çok dönemli akışlarda oynatmanın takılması sorunu düzeltildi (#1863).
  • Meta veri:
    • Buzlu veya vnd.dvb.ait içerik 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 entegrasyonu basitleştirmek için ExternallyLoadedImageDecoder ekleyin.
  • DataSource:
    • FileDescriptorDataSource adlı yeni bir DataSource ekleyin. Bu DataSource, FileDescriptor alanından okumak için kullanılabilir (#3757).
  • Etki:
    • Küçük DefaultVideoFrameProcessor ölçeklendirme için SurfaceTexture geçici çözümü eklendi. SurfaceTexture, kırpılmış bir arabelleğin kenarındaki 1 teksele sahip kenarlığı kesen küçük bir ölçeklendirme içerebilir. Bu durum artık, çıktının beklenene daha yakın olması için ele alınmaktadır.
    • Hızlandırma DefaultVideoFrameProcessor.queueInputBitmap(). Bu sayede, Transformer ile görüntüleri videolara aktarma işlemi daha hızlı gerçekleşir.
  • IMA uzantısı:
    • Oynatma listesinin temizlenmesinin ArrayIndexOutOfBoundsException içinde ImaServerSideAdInsertionMediaSource simgesine neden olabileceği hata düzeltildi.
    • Sunucu tarafında eklenen ve ön rulosuz DAI akışlarının, son videonun ortasında gösterilen reklamdan sonra oynatıldığında ArrayIndexOutOfBoundsException ile sonuçlanmasına neden olan hata düzeltildi (#1741).
  • Oturum:
    • Uygulamaların, bu yöntemi geçersiz kılarak oynatmaya devam etme için gelen oynatma komutunu bastırmasına izin vermek üzere MediaButtonReceiver.shouldStartForegroundService(Intent) ekleyin. Hizmet varsayılan olarak her zaman başlatılır ve sistem, hizmeti ForegroundServiceDidNotStartInTimeException (#1528) ile kilitlenmeden oynatma durdurulamaz.
    • Eski bir hizmete bağlanıldığında MediaBrowser cihazından gönderilen özel komutların, yöntemin MediaBrowserServiceCompat varyantı yerine MediaSessionCompat.Callback cihazına gönderilmesine neden olan hata düzeltildi. Bu durum, MediaBrowser öğesinin eski hizmet tarafından geri gönderilen gerçek dönüş değerini almasını engelliyordu (#1474).
    • Medya düğmesi amaçları için yayın alıcısı ayarlanırken belirli üreticilerin cihazları tarafından oluşturulan IllegalArgumentException işlenir (#1730).
    • Medya öğeleri için komut düğmeleri ekleyin. Bu işlem, Custom browse actions olarak bilinen eski kitaplık için MediaBrowserCompat ile Media3 API'sini ekler. Medya öğeleri için Media3 komut düğmelerinin hem MediaBrowser hem de MediaController için kullanılabildiğini unutmayın. Özel göz atma işlemlerini uygulama başlıklı makaleyi inceleyin. * Media3 denetleyicisinin bazen bir oturum uygulamasının play() isteğinde bulunduktan sonra ön plan hizmeti başlatmasına izin verememesine neden olan hata düzeltildi.
    • CommandButton.Builder.setIconUri'yı yalnızca içerik URI'lerini kabul edecek şekilde kısıtlayın.
    • Eski bir MediaBrowserCompat öğesine bağlanırken Media3 tarayıcısının bağlantı ipuçlarını ilk MediaBrowserCompat öğesine 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ı MediaBrowser sunucusunun, tarayıcı bir parentid aboneliği oluşturduktan sonra hizmet tarafından gönderilen hatayı almamasına neden olan hata düzeltildi.
    • Böylece, eski bir MediaBrowserService öğesine bağlı olan bir Media3 tarayıcısı, bir üst öğeye abone olurken parentId öğesinin alt öğelerini iki kez istemez.
  • 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. PlayerView kullanan uygulamaların AndroidView dahil olmak için PlayerView.setEnableComposeSurfaceSyncWorkaround çağrısı yapması gerekir (#1237, #1594).
    • Tam ekran düğmesinin simgesinin isteğe bağlı olarak (yani bant dışı ve tıklama etkileşimine tepki vermeden) güncellenmesine izin vermek için setFullscreenButtonState, PlayerView'ye eklendi (#1590, #184).
    • Uygulama tarafından tanımlanan metin parçası seçimi tercihleri varsa metin seçiminde "Yok" seçeneğinin çalışmaması hatası 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 sorunu düzeltme (#1138).
    • Başlık uzantıları içeren RTP paketleri ayrıştırılırken kilitlenme sorununu düzeltme (#1225).
  • Kod Çözücü Uzantıları (FFmpeg, VP9, AV1 vb.):
    • Ses sentezlemek için libiamf yerel kitaplığını kullanarak IAMF parçaları içeren MP4 dosyalarının oynatılmasına destek sağlayan 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ş olarak uzamsallaştırma ile 5.1 ses düzeninde de etkinleştirilir ancak şu anda binaural oynatma desteği sunulmamaktadır.
    • Android 15'te kod çözücü uzantıları için 16 KB sayfa desteği eklendi (#1685).
  • Cast Uzantısı:
    • CastSession bağlantısı kesildikten sonra zaman çizelgesini temizlemeyi durdurur. Bu sayede gönderen uygulama, bağlantı kesildikten sonra oynatmaya yerel olarak devam edebilir.
    • Context sağlandığında CastPlayer'ın DeviceInfo değerini doldurun. Bu, MediaSession öğesinin RoutingSession öğesine bağlanmasını sağlar. Bu, Çıkış Anahtarı'nın entegrasyonu için gereklidir (#1056).
  • Test yardımcı programları:
    • DataSourceContractTest artık aşağıdakileri doğrulamak için testler içerir:
      • Giriş akışı read position güncellendi.
      • Çıkış arabelleği offset doğru şekilde uygulanır.
  • Demo uygulaması
    • Kısa biçimli demo uygulamasındaki bellek sızıntılarını düzeltin (#1839).
  • Desteği sonlandırılan sembolleri kaldırın:
    • Kullanımdan kaldırılan Player.hasPrevious, Player.hasPreviousWindow() öğelerini kaldırın. Bunun yerine Player.hasPreviousMediaItem() politikasını kullanın.
    • Desteği sonlandırılan Player.previous() yöntemi kaldırıldı. Bunun yerine Player.seekToPreviousMediaItem() kullanın.
    • Desteği sonlandırılan DrmSessionEventListener.onDrmSessionAcquired yöntemi kaldırıldı.
    • Desteği sonlandırılan DefaultEncoderFactory oluşturucularını 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 iptal edilir. 1.4.1 sürümü bu commit'leri içerir.

  • ExoPlayer:
    • Önceden yükleme geri çağırmalarını PreloadMediaSource içinde 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 verilir (#1571).
  • Ayıklayıcılar:
    • MP3: Searched too many bytes hatasını, Info çerçevesindeki uzunluk alanına göre MP3 olmayan sondaki verileri doğru şekilde yoksayarak düzeltin (#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 yüzde tts:fontSize değerlerinin işlenmesi düzeltildi.
    • İstenen çıkış başlangıç zamanının Subtitle'daki son etkinlik zamanından büyük veya ona eşit olması durumunun yanlış işlenmesi nedeniyle IndexOutOfBoundsException'daki LegacySubtitleUtil sorunu düzeltildi (#1516).
  • DRM:
    • API 31 ve sonraki sürümlerdeki cihazlarda L1 Widevine içeriklerini oynatırken android.media.MediaCodec$CryptoException: Operation not supported in this configuration: ERROR_DRM_CANNOT_HANDLE hatasını düzeltme Bu hata, MediaDrm.requiresSecureDecoder çerçeve yönteminin (#1603) eksik uygulanmasından kaynaklanır.
  • Etki:
    • GlObjectsProvider öğesine release() yöntemi ekleyin.
  • Oturum:
    • KEYCODE_HEADSETHOOK simgesine iki kez dokunma işlemini, belgelendirildiği gibi "sonrakine git" işlemine dönüştürün (#1493).
    • KEYCODE_HEADSETHOOK öğesini, ForegroundServiceDidNotStartInTimeException (#1581) hatasını önlemek için yoksaymaya karar verirken MediaButtonReceiver içinde "oynat" komutu olarak değerlendirin.
  • RTSP Uzantısı:
    • SDP ayrıştırmasında geçersiz medya açıklamalarını atlayın (#1087).

Sürüm 1.4.0

25 Temmuz 2024

androidx.media3:media3-*:1.4.0 iptal edilir. 1.4.0 sürümü bu commit'leri içerir.

  • Ortak kitaplık:
    • İşlem yapmayan 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'e yönelik derleme bağımlılığını kaldırın (#1312).
    • MediaItem.Builder.setImageDurationMs() öğesine iletilen sürenin, resim olmayan bir MediaItem için yoksayıldığından (belgelendiği gibi) emin olun.
    • Format.customData örnekleriyle ilgili uygulama tarafından sağlanan özel bilgileri depolamak için Format.customData ekleyin.Format
  • ExoPlayer:
    • BasePreloadManager ekleyin. Bu, rankingData tarafından tanımlanan önceliklere göre birden fazla kaynak için önceden yüklemeyi koordine eder. Bu sınıf genişletilerek özelleştirme yapılabilir. 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 öğesini ekleyin.
    • PlayerId, LoadControl uygulamalarının birden fazla oyuncuyu desteklemesini sağlamak için çoğu LoadControl yöntemine ekleyin.
    • Buffer.isDecodeOnly() ve C.BUFFER_FLAG_DECODE_ONLY araçlarını kaldırın. Bu işaretin ayarlanmasına gerek yoktur. Oluşturucular ve kod çözücüler, zaman damgasına göre arabellekleri atlamaya karar verir. Ö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() kontrol edebilir veya diğer arabellekleri DecoderOutputBuffer.shouldBeSkipped ile işaretleyerek atlayabilir.
    • TargetPreloadStatusControl.getTargetPreloadStatus(T) tarafından boş değer döndürülmesine izin vererek MediaSource öğesinin, belirtilen rankingData ile önceden yüklenmemesi gerektiğini belirtin.
    • remove(MediaSource) öğesini BasePreloadManager öğesine ekleyin.
    • Önceden yükleme yöneticisi örneğini korurken tüm bekletme kaynaklarını serbest bırakmak için reset() öğesini BasePreloadManager öğesine ekleyin.
    • ExoPlayer.setPriority() (ve Builder.setPriority()) değerini ekleyerek PriorityTaskManager içinde kullanılan öncelik değerini ve API 35'ten itibaren MediaCodec önemini tanımlayın.
    • CMCD'de (#1124) yanlış bs (arabellek yetersizliği) anahtarına neden olan son yeniden arabelleğe alma süresinin güncellenmesiyle ilgili sorun düzeltildi.
    • Kaynağın sonuna kadar yüklendiğini belirtmek için PreloadMediaSource.PreloadControl.onLoadedToTheEndOfSource(PreloadMediaSource) ekleyin. Bu, DefaultPreloadManager ve özel PreloadMediaSource.PreloadControl uygulamalarının bir sonraki kaynağı önceden yüklemesine veya başka işlemler yapmasına olanak tanır.
    • Öğelerin sonundaki sessizliği atlama işleminin oynatma istisnası tetikleyebildiği hata düzeltildi.
    • Önceden yükleme dönemini iptal etmek için clear öğesini PreloadMediaSource öğesine ekleyin.
    • Codec kaynakları daha yüksek öncelikli görevler için geri kazanıldığında kullanılan yeni hata kodu PlaybackException.ERROR_CODE_DECODING_RESOURCES_RECLAIMED eklendi.
    • AdsMediaSource, ilk içerik medyası hazırlığı tamamlanmadan önce videodan önce gösterilen reklamları yükleyebilir (#1358).
    • Orijinal dönem manifestten kaldırıldıktan sonra çok dönemli bir DASH canlı yayını yeniden hazırlanırken oynatmanın STATE_ENDED'e taşınmasına neden olan hata düzeltildi.
    • onTimelineRefreshed() öğesini onSourcePrepared(), onPrepared() öğesini ise onTracksSelected() olarak yeniden adlandırın. PreloadMediaSource.PreloadControl Ayrıca, DefaultPreloadManager.Stage içindeki IntDefs'i de uygun şekilde yeniden adlandırın.
    • Çalışmayı CPU uyandırma döngüleriyle daha iyi uyumlu hale getirmek ve oluşturucular ilerleyebilene kadar uyandırmayı geciktirmek için deneysel dinamik planlama desteği eklendi. ExoPlayer örneğinizi oluştururken experimentalSetDynamicSchedulingEnabled() kullanarak bu özelliği etkinleştirebilirsiniz.
    • Renderer.getDurationToProgressUs() ekleyin. Bir Renderer, oluşturucunun ilerlemesi için oynatmanın ne kadar süre ilerlemesi gerektiğini ExoPlayer'a döndürmek üzere bu yöntemi uygulayabilir. ExoPlayer, experimentalSetDynamicSchedulingEnabled() ile ayarlanmışsa ExoPlayer, iş görevini planlama süresini hesaplarken bu yöntemi çağırır.
    • Giriş ve çıkış arabellekleri MediaCodecRenderer tarafından kullanılabilir olduğunda uyarı vermek için MediaCodecAdapter#OnBufferAvailableListener ekleyin. MediaCodecRenderer, bu geri çağırmaları aldığında ExoPlayer sinyalini verir ve ExoPlayer, experimentalSetDynamicSchedulingEnabled() ile ayarlanırsa ExoPlayer, oluşturucular ilerleme kaydedebildiğinden çalışma döngüsünü planlar.
    • Ayrı parametreler yerine LoadControl yöntemleri için veri sınıfını kullanın.
    • ExoPlayer.isReleased() işlevinin çağrılıp çağrılmadığını kontrol etmek için Exoplayer.release() işlevini ekleyin.
    • ExoPlayer.Builder.setMaxSeekToPreviousPositionMs() öğesini ekleyerek seekToPrevious() öğesinin önceki öğeyi aradığı maksimum konumu yapılandırın (#1425).
    • Bazı ses odağı tutarsızlıklarını düzeltme (ör. oynatıcı duraklatıldığında tam veya geçici odak kaybının bildirilmemesi) (#1436).
    • İlk hazırlık adımından sonra ek parçalar bildiren ayıklayıcıların neden olduğu olası IndexOutOfBoundsException sorunlarını düzeltin (#1476).
    • Effects içindeki ExoPlayer.setVideoEffect(), oluşturucu farkı kaldırılmış zaman damgalarını alır (#1098).
    • Başka bir oynatma listesi öğesi önceden okunurken oluşan oynatıcı hatası işlenirken olası IllegalArgumentException düzeltildi (#1483).
  • Dönüştürücü:
    • Çıkış dosyasındaki ilgili parçanın nasıl oluşturulduğunu belirtmek için audioConversionProcess ve videoConversionProcess simgelerini ekleyin. ExportResult
    • H.264 seviyesi kontrollerinde kırpma optimizasyonunu rahatlatın.
    • Bir dizide SDR ve HDR giriş medyası arasında geçiş yapma desteği eklendi.
    • Beste düzeyinde ses efektleri için destek eklendi.
    • Ultra HDR görüntülerin HDR videolara dönüştürülmesi için destek eklendi.
    • DefaultAudioMixer sıfırlanıp yeniden kullanıldıktan sonra doğru miktarda bayt çıkışı vermemesine neden olan sorun düzeltildi.
    • PCM girişi işlenirken ses kanalı sayısının stereo ile sınırlandırıldığı bir kod çözücü hatası giderildi.
    • ExoPlayerAssetLoader bölümünde parça seçerken yalnızca oynatma için geçerli olduklarından ses kanalı sayısı kısıtlamalarını dikkate almayın.
    • androidx.media3.transformer.Muxer arayüzünü androidx.media3.muxer.Muxer ile değiştirin ve androidx.media3.transformer.Muxer öğesini kaldırın.
    • İçerik URI şemalarından HEIC resim yükleme sorunu düzeltildi. (#1373).
    • AV senkronizasyonunu iyileştirmek için AudioGraphInput bölümünde ses parçası 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 bölümünde yer alır.
  • Ayıklayıcılar:
    • MPEG-TS: Değişikliği ileriye doğru taşıyın. Bunun için, bir akışın son erişim birimini örnek sırasına ileterek son karenin oluşturulmasını sağlayı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 eklendi.
    • MP3: Temel akış tarafından bildirilen boyuta (ör. dosya boyutu veya HTTP Content-Length başlığı) kıyasla Info çerçevesindeki veri boyutu tercih edilir. Bu, oynatılamayan fragman verilerinin (ör. albüm resmi) sabit bit hızı arama hesaplamalarından hariç tutulmasına yardımcı olarak aramaları daha doğru hale getirir (#1376).
    • MP3: Sabit bit hızlı arama için ortalama bit hızını hesaplamak üzere Info çerçevesindeki (varsa) çerçeve sayısını ve diğer verileri kullanın. Info çerçevesinden sonraki çerçevenin bit hızından ekstrapolasyon yapmayın. Bu hız, yapay olarak küçük olabilir (ör. PCUT çerçevesi) (#1376).
    • AVI kapsayıcılarda PCM ses biçimi ayıklama sorununu düzeltir.
  • Ses:
    • Geçiş oynatma için DTS:X Profile 2 kodlama özelliklerini düzeltin (#1299).
    • Yükü kaldırılmış oynatma için, AudioTrack.stop() çağrılmadan önce DefaultAudioSink içinde akış tamamlama için izleme alanını sıfırlayın. Böylece AudioTrack.StreamEventCallback#onPresentationEnded, bekleyen tüm verilerin ne zaman oynatıldığını doğru şekilde tanımlar.
    • SilenceSkippingAudioProcessor'da, farklı ses biçimleri (ör. stereo'dan mono'ya) arasındaki geçişlerin işlemcinin istisna oluşturmasına neden olabildiği hata düzeltildi (#1352).
    • MediaCodecAudioRenderer.getDurationToProgressUs() uygulayın. Böylece ExoPlayer, ana iş döngüsünü MediaCodecAudioRenderer'ın ilerleyebileceği zamana göre dinamik olarak planlar.
  • Video:
    • Oynatma sırasında yüzey değiştirildiğinde Listener.onRenderedFirstFrame() simgesinin çok erken gelmesi sorunu düzeltildi.
    • Gerekirse uyumlu bir AV1 kod çözücü kullanmak için Dolby Vision'ın kod çözücü yedek mantığını düzeltin (#1389).
    • Video oluşturucunun oynatma ortasında etkinleştirilmesinden kaynaklanabilecek codec istisnası düzeltildi.
  • Metin:
    • Arama konumundan önce başlayan altyazıların atlanmasına neden olan sorun düzeltildi. Bu sorun yalnızca Media3 1.4.0-alpha01 sürümünde ortaya çıkmıştır.
    • Varsayılan altyazı ayrıştırma davranışını, oluşturma 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 şemasını inceleyin).
      • 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 bağlayacağınızla ilgili bilgileri özelleştirme ile ilgili dokümanlarda bulabilirsiniz. Bu yöntemler (ve eski altyazı kod çözme desteği) gelecekteki bir sürümde kaldırılacaktır.
      • Özel SubtitleDecoder uygulamaları olan uygulamaların, SubtitleDecoder yerine SubtitleParser'yi (ve SubtitleDecoderFactory yerine SubtitleParser.Factory) uygulamak için güncellenmesi gerekir.
    • PGS: 0 öğesini #1367 gibi gerçek bir renk değeri yerine renk dizini olarak çözmek için çalışma uzunluğu kod çözme işlemini düzeltin.
    • CEA-708: rowLock değerini yoksayın. CEA-708-E S-2023 spesifikasyonu, akışta bulunan değerlerden bağımsız olarak hem rowLock hem de columnLock değerlerinin doğru kabul edilmesi gerektiğini belirtir (columnLock desteği uygulanmadığından her zaman yanlış olduğu varsayılır).
      • 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ü yayınlanmadan önce yanlışlıkla geri alınmıştı. Bu sorun düzeltildi. Dolayısıyla değişiklik tekrar gösteriliyor.
    • CEA-708: ExoPlayer'ın "kalem konumunu ayarla" komutunu basitçe işlemesi nedeniyle eklenen yinelenen yeni satırları önleyin (#1315).
    • WebVTT altyazı örneği, ipucu içermediğinde IllegalArgumentException ile LegacySubtitleUtil arasındaki IllegalArgumentException düzeltildi. Örneğin, DASH akışının bir parçası olarak (#1516).
  • Meta veri:
    • MP4'ün ID3 sıralama etiketleriyle eşlenmesini düzeltir. Daha önce "albüm sıralama" (soal), "sanatçı sıralama" (soar) ve "albüm sanatçısı sıralama" (soaa) MP4 etiketleri, TSO2, TSOA ve TSOP ID3 etiketleriyle yanlış şekilde eşleniyordu (#1302).
    • Değer birden fazla bayt uzunluğunda olduğunda MP4 (/iTunes) sayısal gnre (tür) ve tmpo (tempo) etiketlerinin okunmasıyla ilgili sorun düzeltildi.
    • ID3 TCON çerçevesini MediaMetadata.genre öğesine yayınlayın (#1305).
  • Resim:
    • Kare olmayan DASH küçük resim ızgaraları için destek eklendi (#1300).
    • API 34 ve sonraki sürümlerde AVIF desteği eklendi.
    • Daha önce ayarlanmış bir ImageOutput değerini temizlemek için ExoPlayer.setImageOutput() parametresi olarak null değerine izin verin.
  • DataSource:
    • android.resource://package/id ham kaynak URI'leri için destek uygulayın. Burada package, mevcut uygulamanın paketinden farklıdır. Bu yöntem daha önce çalışır şekilde belgelenmemişti ancak başka bir paketteki kaynaklara ada göre erişmekten daha verimli bir yöntemdir.
    • DataSpec oluşturucularında url'nın boş olmayan bir değer olup olmadığını kontrol edin. Bu parametre zaten null olmayan olarak açıklama eklenmiş.
    • ByteArrayDataSource'nın, yapılandırma sırasında sabit kodlanmak yerine open() sırasında bir URI'yi bayt dizisine çözmesine izin verin (#1405).
  • DRM:
    • DefaultDrmSessionManagerProvider'de LoadErrorHandlingPolicy ayarlanmasına izin verin (#1271).
  • Etki:
    • SpeedChangeEffect'da aynı EditedMediaItem veya Composition içinde birden fazla hız değişikliği desteği.
    • Ultra HDR bit eşlem girişinden HLG ve PQ çıkışı desteği.
    • ExoPlayer.setVideoEffect ve Transformer'ın DebugSurfaceView'da HLG yüzey çıkışını iyileştiren EGL_GL_COLORSPACE_BT2020_HLG_EXT desteği eklendi.
    • setOverlayFrameAnchor() içinde uygulanan x ve y değerlerini ters çevirerek yer paylaşımı matrisi uygulamasını dokümanlarla tutarlı olacak şekilde güncelleyin. OverlaySettings.Builder.setOverlayFrameAnchor() kullanılıyorsa x ve y değerlerini -1 ile çarparak ters çevirin.
    • TimestampWrapper, ExoPlayer#setVideoEffects ile kullanıldığında kilitleniyordu. Bu hata düzeltildi ExoPlayer#setVideoEffects (#821).
    • Varsayılan SDR renk çalışma alanını doğrusal renklerden elektriksel BT 709 SDR videosuna değiştirin. Ayrıca, orijinal renk alanını korumak için üçüncü bir seçenek sunun.
    • DüzenlenenMediaItemSequence'ların belirsiz z-sırasının tanımlanmasına izin verilir (#1055).
    • Farklı HDR içeriklerinde tutarlı bir parlaklık aralığı korur (HLG aralığını kullanır).
    • HDR içeriklerde Ultra HDR (bitmap) katmanları için destek ekleyin.
    • SeparableConvolution efektlerinin API 26'dan önce kullanılmasına izin verin.
    • Yer paylaşımı ve çerçevenin dinamik aralığı eşleşmesi gerektiğinden kullanılmayan OverlaySettings.useHdr öğesini kaldırın.
    • TextOverlay için HDR desteği eklendi. 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 Promote API'yi kararlı sürüme yükseltin.
    • Reklam etiketi parametrelerinin çalışma zamanında değiştirilmesine olanak tanıyan replaceAdTagParameters(Map <String, String>), ImaServerSideAdInsertionMediaSource.AdLoader öğesine eklendi.
    • 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 NullPointerException hatasını düzeltmek için IMA SDK sürümü 3.33.0'a yükseltildi (#700).
  • Oturum:
    • CommandButton.enabled varsayılanını true olarak değiştirin ve ilişkili komut kullanılabilir olsa bile değerin denetleyiciler için yanlış kalmasını sağlayın.
    • Ö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 duraklatmaya olanak tanıyan MediaSessionService.pauseAllPlayersAndStopSelf() öğesini ekleyin ve MediaSessionService öğesinin yaşam döngüsünü sonlandırmak için stopSelf() öğesini çağırın.
    • MediaSessionService.onTaskRemoved(Intent) işlevini geçersiz kılarak güvenli bir varsayılan uygulama sağlayın. Bu uygulama, oynatma devam ediyorsa hizmeti ön planda çalışır durumda tutar, aksi takdirde hizmeti durdurur.
    • Süreyi platform oturumu meta verilerine ayarlamayarak canlı yayınlar için medya bildiriminde arama çubuğunu gizleyin (#1256).
    • Meta veri özelliklerini seçerken media1'dekiyle aynı tercih edilen sırayı ve mantığı kullanmak için MediaMetadata öğesinin MediaDescriptionCompat öğesine dönüştürülmesini hizalayın.
    • MediaSession.sendError() ekleyin. Bu, önemli olmayan hataların Media3 denetleyicisine gönderilmesine olanak tanır. Bildirim denetleyicisi kullanılırken (bkz. MediaSession.getMediaNotificationControllerInfo()), platform oturumunun PlaybackState değerini verilen hata bilgileriyle birlikte hata durumuna güncellemek için özel hata kullanılır (#543).
    • Belirli bir kumandadan gelen bir dizi oynatıcı etkileşimi sona erdiğinde oturumları bilgilendirmek için MediaSession.Callback.onPlayerInteractionFinished() ekleyin.
    • SessionError ekleyin ve hata hakkında daha fazla bilgi sağlamak için hata kodu yerine SessionResult ve LibraryResult içinde kullanın. Mümkünse hatanın nasıl çözüleceği hakkında da bilgi verin.
    • 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() işlevine iletilen ekstraları, Media1 denetleyicisinin MediaSession[Builder].setSessionExtras() işlevine yayma.PlaybackStateCompat.getExtras()
    • Önemli ve önemli olmayan hataları platform oturumuna ve platform oturumundan eşleyin. PlaybackException, PlaybackStateCompat öğesinin kritik hata durumuna eşlenir. MediaSession.sendError(ControllerInfo, SessionError) ile medya bildirimi denetleyicisine gönderilen SessionError, PlaybackStateCompat içinde ölümcül olmayan bir hatayla eşlenir. Bu, hata kodu ve mesajının ayarlandığı ancak platform oturumunun durumunun STATE_ERROR'den farklı kaldığı anlamına gelir.
    • Genel oturum etkinliğini geçersiz kılmak için oturum etkinliğinin kontrol cihazı başına ayarlanmasına izin verin. Oturum etkinliği, bağlantı sırasında ConnectionResult oluşturularak bir kontrol cihazı için tanımlanabilir.AcceptedResultBuilder.setSessionActivivty(PendingIntent) Bağlantı kurulduktan sonra oturum etkinliği MediaSession.setSessionActivity(ControllerInfo, PendingIntent) ile güncellenebilir.
    • MediaLibrarySession.Callback'a yapılan çağrıların hata tekrarını iyileştirin. Hata çoğaltma özelliği, hata türünü seçmek için MediaLibrarySession.Builder.setLibraryErrorReplicationMode() kullanılarak veya varsayılan olarak etkin olan hata çoğaltma özelliğini devre dışı bırakarak yapılandırılabilir.
  • Kullanıcı arayüzü:
    • ExoPlayer cihazına bağlandığında PlayerView cihazına görüntü görüntüleme desteği ekleyin (#1144).
    • PlayerControlView örneği başına farklı çizilebilir öğelere izin vermek için xml özellikleriyle PlayerControlView içindeki çeşitli simgelerin özelleştirilmesini ekleyin (#1200).PlayerView
    • API 34'te Compose AndroidView içinde SurfaceView kullanılırken videonun uzamasına/kırpılmasına neden olan platform hatasını düzeltin (#1237).
  • İndirilenler:
    • DownloadHelper'nın 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 içinde 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 aramanın tamamlanmamasına ve isteğin zaman aşımına uğramasına neden olur (https://issuetracker.google.com/328442628).
  • HLS Uzantısı:
    • HlsSampleStreamWrapper içinde, süreksizlik bekleyen bekleyen EMSG örneklerinin yanlış bir ofsetle temsil edilerek IndexOutOfBoundsException veya IllegalArgumentException'ye neden olmasına yol açan hata düzeltildi (#1002).
    • LL-HLS yayınlarında 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çlandığı hata düzeltildi.
    • Canlı oynatma sırasında birincil olmayan oynatma listelerinin yenilenmemesi hatası düzeltildi (#1240).
    • HLS canlı yayınlarında CMCD'nin etkinleştirilmesinin neden olduğu hatayı düzeltildi ArrayIndexOutOfBoundsException (#1395).
  • DASH uzantısı:
    • Çok dönemli bir canlı yayının yeniden hazırlanmasının IndexOutOfBoundsException (#1329) hatası vermesine neden olan sorun düzeltildi.
    • dashif:Laurl lisans URL'leri için destek eklendi (#1345).
  • Cast Uzantısı:
    • Media3 medya öğesindeki 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() işaretlemelerini uygulayın.
    • TestPlayerRunHelper.runUntil()/playUntil() yöntemlerini, önemli olmayan hatalarda (ör. AnalyticsListener.onVideoCodecError()'a 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 uygulaması:
    • Kısa biçimli 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, HttpDataSource olarak kullanılabilir.
  • Desteği sonlandırılan sembolleri kaldırın:
    • CronetDataSourceFactory öğesini kaldır Bunun yerine CronetDataSource.Factory kullanın.
    • Bazı DataSpec oluşturucuları kaldırın. Bunun yerine DataSpec.Builder politikasını kullanın.
    • setContentTypePredicate(Predicate) yöntemi, DefaultHttpDataSource, OkHttpDataSource ve CronetDataSource öğelerinden kaldırıldı. Bunun yerine her XXXDataSource.Factory için eşdeğer yöntemi kullanın.
    • OkHttpDataSource oluşturucularını ve OkHttpDataSourceFactory'yi 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 yapılandırıcılarını 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) öğesini 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. Bu işlem, tüm Bundleable.Creator<Foo> CREATOR sabit alanlarının kaldırılmasını içerir. 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 iptal edilir. 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'nın önceden yüklenmesi durumunda akışları koruyamaması sorunu düzeltildi.
    • Parça yeniden seçiminde, oynatma dönemine doğru karşılık gelen TrackSelectionResult uygulayın.
    • Medya öğeleri arasında geçiş yaparken oynatma süresi ilerletildikten sonra erken başlatma özelliği etkin olan oluşturucuları başlatın (#1017).
    • Proguard -keepclasseswithmembers kuralına eksik dönüş türü ekleyin DefaultVideoFrameProcessor.Factory.Builder.build() (#1187).
  • Dönüştürücü:
    • API 30'dan önce MediaMuxer'ın negatif sunum zaman damgalarını desteklememesi nedeniyle oluşan istisna için geçici çözüm eklendi.
  • Parça Seçimi:
    • DefaultTrackSelector: Kare hızı "makul" (>=10 fps) olan video parçaları, daha düşük veya ayarlanmamış kare hızına sahip olanlara tercih edilir. Bu, oynatıcının, iki HEVC parçası içerebilen hareketli fotoğraflardan çıkarılan MP4'lerde "gerçek" video parçasını seçmesini sağlar. Bu parçalardan birinin çözünürlüğü daha yüksek ancak kare sayısı çok düşüktür (#1051).
  • Ayıklayıcılar:
    • WAV dosyalarından tek boyutlu parçalar okunurken dolgunun atlanmaması sorunu düzeltildi (#1117).
    • MP3: Format.averageBitrate ve VBRI gibi meta veri çerçevelerinden XING alanını doldurun.
    • MPEG-TS: Bir akışın son erişim birimini örnek sırasına ileterek son karenin oluşturulmasını sağlamayı amaçlayan bir değişikliği geri alın (#7909). Bunun nedeni, yalnızca I-frame HLS akışları (#1150) ve H.262 HLS akışlarıyla (#1126) ilgili yeni sorunlara yol açan değişikliktir.
  • Ses:
    • Ses parçası aktarım modunda başlatılamazsa aktarımı devre dışı bırakarak oluşturucu kurtarmasına izin verin.
  • Video:
    • Galaxy Tab S7 FE, Google TV'li Chromecast ve Lenovo M10 FHD Plus'ta 60 fps H265 yayınlarının desteklenmiyor olarak işaretlenmesine neden olan cihaz sorununa yönelik geçici çözüm eklendi.
    • Cihaz, API'nin gerektirdiği şekilde bunu otomatik olarak yapmasa bile tünel oluşturma sırasında ilk karenin her zaman oluşturulmasını sağlayan geçici çözüm eklendi (#1169). (#966).
    • HDR renk bilgisi işleme nedeniyle codec'in hatalı çalışmasına ve SDR video parçaları için uyarlanabilir biçim geçişlerinin engellenmesine neden olan sorun düzeltildi (#1158).
  • Metin:
    • WebVTT: Doğrudan ardışık ipuçlarının, CuesWithTiming öğesinden sahte ek WebvttParser.parse örnekleri oluşturmasını önleyin (#1177).
  • DRM:
    • Bazı Android 14 cihazlarda ResourceBusyException veya NotProvisionedException yerine MediaDrm çerçevesi tarafından oluşturulabilen NoSuchMethodError sorununu çözün (#1145).
  • Etki:
    • Renk alanları dönüştürülerek SDR ton eşleme için PQ iyileştirildi.
  • Oturum:
    • Denetleyici, mevcut öğenin yerini aldığında mevcut konumun geri atlaması sorunu düzeltildi (#951).
    • Yalnızca boş olmayan extras içeren MediaMetadata öğesinin medya denetleyicileri ve oturumları arasında iletilmemesine neden olan sorun düzeltildi (#1176).
  • Kullanıcı arayüzü:
    • Locale, görünen adı tanımlayamıyorsa ses parçası dilinin adını ekleyin (#988).
  • DASH uzantısı:
    • Manifest dosyasındaki tüm Label öğelerini Format.labels ile doldurun (#1054).
  • RTSP Uzantısı:
    • SDP ayrıştırmasında boş oturum bilgisi değerlerini (i-etiketleri) atlayın (#1087).
  • Kod Çözücü Uzantıları (FFmpeg, VP9, AV1, MIDI vb.):
    • MIDI uzantısı, ek bir Maven deposunun yapılandırılmasını gerektirdiğinden varsayılan olarak yerel bağımlılık şeklinde devre dışı bırakılır. Yerel bağımlılıktan bu modüle ihtiyacı olan kullanıcılar modülü yeniden etkinleştirebilir.

Sürüm 1.3.0

6 Mart 2024

androidx.media3:media3-*:1.3.0 iptal edilir. 1.3.0 sürümü bu commit'leri içerir.

  • Ortak kitaplık:
    • android.resource://package/[type/]name ham kaynak URI'leri için destek uygulayın. Burada package, mevcut uygulamanın paketinden farklıdır. Bu özelliğin her zaman çalıştığı belgelenmiş olsa da şimdiye kadar doğru şekilde uygulanmamıştı.
    • Uygulama kodu tarafından ayarlanan veya medyadan okunan MIME türlerini tamamen küçük harfli olacak şekilde normalleştirin.
    • AdPlaybackState içinde tek bir Uri yerine tam bir MediaItem ile reklam tanımlayın.
    • minSdk değerini 19'a (Android KitKat) yükseltin. Bu değişiklik, diğer tüm AndroidX kitaplıklarıyla uyumludur ve AndroidX bağımlılıklarımızın en son sürümlerine yükseltme yapabilmemiz için gereklidir.
    • artworkUri ve artworkData özelliklerinden en az biri boş olmayan bir değer içerdiğinde MediaMetadata.Builder.populate(MediaMetadata) öğesinde hem artworkUri hem de artworkData özelliklerini doldurun (#964).
  • ExoPlayer:
    • Uygulamaların, oynatma işleminden önce belirli bir başlangıç konumunda içerik medya kaynağını önceden yüklemesine olanak tanıyan PreloadMediaSource ve PreloadMediaPeriod öğelerini ekleyin. PreloadMediaSource, Timeline almak için içerik medya kaynağını hazırlama, dönemi verilen başlangıç konumunda hazırlama ve önbelleğe alma, parçaları seçme ve dönem için medya verilerini yükleme işlemlerini yapar. Uygulamalar, PreloadMediaSource.PreloadControl öğesini uygulayarak ön yükleme ilerleme durumunu kontrol eder ve önceden yüklenmiş kaynağı oynatma için oynatıcıya ayarlar.
    • Uygulamaların ExoPlayer.setImageOutput ayarlamasına izin veren ImageRenderer.ImageOutput ekleyin.
    • DefaultRenderersFactory artık varsayılan olarak oyuncuya boş ImageOutput ve ImageDecoder.Factory.DEFAULT ile ImageRenderer sağlıyor.
    • Sessizliğe geçildiğinde Player.Listener.onPositionDiscontinuity etkinliğini yayınlayın (#765).
    • Ayıklama sırasında altyazı ayrıştırma için deneysel destek eklendi. Bu özelliği MediaSource.Factory.experimentalParseSubtitlesDuringExtraction() kullanarak etkinleştirebilirsiniz.
    • PreloadMediaSource ile uyarlanabilir medya kaynaklarını destekleyin.
    • HttpEngine API'sini kullanarak HttpEngineDataSource, HttpDataSource uygulayın.
    • Alt sınıf oluşturmayı önleme CompositeSequenceableLoader. Bu bileşen daha önce genişletilebilir hale getirilmiş ancak kitaplıkta hiçbir zaman alt sınıfa ayrılmamıştır. Özelleştirmeler, decorator pattern kullanılarak bir örneği sarmalayarak ve özel bir CompositeSequenceableLoaderFactory uygulayarak yapılabilir.
    • Aynı saatin tekrar edilmesi durumunda bu öğenin meta verilerinin temizlenmesine neden olan sorun düzeltildi (#1007).
    • BundledChunkExtractor.Factory ve DefaultHlsExtractorFactory üzerindeki experimentalSetSubtitleParserFactory yöntemlerini setSubtitleParserFactory olarak yeniden adlandırın ve null 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 simgesini özelleştirme desteği eklendi. Bu, MediaSource.Factory.setSubtitleParserFactory() ile yapılabilir.
    • Format.id alanlarından oluşturulan tüm MergingMediaSource alanlarına kaynak öneki ekleyin. Bu, hangi kaynağın Format oluşturduğunu belirlemeye yardımcı olur (#883).
    • Özel Common Media Client Data (CMCD) anahtar adlarını doğrulamak için kullanılan normal ifadeyi yalnızca kısa çizgi kontrolü yapacak şekilde değiştirerek düzeltin (#1028).
    • CMCD sorgu parametrelerinin çift kodlanmasını durdurma (#1075).
  • Dönüştürücü:
    • H.265/HEVC SEF ağır çekim videolarını düzleştirme desteği eklendi.
    • Özellikle "videoyu kaldır" düzenlemelerinde transmuksaj hızını artırır.
    • Çıkış dosyasının bir video karesiyle başlamasını sağlamak için API ekleyin. Bu, kırpma işlemlerinin çıkışını, ilk video karesini sunum zaman damgasına (#829) kadar göstermeyen oynatıcı uygulamalarıyla daha uyumlu hale getirebilir.
    • 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ı varsa resim parçasının seçilip seçilmeyeceğini belirlemek için TrackSelectionParameters.isPrioritizeImageOverVideoEnabled ekleyin. Varsayılan değer false'dır. Bu değer, 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 çıkarıcıya ek AV1C ayrıştırma işlemi eklendi (#692).
    • MP3: Info üstbilgisine sahip dosyalar için sabit bit hızı (CBR) arama kullanın (Xing üstbilgisinin CBR eşdeğeri). Daha önce Info üstbilgisindeki seek table'ı kullanıyorduk ancak bu, seek table'ı yok sayıp dosyanın CBR olduğunu varsaydığımızda elde ettiğimizden daha az hassas bir arama sağlıyor.
    • 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 rol işaretleriyle eşleyerek kullanıcıların daha bilinçli ses parçası seçimleri yapmasına olanak tanıyın (#973).
  • Ses:
    • Sessizliği atlama algoritması, sesin yumuşak bir şekilde yükselmesiyle iyileştirildi. Minimum sessizlik korundu ve daha doğal sessizlik süreleri eklendi (#7423).
    • Atlanan sessizliği daha kesin bir şekilde bildirme (#1035).
  • Video:
    • VideoFrameProcessor.Factory bağımsız değişkeni alan MediaCodecVideoRenderer oluşturucusunu değiştirin ve VideoSinkProvider bağımsız değişkeni alan bir oluşturucuyla değiştirin. Özel VideoFrameProcessor.Factory yerleştirmek isteyen uygulamalar, özel VideoFrameProcessor.Factory kullanan bir CompositingVideoSinkProvider oluşturabilir ve video alıcı sağlayıcıyı MediaCodecVideoRenderer'ye 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üzeltin DefaultExtractorsFactory.setTextTrackTranscodingEnabled (#836).
    • CEA-708: rowLock değerini yoksayın. CEA-708-E S-2023 spesifikasyonu, akışta bulunan değerlerden bağımsız olarak hem rowLock hem de columnLock değerlerinin doğru kabul edilmesi gerektiğini belirtir (columnLock desteği uygulanmadığından her zaman yanlış olduğu varsayılır).
  • Resim:
    • DASH küçük resimleri için destek eklendi. Izgara resimleri kırpılır ve sunum zamanlarına yakın ImageOutput tek tek küçük resimler sağlanır.
  • DRM:
    • DRM içeriğindeki "net başlangıç" şifrelenmemiş örnekleri, sonraki şifrelenmiş örneklerin anahtarları hazır olmasa bile varsayılan olarak hemen oynatın. Oynatma konumu şifrelenmiş örneklere ulaştığında anahtarlar hâlâ hazır değilse bu durum, oynatma sırasında duraklamalara neden olabilir (ancak daha önce oynatma bu noktada hiç baş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ında çift tıklama algılamayı devre dışı bırakma (#962).
    • Yalnızca boş olmayan ekstraların bulunduğu MediaItem.RequestMetadata öğesinin medya denetleyicileri ve oturumlar arasında iletilmemesi sorunu düzeltildi.
    • MediaLibrarySession.Builder öğesine MediaLibraryService yerine yalnızca Context alan bir oluşturucu ekleyin.
  • HLS Uzantısı:
    • HlsMediaPeriod öğesini paket içi görünürlük olarak ayarlayın. Bu tür, HLS paketi dışından doğrudan kullanılmamalıdır.
    • Çözüm, bir segmentin başlangıcına daha verimli bir şekilde ulaşmayı amaçlar (#1031).
  • Kod Çözücü Uzantıları (FFmpeg, VP9, AV1, MIDI vb.):
    • MIDI kod çözücü: SysEx etkinlik mesajlarını yoksay (#710).
  • Test yardımcı programları:
    • TestPlayerRunHelper.playUntilPosition uygulamasında oynatmayı duraklatmayın. Test, oynatmayı oynatma durumunda tutar ancak test, onaylamalar ve başka işlemler ekleyene kadar ilerlemeyi askıya alır.
  • Demo uygulaması:
    • PreloadMediaSource kullanımını kısa video içerik kullanım alanıyla birlikte tanıtmak için kısa video 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ığı dışındaki manuel arama işlemlerinde, ofsetin tekrar min/maxOffset olarak ayarlanmaya devam etmesi sorunu düzeltildi.
    • OPUS ve VORBIS kanal düzenlerinin 3, 5, 6, 7 ve 8 kanallar için yanlış olmasına neden olan sorun düzeltildi (#8396).
    • Canlı yayında sıfıra gitme işleminden sonra parça seçimlerinin, yayının varsayılan konumdan başlamasına neden olması sorunu düzeltildi (#9347).
    • CmcdData.Factory öğesinin yeni örneklerinin, parça kaynaklarından bufferedDurationUs için negatif değerler alarak IllegalArgumentException (#888) hatasına neden olduğu sorun düzeltildi.
  • Dönüştürücü:
    • Yüksek bir çalışma hızı ayarlandığı için kodlayıcının yapılandırma sırasında hata vermesine neden olan sorun giderildi.
  • Ayıklayıcılar:
    • JPEG hareketli fotoğraflarındaki ikincil (oynatılamayan) HEVC parçalarını, daha yüksek çözünürlükleri nedeniyle oynatma için otomatik olarak seçilmelerini önlemek amacıyla ROLE_FLAG_ALTERNATE olarak işaretleyin.
    • TS H264 akışlarında yanlış animasyon karesi algılamayı düzeltme (#864).
    • 47.721 saniyeden uzun TS akışlarının süre tahminini düzeltin (#855).
  • Ses:
    • SilenceSkippingAudioProcessor için EOS'un birden çok kez çağrıldığında işlenmesiyle ilgili sorun düzeltildi (#712).
  • Video:
    • Galaxy Tab S7 FE, 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 sorununa yönelik geçici çözüm eklendi (#693).
  • Meta veri:
    • MediaMetadata öğesinin yalnızca büyük harfli anahtarlara sahip Vorbis yorumlarıyla doldurulmasına neden olan hata düzeltildi (#876).
    • Çok büyük ID3 çerçeveleri ayrıştırılırken OutOfMemoryError yakalanır. Bu sayede, oynatma tamamen başarısız olmak yerine etiket bilgisi olmadan devam edebilir.
  • DRM:
    • Sahte ClearKey https://default.url lisansı URL'si için geçici çözümü API 33 ve sonraki sürümlere genişletme (geçici çözüm daha önce yalnızca API 33'te geçerliydi) (#837).
    • Oynatıcıya bağlı bir yüzey olmadan şifrelenmiş içerikten açık içeriğe geçiş yaparken ERROR_DRM_SESSION_NOT_OPENED düzeltildi. Hata, şifrelenmemiş içeriği oynatmak için güvenli kod çözücünün yanlış kullanılmasından kaynaklanıyordu.
  • Oturum:
    • Özel anahtarları ve değerleri MediaMetadataCompat ile MediaMetadata.extras ve MediaMetadata.extras ile MediaMetadataCompat arasına yerleştirin (#756, #802).
    • Eski denetleyiciler için notifyChildrenChanged yayın sorununu 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 denetleyicisi bağlantı oluşturmayı tamamlamadığında IllegalStateException 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 hızlı ileri sarma düğmesindeki sayıların yanlış hizalanmasıyla ilgili sorun düzeltildi (#547).
  • DASH uzantısı:
    • DASH manifestinde Dolby için "f800"ü 5 kanal sayısı olarak ayrıştırın (#688).
  • Kod Çözücü Uzantıları (FFmpeg, VP9, AV1, MIDI vb.):
    • MIDI: İleri sarma sırasında Program Değiştirme etkinliklerinin atlandığı sorun düzeltildi (#704).
    • FFmpeg 6.0'a geçiş yapıldı ve desteklenen NDK, r26b (#707, #867) olarak güncellendi.
  • Cast Uzantısı:
    • Yayın cihazında medya yükleme işlemi başarısız olduğunda uygulamanın kilitlenmemesi için Timeline oluşturma işlemi temizlendi (#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öntemlerdeki message parametresi artık Log.{d,i,w,e}() yöntemlerine iletilen Throwable hakkında herhangi bir bilgi içermiyor. Bu nedenle, istenirse uygulamaların bu bilgiyi manuel olarak eklemesi gerekir (muhtemelen 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 uyumluluğu sorunu düzeltildi. Örnek olarak TrackSelectorResult ve SimpleDecoder yöntem parametreleri verilebilir (#6792).
    • Oynatma geçici olarak bastırılırken (ör. geçici ses odağı kaybı nedeniyle) "oynat" düğmesini göstermek için Util.shouldShowPlayButton bölümünde varsayılan kullanıcı arayüzü ve bildirim davranışını değiştirin. Eski davranış, PlayerView.setShowPlayButtonIfPlaybackIsSuppressed(false) veya MediaSession.Builder.setShowPlayButtonIfPlaybackIsSuppressed(false) kullanılarak sürdürülebilir (#11213).
    • https://issuetracker.google.com/251172715 adresindeki sorunu düzeltmek için androidx.annotation:annotation-experimental sürümünden 1.3.1 sürümüne yükseltin.
    • ExoPlayer.setAudioAttributes öğesini Player arayüzüne taşıyın.
  • ExoPlayer:
    • Yalnızca kod çözme örneklerinin doğru şekilde tanımlanmamasından kaynaklanan AC4 akışlarındaki arama sorunları düzeltildi (#11000).
    • Bu özellik ExoPlayer.Builder.setSuppressPlaybackOnUnsuitableOutput üzerinden etkinleştirildiğinde, uygun olmayan ses çıkışı cihazlarında (ör. Wear OS cihazlardaki yerleşik hoparlör) oynatmanın engellenmesi eklendi. Oynatma sırasında uygun ses çıkışı yoksa veya tüm uygun çıkışlar bağlantısı kesilirse oynatma engelleme nedeni Player.PLAYBACK_SUPPRESSION_REASON_UNSUITABLE_AUDIO_OUTPUT olarak güncellenir. Uygun bir çıkış bağlandığında bastırma nedeni kaldırılır.
    • MediaSource.canUpdateMediaItem ve MediaSource.updateMediaItem öğelerini ekleyerek MediaItem güncellemelerini oluşturulduktan sonra Player.replaceMediaItem(s) üzerinden kabul edin.
    • Player.replaceMediaItem(s) üzerinden kütüphane tarafından sağlanan tüm MediaSource sınıfları için MediaItem güncellemelerine izin verin (#33, #9978).
    • MimeTypes.TEXT_EXOPLAYER_CUES öğesini MimeTypes.APPLICATION_MEDIA3_CUES olarak yeniden adlandırın.
    • PngExtractor öğesini ekleyin. Bu öğe, örnek olarak TrackOutput içine tam bir PNG dosyası gönderir ve okur.
    • SequenceableLoader arayüzündeki SequenceableLoader.continueLoading(long) yöntemi SequenceableLoader.continueLoading(LoadingInfo loadingInfo) olarak geliştirildi. LoadingInfo, mevcut playbackPositionUs'ye ek olarak playbackSpeed ve lastRebufferRealtimeMs dahil olmak üzere ek parametreler içeriyor.
    • ChunkSource arayüzündeki ChunkSource.getNextChunk(long, long, List, ChunkHolder) yönteminin ChunkSource.getNextChunk(LoadingInfo, long, List, ChunkHolder) olarak iyileştirilmesi.
    • Ortak Medya İstemcisi 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 öğesine parlaklık ve renk bit derinliği eklendi (#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 (#553) kullanarak Common Media Client Data (CMCD) verilerini iletme işlevi eklendi.
    • ConcurrentModificationException ile ilgili sorunu ExperimentalBandwidthMeter içinde düzeltin (#612).
    • MediaPeriodId parametresini CompositeMediaSource.getMediaTimeForChildMediaTime öğesine ekleyin.
    • ClippingMediaSource (ve dönem/pencere zamanı farkları olan diğer kaynaklar) ConcatenatingMediaSource2'da desteklenir (#11226).
    • BaseRenderer.onStreamChanged() değerini, MediaPeriodId bağımsız değişkenini de alacak şekilde değiştirin.
  • Dönüştürücü:
    • Görüntü girişleri için EXIF döndürme verilerini ayrıştırın.
    • TransformationRequest.HdrMode 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 öğesini basitleştirin.
    • SampleConsumer.queueInputBitmap öğesinin frameRate ve durationUs parametreleri TimestampIterator olarak değiştirildi.
  • Parça Seçimi:
    • Kesintisiz olmayan uyarlamaya açıkça izin vermek veya izin vermemek için DefaultTrackSelector.Parameters.allowAudioNonSeamlessAdaptiveness ekleyin. Varsayılan olarak true davranışı geçerli olmaya devam eder.
  • Ayıklayıcılar:
    • MPEG-TS: Bir akışın son erişim birimini örnek sırasına ileterek son karenin oluşturulduğundan emin olun (#7909).
    • rotationDegrees belirlenirken 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 uygulama ayrıntılarına çalışma zamanı erişimi istiyorsanız önce Extractor.getUnderlyingInstance uygulamasını çağırmanız gerekir.
    • BmpExtractor ekleyin.
    • WebpExtractor ekleyin.
    • HeifExtractor ekleyin.
    • Mp4Extractor'ye QuickTime classic desteği ekleyin.
  • Ses:
    • MP4 ve Matroska'da 24/32 bit büyük endian PCM desteği ekleyin ve MP4'te lpcm için PCM kodlamasını ayrıştırın.
    • MP4'te Vorbis sesinin çıkarılması için destek eklendi.
    • AudioSink.getFormatOffloadSupport(Format) ekleyin. Bu, DefaultAudioOffloadSupportProvider aracılığıyla biçim için alıcının sağlayabileceği boşaltma desteğinin düzeyini alır. isFormatSupported, isGaplessSupported ve isSpeedChangeSupported içeren yeni AudioOffloadSupport değerini döndürür.
    • Ses alıcısındaki boşaltma yapılandırmasının yapılandırıldığı AudioSink.setOffloadMode() öğesini ekleyin. Varsayılan değer AudioSink.OFFLOAD_MODE_DISABLED'dır.
    • Boşaltma, TrackSelectionParameters uygulamasında setAudioOffloadPreference üzerinden etkinleştirilebilir. Tercih etkinleştirme yönündeyse, cihaz biçim için boşaltmayı destekliyorsa 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ını ve yalnızca bu parçanın biçimi boşaltma işleminde destekleniyorsa seçer. Boşaltma işleminde ses parçası desteklenmiyorsa 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şluksuz Opus meta verileri için yük aktarma oynatma sırasında destek ekleyin.
    • İlk yazma işleminde başarısız olunursa boşaltma devre dışı bırakılarak oluşturucu kurtarmaya izin verilir (#627).
    • Yalnızca sesli aktarılmış oynatma için aktarım planlamayı varsayılan olarak etkinleştirin.
    • ExoPlayer.experimentalSetOffloadSchedulingEnabled ve AudioOffloadListener.onExperimentalOffloadSchedulingEnabledChanged öğelerini silin.
    • 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ını ekleyin.
    • DTS Express'teki ses arabelleği taşması sorununu düzeltme (#650).
    • E-AC3-JOC için özellik kontrolünün IllegalArgumentException (#677) hatası vermesine neden olan hata düzeltildi.
  • Video:
    • MediaCodecVideoRenderer eklentisinin özel bir VideoFrameProcessor.Factory kullanmasına izin verin.
    • Ses akışı negatif zaman damgalarıyla başladığında ilk karenin oluşturulamaması hatası düzeltildi (#291).
  • Metin:
    • ExoplayerCuesDecoder öğesini kaldır sampleMimeType = application/x-media3-cues simgesi içeren metin parçaları artık SubtitleDecoder örneğine gerek kalmadan doğrudan TextRenderer tarafından işleniyor.
  • Meta veri:
    • Uygulama yine de null döndürmesi gerektiğinden, "yalnızca kod çözme" örnekleri için artık MetadataDecoder.decode çağrısı yapılmayacak.
  • Etki:
    • VideoFrameProcessor.queueInputBitmap(Bitmap, Iterator<Long>) Zaman damgasına göre bitmap girişini sıraya ekleyin.
    • VideoFrameProcessor.registerInputStream() değerini engellemeyen bir değerle değiştirin. Uygulamalar, VideoFrameProcessor.Listener#onInputStreamRegistered() özelliğini 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() işlevini çağırmadan önce StreamManager'ı serbest bırakın.
    • IMA SDK sürümünü 3.31.0'a yükseltin.
  • Oturum:
    • DefaultMediaNotificationProvider'deki bildirimler ön plan hizmeti davranışını FOREGROUND_SERVICE_IMMEDIATE olarak ayarlayın (#167).
    • Samsung cihazlarda kullanımdan kaldırılan API ile ilgili sorunları önlemek için yalnızca android.media.session.MediaSession.setMediaButtonBroadcastReceiver() API 31'in üzerindeki API'leri 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.
    • Platform oturumuna yönlendirmek ve Media3'e geri yönlendirmek yerine, MediaSessionService.onStartCommand() tarafından Media3 içinde alınan medya düğmesi etkinliklerini 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() öğesinin ilerlememesine neden olan hata düzeltildi.
    • Kolaylık için MediaLibrarySession.getSubscribedControllers(mediaId) ekleyin.
    • Denetleyicinin abone olduğu üst kimliğin kullanılabilirliğini onaylamak için MediaLibrarySession.Callback.onSubscribe() öğesini geçersiz kılın. İşlem başarılı olursa abonelik kabul edilir ve tarayıcıyı bilgilendirmek için hemen notifyChildrenChanged() çağrılır (#561).
    • Otomotiv OS için oturum demosu modülü ekleyin ve Android Auto için oturum demosunu etkinleştirin.
    • Medya bildirimi denetleyicisi için COMMAND_GET_TIMELINE kullanılamadığında çerçeve oturumunun sırasını ayarlamayın. Android Auto, çerçeve oturumundan okuma yapan istemci denetleyicisi olduğunda Android Auto'nun kullanıcı arayüzündeki queue düğmesi gösterilmez (#339).
    • SimpleBitmapLoader yerine varsayılan olarak DataSourceBitmapLoader kullanın (#271, #327).
    • Uygulamaların varsayılan medya düğmesi etkinlik işleme özelliğini geçersiz kılmasına olanak tanıyan MediaSession.Callback.onMediaButtonEvent(Intent) eklendi.
  • Kullanıcı arayüzü:
    • Kullanıcının uygun bir ses çıkışı (ör. Bluetooth kulaklık) bağlamasına izin vermek için bir sistem iletişim kutusu başlatarak Player.Listener nedeniyle oynatma bastırmayı işleyen Wear OS cihazları için bir Player.PLAYBACK_SUPPRESSION_REASON_UNSUITABLE_AUDIO_OUTPUT uygulaması ekleyin. Dinleyici, yapılandırılabilir bir zaman aşımı içinde (varsayılan olarak 5 dakika) uygun bir cihaz bağlanırsa oynatmayı otomatik olarak devam ettirir.
  • İndirilenler:
    • Android 14 ile uyumluluk için DownloadService için "veri senkronizasyonu" ön plan hizmeti türünü bildirin. Bu hizmeti kullanırken uygulamanın manifest dosyasına dataSync öğesini foregroundServiceType olarak eklemesi ve FOREGROUND_SERVICE_DATA_SYNC iznini (#11239) eklemesi de gerekir.
  • HLS Uzantısı:
    • HLS canlı oynatma listesini, son yükleme tamamlanma süresinden ziyade son yükleme başlangıç süresinden hesaplanan bir aralıkla yenileyin (#663).
  • DASH uzantısı:
    • Segment şablonu URL'sinde aynı DASH tanımlayıcının birden fazla kez kullanılmasına izin verilir.
    • Ayıklama sırasında altyazı ayrıştırma için deneysel destek eklendi. Bu sürüm, altyazı segmentleri arasında geçiş yaparken titremeyi giderme de dahil olmak üzere, çakışan altyazıları birleştirme konusunda daha iyi destek sunar. Bu özelliği DashMediaSource.Factory.experimentalParseSubtitlesDuringExtraction()'yı kullanarak etkinleştirebilirsiniz (#288).
  • RTSP Uzantısı:
    • TCP'ye geri dönüldüğünde IndexOutOfBoundsException hatasına veya bazı durumlarda oynatmanın askıya alınmasına neden olabilecek yarışma durumu düzeltildi.
    • RtspMediaPeriod (#577) yükleme durumu döndürülürken RTSP kurulumundaki durumu kontrol edin.
    • Options yanıtı genel üst bilgisinde özel Rtsp istek yöntemlerini yoksayma (#613).
    • RTSP Kurulum Yanıtı zaman aşımı değerini, keep-alive RTSP Options isteklerinin gönderilme zaman aralığında kullanın (#662).
  • Kod Çözücü Uzantıları (FFmpeg, VP9, AV1, MIDI vb.):
    • Ses sentezlemek için Jsyn kitaplığını kullanarak standart MIDI dosyalarının oynatılmasını destekleyen MIDI kod çözücü modülünü yayınlayın.
    • Gösterilmesi gerekmeyen çıkış arabelleklerini doğrudan işaretlemek için DecoderOutputBuffer.shouldBeSkipped ekleyin. Bu yöntem, desteği sonlandırılacak olan C.BUFFER_FLAG_DECODE_ONLY yöntemine 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'a tercih edilmelidir.
    • MIDI kod çözücü yapıtının Maven deposunda yayınlanmasıyla ilgili hata düzeltildi. Yapılandırma 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'ya neden olabildiği hata düzeltildi (#617).
  • Test yardımcı programları:
    • TestExoPlayerBuilder ve FakeClock'yi Espresso kullanıcı arayüzü testleri ve Compose kullanıcı arayüzü testleriyle uyumlu hale getirin. Bu düzeltme, Espresso veya Compose görünümü etkileşimleri sırasında oynatmanın nondeterministik olarak ilerlemesine neden olan hatayı düzeltir.
  • Desteği sonlandırılan sembolleri kaldırın:
    • TransformationRequest.Builder.setEnableRequestSdrToneMapping(boolean) ve TransformationRequest.Builder.experimental_setEnableHdrEditing(boolean) öğelerini kaldırın. Composition.Builder.setHdrMode(int) özelliğini kullanın ve Composition değerini Transformer.start(Composition, String) öğesine iletin.
    • Desteği sonlandırılan DownloadNotificationHelper.buildProgressNotification yöntemini kaldırın. Bunun yerine notMetRequirements parametresini 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ığını tüm modüllerden kaldırın (#499).
  • ExoPlayer:
    • Oynatma listesi temizlendikten sonra PlaybackStatsListener bölümünde sahte PlaybackStats oluşturulması sorunu düzeltildi.
    • Ortak Medya İstemcisi 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() simgesinin hiçbir zaman STATE_ENDED simgesine geçmemesine neden olan hata düzeltildi (#538).
  • Ses Yükünü Devretme:
    • RFC 7845 uyarınca, Ogg kimliği üstbilgisi ve yorum üstbilgisi sayfalarını, Opus'un yükü kaldırılmış oynatılması için bit akışına ekleyin.
  • Video:
    • H.265/HEVC: SPS kısa ve uzun vadeli referans resim bilgilerinin ayrıştırılmasıyla ilgili sorun düzeltildi.
  • Metin:
    • CEA-608: İpucu kesme mantığını yalnızca görünür metni dikkate alacak şekilde değiştirin. Daha önce, ipucu uzunluğu 32 karakterle sınırlandırılırken girinti ve sekme uzaklığı dahil ediliyordu (bu, teknik olarak spesifikasyona göre doğruydu) (#11019).
  • IMA uzantısı:
    • IMA SDK sürümünü 3.30.3'e yükseltin.
  • Oturum:
    • Denetleyicinin durumuna özel düzen ekleyin ve 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ılabilmesini sağlamak için MediaSession.Callback.onConnect içinde AcceptedResultBuilder kullanarak bunu yapabilir.
    • MediaLibraryServiceLegacyStub öğesinin, bunu desteklemeyen bir Result öğesine hata gönderdiği ve UnsupportedOperationException (#78) oluşturduğu durumlar düzeltildi.
    • PlayerWrapper'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'ı belirleyerek VolumeProviderCompat oluşturma şeklini düzeltin (#554).

Sürüm 1.1.0

5 Temmuz 2023

  • Ortak kitaplık:
    • Uygun olmayan ses rotası için bastırma nedeni ekleyin ve hazır olduğunda oynatın. Çok uzun süre bastırılanlar için nedeni değiştirin. (#15).
    • Oynatıcı'ya 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 belirtmesine olanak tanıyan, aşırı yüklenmiş yöntemleri Player'a ekleyin:
      • void setDeviceVolume(int, int)
      • void increaseDeviceVolume(int)
      • void decreaseDeviceVolume(int)
      • void setDeviceMuted(boolean, int)
    • Builder için DeviceInfo ekleyin ve mevcut oluşturucuyu kullanımdan kaldırın.
    • Uzak oynatmalar için yönlendirme denetleyicisi kimliğini belirtmek üzere DeviceInfo.routingControllerId ekleyin.
    • Aynı konumdaki öğeleri eklemek ve kaldırmak için Player.replaceMediaItem(s) kısayolunu ekleyin (#8046).
  • ExoPlayer:
    • Yalnızca açıkça etkinleştirilmişse ExoPlayer'ın cihaz ses yöntemlerini kontrol etmesine izin verilir. Aşağıdakilere erişmek için ExoPlayer.Builder.setDeviceVolumeControlEnabled kullanın:
      • getDeviceVolume()
      • isDeviceMuted()
      • setDeviceVolume(int) ve setDeviceVolume(int, int)
      • increaseDeviceVolume(int) ve increaseDeviceVolume(int, int)
      • decreaseDeviceVolume(int) ve decreaseDeviceVolume(int, int)
    • FilteringMediaSource öğesine, kullanılabilir parça türlerinin MediaSource öğesinden filtrelenmesine olanak tanıyan bir işlev eklendi.
    • Uyarlanabilir akış biçimleri DASH, HLS ve SmoothStreaming'in giden isteklerine Common Media Client Data (CMCD) ekleme desteği eklendi. br, bl, cid, rtp ve sid alanları dahil edildi (#8699). API yapısı ve API yöntemleri:
      • CMCD günlüğe kaydetme özelliği varsayılan olarak devre dışıdır. Bu özelliği etkinleştirmek için MediaSource.Factory.setCmcdConfigurationFactory(CmcdConfiguration.Factory cmcdConfigurationFactory) kullanın.
      • Tüm anahtarlar varsayılan olarak etkindir. Hangi anahtarların günlüğe kaydedileceğini filtrelemek için CmcdConfiguration.RequestConfig.isKeyAllowed(String key) geçersiz kılın.
      • Özel anahtar günlük kaydını etkinleştirmek için CmcdConfiguration.RequestConfig.getCustomData() geçersiz kılın.
    • Ana demoya ait manifest dosyasına ek işlem ekleyerek özel bir *.exolist.json dosyasıyla demo uygulamasını başlatmayı kolaylaştırın (#439).
    • Video oynatma sırasında Effect kullanmak için ExoPlayer.setVideoEffects() ekleyin.
    • sourceId öğesini int yerine long olarak depolamak için SampleQueue uygulamasını güncelleyin. Bu işlem, herkese açık yöntemlerin SampleQueue.sourceId ve SampleQueue.peekSourceId imzalarını değiştirir.
    • LoadControl yöntemlerine shouldStartPlayback ve onTracksSelected parametreleri eklenerek bu yöntemlerin ilgili MediaPeriod ile ilişkilendirilmesine olanak tanındı.
    • Haritada anahtar olarak kullanılan UID'leri içeren dönemleri içeren 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) öğelerinin desteğini sonlandırın. mediaTimeOffsetUs içermeyen yöntem varyantı bunun yerine çağrılabilir. Desteği sonlandırılan varyantlar için bile, gönderici 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üzeltildi.
  • Dönüştürücü:
    • Transformer.Builder.setMediaSourceFactory(MediaSource.Factory) öğesini kaldır Bunun yerine ExoPlayerAssetLoader.Factory(MediaSource.Factory) ve Transformer.Builder.setAssetLoaderFactory(AssetLoader.Factory) kullanın.
    • Transformer.startTransformation(MediaItem, ParcelFileDescriptor) öğesini kaldır
    • Video akışının sonu, giriş karesi işlenmeyi beklerken işaretlenirse dönüşümün takılmasına (çoklayıcı zaman aşımına neden olur) yol açan hata düzeltildi.
    • Desteği genişletmek için findDecoder/EncoderForFormat yardımcı programlarını kullanmak yerine MediaCodecList üzerinden codec'leri sorgulayın.
    • Bazı cihazlarda çalışmadığı için DefaultEncoderFactory'da B çerçevesi yapılandırmasını kaldırın.
  • Parça seçimi:
    • Ekleme DefaultTrackSelector.Parameters.allowInvalidateSelectionsForRendererCapabilitiesChange varsayılan olarak devre dışıdır. Etkinleştirildiğinde, DefaultTrackSelector oluşturma motoru özellikleri değiştiğinde yeni bir parça seçimi tetiklenir.
  • Ayıklayıcılar:
    • Ogg: Uzun süreli dosyalarda arama yaparken oluşan hata düzeltildi (#391).
    • FMP4: TimestampAdjuster'nın emsg atomundan meta veri örnek zamanıyla yanlış bir zaman damgası uzaklığı başlatması sorununu düzeltin (#356).
  • Ses:
    • Tünel oluşturma etkinleştirildiğinde ve AudioProcessors etkin olduğunda bazı oynatma işlemlerinin başarısız olmasına neden olan hata düzeltildi. Örneğin, boşluksuz kırpma için (#10847).
    • Doğrudan oynatmalarda (yük boşaltma) Opus karelerini Ogg paketleri içinde kapsülleyin.
    • Uyku sırasında mevcut konumu, boşaltma planlamasıyla tahmin edin.
    • Oyuncunun yaşam döngüsünün sonunda kaynakları serbest bırakmak için Renderer.release() ve AudioSink.release() ekleyin.
    • DefaultAudioSink'daki ses özellikleriyle ilgili değişiklikleri dinleyin. DefaultAudioSink oluşturucusuna, DefaultAudioSink'nin AudioCapabilitiesReceiver için dinleyici olarak kaydedileceği ve özellik değişikliği hakkında bilgilendirildiğinde audioCapabilities özelliğini güncelleyeceği zorunlu bir parametre context ekleyin.
    • onAudioCapabilitiesChanged arayüzündeki yeni bir etkinlik AudioSink.Listener ve onRendererCapabilitiesChanged etkinliklerini tetikleyen yeni bir arayüz RendererCapabilities.Listener aracılığıyla ses özelliklerindeki değişiklikleri yayma.
    • Ses kanallarına ölçeklendirme/karıştırma uygulamak için ChannelMixingAudioProcessor ekleyin.
    • Ses özellikleri değiştiğinde atlama modu mümkün olduğunda ses kod çözücüyü silmek için DecoderDiscardReasons öğesine yeni bir 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, genişliği ve yüksekliği 0 olan bir VideoSize raporlasın. Player.Listener.onVideoSizeChanged, Player.getVideoSize() değiştiğinde buna göre adlandırılır. Bu değişiklikle birlikte, MediaCodecVideoRenderer ile ExoPlayer'ın video boyutu, Player.getCurrentTracks video desteklemediğinde veya desteklenen video parçasının boyutu henüz belirlenmediğinde 0 genişliğe ve yüksekliğe sahip olur.
  • DRM:
    • DRM paketi dışından çağrılması beklenmeyen DefaultDrmSession üzerindeki yalnızca dahili yöntemlerin 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ığı eklendi.
  • IMA uzantısı:
    • DAI için çok dönemli canlı DASH yayınlarını etkinleştirin. Mevcut uygulamanın canlı yayınlarda arama özelliğini henüz desteklemediğini lütfen unutmayın (#10912).
    • Ardışık zaman çizelgelerindeki hesaplanmış içerik konumu biraz farklılık gösterdiğinden 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 yardımcı yöntem MediaSession.getControllerForCurrentRequest ekleyin.
    • Uygulamaların, örneğin Bluetooth kulaklık tarafından gönderilen medya düğmesi etkinlikleriyle oynatmaya devam etme özelliğini uygulamasına olanak tanımak için androidx.media3.session.MediaButtonReceiver ekleyin (#167).
    • İstenen MediaItems öğesinin LocalConfiguration (ör. URI) varsa MediaSession.Callback.onAddMediaItems öğesine iletilmesine izin vermek için Player öğesine varsayılan uygulama ekleyin (#282).
    • Android 12 ve önceki sürümlerde, kompakt medya bildirimi görünümüne varsayılan olarak "önceki öğeye git" ve "sonraki öğeye git" komut düğmeleri eklendi (#410).
    • İstenen MediaItems öğesinin LocalConfiguration (ör. URI) varsa MediaSession.Callback.onAddMediaItems öğesine iletilmesine izin vermek için Player öğesine varsayılan uygulama ekleyin (#282).
    • Android 12 ve önceki sürümlerde, kompakt medya bildirimi görünümüne varsayılan olarak "önceki öğeye git" ve "sonraki öğeye git" komut düğmeleri eklendi (#410).
  • Kullanıcı arayüzü:
    • Oynat/duraklat düğmesi içeren özel kullanıcı arayüzü öğeleri yazmak için Util yöntemleri shouldShowPlayButton ve handlePlayPauseButtonAction'yi ekleyin.
  • RTSP Uzantısı:
    • MPEG4-LATM için, DescribeResponse SDP mesajında yoksa varsayılan profile-level-id değerini kullanın (#302).
    • DESCRIBE yanıt başlığında varsa RTSP oturumundan göreli yol çözümü için temel URI'yi kullanın (#11160).
  • DASH uzantısı:
    • Çok dönemli DASH yayınları için MediaLoadData.startTimeMs ve MediaLoadData.endTimeMs öğelerinden medya zamanı ofsetini kaldırın.
    • Çok dönemli bir canlı Dash medya kaynağının yeniden hazırlanmasının IndexOutOfBoundsException (#10838) hatasına neden olduğu sorun düzeltildi.
  • 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ı süresi dolmadan tamamlanmazsa oynatmanın sonsuza kadar duraklamasını önlemek için PlaybackException istisnası oluşturulur. 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 duyarsızlığını kontrol edin.
  • Desteği sonlandırılan sembolleri kaldırın:
    • DefaultAudioSink oluşturucularını kaldırın, bunun yerine DefaultAudioSink.Builder kullanın.
    • HlsMasterPlaylist öğesini kaldırın, bunun yerine HlsMultivariantPlaylist 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, desteği sonlandırılmamış bir oluşturucu kullanın.
    • DefaultBandwidthMeter oluşturucusunu kaldırın, bunun yerine DefaultBandwidthMeter.Builder kullanın.
    • DefaultDrmSessionManager oluşturucularını kaldırın, bunun yerine DefaultDrmSessionManager.Builder kullanın.
    • Kullanımdan kaldırılan iki HttpDataSource.InvalidResponseCodeException oluşturucuyu kaldırın, hata günlüğünü iyileştirmek için ek alanları(cause, responseBody) kabul eden, kullanılmayan bir oluşturucu kullanın.
    • DownloadHelper.forProgressive, DownloadHelper.forHls, DownloadHelper.forDash ve DownloadHelper.forSmoothStreaming özelliklerini kaldırın, bunun yerine DownloadHelper.forMediaItem özelliğini kullanın.
    • Desteği sonlandırılan DownloadService oluşturucuyu kaldırın, 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 String 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şturucuyu kaldırın. 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ı oluşturmak için kullanılan, desteği sonlandırılan createVideoSampleFormat, createAudioSampleFormat, createContainerFormat ve createSampleFormat yöntemlerini kaldırın. Bunun yerine Format örnekleri oluşturmak için Format.Builder kullanın.
    • Desteği sonlandırılmış copyWithMaxInputSize, copyWithSubsampleOffsetUs, copyWithLabel, copyWithManifestFormatInfo, copyWithGaplessInfo, copyWithFrameRate, copyWithDrmInitData, copyWithMetadata, copyWithBitrate ve copyWithVideoSize yöntemlerini kaldırın. Bunun yerine Format.buildUpon() ve belirleyici yöntemlerini kullanın.
    • Desteği sonlandırılan ExoPlayer.retry() politikasını kaldırın ve 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şturucuyu kaldırın. Bunun yerine Executor alanını alan oluşturucuyu kullanın.
    • Desteği sonlandırılan Cue oluşturucularını 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() öğesini kaldırın, bunun yerine build() öğesini kullanın.
    • Desteği sonlandırılan MediaItem.PlaybackProperties öğesini kaldırın, bunun yerine MediaItem.LocalConfiguration öğesini kullanın. Kullanımdan kaldırılan alan MediaItem.playbackProperties 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 iptal edilir. 1.0.2 sürümü şu commit'leri içerir.

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

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

  • Core kitaplığı:
    • Buffer.isLastSample() ekleyin. Bu, Buffer öğesinin C.BUFFER_FLAG_LAST_SAMPLE içerip içermediğini gösterir. C.BUFFER_FLAG_LAST_SAMPLE
    • Çerçeveler içeren son örnek, "akışın sonu" örneği okunmadan kuyruktan çıkarılırsa son karenin oluşturulmamasına neden olan sorun düzeltildi. (#11079).
  • Ayıklayıcılar:
    • RTSP ve MP4 çıkarıcılar tarafından zaten kullanılan ayrıştırma mantığını yeniden kullanarak MPEG-TS dosyalarındaki H.265 SPS'nin ayrıştırılması düzeltildi (#303).
  • Metin:
    • SSA: Bir bayt sırası işaretiyle başlayan UTF-16 dosyaları için destek eklendi (#319).
  • Oturum:
    • MediaController, işlemlerini güncelleyen eski bir MediaSessionCompat'ye bağlandığında kullanılabilir komutlarını güncellememesine neden olan sorun düzeltildi.
    • API 30'da MediaLibraryService öğesinin, Sistem Arayüzü'nden params.isRecent == true ile Callback.onGetLibraryRoot öğesine yapılan bir çağrı için null döndürmesini engelleyen hata düzeltildi (#355).
    • MediaSessionService veya MediaLibraryService bellek sızıntısı düzeltildi (#346).
    • Timeline ve konum güncellemesinin MediaSession içinde birleştirilmesinin MediaController öğesinin IllegalStateException oluşturmasına neden olabileceği hata düzeltildi.

Sürüm 1.0.1

18 Nisan 2023

androidx.media3:media3-*:1.0.1 iptal edilir. 1.0.1 sürümü şu commit'leri içerir.

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

  • Core kitaplığı:
    • Varsayılan konuma gitmek istediğinizde hedef canlı yayın geçersiz kılma işlemini sıfırlayın (#11051).
    • Medyadaki boş örnek akışların oynatmanın takılmasına neden olabildiği hata düzeltildi.
  • Oturum:
    • Eski bir MediaSessionCompat tarafından yayınlanan birden fazla aynı kuyruk öğesinin MediaController içinde istisnaya neden olduğu hata düzeltildi (#290).
    • MediaSession.broadcastCustomCommand iletme işlemi, eski MediaControllerCompat.Callback.onSessionEvent sürümüne eksik olarak eklenmişti (#293).
    • MediaSession.setPlayer işlevinin çağrılmasının, kullanılabilir komutları güncellememesine yol açan hata düzeltildi.
    • TrackSelectionOverride örnekleri bir gruptan gönderildiğinde MediaController Format.metadata ile bir gruba referans veriyorsa yoksayılması sorunu düzeltildi (#296).
    • Player.COMMAND_GET_CURRENT_MEDIA_ITEM, eski MediaSessionCompat üzerinden meta verilere erişmek için kullanılabilir olmalıdır.
    • Arka plandaki iş parçacığında MediaSession örneklerinin MediaSessionService içinde kullanıldığında kilitlenmelere neden olduğu sorun düzeltildi (#318).
    • Kitaplık tarafından, uygulamanın amaçlamadığı şekilde bir medya düğmesi alıcısının bildirilmesi sorunu düzeltildi (#314).
  • DASH:
    • Boş segment zaman çizelgelerinin işlenmesi düzeltildi (#11014).
  • RTSP:
    • UDP ile RTSP kurulumu, RTSP Error 461 UnsupportedTransport (#11069) ile başarısız olursa TCP ile yeniden deneyin.

Sürüm 1.0.0

22 Mart 2023

androidx.media3:media3-*:1.0.0 iptal edilir. 1.0.0 sürümü şu 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 iptal edilir. 1.0.0-rc02 sürümü şu commit'leri içerir.

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

  • Temel kitaplık:
    • API 33'te ağ türü algılama sorununu düzeltin ( (#10970).
    • ExoPlayer.isTunnelingEnabled aranırken NullPointerException sorununu düzeltin (#10977).
  • İndirilenler:
    • Birleştirilecek iki segmentin başlangıç zamanı arasındaki maksimum farkın SegmentDownloader ve alt sınıflarda yapılandırılabilir olması sağlanır (#248).
  • Ses:
    • Samsung cihazlarda kesintisiz MP3 oynatma özelliğinin çalışmaması sorununu düzeltme (#8594).
    • Ses devre dışı bırakıldıktan hemen sonra ayarlanan oynatma hızlarının önceki bir hız değişikliğiyle 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'li Chromecast ve Lenovo M10 FHD Plus'ta 60 fps AVC akışlarının desteklenmiyor olarak işaretlenmesine neden olan cihaz sorununa yönelik geçici çözüm eklendi (#10898).
    • Ekran yenileme hızından çok daha yüksek bir kare hızına sahip medyaları oynatırken kare yayınlama performansıyla ilgili sorunları düzeltir.
  • Oyuncular:
    • Medya öğeleri arasında geçiş yaparken oluşan geçici STATE_IDLE sorunu düzeltildi (#245).
  • RTSP:
    • Geçersiz RTSP Describe yanıt mesajlarının ayrıştırılmasında oluşturulan IllegalArgumentException'ı yakalayın (#10971).
  • Oturum:
    • Bildirimdeki oynatma/duraklatma 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şlatılmasını engelleyen hata düzeltildi.

Sürüm 1.0.0-rc01

16 Şubat 2023

androidx.media3:media3-*:1.0.0-rc01 iptal edilir. Version 1.0.0-rc01 contains these commits.

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

  • Core kitaplığı:
    • Bir kod çözücü, medyayı performanslı bir şekilde oynatamayacağını bildirse bile MediaCodecSelector'nın tercihlerini korumak için oluşturucunun kod çözücü sıralama mantığını ayarlayın. Örneğin, varsayılan seçiciyle, yalnızca işlevsel destek sunan donanım kod çözücü, biçimi tam olarak destekleyen yazılım kod çözücüye tercih edilir (#10604).
    • Yeni bir ExoPlayer örneği için önceden var olan bir oynatma iş parçacığını ayarlayan ExoPlayer.Builder.setPlaybackLooper ekleyin.
    • İndirme yöneticisi yardımcılarının temizlenmesine izin verilir (#10776).
    • Arama için kullanılan komutu da belirtmek üzere BasePlayer.seekTo parametresini ekleyin.
    • API 21 ve sonraki sürümlerde çizilebilir öğeler yüklenirken temayı kullanın (#220).
    • Birden fazla medya öğesinin tek bir pencerede birleştirilmesine 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 hata verin.
    • fMP4'te doğrudan bir senkronizasyon karesine giderken örnekleri doğru şekilde atlayın (#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ında ipucu yoksa TextRenderer öğesinin Subtitle.getEventTime öğesine geçersiz (negatif) bir dizin iletmesi düzeltildi.
    • SubRip: Bayt sırası işaretiyle başlayan UTF-16 dosyaları için destek eklendi.
  • Meta veri:
    • ID3 v2.4'ün izin verdiği şekilde, ID3 çerçevelerinden birden fazla boşlukla ayrılmış değeri ayrıştırın.
    • Meta verilerle açıklanan içerik türünü veya klasör türünü belirtmek için MediaMetadata.mediaType simgesini ekleyin.
    • MediaMetadata.isBrowsable öğesini MediaMetadata.folderType yerine ekleyin. Klasör türünün desteği bir sonraki sürümde sonlandırılacak.
  • DASH:
    • Kutu sayıları da dahil olmak üzere, resim uyarlama kümeleri için tam ayrıştırma eklendi (#3752).
  • Kullanıcı arayüzü:
    • Görünürlük değişikliklerinin kayıtlı dinleyiciye iletilmesini sağlamak için kullanımdan kaldırılan PlayerView.setControllerVisibilityListener(PlayerControlView.VisibilityListener) #229) düzeltin.
    • Sağdan sola (RTL) düzen kullanırken PlayerView simgesindeki ortadaki oynatıcı kontrollerinin sıralamasını düzeltir (#227).
  • Oturum:
    • Özel oynatıcılar için Player arayüzünün uygulanmasına yardımcı olması amacıyla 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 getMediaButtons() öğesinin bağımsız değişkeni olarak ekleyin DefaultMediaNotificationProvider ve netlik için değişmez listeler kullanın (#216).
    • onSetMediaItems geri arama işleyicisi ekleyin. Bu işleyici, MediaItem listesini, başlangıç dizinini ve konumunu oturuma göre değiştirme/ayarlama olanağı sağlar. Bu işlemler, Player'a ayarlamadan önce yapılır (#156).
    • Bluetooth olmayan medya düğmesi etkinliklerinde çift dokunma algılamasını önleme (#233).
    • Şüpheli bir eski oturum durumu olması durumunda QueueTimeline daha sağlam hale getirildi (#241).
  • Meta veri:
    • ID3 v2.4'ün izin verdiği şekilde, ID3 çerçevelerinden birden fazla boşlukla ayrılmış değeri ayrıştırın.
    • Meta verilerle açıklanan içerik türünü veya klasör türünü belirtmek için MediaMetadata.mediaType simgesini ekleyin.
    • MediaMetadata.isBrowsable öğesini MediaMetadata.folderType yerine ekleyin. Klasör türünün desteği bir sonraki sürümde sonlandırılacak.
  • Cast uzantısı:
    • Cast SDK sürümünü 21.2.0'a yükseltti.
  • IMA uzantısı:
    • İş parçacığı sorunlarını önlemek için ImaServerSideAdInsertionMediaSource üzerinde uygulama iş parçacığının oynatıcı dinleyicisini kaldırın.
    • TV cihazlarında atla düğmesine odaklanmayı istemek için focusSkipButtonWhenAvailable özelliğini ImaServerSideAdInsertionMediaSource.AdsLoader.Builder öğesine ekleyin ve varsayılan olarak true değerini ayarlayın.
    • Atla düğmesine odaklanma isteğinde bulunmak için ImaServerSideAdInsertionMediaSource.AdsLoader öğesine focusSkipButton() yöntemi ekleyin.
    • IMA SDK sürümünü 3.29.0'a yükseltin.
  • Demo uygulaması:
    • Ç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 iptal edilir. Version 1.0.0-beta03 contains these commits.

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

  • Core kitaplığı:
    • Tünel oluşturma özelliğinin şu anda seçili parçalarda etkin olup olmadığını kontrol etmek için ExoPlayer.isTunnelingEnabled simgesini ekleyin (#2518).
    • Tek bir MediaSource sarmalamayı basitleştirmek için WrappingMediaSource eklendi (#7279).
    • Yeterli bellek olmadığından oynatma takılmadan önce arka arabelleği silin.
    • Boşaltma etkinleştirildiğinde "doSomeWork" izleme bloğunu kapatın.
    • PlaybackStatsListener'da hızlı ileri sarma ile ilgili oturum izleme sorunu düzeltildi (#180).
    • Tek öğeli bir oynatma listesinde seekToNext veya seekToPrevious çağrılırken eksik onMediaItemTransition geri arama işlevini gönderin (#10667).
    • Videonun oluşturulduğu yüzeyin boyutunu döndüren Player.getSurfaceSize işlevini ekleyin.
    • Oyuncu yayınlanırken dinleyicilerin kaldırılmasının IllegalStateException (#10758) hatasına neden olabildiği hata düzeltildi.
  • Derleme:
    • Derleme hatalarını önlemek için minimum compileSdkVersion değerini zorunlu kılın (#10684).
    • Başka bir Gradle derlemesine dahil edildiğinde yayınlamayı engelleme
  • Parça seçimi:
    • Ekran Dolby Vision'ı desteklemiyorsa Dolby Vision yerine diğer parçalar tercih edilir. (#8944).
  • İndirilenler:
    • ProgressiveDownloader'da aynı PriorityTaskManager ile eşzamanlı indirme ve oynatmadan kaynaklanan olası sonsuz döngü düzeltildi (#10570).
    • İndirme bildiriminin hemen görünmesini sağlama (#183).
    • Aşırı iş parçacığı oluşturmayı önlemek için paralel indirme kaldırma işlemlerini 1 ile sınırlayın (#10458).
  • Video:
    • Ekran Dolby Vision'ı desteklemiyorsa Dolby Vision için alternatif bir kod çözücü deneyin. (#9794).
  • Ses:
    • Aynı anda birden fazla oynatıcıyı serbest bırakırken OutOfMemory hatalarını önlemek için AudioTrack örneklerini serbest bırakırken SingleThreadExecutor kullanın (#10057).
    • AudioTrack'in yük boşaltma durumu için AudioOffloadListener.onExperimentalOffloadedPlayback ekler. (#134).
    • AudioTrackBufferSizeProvider öğesini herkese açık bir arayüz haline getirin.
    • Tercih edilen ses çıkışı cihazını ayarlamak için ExoPlayer.setPreferredAudioDevice ekleyin (#135).
    • androidx.media3.exoplayer.audio.AudioProcessor öğesini 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 kanallı maskelere eşleyin (#10701).
  • Meta veri:
    • MetadataRenderer artık meta veriler kullanılabilir hale gelir gelmez oluşturulacak şekilde yapılandırılabilir. Oluşturucu meta verileri erken mi yoksa oynatıcı konumuyla senkronize mi olarak çıkışa vereceğini 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 bir hatayı geçici olarak çözün.
    • Oynatma listesinde DRM şemaları (ör. Widevine'dan ClearKey'e) arasında geçiş yaparken karşılaşılan setMediaDrmSession failed: session not opened hatası düzeltildi.
  • Metin:
    • CEA-608: Alan 2'deki 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ılmalarını TrackSelectionDialogBuilder içinde hazır ayar olarak kullanın TrackSelectionDialogBuilder (#10429).
  • Oturum:
    • Bazıları eşzamansız çözümleme gerektirse bile komutların her zaman doğru sırada yürütüldüğünden emin olun (#85).
    • DefaultMediaNotificationProvider.Builder oluşturmak için DefaultMediaNotificationProvider.Builder ekleyin.DefaultMediaNotificationProvider 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 method DefaultMediaNotificationProvider.setSmallIcon(int) öğesini ekleyin. (#104).
    • MediaController.release() tarihinden önce gönderilen komutların bırakılmadığından emin olun (#99).
    • SimpleBitmapLoader, file:// URI'lerinden bit eşlem yükleyebilir (#108).
    • MediaController'nın bir dönemdeki reklamda arama yapmasını engelleyen onaylamayı düzeltin (#122).
    • Oynatma sona erdiğinde MediaSessionService ön planda durdurulur ve son oynatılan medya öğesinin oynatılmasını yeniden başlatmak için bir bildirim gösterilir (#112).
    • Duraklatma için beklemede olan intent ile ön plan hizmeti başlatmayın (#167).
    • API 26 ve API 27'de DefaultNotificationProvider tarafından oluşturulan bildirimle ilişkili "rozet"i 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çalanmış paket işleme özelliği eklendi (#119).
    • MP4A-LATM için destek eklendi (#162).
  • IMA:
    • IMA SDK'nın reklam yüklerken takıldığı durumları ele almak için reklam bilgilerinin yüklenmesiyle ilgili zaman aşımı eklendi (#10510).
    • İçeriğin sonuna gidilirken videonun ortasında gösterilen reklamların atlanmasını önleme (#10685).
    • Sunucu tarafında eklenen reklamların bulunduğu canlı yayınlarda (ör. IMA DAI) pencere süresini doğru şekilde hesaplayın (#10764).
  • FFmpeg uzantısı:
    • FFmpeg kitaplıklarını NDK 23.1.7779620 ve sonraki sürümlerle bağlamak için yeni zorunlu işaretleri ekleyin (#9933).
  • AV1 uzantısı:
    • En yeni Android Studio sürümleriyle uyumsuzlukları önlemek için CMake sürümünü güncelleyin (#9933).
  • Cast uzantısı:
    • getDeviceInfo() uygulayarak MediaController ile oynatmayı kontrol ederken CastPlayer öğesini tanımlayabilirsiniz (#142).
  • Dönüştürücü:
    • Çıkış örneği oluşturma işleminin çok yavaş olduğunu algılamak için muxer watchdog zamanlayıcısı eklendi.
  • Desteği sonlandırılan sembolleri 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 iptal edilir. 1.0.0-beta02 sürümü şu commit'leri içerir.

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

  • Core kitaplığı:
    • ShuffleOrder yerine ExoPlayer.setShuffleOrder yazıldığında Player.Listener#onTimelineChanged'nin reason=Player.TIMELINE_CHANGE_REASON_PLAYLIST_CHANGED ile aranması (#9889) sağlanmalıdır.
    • Aşamalı medya için yalnızca arabelleğe alınmış konumdaki seçili parçaları ekleyin (#10361).
    • Tüm ExoPlayer günlük çıkışı için özel günlükçüye izin verin (#9752).
    • Bazı durumlarda işlevsel olmayan setDataSourceFactory öğesinin DefaultMediaSourceFactory içindeki uygulanması düzeltildi (#116).
  • Ayıklayıcılar:
    • H265 kısa vadeli referans resim kümelerinin ayrıştırılması düzeltildi (#10316).
    • esds kutularından bit hızlarının ayrıştırılması düzeltildi (#10381).
  • DASH:
    • Manifestlerden ClearKey lisans URL'sini ayrıştırma (#10246).
  • Kullanıcı arayüzü:
    • TalkBack'in, oynatma kontrolleri menüsünde etkin olan hızı duyurduğundan emin olun (#10298).
  • RTSP:
    • VP8 parçalanmış paket işleme özelliği eklendi (#110).
  • Leanback uzantısı:
    • LeanbackAdapter'teki playWhenReady değişikliklerini dinleyin (10420).
  • Oyuncular:
    • Oynatma listesi yöntemlerine iletilen MediaItem öğesini CastTimeline içinde Window.mediaItem olarak kullanın (#25, #8212).
    • CastPlayer (#25) ile Player.getMetadata() ve Listener.onMediaMetadataChanged() desteği.

Sürüm 1.0.0-beta01

16 Haziran 2022

androidx.media3:media3-*:1.0.0-beta01 iptal edilir. 1.0.0-beta01 sürümü aşağıdaki commit'leri içerir.

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

  • Temel kitaplık:
    • MediaMetricsManager aracılığıyla Android platformu teşhisleri için desteği etkinleştirin. ExoPlayer, oynatma etkinliklerini ve performans verilerini platforma yönlendirir. 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ştirilirse Google tarafından da toplanabilir. Uygulamalar, ExoPlayer.Builder.setUsePlatformDiagnostics(false) ile ExoPlayer için platform teşhislerine katkıda bulunmayı devre dışı bırakabilir.
    • MergingMediaSource kullanılırken parçaların çok sık sıfırlanmasına neden olan hata düzeltildi. Örneğin, altyazılar farklı yöntemle yüklenirken ve oynatma sırasında seçili altyazı değiştirilirken bu hata oluşuyordu (#10248).
    • API 29 ve 30'da 5G-NSA ağ türünün algılanması durduruldu. Bu oynatmalarda 4G ağı varsayılır.
    • null'nın MediaSource.Factory.setDrmSessionManagerProvider ve MediaSource.Factory.setLoadErrorHandlingPolicy'a aktarılmasına izin vermeyin. 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. MediaMetadata.mediaUrl artık RequestMetadata planına dahil olduğundan bu planı da kaldırın.
    • Oyuncuların tek bir öğe ayarlamasına izin vermek için Player.Command.COMMAND_SET_MEDIA_ITEM ekleyin.
  • Parça seçimi:
    • TrackSelectionOverrides sınıfını TrackSelectionParameters sınıfına düzleştirin ve TrackSelectionOverride sınıfını üst düzey bir sınıfa yükseltin.
    • TracksInfo öğesini Tracks, TracksInfo.TrackGroupInfo öğesini ise Tracks.Group olarak yeniden adlandırın. Player.getCurrentTracksInfo ve Player.Listener.onTracksInfoChanged da Player.getCurrentTracks ve Player.Listener.onTracksChanged olarak yeniden adlandırıldı. Bu, Player.Listener.onTracksChanged yöntem adının farklı parametre türleriyle "kullanımdan kaldırılmasını geri alma" işlemini içerir.
    • Kullanımdan kaldırılan DefaultTrackSelector.ParametersBuilder yerine DefaultTrackSelector.buildUponParameters ve DefaultTrackSelector.Parameters.buildUpon değerlerini DefaultTrackSelector.Parameters.Builder döndürecek şekilde değiştirin.
    • Ekleme DefaultTrackSelector.Parameters.constrainAudioChannelCountToDeviceCapabilities varsayılan olarak etkindir. Etkinleştirildiğinde DefaultTrackSelector, kanal sayısı cihazın çıkış özelliklerini aşmayan ses parçalarını tercih eder. Elde taşınabilir cihazlarda, çok kanallı biçim DefaultTrackSelector uzamsallaştırılabilir (Android 12L+) veya Dolby surround ses biçimi olmadığı sürece stereo/mono, çok kanallı ses biçimlerine tercih edilir. Ayrıca, ses uzamsallaştırmayı destekleyen cihazlarda DefaultTrackSelector, uzamsallaştırıcı özelliklerindeki değişiklikleri izler ve bu değişiklikler üzerine yeni bir parça seçimi tetikler. television kullanıcı arayüzü moduna sahip cihazlar bu kısıtlamaların dışında 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 öğesini PlaceholderSurface olarak yeniden adlandırın.
    • MediaCodecVideoRenderer.getCodecMaxInputSize'ya AV1 desteği ekleyin.
  • Ses:
    • Standart olmayan MIME türü bildiren LG AC3 ses kod çözücüsünü kullanın.
    • API < 21'de yavaş ART doğrulamayı önlemek için AudioAttributes.getAudioAttributesV21() işlevinin 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 platforma (API 29+) sorgu gönderin veya sesin doğrudan geçişi için ses kodlama kanalı sayısının varsayılan değerini kullanın. Bu durum, HLS parçasız hazırlama ile oluşur (10204).
    • Kod çözücü 12 kanallı PCM ses çıkışı veriyorsa AudioTrack öğesini kanal maskesiyle AudioFormat.CHANNEL_OUT_7POINT1POINT4 yapılandırın (#10322).
  • DRM
    • Biçim değişikliğinden hemen sonra arama yapıldığında DRM oturumunun her zaman doğru şekilde güncellendiğinden emin olun (10274).
  • Metin:
    • Player.getCurrentCues() işlevini, List<Cue> yerine CueGroup döndürecek şekilde değiştirin.
    • SSA: OutlineColour stil ayarını destekler (BorderStyle == 3 olduğunda, yani OutlineColour, ipucunun arka planını ayarlar) (#8435).
    • CEA-708: Verileri birden fazla hizmet bloğuna ayrıştırın ve şu anda seçili hizmet numarasıyla ilişkili olmayan blokları yoksayın.
    • Yalnızca Google'ın şirket içinde kullandığı bir 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ılır.
    • MP4: Bit hızlarını esds kutudan ayrıştırın.
    • Ogg: Yinelenen Opus kimliğine ve yorum başlıklarına izin verin (#10038).
  • Kullanıcı arayüzü:
    • useController=false durumunda PlayerView üzerinde ayarlanan OnClickListener'lara etkinliklerin yayınlanmasıyla ilgili sorunu düzeltin. (#9605). Ayrıca, tüm görünüm yapılandırmaları için OnLongClickListener'ya etkinlik teslimiyle ilgili sorunları düzeltin.
    • PlayerView sınırlarından ACTION_UP sınırlarına çıkılan bir dokunma etkinlikleri dizisinin yanlışlıkla tıklama olarak değerlendirilmesi sorunu düzeltildi (#9861).
    • Dokunulduğunda kontrolleri gizlemek yerine oynatmayı açıp kapatmaya neden olabilen PlayerView erişilebilirlik sorunu düzeltildi (#8627).
    • TrackSelectionView ve TrackSelectionDialogBuilder öğelerini ExoPlayer yerine Player arayüzüyle çalışacak şekilde yeniden yazın. Bu sayede görünümler diğer Player uygulamalarıyla kullanılabilir ve kullanıcı arayüzü modülünün ExoPlayer modülüne olan bağımlılığı kaldırılır. Bu, önemli bir değişikliktir.
    • PlayerView parça seçicide zorunlu metin parçalarını 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 öğesinin DashMediaSource.Factory.setCompositeSequenceableLoaderFactory'ye aktarılmasına izin verme. Gerekirse DefaultCompositeSequenceableLoaderFactory örnekleri açıkça iletilebilir.
  • HLS:
    • Oynatma listesi CODECS özelliği ses codec'ini içermiyorsa parçalı hazırlamaya geri dönülür (#10065).
    • null öğesinin HlsMediaSource.Factory.setCompositeSequenceableLoaderFactory, HlsMediaSource.Factory.setPlaylistParserFactory ve HlsMediaSource.Factory.setPlaylistTrackerFactory öğelerine aktarılmasına izin vermeyin. Gerekirse DefaultCompositeSequenceableLoaderFactory, DefaultHlsPlaylistParserFactory veya DefaultHlsPlaylistTracker.FACTORY referansının örnekleri açıkça iletilebilir.
  • Sorunsuz akış:
    • null öğesinin SsMediaSource.Factory.setCompositeSequenceableLoaderFactory'ye aktarılmasına izin verme. Gerekirse DefaultCompositeSequenceableLoaderFactory örnekleri açıkça iletilebilir.
  • RTSP:
    • H263 için RTP okuyucu ekleyin (#63).
    • MPEG4 için RTP okuyucu ekleyin (#35).
    • HEVC için RTP okuyucu ekleyin (#36).
    • AMR için RTP okuyucu ekleyin. Şu anda yalnızca tek kanallı, araya girilmemiş AMR akışları desteklenmektedir. Bileşik AMR RTP yükü desteklenmez. (#46)
    • VP8 için RTP okuyucu eklendi (#47).
    • WAV için RTP okuyucu ekleyin (#56).
    • RTSP temel yetkilendirme üstbilgisini düzeltin. (#9544).
    • ExoPlayer'ın zorunlu SDP alanlarına ihtiyacı olmadığından bu alanların kontrolü durduruldu (#10049).
    • RTSP zamanlaması ayrıştırılırken işaretli istisna oluşturuluyor (#10165).
    • VP9 için RTP okuyucu eklendi (#47).
    • OPUS için RTP okuyucu eklendi (#53).
  • Veri kaynakları:
    • DummyDataSource öğesini PlaceholderDataSource olarak yeniden adlandırın.
    • OkHttp kesme işleme için geçici çözüm.
  • Oturum:
    • İsteklerin eşzamansız olarak çözümlenmesine izin vermek için MediaSession.MediaItemFiller yerine MediaSession.Callback.onAddMediaItems kullanın.
    • setMediaItems(s), eski bir medya oturumuna bağlandığında MediaController yöntemlerini destekler.
    • 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ı, medya oynatmak için onSetMediaUri yerine MediaSession.Callback.onAddMediaItems numarasına yönlendirin.
    • Bildirimi özelleştirmek için MediaNotification.Provider ve DefaultMediaNotificationProvider öğelerini ekleyin.
    • Resim dosyalarını indirmek için BitmapLoader ve SimpleBitmapLoader'yi ekleyin.
    • Eski oturumla geriye dönük uyumluluk sağlamak için MediaSession.setCustomLayout() ekleyin.
    • Eski oturumla özellik eşliğ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 (#59) içinde NPE düzeltildi.
    • Zaman çizelgesindeki oturum konumu bilgilerini güncelleme change(#51).
    • Denetleyici serbest bırakıldıktan sonra MediaControllerImplBase içinde NPE düzeltildi (#74).
  • Reklam oynatma / IMA:
    • Medya Derecelendirme Konseyi'nin (MRC) önerileriyle uyumlu hale getirmek için reklam yoklama sıklığını her 100 ms'den her 200 ms'ye düşürün.
  • FFmpeg uzantısı:
    • Android Studio'nun Gradle senkronizasyonunun başarısız olmasına neden olan bir CMake hatasını önlemek için CMake sürümünü 3.21.0+ olarak güncelleyin (#9933).
  • Desteği sonlandırılan sembolleri 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. Bu yöntemler kullanımdan kaldırılmış olsa da ExoPlayer.getCurrentTrackGroups ve ExoPlayer.getCurrentTrackSelections kullanmaya devam edebilirsiniz.
    • DownloadHelper DEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_VIEWPORT ve DEFAULT_TRACK_SELECTOR_PARAMETERS sabitlerini kaldırın. Mümkün olduğunda 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 Context, Transformer.Builder oluşturucusuna iletilmelidir.

Sürüm 1.0.0-alpha03

14 Mart 2022

androidx.media3:media3-*:1.0.0-alpha03 iptal edilir. Version 1.0.0-alpha03 contains these commits.

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ışlarda emsg örnek meta verilerinin yanlış sırada çıkış yapılması sorunu düzeltildi (#9996).
  • Metin:
    • SingleSampleMediaSource.Factory.setTrackId ve MediaItem.SubtitleConfiguration.Builder.setId etkileşimini düzelterek SubtitleConfiguration alanına öncelik verin ve ayarlanmamışsa Factory değerine geri dönün (#10016).
  • Reklam oynatma:
    • Canlı HLS SSAI yayınlarında reklam dönemleri arasındaki ses yetersizliklerini düzeltir.

Sürüm 1.0.0-alpha02

2 Mart 2022

androidx.media3:media3-*:1.0.0-alpha02 iptal edilir. Version 1.0.0-alpha02 contains these commits.

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

  • Core Library:
    • DefaultRenderersFactory.getCodecAdapterFactory() sınıfının buildVideoRenderers() veya buildAudioRenderers() yöntemini geçersiz kılan alt sınıflarının, codec bağdaştırıcı fabrikasına erişip oluşturdukları MediaCodecRenderer örneklerine iletebilmesi için korumalı yöntem ekleyin.DefaultRenderersFactory
    • ICY üstbilgi alanları name ve genre'yi sırasıyla MediaMetadata.station ve MediaMetadata.genre'e yayınlayın. Böylece bu alanlar Player.Listener.onMediaMetadataChanged() üzerinden uygulamaya ulaşır (#9677).
    • DefaultHttpDataSource#getResponseHeaders öğesinden boş anahtarları kaldırın.
    • MediaCodec örneği oluşturma işlemi başarısız olduğunda uyku moduna geçin ve tekrar deneyin. Bu düzeltme, bazı cihazlarda bir yüzey güvenli bir codec'ten başka bir codec'e geçirilirken oluşan bir sorunu giderir (#8696).
    • Kullanıcıların MediaCodec'den metrik verileri almasına izin vermek için MediaCodecAdapter.getMetrics() ekleyin. (#9766).
    • Maven bağımlılığı çözümleme sorununu düzeltme (#8353).
    • Düşük gecikme süresi özelliklerine sahip olmayan veya hız ayarını belirleyen bir kullanıcı isteği içermeyen canlı yayınlarda otomatik hız ayarını devre dışı bırakın (#9329).
    • DecoderCounters#inputBufferCount öğesini queuedInputBufferCount olarak yeniden adlandırın.
    • SimpleExoPlayer.renderers gizli hale getirin. Oluşturuculara ExoPlayer.getRenderer üzerinden erişilebilir.
    • AnalyticsListener.EventFlags sabit değerlerinden bazıları, Player.EventFlags değerleriyle eşleşecek şekilde güncellendi.
    • Uygulamanın ihtiyacı yoksa R8 tarafından kaldırılabilmesi için AnalyticsCollector öğesini bir arayüz ve varsayılan uygulama olarak ayırın.
  • Parça seçimi:
    • Parça seçiminde tercih edilen video rolü işaretleri desteği eklendi (#9402).
    • Uyarlama için birden fazla video parçası seçerken tercih edilen MIME türlerini ve rol işaretlerini dikkate almak üzere video parçası seçim mantığını güncelleyin (#9519).
    • Video ve ses parçası seçim mantığını, yalnızca aynı düzeyde kod çözücü ve donanım desteğine sahip uyarlanabilir seçimler için biçimleri seçecek şekilde güncelleyin (#9565).
    • Birincil, donanım hızlandırmalı kod çözücüler tarafından birden fazla codec destekleniyorsa video parçası seçme mantığını daha verimli codec'leri tercih edecek şekilde güncelleyin (#4835).
    • Teknik parça seçimi kısıtlamaları (ör. tercih edilen MIME türü veya maksimum kanal sayısı) yerine ses içeriği tercihlerini (ör. "varsayılan" ses parçası veya sistem yerel ayar diline uygun bir parça) tercih edin.
    • Bir parça grubunu geçersiz kılmanın aynı türdeki diğer parça gruplarını devre dışı bırakmamasına neden olan parça seçimi sorunu düzeltildi (#9675).
    • Boş olmayan ve boş parça geçersiz kılmalarının karışımının doğru şekilde uygulanmadığı parça seçimi sorunu düzeltildi (#9649).
    • TrackGroupArray içinde yinelenen TrackGroup'leri yasaklayın. TrackGroups can always be made distinguishable by setting an id in the TrackGroup constructor. Bu düzeltme, etkin bir parça geçersiz kılma işlemiyle uygulama arka plana alındıktan sonra oynatma devam ettirilirken yaşanan kilitlenme sorununu giderir (#9718).
    • Oynatma, canlı yayının sonuna çok yakın olsa bile yeterli ağ bant genişliği olduğunda kalite artışına izin vermek için AdaptiveTrackSelection içindeki mantığı değiştirin (#9784).
  • Video:
    • Gerekirse uyumlu bir H264/H265 kod çözücü kullanmak için Dolby Vision'daki kod çözücü yedek mantığını düzeltin.
  • Ses:
    • Gerekirse uyumlu bir E-AC3 kod çözücü kullanmak için Dolby Atmos (E-AC3-JOC) ile ilgili kod çözücü yedek mantığını düzeltin.
    • AudioCapabilities API'lerini, null yerine açıkça AudioCapabilities.DEFAULT_AUDIO_CAPABILITIES iletilmesini gerektirecek şekilde değiştirin.
    • AudioTrack arabellek boyutu hesaplamasının özelleştirilmesine izin verin. Bunun için DefaultAudioSink'ye AudioTrackBufferSizeProvider ekleyin. (#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 öğesinin, bir hizmet bloğunun belirtilen boyutundan daha fazlasını okumasını önleyin.
  • DRM:
    • playbackLooper, DrmSessionManager.(pre)acquireSession hesabından kaldırılsın mı? Bir DrmSessionManager, özel bir MediaSource içindeki bir uygulama tarafından kullanıldığında playbackLooper yerine DrmSessionManager.setPlayer'ye iletilmesi gerekir.
  • Reklam oynatma / IMA:
    • IMA Dinamik Reklam Ekleme (DAI) desteği eklendi (#8213).
    • AdPlaybackState öğesine, reklam grubunun sıfırlanmasına izin verecek bir yöntem ekleyin. Böylece reklam grubu tekrar oynatılabilir (#9615).
    • Reklam oynatılırken 1,0 oynatma hızını zorunlu kılma (#9018).
    • Yüklenemeyen bir reklam grubunun anında oynatma sıfırlamasına neden olması sorunu 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ı dizelerini doğru şekilde çevirin (#9811).
  • DASH:
    • Ayrıştırılan temel ve ek özellikleri Representation öğesine ekleyin (#9579).
    • forced-subtitle parça rolünü destekleyin (#9727).
    • main parça rolünü C.SELECTION_FLAG_DEFAULT olarak yorumlamayı durdurun.
    • DVB ad alanını bildirmeyen manifest'ler için temel URL hariç tutma mantığını düzeltin (#9856).
    • Göreceli MPD.Location URL'leri desteklenir (#9939).
  • HLS:
    • Yalnızca ses içeren HLS yayınları için Format.label öğesini doğru şekilde doldurun (#9608).
    • Başlatma süresini iyileştirmek için varsayılan olarak parçasız hazırlamayı kullanın. Oluşturduğunuz sürümler, ana oynatma listesinde bildirilmeyen çoklu dosyalı altyazı parçaları içeriyorsa bu parçaları oynatma için kullanılabilir hale getirmek üzere ana oynatma listesine eklemeniz veya HlsMediaSource.Factory.setAllowChunklessPreparation(false) ile parçasız hazırlamayı devre dışı bırakmanız gerekir.
    • HLS'de anahtar kareye göre doğru arama desteği eklendi ( (#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 edin (#9800).
    • RTSP parçası zamanlaması kullanılamadığında işleme (#9775).
    • Geçersiz RTP-Info üstbilgi değerlerini yoksayma (#9619).
  • Dönüştürücü:
    • Gerekli minimum API sürümünü 21'e yükseltin.
    • TransformationException artık dönüştürme 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 kaydolmasına izin verin.
    • Codec çıkışı kısmen okunduğunda Transformer'ın takılması sorunu düzeltildi.
    • Muxer yayınlanırken Transformer.getProgress içinde olası NPE'yi düzeltir.
    • Dönüşümleri uygulamak için bir demo uygulaması ekleyin.
  • MediaSession uzantısı:
    • MediaSessionConnector, durdurulduğunda varsayılan olarak oynatma listesini temizler. Oynatma listesinin korunmasını isteyen uygulamalar, bağlayıcıda setClearMediaItemsOnStop(false) işlevini çağırabilir.
  • Cast uzantısı:
    • CastPlayer öğesinin onIsPlayingChanged işlevini doğru şekilde çağırmasını engelleyen hata düzeltildi (#9792).
    • Albüm kapakları da dahil olmak üzere ses meta verileri desteği eklendi DefaultMediaItemConverter (#9663).
  • FFmpeg uzantısı:
    • build_ffmpeg.sh'nın GNU yerine LLVM'nin bin utils'ine bağlı olmasını sağlayın (#9933).
  • Android 12 uyumluluğu:
    • Cast uzantısını com.google.android.gms:play-services-cast-framework:20.1.0'ya bağlı olacak şekilde yükseltin. play-services-cast-framework'nın önceki sürümleri, Android 12'yi hedefleyen uygulamalarla uyumlu değildir ve PendingIntent oluşturulurken IllegalArgumentException ile kilitlenir (#9528).
  • Desteği sonlandırılan sembolleri 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 öğesini kullanın.
    • (Simple)ExoPlayer.setThrowsWhenUsingWrongThread öğesini kaldır İleti dizisi zorunluluğunu devre dışı bırakmak artık mümkün değildir.
    • ActionFile ve ActionFileUpgradeUtil araçlarını kaldırın. Eski işlem dosyalarını ActionFileUpgradeUtil ile birleştirmek için ExoPlayer 2.16.1 veya önceki bir sürümü kullanın.DefaultDownloadIndex
    • 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 kullanın.
    • Tüm herkese açık CronetDataSource oluşturucularını kaldırın. Bunun yerine CronetDataSource.Factory kullanın.
  • Yalnızca aşağıdaki IntDefs değerini @Target(TYPE_USE) olarak değiştirin. Bu durum, Kotlin'deki kullanımların derlenmesini bozabilir. Bu sorun, türü açıklama eklemek için açıklamayı taşıyarak (Int) 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 iptal edilir. Version 1.0.0-alpha01 contains these commits.

Yeni özellikler

Media3, ExoPlayer da dahil olmak üzere medya destek kitaplıklarının yeni adresidir. İlk alfa sürümünde, aşağıdakiler de dahil olmak üzere medya kullanım alanlarını uygulamaya yönelik kitaplıkların erken ve işlevsel uygulamaları yer almaktadır:

  • ExoPlayer, Android için uygulama düzeyinde bir medya oynatıcıdır. Özelleştirilmesi ve genişletilmesi kolaydır.
  • Oynatmaları göstermek ve kontrol etmek için medya oturumu işlevselliği. Bu yeni oturum modülü, ExoPlayer ile aynı Player arayüzünü kullanır.
  • Medya oynatma kullanıcı arayüzleri oluşturmaya yönelik 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'teki paket adı androidx.media3.exoplayer'dır. Uygulamalara Media3'e geçiş yapmaları için zaman tanımak amacıyla ExoPlayer GitHub projesini bir süre daha desteklemeye ve yayınlamaya devam etmeyi planlıyoruz. Media3, yeni media3-session modülüyle değiştirilen eski media2 ve mediasession uzantıları hariç olmak üzere tüm ExoPlayer modüllerinin yerine kullanılabilir. Bu, bir bağdaştırıcı/bağlayıcı sınıfı kullanmaya gerek kalmadan oynatıcılar ve medya oturumları arasında doğrudan entegrasyon sağlar.