Media3
| Son Güncelleme | Kararlı Sürüm | Sürüm Adayı | Beta Sürümü | Alfa Sürümü |
|---|---|---|---|---|
| 26 Ekim 2026 | 1.11.1 | - | - | 1.12.0-alpha02 |
Bağımlılıkları bildirme
Media3'e bağımlılık eklemek için projenize Google Maven deposunu eklemeniz gerekir. Daha fazla bilgi için Google'ın Maven deposu sayfasını okuyun.
Uygulamanız veya modülünüz için build.gradle dosyasında ihtiyacınız olan yapıların bağımlılıklarını ekleyin:
Eski
dependencies { def media3_version = "1.11.1" // For media playback using ExoPlayer implementation "androidx.media3:media3-exoplayer:$media3_version" // For DASH playback support with ExoPlayer implementation "androidx.media3:media3-exoplayer-dash:$media3_version" // For HLS playback support with ExoPlayer implementation "androidx.media3:media3-exoplayer-hls:$media3_version" // For SmoothStreaming playback support with ExoPlayer implementation "androidx.media3:media3-exoplayer-smoothstreaming:$media3_version" // For RTSP playback support with ExoPlayer implementation "androidx.media3:media3-exoplayer-rtsp:$media3_version" // For MIDI playback support with ExoPlayer (see additional dependency requirements in // https://github.com/androidx/media/blob/release/libraries/decoder_midi/README.md) implementation "androidx.media3:media3-exoplayer-midi:$media3_version" // For ad insertion using the Interactive Media Ads SDK with ExoPlayer implementation "androidx.media3:media3-exoplayer-ima:$media3_version" // For loading data using the Cronet network stack implementation "androidx.media3:media3-datasource-cronet:$media3_version" // For loading data using the OkHttp network stack implementation "androidx.media3:media3-datasource-okhttp:$media3_version" // For loading data using librtmp implementation "androidx.media3:media3-datasource-rtmp:$media3_version" // For building media playback UIs using Jetpack Compose implementation "androidx.media3:media3-ui-compose:$media3_version" // For building media playback UIs using Jetpack Compose with Material Design 3 implementation "androidx.media3:media3-ui-compose-material3:$media3_version" // For building media playback UIs using Views implementation "androidx.media3:media3-ui:$media3_version" // For building media playback UIs for Android TV using the Jetpack Leanback library implementation "androidx.media3:media3-ui-leanback:$media3_version" // For exposing and controlling media sessions implementation "androidx.media3:media3-session:$media3_version" // For extracting data from media containers implementation "androidx.media3:media3-extractor:$media3_version" // For inspecting media files implementation "androidx.media3:media3-inspector:$media3_version" // For extracting and processing video frames implementation "androidx.media3:media3-inspector-frame:$media3_version" // For integrating with Cast implementation "androidx.media3:media3-cast:$media3_version" // For scheduling background operations using Jetpack Work's WorkManager with ExoPlayer implementation "androidx.media3:media3-exoplayer-workmanager:$media3_version" // For transforming media files implementation "androidx.media3:media3-transformer:$media3_version" // For applying effects on video frames implementation "androidx.media3:media3-effect:$media3_version" // For applying Lottie effects on video frames implementation "androidx.media3:media3-effect-lottie:$media3_version" // For muxing media files implementation "androidx.media3:media3-muxer:$media3_version" // Utilities for testing media components (including ExoPlayer components) implementation "androidx.media3:media3-test-utils:$media3_version" // Utilities for testing media components (including ExoPlayer components) via Robolectric implementation "androidx.media3:media3-test-utils-robolectric:$media3_version" // Common functionality for reading and writing media containers implementation "androidx.media3:media3-container:$media3_version" // Common functionality for media database components implementation "androidx.media3:media3-database:$media3_version" // Common functionality for media decoders implementation "androidx.media3:media3-decoder:$media3_version" // Common functionality for loading data implementation "androidx.media3:media3-datasource:$media3_version" // Common functionality used across multiple media libraries implementation "androidx.media3:media3-common:$media3_version" // Common Kotlin-specific functionality implementation "androidx.media3:media3-common-ktx:$media3_version" }
Kotlin
dependencies { val media3_version = "1.11.1" // For media playback using ExoPlayer implementation("androidx.media3:media3-exoplayer:$media3_version") // For DASH playback support with ExoPlayer implementation("androidx.media3:media3-exoplayer-dash:$media3_version") // For HLS playback support with ExoPlayer implementation("androidx.media3:media3-exoplayer-hls:$media3_version") // For SmoothStreaming playback support with ExoPlayer implementation("androidx.media3:media3-exoplayer-smoothstreaming:$media3_version") // For RTSP playback support with ExoPlayer implementation("androidx.media3:media3-exoplayer-rtsp:$media3_version") // For MIDI playback support with ExoPlayer (see additional dependency requirements in // https://github.com/androidx/media/blob/release/libraries/decoder_midi/README.md) implementation("androidx.media3:media3-exoplayer-midi:$media3_version") // For ad insertion using the Interactive Media Ads SDK with ExoPlayer implementation("androidx.media3:media3-exoplayer-ima:$media3_version") // For loading data using the Cronet network stack implementation("androidx.media3:media3-datasource-cronet:$media3_version") // For loading data using the OkHttp network stack implementation("androidx.media3:media3-datasource-okhttp:$media3_version") // For loading data using librtmp implementation("androidx.media3:media3-datasource-rtmp:$media3_version") // For building media playback UIs using Compose implementation("androidx.media3:media3-ui-compose:$media3_version") // For building media playback UIs using Views implementation("androidx.media3:media3-ui:$media3_version") // For building media playback UIs using Jetpack Compose implementation("androidx.media3:media3-ui-compose:$media3_version") // For building media playback UIs for Android TV using the Jetpack Leanback library implementation("androidx.media3:media3-ui-leanback:$media3_version") // For exposing and controlling media sessions implementation("androidx.media3:media3-session:$media3_version") // For extracting data from media containers implementation("androidx.media3:media3-extractor:$media3_version") // For inspecting media files implementation("androidx.media3:media3-inspector:$media3_version") // For extracting and processing video frames implementation("androidx.media3:media3-inspector-frame:$media3_version") // For integrating with Cast implementation("androidx.media3:media3-cast:$media3_version") // For scheduling background operations using Jetpack Work's WorkManager with ExoPlayer implementation("androidx.media3:media3-exoplayer-workmanager:$media3_version") // For transforming media files implementation("androidx.media3:media3-transformer:$media3_version") // For applying effects on video frames implementation("androidx.media3:media3-effect:$media3_version") // For applying Lottie effects on video frames implementation("androidx.media3:media3-effect-lottie:$media3_version") // For muxing media files implementation("androidx.media3:media3-muxer:$media3_version") // Utilities for testing media components (including ExoPlayer components) implementation("androidx.media3:media3-test-utils:$media3_version") // Utilities for testing media components (including ExoPlayer components) via Robolectric implementation("androidx.media3:media3-test-utils-robolectric:$media3_version") // Common functionality for reading and writing media containers implementation("androidx.media3:media3-container:$media3_version") // Common functionality for media database components implementation("androidx.media3:media3-database:$media3_version") // Common functionality for media decoders implementation("androidx.media3:media3-decoder:$media3_version") // Common functionality for loading data implementation("androidx.media3:media3-datasource:$media3_version") // Common functionality used across multiple media libraries implementation("androidx.media3:media3-common:$media3_version") // Common Kotlin-specific functionality implementation("androidx.media3:media3-common-ktx:$media3_version") }
Bağımlılıklar hakkında daha fazla bilgi için Derleme Bağımlılıkları Ekleme başlıklı makaleyi inceleyin.
Geri bildirim
Geri bildiriminiz Jetpack'in iyileştirilmesine yardımcı olur. Sorulara, bilinen sorunlara ve özellik isteklerine yanıt bulmak ve yeni sorunları bildirmek için Media3 Issue Tracker'ı kullanabilirsiniz.
Sürüm 1.12.0
Sürüm 1.12.0-alpha02
26 Ekim 2026
1.12.0-alpha02 sürümü aşağıdaki işlemeleri içerir.
- Effect Play Hizmetleri:
- Video iyileştirme için
EnhancementSessionDecoratorve ses kaynağı ayırma içinStudioSoundAudioProcessordahil olmak üzere Google Play Hizmetleri medya efektleri sağlayan yeni birmedia3-effect-play-servicesmodülü kullanıma sunuldu.
- Video iyileştirme için
Sürüm 1.12.0-alpha01
21 Ekim 2026
1.12.0-alpha01 sürümü aşağıdaki işlemeleri içerir.
- Ortak Kitaplık:
C.COLOR_SPACE_DISPLAY_P3ekleyin veMediaFormatUtilileColorInfoISO renk eşlemelerinde Display P3 renk alanını destekleyin.- Deneysel özellik bayraklarını ve aşamalı sunumu (
Flags.setCanaryModeEnabled) yönetmek için merkezi birFlagskayıt defteri eklendi. Mevcut birçok@ExperimentalApiyöntemi, yeni özellik bayrağı API'sini kullanacak şekilde taşındı. MediaMetadata.playlistId,MediaMetadata.Builder.setPlaylistId(String),MediaMetadata.categoriesveMediaMetadata.Builder.setCategories(List<String>)ekleyin.androidx.media3.common.util.NonNullApiyerine JSpecify kullanınorg.jspecify.annotations.NullMarked.
- ExoPlayer:
- DASH çok dönemli oynatmanın, sonraki dönemin ilk parçası yüklenemediğinde takılmasına neden olan sorun düzeltildi (#3396).
- Yükleme yeniden denemeleri tükendiğinde
AnalyticsListener.onLoadErrorveMediaSourceEventListener.onLoadErroriçindewasCanceled = trueraporu. ExoPlayer.addVideoFrameMetadataListenerveExoPlayer.removeVideoFrameMetadataListenerkullanarak birden fazlaVideoFrameMetadataListenerörneği kaydetme desteği.ExoPlayer.setVideoFrameMetadataListenerveExoPlayer.clearVideoFrameMetadataListenerkullanımdan kaldırıldı.- Her dönem için
AdPlaybackStateöğesini bölüp dengeleyerek çok dönemli içeriklerdeki (ör. DASH) reklamlar için destek ekleyin. PreCacheHelperuygulamasında, devam eden bir hazırlık isteği iptal edildiğinde arka planda indirme işlemlerinin başlatılmasına neden olan yarışma durumu düzeltildi.ProgressiveMediaSourceveDefaultMediaSourceFactoryiçinsetLoadOnlySelectedTracks(true)sınırını yalnızca seçili olmayan video ve resim parçalarını filtreleyecek şekilde ayarlayın. Ses ve metin parçaları, yeniden arabelleğe alma işlemi olmadan sorunsuz parça geçişi sağlamak için her zaman yüklenir.setLoadOnlySelectedTracks(true)özelliğiniProgressiveMediaSourceveDefaultMediaSourceFactorycihazlarda varsayılan olarak etkinleştirin. Bu sayede bellekten tasarruf edilir ve tüm parçalar seçilmediğindeDefaultLoadControlarabellek ayırma hesaplamalarının daha doğru çalışması sağlanır. Seçilmeyen video veya resim parçaları oynatma sırasında etkinleştirilirse bu durum ek arabelleğe almaya neden olabilir.- Dinamik planlama etkinleştirildiğinde
Player.getCurrentPosition()işlevinin eski değerler döndürmesine (saniyede yalnızca birkaç kez güncelleme) neden olan sorun düzeltildi (#3286). AudioTrackoynatma kafası konumunda beklenmedik bir düşüş veya sıfırlamanın yanlışlıkla tam sayı taşması olarak değerlendirilerek oynatmanın arabelleğe alma sırasında durmasına neden olduğu sorun düzeltildi (#3407).- Deneysel
DefaultMediaCodecAdapterFactory.setAsyncCryptoSynchronizationEnabled(boolean)özelliğini kaldır. - Geçiş reklamlarından veya reklamlardan, sonunda kırpılmış içeriğe dönerken gereksiz oluşturucu yeniden etkinleştirmelerini ve aksaklıkları önleyin (#3371).
Flags.FLAG_PER_STREAM_MEDIA_PROGRESSIONetkinleştirildiğinde, oynatma listesindeki bir sonraki öğede oluşan oluşturucu hatasının mevcut oynatmayı erken kesmesine neden olan sorun düzeltildi.Flags.FLAG_PER_STREAM_MEDIA_PROGRESSIONetkinleştirildiğindeExoPlayer, oluşturucuları hazırlıksız bir medya dönemine geçirirse oluşabilecekNullPointerExceptiondüzeltildi.Flags.FLAG_VIDEO_RENDERER_DURATION_TO_PROGRESSetkinleştirildiğinde dinamik planlama sırasında video karelerinin beklenmedik şekilde atlanmasına veya bırakılmasına neden olan bir sorun düzeltildi.- Canlı yayında reklam sırasında oynatma durdurulduğunda analiz dinleyicilerinde oluşan
ArrayIndexOutOfBoundsExceptiondüzeltildi (#3423). preload()hiç çağrılmadığındaPreloadMediaSourceöğesinin beklenmedik şekilde ön yükleme etkinliği yayınlamasına neden olan sorun düzeltildi (#3408).- Meta veri parçaları için
Format.subsampleOffsetUsdeğerinin yoksayılmasına ve kodu çözülmüş SCTE-35 birleştirme komutlarında (#3413) yanlış oynatma zaman damgalarına neden olan sorun düzeltildi. - Aynı kaynakta
preload()birden çok kez çağrıldığındaPreloadMediaSourceveDefaultPreloadManageriçinde oluşan bellek sızıntısı düzeltildi (#3445). - İçerik zaman çizelgesi yenilemesi beklenirken
AdsMediaSourceyayınlandığında oluşanNullPointerExceptiondüzeltildi (#3442). - Arama işleminden sonra yükleme (veya oynatmayı sıfır olmayan bir konumda başlatma) başarısız olduğunda ve yeniden denendiğinde, aşamalı medyanın oynatılmasının yanlış konuma atlamasına neden olan sorun düzeltildi (#3440).
- Xiaomi TV Stick 4K (MiTV-AYFR0) H.264 kod çözücünün kesintisiz çözünürlük değişikliklerinde donmasıyla ilgili geçici çözüm eklendi (#3457).
- Yayınlanan bir yükleme tamamlanmadan veya hata geri çağırma işlevi yürütülmeden önce izleyici durdurulduğunda
SteeringManifestTrackeriçindeNullPointerExceptiondüzeltildi (#3443). - MP4 dosyalarındaki
mebxkutulu meta veri parçalarından HAGC (ST 2094-50) zamanlanmış meta veri oynatmayı destekler. - Oynatma listesindeki yavaş hazırlanan medya dönemlerinin atlanmasına neden olan sorun düzeltildi.
- CompositionPlayer:
- Oynatma iş akışları için
Composition.Builder.setVideoFrameAggregationParameterskullanarak video karesi toplama kare hızını yapılandırma desteği. - Kare birleştirme sırasında en yakın zaman damgasına sahip kareyi seçerek zaman damgası niceleme veya yuvarlama uyuşmazlıklarından kaynaklanan, çok dizili kompozisyonlardaki kare düşüşlerini düzeltin. Bu özellik yalnızca API 29'dan itibaren etkinleştirilir. Bunun nedeni, video dizisi başına bir ek kareyi daha beklemede tutmayı gerektirmesidir.
- Oynatma iş akışları için
- Transformer:
- Dışa aktarma iş akışları için
Composition.Builder.setVideoFrameAggregationParameterskullanarak video karesi toplama kare hızını yapılandırma desteği. - Kare birleştirme sırasında en yakın zaman damgasına sahip kareyi seçerek zaman damgası niceleme veya yuvarlama uyuşmazlıklarından kaynaklanan, çok dizili kompozisyonlardaki kare düşüşlerini düzeltin. Bu özellik yalnızca API 29'dan itibaren etkinleştirilir. Bunun nedeni, video dizisi başına bir ek kareyi daha beklemede tutmayı gerektirmesidir.
AudioProcessorskullanıldığındaTransformer#setAudioMimeType(AUDIO_RAW)değerine uyun. Bu düzeltmeden önceMimeTypes.AUDIO_RAWisteğinde bulunmak veAudioProcessoruygulamak, sıkıştırılmış çıkışla sonuçlanıyordu.
- Dışa aktarma iş akışları için
- Kanal seçimi:
- Bazı cihazlarda SDR parçasının desteklenen Dolby Vision parçasına yanlışlıkla tercih edilmesine neden olan sorun düzeltildi (#3135).
- Ayıklayıcılar:
- Mp4Extractor: MP4'te Opus için
dOpskutu ayrıştırması düzeltildi.PreSkip,InputSampleRateveOutputGain, big-endian'dan little-endian'a dönüştürülmediği için düzenleme listesi olmadığında sesin ilk yaklaşık 299 milisaniyesi siliniyordu (#3431). - H.264 ve H.265 için GOP içi örnek bağımlılığı ayrıştırma varsayılan olarak etkinleştirildiğinden
Mp4Extractor.FLAG_READ_WITHIN_GOP_SAMPLE_DEPENDENCIES,Mp4Extractor.FLAG_READ_WITHIN_GOP_SAMPLE_DEPENDENCIES_H265,FragmentedMp4Extractor.FLAG_READ_WITHIN_GOP_SAMPLE_DEPENDENCIESveFragmentedMp4Extractor.FLAG_READ_WITHIN_GOP_SAMPLE_DEPENDENCIES_H265parametrelerini kaldırın. - Mp4Extractor:
Mp4LocationDatadeğerini doldurmak için rakım koordinatlarını içerenxyzkutularından konum meta verisi ayrıştırma işlemi düzeltildi. - Kodlanmış ses biçimleri için örnek başına ses karesi sayısını hesaplamak üzere
ExtractorUtil.getFramesPerEncodedSampleeklendi (#3367). - Üst düzey UUID kutularından XMP meta verilerini ayıklamak için
Mp4ExtractoröğesineFLAG_READ_XMP_METADATAekleyin. - DVD tarzı MPEG-PS içeriği oynatılırken yük, ses okuyucuya (#3327) iletilmeden önce
PsExtractoriçindeki her PES paketindenprivate_stream_1alt akış başlığı çıkarılarak bozuk AC-3, DTS ve LPCM sesleri düzeltildi. - Sürüm 1
tfdtkutusu negatif birbaseMediaDecodeTimekodladığındaFragmentedMp4Extractoriçinde oluşan hata düzeltildi (#3412). - MPEG-TS:
Format.stereoModedeğerini doldurmak için H.264 ve H.265 kare paketleme düzenlemesi SEI mesajlarını ayrıştırma desteği (#3419). - Dolby Vision Profile 20 yapılandırma verilerini ayrıştırma ve desteklenmeyen Dolby Vision profillerini yanlış renklerle standart HEVC olarak oynatmak yerine reddetme (#3427).
- MP3: Birçok
MediaCodecMP3 kod çözücüyle uyumlu olmadığı için LAME/Xing kodlayıcı gecikmesi ve dolgu meta veri ayarı geri alındı (#3425). - Matroska: İç içe yerleştirilmiş
ChapterAtomöğeleri ayrıştırılırken oluşanNullPointerExceptionhatası düzeltildi (#3438). - Ogg: Boyutu 255 baytın katı olan ve sayfa sınırında biten bir paketin sonraki paketle birleştirilmesine neden olan hata düzeltildi.
- MP4:
Mp4ExtractorveFragmentedMp4Extractoriçindemebxkutulu zamanlanmış meta veri parçalarını ayrıştırın.it35anahtarı taşıyan parçalarMimeTypes.APPLICATION_ITUT_T35olarak gösterilir (HAGC oynatmayı etkinleştirir).FLAG_EMIT_RAW_MEBX_DATAayarlanmadığı sürece diğermebxparçaları yoksayılır. Ayarlandığı takdirde tümmebxparçaları hamMimeTypes.APPLICATION_MEBXolarak yayınlanır. - Ogg: Kesintisiz oynatma için Opus bitiş dolgusunu ayıklama desteği (#2576) ve devam eden bir paketle başlayan sayfaya gittikten sonra örnek zaman damgalarını düzeltme.
- Ogg: Akış ortasındaki Opus kimliği ve yorum başlığı paketlerini yoksayarak zincirleme Ogg Opus akışlarındaki kod çözme hatalarını ve yaklaşık 1 saniyelik zaman damgası atlamalarını düzeltme.
- Mp4Extractor: MP4'te Opus için
- Müfettiş:
MetadataRetrieverkullanarak MP4 dosyalarından XMP meta verilerini alma desteği.MediaExtractorCompatiçindemebxkutulu zamanlanmış meta veri parçalarınınMimeTypes.APPLICATION_MEBXolarak ayıklanması desteklenir.
- İnceleme Çerçevesi:
FrameExtractorile Ultra HDR kareleri çıkarırken SDR taban görüntüsündeki geniş gamutlu BT.2020 renklerinin kırpılmasını düzeltme. Gam dışı renkler artık kırpılmak yerine sRGB gamına hafifçe sıkıştırılıyor.
- Ses:
android.media.AudioDeviceCallbackyöntemini yanlış iş parçacığında çağıran cihazlar için geçici çözüm eklendi (#3386).- Sıkıştırılmış boşaltma ile parça geçişlerinden sonra olası takılı oynatmaları düzeltme.
- Amazon Fire TV stick'lerde AC-3 sesin dönem geçişleri sırasında donmasına neden olan sorun giderildi (#3448).
- Ogg ve WebM/Matroska Opus kesintisiz oynatma için akış sonu kodlayıcı dolgusunu kırpma desteği (#2576).
- Dinamik boşaltma boşluksuz gecikme ve dolgu güncellemelerini, parça geçişleri sırasında çalan parça yerine gelen parçaya uygulanacak şekilde düzeltin.
- Oynatma listesinin ortasındaki kesintisiz geçişlere ek olarak tekli akışlarda ve oynatma listesindeki son akışta kodlayıcı bitiş dolgusunu kırpma (#2576).
- Akış başı kodlayıcı gecikme kırpması tamamlandıktan ve akış sonu dolgusunun kırpılması gerekmediğinde
TrimmingAudioProcessoriçinde gereksiz ses arabelleği kopyalarından kaçının.
- Video:
- Aynı yayın zaman damgalarına sahip geç video karelerinin raporlanması düzeltildi. Bu kareler artık atlandı yerine bırakıldı olarak raporlanacak.
- Metin:
- Yandan yüklenen altyazıların zaman damgalarını medyaya göre kaydırmak için
MediaItem.SubtitleConfiguration.timeOffsetUsekleyin. Oynatma sırasındaPlayer.replaceMediaItem(int, MediaItem)ile oynatma kesintiye uğramadan ofset değiştirilebilir (#1976). - SubRip: Bayt sırası işareti olmayan bağımsız SubRip altyazılarının karakter kodlamasını algılamak için
DefaultSubtitleParserFactoryiçineCharsetDetectorekleme desteği sunuldu (#2247).
- Yandan yüklenen altyazıların zaman damgalarını medyaya göre kaydırmak için
- Etki:
- StudioSound GMSCore modülünü kullanarak ses kaynağı ayırma için
SoundSeparationAudioProcessoruygulayın.
- StudioSound GMSCore modülünü kullanarak ses kaynağı ayırma için
- Çoğullayıcılar:
PreSkip,InputSampleRateveOutputGain'nin big-endian yerine little-endian olarak yazıldığıMp4MuxerveFragmentedMp4Muxer'de Opus içindOpskutu yazma hatası düzeltildi (#3431).Mp4MuxerkullanarakMp4LocationDataiçinde GPS rakımını yazma desteği.- Doğrudan
ParcelFileDescriptordosyasına çoklama yapmak içinMuxer.Factory.create(ParcelFileDescriptor)ekleyin. - Medya kod çözme zaman damgaları sağlamak için parçalı MP4 dosyalarının
trafkutularına varsayılan olaraktfdt(Parça Parçası Taban Medya Kod Çözme Süresi) kutusu yazın. Mp4Muxeriçinde E-AC-3 ve E-AC-3 JOC (Dolby Atmos)dec3kapsayıcı kutularının yazılması desteklenir.MediaMuxerCompatiçin WebM biçim desteği ekleyin.FLAG_READ_MFRA_FOR_SEEK_MAPkullanarakFragmentedMp4Extractoriçinde arama yapılmasına izin vermek için parçalı MP4 dosyalarının sonunamfra(Film Parçası Rastgele Erişim) kutusu yazın.- Başka bir örnek yazılmadan önce EOS örneği yazılırken
Mp4WriterveFragmentedMp4Writeriçinde oluşan kilitlenme düzeltildi. - Dolby içeriğini MP4 veya parçalı MP4 dosyalarıyla birleştirirken kapsayıcı başlığında
dby1uyumlu markayı bildirerek kapsayıcı uyumluluğunu düzeltme (#3369). Mp4MuxerveFragmentedMp4Muxeriçinde 32 bit kayan noktalı PCM ses parçaları desteklenir (#3389).- Parça eklerken
Mp4MuxerveFragmentedMp4Muxerbiçimindeki desteklenmeyen Dolby Vision profillerini reddetme Mp4MuxerveFragmentedMp4Muxerbiçimlerinde 24 bit ve 32 bit tam sayı PCM ses parçaları desteklenir.
- IMA uzantısı:
ImaServerSideAdInsertionMediaSourceiçinde oynatıcı duraklatma ve devam ettirme etkinliklerini IMA SDK'ya yönlendirin.
- Oturum:
- Eski meta verilerden ve açıklamalardan oynatma listesi ve öğe meta verilerini doldurmak için
MediaConstants.EXTRAS_KEY_PLAYLIST_ID,MediaConstants.EXTRAS_KEY_PLAYLIST_TITLE,MediaConstants.EXTRAS_KEY_PLAYLIST_ARTWORK_URIveMediaConstants.EXTRAS_KEY_CATEGORIES, öneriLibraryParams.extrasiçinMediaConstants.EXTRAS_KEY_SUGGESTED_TYPEveMediaConstants.EXTRAS_KEY_TTL_SECONDSekleyin. - Katı
PendingIntentsınırları uygulayan cihazlardaMediaSessionoluştururken veya yayınlarken oluşanSecurityExceptionkilitlenmesi düzeltildi. MediaSessionServicehenüz ön planda değilken Android 12'de (API 31 ve 32) oynatma istekleri sırasındaMediaSession.getControllerForCurrentRequest()öğesininnulldöndürmesine neden olan sorun düzeltildi.MediaController, negatif maksimum ses seviyesi bildiren eski bir oturuma bağlandığında oluşanIllegalArgumentExceptionkilitlenmesi düzeltildi.- Duraklatılmış eski bir
MediaSessionCompatüzerindeMediaController.setMediaItemveyasetMediaItemsve ardındanplay()çağrıldığındaonPlayFrom*yerine desteklenmeyen bironPrepareFrom*geri çağırma işlevinin gönderilmesine veya istenen medya öğesi yeniden başlatılmadanonPlay()gönderilmesine neden olan sorun düzeltildi. - Özel komut yanıtı alınırken eski
MediaBrowsersürümündekiNullPointerExceptionhatası düzeltildi (#3432). - Temel
Bundleöğesinde yinelenen anahtarlar içeren eski meta veriler alınırken oluşanIllegalArgumentExceptionkilitlenme sorunu düzeltildi. - Eski bir
MediaSessionCompatkontrol edilirken aynıLooperiterasyonunda yapılan gidenMediaControllerCompat.TransportControlsçağrılarını birleştirin (örneğin,setMediaItem,prepareveplay'i birlikte çağırmak artık tek bironPlayFrom*geri çağırma işlemi gönderir).
- Eski meta verilerden ve açıklamalardan oynatma listesi ve öğe meta verilerini doldurmak için
- Kullanıcı arayüzü:
- Çift yönlü metin kaydırma etkinleştirildiğinde sağdan sola altyazı noktalama işaretlerinin konumlandırması ve aralık koruması düzeltildi (#3454, #3455).
media3-ui-composemodülüneTrackSelectionStateveTrackSelectionParametersStatesınıflarını ve bunlara karşılık gelen Composable durum hatırlama işlevlerini ekleyin.PresentationState.videoAspectRatiopolitikasını kullanıma sunun veModifier.resizeWithContentScalepolitikasınınsourceSizeDp: Size?yerineaspectRatio: Float?değerini almasını sağlayın.- Oynatıcının mevcut işaretlerini dinlemek için
media3-ui-composemodülüneCuesStatesınıfını verememberCuesStateComposable'ı ekleyin. ExoPlayerveyaCompositionPlayertabanlıysaProgressSlideriçin temizleme modu desteği ekleyin.PresentationStateiçinshowArtworkdesteği ekleyin ve bunu,ContentFramevePlayer'te sağlanan isteğe bağlıartworkComposable'ın oluşturulma süresini ölçmek için kullanın.artworkslotunun varsayılan değeri olarak kullanılacakArtworkcomposable'ı ekleyin.PlayPauseButtonState(showBuffering,showRetry,showReplay) için yeni alanlar ekleyin ve daha fazla simge ile bir arabelleğe alma göstergesi oluşturmak için bunlarıPlayPauseButtoniçinde kullanın.- Özel oynatma durumu gözlemine izin vermek için
PlaybackStatesınıfını ekleyin veBufferingIndicatoröğesini düğmeden bağımsız bir bileşen olarak tanıtın. PlayerViewvePlayerControlView'in, çok dönemli canlı yayınlarda canlı videodan sonra gösterilen reklam yer tutucuları için dönem sınırlarında reklam işaretçileri göstermesine neden olan sorun düzeltildi.Player,ContentFrame,PlayerDefaultsveMiniControlleriçin birleştirilebilir alanlar artık oynatıcıyı veya denetimlerin görünürlüğünü parametre olarak almıyor. Bunun yerine, çağrı kapsamından yakalayın (örneğin,topControlsartık@Composable BoxScope.() -> Unit). Bu, kararsız bir API'de zarar veren bir değişikliktir.- Ölçeklendirilmiş içeriği kapsayıcısının içine yerleştirmek için
ContentFrame,PlayerveModifier.resizeWithContentScaleöğelerinealignmentparametresini ekleyin veContentFrameiçeriğini sınırlarına göre kırpın. BöyleceContentScale.Cropile ölçeklendirilen video artık sınırlarının dışına taşmaz. isLiveveliveOffsetMsöğelerini göstererekProgressSlider,ProgressStateWithTickCountveProgressStateWithTickIntervaliçin canlı yayın kullanıcı arayüzü desteği ekleyin.media3-ui-compose-material3'eLiveButtonComposable ekleyin (#2213).
- Ktor uzantısı:
KtorDataSource,HttpDataSourceExceptionhatası vermek yerine akış ortasındaki bağlantı hatalarını giriş sonu olarak değerlendirebiliyordu. Bu sorun düzeltildi (#3460).
- HLS uzantısı:
EXT-X-STREAM-INFveEXT-X-I-FRAME-STREAM-INFüzerindeVIDEO-RANGE(PQveHLG) ayrıştırılarakFormat.colorInfohaline getirildi (#3441).- PES medya örnekleri içeren MPEG-TS
EXT-X-MAPbaşlatma segmentleri ayrıştırılırken oluşanNullPointerExceptionhatası düzeltildi (#3456). - Açık HLS parçaları için
Format.idveFormat.metadata'ninnullolduğu gerileme düzeltildi (#3402). - Öğe listesi reklamlarını
X-PLAYOUT-LIMITdeğerine kırpın ve tamamen sınırın ötesine geçenleri atlayın. Bir geçiş reklamıX-RESUME-OFFSETdeğerini atladığında veX-PLAYOUT-LIMITayarlanmış olsa bile süresi bilinmediğinde içerik devam etme ofsetini varsayılan olarak 0 değerine ayarlayın. - Bir
X-ASSET-LISTgeçiş reklamının çözümlenmesinin, aynı reklam grubundaki diğer geçiş reklamlarının içerik devam ettirme ofset katkılarının üzerine yazmasına neden olan sorun düzeltildi.
- DASH uzantısı:
DashManifestParseriçinde Alternatif MPD Ekleme (urn:mpeg:dash:event:alternativeMPD:insert:2025) ve Değiştirme (urn:mpeg:dash:event:alternativeMPD:replace:2025) etkinliklerini ayrıştırma desteği ve bunlarıPeriod.alternativeMpdEventsiçindeAlternativeMpdEventörnekleri olarak gösterme. Bu,DashManifestParseralt sınıfını kullanan uygulamalar için zarar veren bir değişikliktir:DashManifestParser.buildPeriodartık ek birList<AlternativeMpdEvent>parametresi alır ve önceki aşırı yükleme kaldırılmıştır.DashManifestParser.parseEventStream(XmlPullParser)yöntemini geçersiz kılan uygulamalar, bunun yerineDashManifestParser.parseEventStream(XmlPullParser, String)yöntemini geçersiz kılmalıdır. Çünkü önceki yöntem kullanımdan kaldırılmıştır ve gelecekteki bir sürümde gizli hale getirilecektir.EssentialPropertyveSupplementalPropertytanımlayıcılarındaki CICP renk bilgilerini (ColourPrimaries,TransferCharacteristics,MatrixCoefficientsveVideoFullRangeFlag)Format.colorInfoolarak ayrıştırın (#3426).- Hızlı ileri sarma modunda (
http://dashif.org/guidelines/trickmode) tanımlayıcı@valueözelliklerinde (#3315) boşlukla ayrılmış@iddeğerleri listeleri desteklenir. DashManifestParseriçinde<ProducerReferenceTime>ayrıştırmayı,AdaptationSet.producerReferenceTimesiçinde göstermeyi ve VOD akışları içinTimeline.Window.presentationStartTimeMsveTimeline.Window.windowStartTimeMsdoldurmak üzere kullanmayı destekleyin.- DASH Content Steering için destek eklendi (#1689).
<UTCTiming>öğesinde eksik bir özellik bulunan DASH manifesti ayrıştırılırken oluşabilecekNullPointerExceptiondüzeltildi (#3436).
- RTSP uzantısı:
- RTSP istemcisi kapatıldıktan sonra gecikmeli ağ yanıtları işlenirken oluşan
IllegalStateExceptionkilitlenme sorunu düzeltildi. - Hızlı kaydırmanın TCP protokolü yedek mekanizmasını yanlışlıkla tetiklemesine neden olan sorun düzeltildi.
- RTSP istemcisi parça yeniden seçimi, oturum sonlandırma veya URI yönlendirmesi sırasında durumu sıfırladıktan sonra geciken ağ yanıtları işlenirken oluşabilecek bir
IllegalStateExceptionkilitlenmesini düzeltir. - Oynatma yeniden başlatılmadan önce tekrar arama yapıldığında
IllegalStateExceptionkilitlenmesine neden olan sorun düzeltildi. - Bekleyen bir sarma işlemi varken geriye sarma işleminin ses kesintisine ve video oynatmanın donmasına neden olabileceği sorun düzeltildi.
- Toplama veya IDR olmayan paketle biten H.264 ve H.265 anahtar kare erişim birimlerinin anahtar kare olarak işaretlenmemesi nedeniyle oynatmanın arabelleğe alma aşamasında takılı kalmasına yol açan sorun düzeltildi (#3434).
- RTSP istemcisi kapatıldıktan sonra gecikmeli ağ yanıtları işlenirken oluşan
- Kod çözücü uzantıları (FFmpeg, VP9, AV1 vb.):
- Opus uzantısı: Geçersiz Opus verilerinin kodu çözülürken oluşan JNI kilitlenmesi düzeltildi.
- Opus uzantısı: Ön atlama ve silme dolgusu aynı pakete denk geldiğinde silme dolgusunun yoksayılması sorunu düzeltildi (#2576).
- Yayınlama uzantısı:
- Oturumun kullanılamama nedenini temsil etmek için
SessionAvailabilityListener.SessionUnavailableReasonözelliğini kullanıma sunun ve bunu göstermek içinSessionAvailabilityListener.onCastSessionUnavailableiçin aşırı yüklenmiş bir yöntem sağlayın. - Bir Cast oturumu durdurulduktan sonra oynatmanın beklenmedik bir şekilde yerel olarak devam etmesine neden olan sorun düzeltildi.
RemoteCastPlayeriçindeRemoteMediaClientişlemleri (ör. oynatma, duraklatma, hız değiştirme, tekrar modu, ses seviyesi, sesi kapatma veya parça seçimi) başarısız olduğunda hata günlüğü oluşturun (#3373).- Bir arama işlemi beklemedeyken Cast alıcı sırası değiştiğinde veya küçüldüğünde
RemoteCastPlayeriçindeArrayIndexOutOfBoundsExceptiondüzeltildi (#3372). - Varsayılan Cast alıcısında, zaman çizelgesinin tüm oynatma listesi yerine yalnızca etkin öğenin hemen etrafındaki medya öğelerini doldurmasına neden olan sorun düzeltildi (#3129).
- Oynatma listesini değiştirirken (
setMediaItems,addMediaItems,moveMediaItems,removeMediaItems) veyaRemoteCastPlayeriçinde arama yaparken zaman çizelgesini ve oynatma konumunu hemen güncelleyin ve birbirini takip eden oynatma listesi işlemlerini sırayla güvenilir bir şekilde yürütülecek şekilde sıraya alın (#2639, #3272). RemoteCastPlayeriçinde boş bir sıradaaddMediaItemsçağrıldığında medya öğelerinin yayın alıcısına yüklenememesi sorunu düzeltildi (#2402).RemoteCastPlayeruygulamasında, Cast alıcı sırasının sonuna ulaşıldığında oynatma listesini korumak yerine zaman çizelgesinin temizlenmesine neden olan sorun düzeltildi.- Medya öğeleri yüklenmeden önce (ör.
CastPlayeruygulamasında yerelden uzaktan oynatmaya aktarım sırasında)RemoteCastPlayerüzerinde ayarlandığındaplayWhenReady,repeatModeveplaybackParametersdeğerlerinin aktarılmaması veya uygulanmaması sorunu düzeltildi (#889).
- Oturumun kullanılamama nedenini temsil etmek için
- Demo uygulama:
- Oturum demo uygulama kataloğuna DRM korumalı medya öğeleri ve ek bir HLS örnek akışı için destek ekleyin.
- Yayın sırasında altyazı ve ses parçası seçimini etkinleştirmek için oturum demo uygulamasında
RemoteCastPlayeröğesiniCastTrackSelectorile yapılandırın.
- Desteği sonlandırılan simgeleri kaldırın:
DashUtil.buildDataSpec(Representation, RangedUri, int)veDashUtil.buildDataSpec(Representation, String, RangedUri, int)araçlarını kaldırın. Bunun yerineDashUtil.buildDataSpec(Representation, BaseUrl, RangedUri, int, Map<String, String>)kullanın.
- Oluşturun:
- Gradle
minSdkdeğerini 24'e yükseltin.
- Gradle
Sürüm 1.11.0
1.11.1
10 Eylül 2026
- ExoPlayer:
- İlerlemeli medya için HAGC meta verilerini etkinleştirme/devre dışı bırakma işaretini
MediaSource.FactorykonumundanExtractorsFactorykonumuna taşıyın. ÖncekisetExperimentalEnableHagcPlaybackyöntemi kaldırıldı ve yerineExtractorsFactory.setParseHagcMetadatagetirildi. Bu sayede, Matroska/WebM kapsayıcılarında devre dışı bırakma işleminin çalışmaması sorunu da çözülür. - Geçiş yapmayan ikincil bir oluşturucuyu önceden ısıtırken oynatmanın durmasına neden olan sorun düzeltildi.
- Arama işlemi her iki oluşturucuyu da sıfırlayıp devre dışı bıraktığında
Surfaceöğesinin birincil oluşturucuya döndürülmesi gereken ön ısıtma sorunu düzeltildi. - Canlı zaman çizelgesi yenilemesi, varsayılan konumu o anda oynatılmakta olan sunucu tarafı eklenmiş bir reklamın ötesine taşıdığında
ArrayIndexOutOfBoundsExceptiondüzeltildi (#3348). ScrubbingModeParameters.allowSkippingMediaCodecFlushetkinleştirilmişken arama yapıldığında eski video karelerinin kısa bir süre gösterilebildiği, temizleme moduyla ilgili bir sorun düzeltildi.
- İlerlemeli medya için HAGC meta verilerini etkinleştirme/devre dışı bırakma işaretini
- Ayıklayıcılar:
- Matroska: Kümelerden sonra yerleştirilen parçaların aranabilir bir zaman çizelgesiyle sonuçlanmamasına neden olan sorun düzeltildi (#3377).
- Ses:
SilenceSkippingAudioProcessoriçinde arabellek boyutu hesaplaması düzeltildi. Böylece minimum sessizlik süresi, kare boyutuna göre yanlış şekilde ölçeklendirilmeyecek (#3271).PcmAudioUtiliçinde 8 bit PCM işleme düzeltilerek örneklerin Android tarafından tanımlandığı şekilde işaretsiz olarak değerlendirilmesi sağlandı (#3271).- Sınırlı donanım arabellek boyutları nedeniyle videodan önce gösterilen reklam veya kesintisiz geçişler sırasında oynatmanın duraklamasına neden olan boşaltma sorunu düzeltildi.
DefaultAudioSinkiçinde, oynatma iş parçacığı artık etkin olmadığında yayın sayısının azalmamasına neden olan hata düzeltildi (#3338).
- Oturum:
- İşlemdeki bir
MediaController,Player.Listenergeri çağırma işlevinden serbest bırakıldığındaNullPointerExceptiondüzeltildi (#3375). - Eski bir
MediaBrowser,onGetLibraryRoot()veyaonConnectAsync()'den eşzamansız sonuç döndüren bir hizmete bağlandığında ana iş parçacığındaki kilitlenme düzeltildi (#3393).
- İşlemdeki bir
- HLS uzantısı:
- DASH uzantısı:
presentationTimeOffsetile resim parçaları için yanlış örnek zaman damgası hesaplaması düzeltildi (#3334).
- Kod çözücü uzantıları (FFmpeg, VP9, AV1 vb.):
- Opus: Birden fazla
OpusDecoderörneği aynı anda başlatıldığında oluşan bellek bozulması düzeltildi. - MPEG-H: Bellek sızıntısı, ASCII olmayan karakterlerin kesilmesi ve
MpeghUiManagerkomutları gönderilirken düşük bellek koşullarında olası yerel kilitlenme düzeltildi (#3365).
- Opus: Birden fazla
Sürüm 1.11.0
5 Ağustos 2026
- Ortak kitaplık:
- Ses kanalı maskesini açıkça temsil etmek için
Format.channelMaskekleyin ve güvenli bir şekilde çözmek için yeni birUtil.getAudioTrackChannelConfig(Format)aşırı yüklemesi ekleyin. - Kotlin'i 2.0.20'den 2.2.0'a yükseltin.
- Ses kanalı maskesini açıkça temsil etmek için
- ExoPlayer:
- ExoPlayer'da
IllegalStateExceptionveyaIndexOutOfBoundsExceptionhatasına neden olabilecek, zamanlamaya bağlı bir eşzamanlılık hatası düzeltildi. - Bir reklam grubu tamamen işlendiğinde (
hasUnplayedAds(),falseolduğunda) reklam grubu sayısının azalmasına izin vermek içinAdsMediaSourceiçindeki reklam grubu sayısı kontrollerini gevşetin. Böylece, sıfırlama iş akışları sırasında dinamik reklam grubu yeniden boyutlandırması yapılabilir. - Akışların işaretleri bildirmesine izin vermek için
getFlags()veFLAG_STRICT_DURATIONöğeleriniSampleStreamöğesine ekleyin ve oluşturucuları bu işaretleri dinamik olarak kontrol edecek şekilde güncelleyin. - Akış biçimleri geçerli bir değer sağlamadığında codec çalışma hızını hesaplamak için
MediaCodecVideoRendereriçindeki kare hızı tahmin aracını veMediaCodecAudioRendereriçindeki codec çıkış biçimini kullanın ve gereksiz codec sıfırlamalarından kaçının. - Temel oynatıcıda istemci tarafında eklenen reklamlar için içerik kırpma özelliğini kaldırın. Bunun yerine, kırpma mantığını
AdsMediaSourceyönetir. İçerik kırpma işlemini dahili olarak uygulamak için özel istemci tarafı eklenen reklam kaynaklarının güncellenmesi gerekir. - İyi biçimlendirilmiş ancak tanınmayan bir codec profili veya seviyesi olan parçaları
supported=YESyerinesupported=NO_EXCEEDS_CAPABILITIESolarak işaretleyin (eksik veya hatalı biçimlendirilmiş profil ya da seviye bilgisi olan parçalar bu şekilde işaretlenir). Bu sayede, daha iyi desteklenen alternatifler varken bu parçaların (cihaz tarafından desteklenme olasılığı düşük olan) seçilmemesi sağlanır. - Mevcut medya öğesinin dizinine olan mesafelerine göre medya öğelerinin sıralamasını karşılaştıran bir
RankingDataComparatorolanDefaultPreloadManager.SimpleRankingDataComparatoröğesini ekleyin. Uygulamalar, daha hassas bir karşılaştırma mantığı gerekiyorsacompare(Integer, Integer)yöntemini geçersiz kılabilir. ÖzelSimpleRankingDataComparator, yeni birDefaultPreloadManager.Builderoluşturucu aracılığıyla eklenebilir. - Kullanılabilir yığın belleği yetersiz görünüyorsa arabellek bayt boyutu sınırlarına geri dönerek
DefaultLoadControl.prioritizeTimeOverSizeThresholdsiçin OOM riskini azaltın. MediaItem.imageDurationUsayarlanmadığında sabit resimlerin işlenmesini uyumlu hale getirme: JPEG ve HEIC sabit resimler artık çok kısa bir varsayılan süreyle "oynatılır" (PNG ve diğer resimlerin daha önce davrandığı şekilde).BandwidthMeterileMediaSourcearasında tesisat döşemek içinMediaSource.prepareSource(MediaSourceCaller, PlayerId, BandwidthMeter)ekleyin. Ancak özel uygulama içeren desteği sonlandırılmış yöntem varsayılan olarak çağrılmaya devam eder. Yeni yöntemi uygulamanız ve eski yöntemle eşitlik sağlamak içinBandwidthMeter.getTransferListener()kullanmanız önerilir.DefaultBandwidthMeteriçinde özel birInitialBitrateSupplieriçin destek ekleyin. Bu sayede uygulamalar,DefaultBandwidthMeteroluşturulurken ve ağ türü değişikliklerinde kullanılacak ilk bit hızı tahminini belirlemek için kendi mantıklarını sağlayabilir. Tedarikçi,DefaultBandwidthMeter.Builder.setInitialBitrateSupplier()üzerinden ayarlanabilir.- Dinamik planlamayı varsayılan olarak etkinleştirin.
ExoPlayeroynatma iş döngüsü, statik bir aralık yerine dinamik olarak çalışır. - Videodan önce gösterilen reklam örnekleri içeren parçalar etkin oynatmaya katılırken gerçekleşebilecek gereksiz sıfırlama işlemi kaldırıldı.
DefaultBandwidthMeteriçinde, ülke grubu atamalarını bir dizi yerine 32 bitlik bir tam sayı olarak döndürmek içingetInitialBitrateCountryGroupAssignmentoptimize edin. Böylece kod boyutu küçülür ve ayırmalar önlenir.- Yeniden deneme mantığının, diğer yeniden denemeler (arabellek boyutu yarıya indirilerek) başarısız olursa her zaman en az 1 saniyelik arabellek boyutu denemesini sağlayarak bazı cihazlardaki
AudioTrackbaşlatma hataları düzeltildi (#3207). - Giriş arabelleklerini almadan önce temizlenen codec'in tüm örnekleri yuttuğu bazı cihazlardaki codec sorunu düzeltildi.
- Medya işleme sürecinin akış bazında ilerletilmesine olanak tanımak için deneysel
ExoPlayer.Builder.enablePerStreamMediaProgression()ekleyin. Bu sayede, oynatma listesi öğeleri arasındaki başlangıç gecikmesi azalır ve çok kısa içeriklerde oynatmanın "takılması" (#3122) önlenir. setAudioSessionIdtarafından ayarlanan değer yerineExoPlayertarafından otomatik olarak üretilmiş ilk ses oturumu kimliğinin kullanıldığı ses oturumu kimliği kullanımıyla ilgili yarışma durumu düzeltildi (#3241).- İleriye doğru ilerleyen medya (ör. MP4, Matroska) için deneysel HAGC (ST 2094-50) zamanlanmış meta veri oynatma desteği eklendi. Oynatıcı, HAGC meta veri parçalarını ilişkili video parçasıyla otomatik olarak birleştirir ve meta verileri, API 37 ve sonraki sürümleri çalıştıran cihazlarda bant dışı olarak kod çözücüye iletir. Bu davranış,
DefaultMediaSourceFactory.setExperimentalEnableHagcPlayback(false)üzerinden devre dışı bırakılabilir. - Parça seçiminde
Formatiçin göreceli tercihi temsil edenFormat.selectionPriorityeklendi (#3236). - "Akışın sonuna" gidildiğinde sarmanın durmasına neden olabilen sarma modu sorunu düzeltildi.
- ExoPlayer'da
- CompositionPlayer:
TrackSelectorörneklerinin yayınlanmamasına neden olan sorun düzeltildi.
- Transformer:
ExportResult.fileSizeBytesdeğerinin fazla raporlanmasına neden olabilen bir sorun düzeltildi.
- Parça seçimi:
- Yalnızca bit hızına göre sıralamanın ötesinde özel biçim sıralamasına ve ABR seçim önceliğine izin vermek için
BaseTrackSelection.DEFAULT_FORMAT_COMPARATORöğesini gösterin veAdaptiveTrackSelection.Factory.setTrackFormatComparatoröğesini ekleyin. - Parça seçim parametrelerinde yapılan hızlı sıralı güncellemelerin, bazı güncellemelerin kaybolmasına veya üzerine yazılmasına neden olabildiği, zamanlamaya bağlı bir eşzamanlılık sorunu düzeltildi.
- Yalnızca bit hızına göre sıralamanın ötesinde özel biçim sıralamasına ve ABR seçim önceliğine izin vermek için
- Ayıklayıcılar:
- MP4, MP3 ve FLAC: Çalışma zamanı bellek tüketimini azaltmak için kapsayıcı ayrıştırma sırasında ekli resimlerin ve kapak resmi meta verilerinin silinmesine izin veren
FLAG_DISABLE_ARTWORK_METADATAeklendi (#2077). Bu özellik,DefaultExtractorsFactory.setDisableArtworkMetadataüzerinden merkezi olarak da etkinleştirilebilir. - MP4: ITU-T T.35 (
it35) zamanlanmış meta veri parçalarını ayıklama desteği eklendi. - MP4: Bölüm meta verilerini (hem Nero hem de QuickTime biçimleri) ayıklama desteği eklendi. Her ikisi de mevcutsa QuickTime bölümleri tercih edilir. Ayıklanan bölüm bilgileri, parçanın
MetadataöğesindeChaptergirişleri olarak gösterilir. Bu sayede MP4, M4A ve M4B dosyalarında (ör. sesli kitaplar ve podcast'ler) yerel bölüm gezinmesi yapılabilir (#2803). - WAV, Matroska ve MP4: 64 bit kayan noktalı PCM ses desteği eklendi (#3090).
- Matroska: Doğru
ColorInfodeğerini doldurmak için codec bit akışı meta verilerini kullanın. - MP4:
sidxkutusu olmadığındamfrakutusunu kullanarak parçalı MP4 dosyalarında arama desteği eklendi. Bu özelliği etkinleştirmek içinFragmentedMp4Extractor'eFLAG_READ_MFRA_FOR_SEEK_MAPsağlayın. Bu işlem artıkDefaultExtractorsFactorysürümünde varsayılan olarak yapılır (#3088). - Desteklenmeyen sürüme sahip
av1Cverilerini yoksay. - MP4:
fpcmkutularında big-endian kayan noktalı PCM için destek eklendi. - Matroska: Bölüm bilgilerini bir parçanın
MetadatabölümündekiChaptergirişlerine ayrıştırın. - MPEG-TS: Çekirdek ve Uzantı Alt Akışı'nı tek bir örnekte birleştirerek DTS-HD ve DTS Express akışlarının çıkarılmasını iyileştirdik. Böylece, daha önce iki ayrı örnek olarak çıkarıldıkları oynatma sorunlarını düzelttik (#3147).
- MP4: Boş meta veri etiketi öğeleri ayrıştırılırken sonsuz döngüler ve sınır dışı okumalar önlendi
ilst(#3191). - MPEG-TS: Son PES paketinin bilinen bir uzunluğa sahip olduğu akışlar için son karenin oluşturulduğundan emin olun (#3206).
- MP3: Xing ve VBRI başlığına sahip dosyalar için bit hızı raporlaması düzeltildi.
- Matroska: Son kümede tanımlanan parçaları işleme (#3250).
- Matroska: ALAC için destek eklendi (#3268).
- MP4: Parçalı MP4 dosyalarında değişken uzunlukta
sgpdkutularına izin verilir (#3243). - AVI: Ses parçalarında animasyon karesi işaretleri olmayan dosyaların oynatılmasının ses kaybına ve
OutOfMemoryErrorhatasına neden olduğu sorun düzeltildi. - MP3: Xing/Info başlıklarından boşluksuz süreleri kullanma (#3183).
- MP3: LAME/Xing kodlayıcı gecikmesini ve dolgu meta verilerini, kodu çözülmüş PCM kırpma ile eşleşecek şekilde ayarlayın (#3200).
- MP4, MP3 ve FLAC: Çalışma zamanı bellek tüketimini azaltmak için kapsayıcı ayrıştırma sırasında ekli resimlerin ve kapak resmi meta verilerinin silinmesine izin veren
- Ses:
- Hazır durumdan hazır olmayan duruma geçerken ExoPlayer'ın ses oluşturucularına 100 ms'lik bir ek süre ekleyerek geçici yetersizlikleri önleyin ve etkin oynatma sırasında beklenmedik arabelleğe alma durumlarını engelleyin (#3210).
DefaultAudioTrackBufferSizeProvideruygulamasındaki varsayılan PCM arabellek boyutu mantığı, cihaza daha az bağımlı olması için sabit 500 ms'lik bir arabellek kullanacak şekilde değiştirildi.- Platform kod çözücüsünden uzamsal channelMask'i ayıklamak için
MediaCodecAudioRenderergüncellendi. BöyleceDefaultAudioSink, kanal sayısından bir maske çıkarmak yerine bu açık maskeyi kullanabilir. AudioSink.configureparametrelerini veri sınıfına dönüştürün.ForwardingAudioSink.configureiçin özel geçersiz kılma işlemlerinin yeni yöntem imzasına taşınması gerekiyor.EditedMediaItem.Builder#setSpeed(SpeedParameters)ile bir ses akışını zaman esnetme işlemine tabi tutarken perdeyi koruma desteği ekleyin.ToFloatPcmAudioProcessor; 8 bit PCM, 16 bit big-endian PCM ve 64 bit kayan noktalı PCM'yi 32 bit kayan noktalı PCM'ye dönüştürmeyi destekleyecek şekilde geliştirildi (#3090).DecoderAudioRenderer.getChannelMappingiçin dönüş değeriniImmutableIntArrayolarak değiştirin.- Sıkıştırılmış boşaltma modunda kesintisiz ses oynatma listesi oynatılırken oynatmanın takılmasına neden olan hata düzeltildi.
- Ses işlemcilerine oynatma listesi bağlamı sağlamak için
Timelineve dönem UID'siniAudioSink.configureveAudioProcessor.StreamMetadataöğelerine yönlendirin (#418). - Zamana dayalı ses işlemeye izin vermek için doğru
AudioProcessor.StreamMetadata.positionOffsetUsdeğerini ayarlayın (#418). - Big-endian 32 bit ve 64 bit kayan noktalı PCM desteği eklendi.
- Google Pixel cihazlarda standart EAC3 kod çözücüler EAC3-JOC akışlarının kodunu çözemediğinden, bu cihazlarda oynatma için EAC3-JOC'nin EAC3'e yedek yolu kaldırıldı (#3257).
- Video:
- Katılma sırasında bırakılan arabellekleri bırakılan yerine atlanan olarak saymak için video katılma mantığı düzeltildi.
- Yer tutucu yüzeyleri desteklemeyen cihazlarda kare düşüşlerini önlemek için yeni yüzey ayarlanırken anında oluşturma kararı düzeltildi.
MediaCodecVideoRendereruygulamasında kare hızı tahminini, bırakılan veya atlanan kareleri hesaba katarak daha doğru olacak şekilde düzeltin.- Kareleri erken planlamak için kullanılan eşiğin yapılandırılmasına izin ver. Varsayılan değer 50 ms'dir ancak
MediaCodecVideoRenderer.Builder.setMaxEarlyUsThreshold()üzerinden özelleştirilebilir. VideoFrameReleaseHelperiçinde, ekran değişikliklerinin ana iş parçacığında gereksizChoreographergeri çağırmaları ve aşırı CPU uyanmalarını tetikleyebileceği hata düzeltildi.
- Metin:
- Meta veriler:
MediaMetadata.discSubtitlealanını ekleyin ve ID3v2.4TSSTve VorbisDISCSUBTITLEverilerinden ayrıştırın.- Disk numarasını ve sayısını ID3
TPOSçerçevesinden ayrıştırın.
- Etki:
- Arama sırasında oynatıcının donmasını önlemek için temizleme sırasında
FinalShaderProgramWrapperiçindeki yeniden çizim durumunu temizleyin.
- Arama sırasında oynatıcının donmasını önlemek için temizleme sırasında
- Çoğullayıcılar:
- Yeni bir
addTrackReferenceAPI aracılığıylaMp4Muxeriçinde parça referansları (trefkutusu) için destek eklendi. Bu sayede, parçalar arasında ilişki kurulabilir (ör. bir meta veri parçasını, açıkladığı video parçasına bağlama). OPUSveyaVORBISmedya akışlarınınoggdosya biçiminde birleştirilmesine izin vermek içinOggMuxerekleyin.- WAV dosyası üretme için
WavMuxerekleyin (tam sayı ve kayan nokta PCM'yi destekler). - Ayrılmış alan olmadan daha küçük, akışla aktarılamayan dosyaların yazılmasına izin vermek için
InAppMp4Muxer.FactoryparametresinesetAttemptStreamableOutputEnabledekleyin. Mp4MuxerveFragmentedMp4Muxeriçin IAMF ses desteği eklendi.
- Yeni bir
- IMA uzantısı:
- Ara reklamları için kullanılacak bir reklam alanı sağlamak üzere
ImaServerSideAdInsertionMediaSource.AdsLoader.Builder.setPauseAdSlotekleyin. - Arka arkaya atlanabilir VAST reklamların ikinci reklamda atla düğmesini hemen göstermesine neden olan hata düzeltildi (#3165).
- Ara reklamları için kullanılacak bir reklam alanı sağlamak üzere
- Oturum:
- Arka plan iş parçacığı oynatıcı döngüleyicisi içeren bir oturum kullanırken
MediaNotificationManageriçinde olası kilitlenmeleri veIllegalStateExceptionkilitlenmelerini düzeltin. MediaSessionyöntemleri için daha katı iş parçacığı oluşturma koşulları uygulayın. Void yöntemleri artık yürütme işlemini otomatik olarak uygulama döngüleyici iş parçacığına gönderir ve durum erişimcileri (getters), uygulama döngüleyici dışında bir iş parçacığından çağrılırsa açıkça birIllegalStateExceptionhatası verir.- Oturum tarafında her denetleyici için durum tutarlılığını izleyerek sınır dışı zaman çizelgesi birleştirme kilitlenmesini (
MediaUtils.mergePlayerInfoiçindeIllegalStateException) düzeltme. - Etkin medya oturumlarını sorgulama ve Media3
SessionTokenörneklerini döndürme desteği sağlamak içinandroidx.media3.session.MediaSessionManagereklendi. - Yöntem, güvenilmeyen denetleyicilere yalnızca okuma erişimi sağlayacak şekilde geçersiz kılınmazsa
MediaSession.Callback.onConnectyönteminin varsayılan davranışını değiştirin. - Yeni bir API
MediaSession.Builder#setPackageNameOverridearacılığıylaMediaSessionoluştururken paket adını geçersiz kılma desteği eklendi. Arayanın, oturumun paket adını geçersiz kılmak içinandroid.permission.OVERRIDE_MEDIA_SESSION_OWNERiznine sahip olması gerekir. MediaSession.Callback.onConnectAsync()ekleyin. Yeni yöntem, bir kumandanın bağlantı denemesini eşzamansız olarak işlemeye olanak tanır. Uygulamalar, önceki davranışı elde etmek içinFutures.immediateFuture(ConnectionResult)ile hemenFuturedöndürebilir.Callback.onConnectdesteği sonlandırılacağı için yeni yönteme geçmeniz önerilir.- API 36 ve 37'de Bluetooth AVRCP taramasının
MediaLibraryServiceöğesini tanımamasına neden olan sorun düzeltildi. - Resim boyutu platform sınırına yakın olduğunda
MediaSessionuygulamasında resmin iki kez küçültülmesi sorunu düzeltildi. Böylece bildirimlerdeki bulanıklık giderildi (#3134). - Uygulama arka plandayken eşzamansız resim bitmap yükleme geri çağırma işlevi ön plan hizmetini başlatmaya çalıştığında
MediaNotificationManageruygulamasında oluşanForegroundServiceStartNotAllowedExceptionkilitlenme sorunu düzeltildi (#3270). MediaControllertarafından alınanPositionInfonesnelerinin orijinalTimelineUID'lerinin eksik olmasına neden olan sorun düzeltildi. Oturum artık durum güncellemeleri sırasında bu UID'leri güvenilir bir şekilde çevirir ve yayar.MediaSessionService.stopSelfSafely()içindeForegroundServiceStartNotAllowedExceptionyakalanarak kilitlenme sorunu düzeltildi (#3310).- Aynı medya öğesinde arama yaparken
MediaControllerüzerinde beklenmeyenonMediaItemTransition()geri çağırma düzeltildi (#3248).
- Arka plan iş parçacığı oynatıcı döngüleyicisi içeren bir oturum kullanırken
- Kullanıcı arayüzü:
ContentFrameoynatma sırasında yeniden oluşturulduğunda ilk karenin yanlış boyutta oluşturulması sorunu düzeltildi (#3238).media3-ui-composemodülüneCurrentMediaItemStatesınıfını ve ilgilirememberCurrentMediaItemStateComposable'ı ekleyin. Bu durum bilgisi depolayıcı,demo-composeiçinde, o anda oynatılanMediaItemile ilgili çeşitli meta veri bilgilerini görüntülemek için kullanılır.media3-ui-composemodülünePlaylistStatesınıfını ve ilgilirememberPlaylistStateComposable'ı ekleyin. Bu durum bilgisi depolayıcı, oynatıcıda ayarlananMediaItemsile ilgili çeşitli meta veri bilgilerini görüntülemek içindemo-composeiçinde kullanılır.PlaybackSpeedStateiçin ileri sarma/ağır çekim API'si ekleyin. Uzun basarak ileri sarma özelliğini göstermek içindemo-composeuygulamasındaki bu işlevi kullanın.media3-ui-compose-material3modülüneMiniControllercomposable'ı ekleyin. Mevcut medya öğesinin başlığını, sanatçısını, posterini ve ilerleme durumunu gösterirkenPlayerkontrolü için kompakt bir olanak sağlar.media3-ui-composemodülüneErrorStatesınıfını ve ilgilirememberErrorStateComposable'ı ekleyin.media3-ui-compose-material3öğesineErrorTextComposable ekleyin ve bunuPlayerüzerinde varsayılan yer paylaşımı yapın.TopControls,CenterControls,BottomControlsveErrorOverlayiçin birleştirilebilir öğeler içerenPlayerDefaultsnesnesini yayınlayın.FocusRequesteröğesiniPlayerComposable'a ve içerik alanlarına ekleyin.- Kayan pencere kullanıcı arayüzü ortamlarında
MediaItemsöğesinin önceden yüklenmesini desteklemek içinPlayerPool(common-ktx) verememberPooledPlayer(ui-compose) yayınlayın. Bu işlevidemo-composeiçinde yeni birShortFormPlayerScreenile sergileyin. PlayerViewve Compose'da, dönem UID aramayı desteklemeyen zaman çizelgelerinde kilitlenmelere neden olan deklanşör bastırma hatası düzeltildiPresentationState(#3264).
- İndirilenler:
- İndirme için getirildiğinde medya oynatma listesindeki HLS değişkenlerini çözme (#3258).
- Ktor uzantısı:
- HLS uzantısı:
- HLS Content Steering ve Pathway Cloning için destek eklendi (#1689).
- Uygulamaların, tamamen işlenmiş öğe listesi geçiş reklamlarını isteğe bağlı yeniden çözünürlük için kullanılamaz duruma sıfırlamasına izin vermek üzere
HlsInterstitialsAdsLoaderöğesinesetWithAssetListResetekleyin. EXT-X-STREAM-INFveEXT-X-I-FRAME-STREAM-INFöğelerininSCOREözelliğini ayrıştırıpFormat.selectionPriorityözelliğine ekleyin (#3236).- Oynatma listesi artık birincil veya etkin olmasa bile planlanmış HLS oynatma listesi yenilemelerinin devam etmesine neden olan hata düzeltildi (#3254).
- Geçiş reklamı öğe listeleri çözümlenirken içerik devam ettirme ofsetinin hesaplanması düzeltildi (#3322).
- Oynatma listesi isteği başarısız olduktan sonra düşük gecikmeli canlı oynatma devam ettirilirken beklenmedik ses parçası zaman damgası süreksizliği düzeltildi (#3311).
HlsMediaPeriod.getStreamKeys()'da ses yorumlarındaki ID3 parçasının altyazı olarak kabul edilmesiyle ilgili hata düzeltildi (#3333).
- DASH uzantısı:
- CEA altyazılarını dile göre farklı
TrackGroupöğelerine ayırın (#3113). - Manifestten (MPD) birden fazla
Locationöğesini ayrıştırma ve manifest yükleme işlemleri başarısız olduğundaDashMediaSourceiçinde konum yedekleme desteği eklendi. - Boş bir
<SegmentTimeline/>öğesi içeren manifest dosyaları açılırken oluşan kilitlenme (IndexOutOfBoundsException) düzeltildi (#3326).
- CEA altyazılarını dile göre farklı
- RTSP uzantısı:
- UDP bağlantı noktası bağlama hatalarından kaynaklanan RTSP oynatma hazırlığı sırasında geçici oynatma duraklamalarını veya hatalarını düzeltme.
- Yayınlama uzantısı:
Cast.initialize(CastParams)yöntemini çağırarak Cast yapılandırmasına olanak tanıyan yeniCastParamssınıfı eklendi.- Mümkün olduğunda uygulama içi yayın cihazı seçici yerine SystemUI çıkış değiştiricinin kullanılmasını tetikleyen yeni
CastParams.getShowSystemOutputSwitcherOnCastIconClick()seçeneği eklendi. - Medya rotası seçicinin görünürlük durumunun gözlemlenmesini desteklemek için
MediaRouteButtonStateverememberMediaRouteButtonStateekleyin veMediaRouteButton'estateparametresini ekleyin (#3172). RemoteCastPlayeröğesinin, parça seçiminden sonra kalıcı olarak parça maskeleme durumunda takılı kalmasına ve Cast alıcısından gelen sonraki parça güncellemelerini yoksaymasına neden olan hata düzeltildi (#3237).DefaultMediaItemConverter, Media3 dışı bir gönderenden başlatılan yayın oturumuna katılmaya çalışırkenNullPointerExceptionhatası veriyordu. Bu hata düzeltildi.- Etkin oyuncu değiştirilirken
CastPlayer'in oynanamayanMediaItemsaktarması engellendi (#3199). - Yapılandırılmamış canlı yayınların (
liveConfiguration == UNSET)STREAM_TYPE_BUFFEREDolarak sıraya alınmasına neden olan hata düzeltildi (#3318).
- Test yardımcı programları:
DataSourceContractTestuygulamasını, başlık ve gövde içerenPOSTisteklerini destekleyecek şekilde genişletin,HttpDataSourceTestEnvuygulamasına bazıPOSTkaynakları ekleyin veWebServerDispatcheruygulamasında beklenen HTTP yöntemi, başlıkları ve gövdesi için onaylar ekleyin.DataSource.open()tarafından döndürülen uzunluklar içinDataSourceContractTestiçindeki onayları sıkılaştırın.C.LENGTH_UNSETile sonuçlanabilecek kaynaklar, bunuTestResource.Builder.setMayResolveToUnknownLength(boolean)kullanarak belirtmelidir.setPlaybackLooperöğesiniTestExoPlayerBuilderadlı listeye ekleyin.
- Desteği sonlandırılan simgeleri kaldırın:
androidx.media3.exoplayer.MetadataRetrieveröğesini kaldır Bunun yerineandroidx.media3.inspector.MetadataRetrieverkullanın.androidx.media3.exoplayer.MediaExtractorCompatöğesini kaldır Bunun yerineandroidx.media3.inspector.MediaExtractorCompatkullanın.Mp4Extractor.FLAG_READ_MOTION_PHOTO_METADATAöğesini kaldır Bunun yerine HEIC dosyalarından hareketli fotoğraf meta verilerini ayıklamak içinHeifExtractorkullanın.androidx.media3.extractor.metadata.mp4.MotionPhotoMetadataöğesini kaldır Bunun yerineandroidx.media3.extractor.metadata.MotionPhotoMetadatakullanın.androidx.media3.extractor.DummyTrackOutputöğesini kaldır Bunun yerineandroidx.media3.extractor.DiscardingTrackOutputkullanın.androidx.media3.extractor.DummyExtractorOutputöğesini kaldır Bunun yerineandroidx.media3.extractor.NoOpExtractorOutputkullanın.androidx.media3.common.C.generateAudioSessionIdV21öğesini kaldır Bunun yerineandroidx.media3.common.util.Util.generateAudioSessionIdkullanın.
- Oluşturma
- Gradle Bileşik Derlemeleri'ni (
includeBuild) kullanmak için Media3'e yerel olarak bağlı olma ile ilgiliREADME.mdtalimatları güncellendi.core_settings.gradlekomut dosyası kaldırıldı veandroidxMediaModulePrefixileandroidxMediaEnableMidiModuleözellikleri artık kullanılmıyor.
- Gradle Bileşik Derlemeleri'ni (
1.11.0-rc01
1.11.0 kararlı sürümünü kullanın.
1.11.0-beta01
7 Temmuz 2026
1.11.0 kararlı sürümünü kullanın.
1.11.0-alpha01
24 Haziran 2026
1.11.0 kararlı sürümünü kullanın.
Sürüm 1.10.0
1.10.1
12 Mayıs 2026
- Ortak kitaplık:
SimpleBasePlayerveForwardingSimpleBasePlayeriçindeonAudioSessionIdChangedişleme sorununu düzeltin.
- ExoPlayer:
- Tünel moduyla
IllegalStateExceptionsorununa yol açabilecek, ses oturumu kimliği oluşturmayla ilgili yarışma durumunu düzeltme (#3099). - Oluşturucu ön ısıtma ile kod çözücü hatalarından kurtarılırken olası uygulama kilitlenmeleri düzeltildi.
- AV1 tabanlı Dolby Vision codec kullanılırken başlatma verileri sağlanmasından kaynaklanan video kusurları sorunu düzeltildi (#3153).
- Tünel moduyla
- Parça seçimi:
- Yedek MIME türlerini çözmek için
VideoTrackInfoöğesindeki parça seçimi mantığını ayarlayın ve HDR ile codec puanı tercihlerini kalite tercihlerine taşıyın (#3135).
- Yedek MIME türlerini çözmek için
- Ayıklayıcılar:
- MP3: Xing veri uzunluğu, bilinen akış uzunluğundan daha uzunsa yoksayılır (#3117).
FLAG_OMIT_TRACK_SAMPLE_TABLEayarlandığında ve parçada senkronizasyon örneği (stss) kutusu olmadığındaMp4ExtractoriçindekiArrayIndexOutOfBoundsExceptiondüzeltildi.
- Ses:
- Oynatıcıya birden fazla ses oluşturucu eklendiğinde ses etkinliklerinin yanlış yönlendirilmesine neden olan hata düzeltildi.
- Video:
- Faydalı olmayan codec sıfırlamalarını önlemek için 30'un altındaki API'de kare hızı değişikliklerinde codec'in yeniden kullanımıyla ilgili mantık ayarlandı (#3120).
- API 31 ve sonraki sürümler için
queueSecureInputBufferuygulamasında zorunlu senkronizasyon geçici çözümünü devre dışı bırakın. Geçici çözüm, şifre çözme işlemini sırayla çalışmaya zorlayan yapay bir darboğazdı. Bu, API 31'den önce mevcut olan bir çerçeve sorunu nedeniyle videonun bozulmasını önlüyordu.
- Resim:
- Görüntü güncellemelerinin yalnızca kullanıcı "kaydırmayı durdurduğunda" geçerli olduğu kaydırma modundaki sorun düzeltildi (#2815).
- Oturum:
- Uygulama iş parçacığının ana iş parçacığı olmadığı durumlarda
ForegroundServiceStartNotAllowedExceptionöğesinin iş parçacığı sınırları boyunca yayılmamasıyla ilgili hata düzeltildi (#2499). - Diğer öğelere geçişi destekleyen ancak oynatma listesi değişikliklerini desteklemeyen, yalnızca platforma özel bir oturuma bağlanırken
COMMAND_SEEK_TO_MEDIA_ITEMöğesininMediaControlleriçinde kullanılamamasına neden olan hata düzeltildi. MediaController,PREPARE_FROMişlemlerine izin vermeyen platform medya oturumlarında medya öğelerini ayarlayamıyor. Bu sorun düzeltildi.- Platform denetleyicileri üzerinden bağlanırken API 27 veya önceki sürümlerde kendi işleminin
Controller.isTrusted()ile işaretlenmemesine neden olan hata düzeltildi.
- Uygulama iş parçacığının ana iş parçacığı olmadığı durumlarda
- HLS uzantısı:
- Parça seçimi, mevcut parçaların bir alt kümesiyse akış yedeği sırasında
ArrayIndexOutOfBoundsExceptionhatasının oluşmasına neden olan hata düzeltildi (#3161). #EXT-X-MAPetiketi sonraki güncellemelerde tekrarlanmadığında, başlatma segmentinin medya oynatma listesi güncellemeleri arasında taşınmamasına neden olan sorun düzeltildi (#3105).
- Parça seçimi, mevcut parçaların bir alt kümesiyse akış yedeği sırasında
- DASH uzantısı:
- İptal edilmekte olan bir parçaya geçiş yaparken
SampleQueueuygulamasında oluşan kilitlenme düzeltildi.
- İptal edilmekte olan bir parçaya geçiş yaparken
1.10.0
26 Mart 2026
- Ortak kitaplık:
Player.mute()vePlayer.unmute()sürümleriniUnstableApikanalından kararlı kanala yükseltin.Format.pcmEncodingveC.PcmEncodingsürümleriniUnstableApikanalından kararlı kanala yükseltin.- Yerleştirilmiş
Formatörneklerinin birincil grubunu tanımlamak içinFormat.primaryTrackGroupIdekleyin (#294).
- ExoPlayer:
AdsMediaSourceiçin klip oluşturma özelliklerini ekleyin.- Zamanlama işini ve CPU uyanma döngülerini video karelerinin işlenebileceği zamanla daha iyi uyumlu hale getirmek için
MediaCodecVideoRendereruygulamasında dinamik zamanlama desteği ekleyin. Bu özelliğiDefaultRenderersFactorybölümündekiexperimentalSetEnableMediaCodecVideoRendererDurationToProgressUs()seçeneğini kullanarak etkinleştirebilirsiniz. DefaultPreloadManager.Builderiçinde özelDataSource.Factoryayarlanmasına izin ver.- Bazı varsayılan sabitleri
ExoPlayer.Buildersınıfına taşıyarakExoPlayersınıfının Robolectric olmadan taklit edilmesine izin verin. Bu karmaşık arayüzün taklit edilmesi genellikle önerilmez. Yalnızca kullanımın minimum/basit/tesadüfi olduğu durumlarda önerilir (#2985).- Bu nedenle,
DEFAULT_STUCK_PLAYING_DETECTION_TIMEOUT_MSExoPlayer'denExoPlayer.Builder'ye taşındı (desteği sonlandırılmadan).
- Bu nedenle,
ProgressiveMediaSourceöğesinin oynatıcıya güncel olmayan zaman çizelgesi bilgilerini yaymasına ve sıraya alınan dönemlerin beklenmedik şekilde kaldırılmasına neden olan bir hata düzeltildi (#3016).- Telefon aramaları sırasında oynatma istendiğinde ExoPlayer'ın gecikmeli ses odağı istememesiyle ilgili sorun düzeltildi.
- Seç-izle içerikten canlı içeriğe geçişlerin, seç-izle içeriğin sonunda yeniden arabelleğe almaya neden olabileceği hata düzeltildi (#3052).
- Dolby Vision Profile 10 için destek eklendi (#2830).
- Başlatılmamış bir videodan önce gösterilen reklamın bir
ArrayIndexOutOfBoundsException(#3125) oluşturmasına neden olan hata düzeltildi.
- CompositionPlayer:
EditedMediaItem.removeVideoiçin destek ekleyin.
- Transformer:
EditedMediaItem.Builder.setFrameRate()artık video için maksimum çıkış kare hızı ayarlayabilir. Bu, özelliklesetSpeed()ile medya hızını artırırken faydalıdır.
- Parça seçimi:
DefaultTrackSelector.selectAllTracksimzasını, çıkış dizisini parametre olarak içerecek şekilde değiştirin. Bu parametre, parça geçersiz kılmalarıyla önceden doldurulur.- İlgili birincil parçanın seçilip seçilmediğine bakılmaksızın yerleşik meta veri parçalarının seçilmesi sorunu düzeltildi (#294).
preferredVideoLanguages,preferredVideoLabels,preferredAudioLabels,preferredTextLabelsveselectTextByDefaultiçinTrackSelectionParametersseçeneklerini sabitleyin.
- Ayıklayıcılar:
- MP4:
moovgibi diğer kutulardan önce büyükuuidkutuları olan dosyalar desteklenir (#3046). - MP4: MP4 kapsayıcılarında Çok Yönlü Video Kodlama (VVC) parçaları için destek eklendi.
- MP4:
- Müfettiş:
- Zarar veren değişiklik:
FrameExtractorkaldırıldı. Kullanıcıların artık yeni:media3-inspector-framemodülünü kullanması ve içe aktarma işlemleriniandroidx.media3.inspector.frame.FrameExtractorolarak güncellemesi gerekir. - Kodu çözülmüş video karelerini ayıklamak ve işlemek için yeni bir modül ekleyin.
- Zarar veren değişiklik:
- Ses:
- IAMF kod çözücü uzantısının temel kod çözme kitaplığı
libiamfyerineiamf_toolsolarak değiştirildi. - IAMF kod çözme, kod çözücü (IAMF kod çözücü uzantısı kullanılırken) veya Android Spatializer aracılığıyla binaural çıkışı destekler.
- Otomotiv senaryolarında AC-4 kod çözücü desteği değerlendirilirken
AC4Profile22ve diğer eski profiller için destek doğru şekilde kaldırıldı (#2609). DefaultAudioSinkiçindeAudioOutputbaşlatma işleminin yeniden deneme mantığı iyileştirildi (#2905).- IAMF'nin kodunu çözerken hoparlörlerin çıkış düzenini (veya varsa Spatializer'ı) eşleştirmeye çalışın. Bu işlem, AudioCapabilities ve AudioCapabilitiesReceiver'daki yeni alanlar ve mantık tarafından desteklenen IAMF uzantısı ve medya codec kod çözücüleri ile yapılır.
- Sıkıştırılmış boşaltma modunda kesintisiz ses oynatma listesi oynatılırken oynatmanın takılmasına neden olan hata düzeltildi.
- IAMF kod çözücü uzantısının temel kod çözme kitaplığı
- Metin:
- VobSub: Her zaman varsayılan olarak 5 saniye kullanmak yerine, işaret süresini türetmek için
STARTveSTOPSPU kontrol komutlarını kullanın (#2935).
- VobSub: Her zaman varsayılan olarak 5 saniye kullanmak yerine, işaret süresini türetmek için
- Meta veriler:
- HLS varyantları ve yorumları tarafından yayınlanan tüm potansiyel meta veri parçalarını kapsayacak şekilde meta veri oluşturucuların varsayılan sayısını dörde çıkarın (#3043).
- Etki:
LottieOverlay, yeni bir:media3-effect-lottiemodülüne taşındı (bu işlem sırasındaandroidx.media3.effect.LottieOverlayolan adıandroidx.media3.effect.lottie.LottieOverlayolarak değiştirildi).
- Efekt Lottie:
- Lottie efektlerini video karelerine uygulama işlevi sunan yeni bir
:media3-effect-lottiemodülü kullanıma sunuldu.
- Lottie efektlerini video karelerine uygulama işlevi sunan yeni bir
- IMA uzantısı:
- En yeni reklam medya bilgileri API'sine erişmek için IMA SDK sürümünü 3.39.0'a güncelleyin.
- Reklam MIME türünün, IMA LOADED etkinliğinde sağlanan MIME türüyle eşleşmemesine neden olan hata düzeltildi. Düzeltme, artık IMA tarafından sağlanan reklam medya bilgilerini kullanarak reklam MIME türünü eşler.
setEnableCustomTabs,ImaAdsLoaderveImaServerSideAdInsertionMediaSource'ye eklendi. Böylece kullanıcılar, reklam tıklama URL'lerinin özel sekmeler kullanılarak başlatılıp başlatılmayacağını kontrol edebilir.adTagUrioluşturmak için alternatif bir yöntem sunanImaAdTagUriBuildersınıfını ekleyin.setPreferredLinearOrientationAPI'sini içerir. Bu, doğrusal reklamlar için tercih ettiğiniz yönü ayarlamanıza olanak tanıyan, alfa testindeki bir API'dir. Alfa test grubuna katılmak istiyorsanız lütfen hesap iş ortağınızla iletişime geçin.
- Oturum:
MediaMetadata.artworkDataiçindeki büyük dizilerin uygulamayı kilitlediği bir hata düzeltildi.ActionFactoryarayüzündeki@Player.Commandbağımsız değişkeni için int türünü kullanın (#2933).MediaSessionServiceveMediaLibraryService'yiLifecycleServiceyaparak yaşam döngüsüne duyarlı işlemleri hizmetin yaşam döngüsüne eklemeye olanak tanır (#187).- Yerel oynatmalarda
MediaControllerveMediaBrowsercihaz ses düzeyi değiştirme komutlarını desteklemeyi bırakın. Uygulamalar yerel cihaz ses düzeyini değiştirmemelidir. Gerekirse bu amaçlaAudioManagerAPI'lerini kullanabilirler. - Hizmeti ön plan hizmeti olarak başlatan eski
Intentörneklerini tespit edin. Bu sayede sisteminForegroundServiceDidNotStartInTimeExceptionhatası vermesi önlenir. Bu, yeni bir zorunlu yöntem olduğundan özelMediaNotification.Provideruygulayan uygulamalar için kararsız bir API'de zarar veren bir değişikliktir. - Ana ekran widget'larıyla kullanılacak
PendingIntentörnekleri için oluşturucular ekleyin (#2933). - Oluşturma tabanlı ana ekran widget'ları için
Intentörnekleri oluşturmak üzere statik yöntemler ekleyin (#2933). - Oynatma, belirli bir medya öğesi dizininden aynı medya öğesine sahip başka bir dizine "AUTO" ve "SEEK" süreksizlik nedeniyle geçiş yaptığında medya öğesi geçişinin denetleyicilere bildirilmemesine neden olan hata düzeltildi (#2997).
- Sistem kullanıcı arayüzü düğme yerleşimiyle ilgili geçici çözümün, Android Auto gibi diğer kullanıcı arayüzü yüzeylerini veya geçici çözüme ihtiyaç duymayan üreticileri olumsuz etkilemesi sorunu düzeltildi (#3041).
- Aboneliklere erişimin senkronize edilmemesiyle ilgili sorun düzeltildi (#3056).
- API 29'da, belirli bir boyuttaki medya oturumu resminin SysUI'yi kilitlediği ve cihazı yeniden başlatmaya zorladığı SysUI hatası için geçici çözüm (#3118).
- Android Q'da bildirim resmi simge ölçeklendirmesi düzeltildi (#3084).
- Kullanıcı arayüzü:
- Oynatma hızını görüntülemek ve değiştirmek için
media3-ui-composedosyasınaPlaybackSpeedControlComposable'ı ekleyin. - Oynatma hızını kontrol etmek için
media3-ui-compose-material3dosyasınaPlaybackSpeedToggleButtonComposable'ı ekleyin. - Oyuncunun ilerleme durumunu göstermek ve sürükleyip dokunarak arama yapmak için
ProgressSliderComposable'ımedia3-ui-compose-material3öğesine ekleyin (#2288). - PlayerControlView animasyonunda büyük ekran dışı arabellekten kaçının.
media3-ui-compose-material3öğesinePlayerComposable ekleyin. Bu,ContentFrameöğesini üst, orta ve alt kısımlara hizalanmış özelleştirilebilir kontrollerle birleştirir.PlayerControlViewgörünür durumdayken sürekli duyuru güncellemesini önlemek için oynatma konumunu erişilebilirlik hizmetinden gizleyin.
- Oynatma hızını görüntülemek ve değiştirmek için
- HLS uzantısı:
- HLS etkileşimli reklamlarla X-PLAYOUT-LIMIT desteği (#2484).
QUERYPARAMözelliğini#EXT-X-DEFINEile destekleyin (#1854).- Normal ifade eşleştiricileri önbelleğe alarak HLS oynatma listesi ayrıştırmayı optimize etme (#3008).
- Ses yorumlarında ID3 (EMSG) meta veri parçasını gösterme (#3043).
- Yükleme hatalarıyla karşılaşıldığında, farklı konumlardan yedek akışlar varsa konum yedeklemesine izin verilir (#1988).
- Başlangıç ve devam konumunu doğru hesaplamak için HLS ara reklamlarında X-SNAP davranışını düzeltme (#3013).
- DASH uzantısı:
- RTSP uzantısı:
- H.264 ve H.265 akışında, birden fazla RTP paketini kapsayan aynı erişim biriminin örneklerini yanlış ayrıştıran gerileme düzeltildi. Bu durum, videoda görsel kusurlara ve bozulmalara neden oluyordu (#3121).
- Kod çözücü uzantıları (FFmpeg, VP9, AV1 vb.):
- MPEG-H kod çözücü uzantısına MPEG-H kullanıcı arayüzü yöneticisi desteği eklendi (#3066).
- Yayınlama uzantısı:
- Yayın oynatmaları için parça seçiminin uygulanmasını sağlayan
RemoteCastPlayer.Builder#setTrackSelectoryöntemi eklendi.
- Yayın oynatmaları için parça seçiminin uygulanmasını sağlayan
- Desteği sonlandırılan simgeleri kaldırın:
ExperimentalFrameExtractoröğesini kaldır Bunun yerineandroidx.media3.inspector.frame.FrameExtractorkullanın.ChannelMixingMatrix.create()öğesini kaldır Bunun yerineChannelMixingMatrix.createForConstantGain()kullanın.androidx.media3.extractor.metadata.flac.VorbisCommentöğesini kaldır Bunun yerineandroidx.media3.extractor.metadata.vorbis.VorbisCommentkullanın.MediaSource.prepareSource(MediaSourceCaller, TransferListener)öğesini kaldır Bunun yerineMediaSource.prepareSource(MediaSourceCaller, TransferListener, PlayerId)politikasını kullanın.
1.10.0-rc03
25 Mart 2026
1.10.0 kararlı sürümünü kullanın.
1.10.0-rc02
16 Mart 2026
1.10.0 kararlı sürümünü kullanın.
1.10.0-rc01
10 Mart 2026
1.10.0 kararlı sürümünü kullanın.
1.10.0-beta01
25 Şubat 2026
1.10.0 kararlı sürümünü kullanın.
1.10.0-alpha01
6 Şubat 2026
1.10.0 kararlı sürümünü kullanın.
Sürüm 1.9.0
1.9.4
16 Mayıs 2026
1.9.4 sürümü aşağıdaki kayıtları içerir.
- Etki:
- Yüzey içermeyen bağlamdan geçiş yaparken
GL_DRAW_BUFFERveGL_READ_BUFFERdeğerlerini açıkça ayarlayın.
- Yüzey içermeyen bağlamdan geçiş yaparken
1.9.3
16 Mart 2026
1.9.3 sürümü aşağıdaki kayıtları içerir.
- Ses:
- Sıkıştırılmış boşaltma modunda kesintisiz ses oynatma listesi oynatılırken oynatmanın takılmasına neden olan hata düzeltildi.
1.9.2
6 Şubat 2026
1.9.2 sürümü aşağıdaki kayıtları içerir.
- ExoPlayer:
ProgressiveMediaSourceöğesinin güncel olmayan zaman çizelgesi bilgilerini oynatıcıya yaymasına ve sıraya alınan dönemlerin beklenmedik şekilde kaldırılmasına neden olan hata düzeltildi (#3016).
- Oturum:
- Sistem kullanıcı arayüzü düğme yerleşimiyle ilgili geçici çözümün, Android Auto gibi diğer kullanıcı arayüzü yüzeylerini veya geçici çözüme ihtiyaç duymayan üreticileri olumsuz etkilemesi sorunu düzeltildi (#3041).
- Yayınlama uzantısı:
- Yayınlama'dan yerel oynatmaya aktarımın bozulmasına neden olan hata düzeltildi.
1.9.1
26 Ocak 2026
1.9.1 sürümü bu commit'leri içerir.
- Ortak Kitaplık:
- Saat dilimi farkında yalnızca saat içeren tarih-saat dizeleri desteklenir (#2929).
- ExoPlayer:
- Oynatmanın başında daha sorunsuz ses/video senkronizasyonu sağlamak için dinamik planlamanın yalnızca ses başladıktan sonra
doSomeWorkaralığını yavaşlatmasına izin verin. DefaultLoadErrorHandlingPolicyiçindeFileNotFoundExceptionve benzer istisna türlerinin birden çok kez yeniden denendiği hata düzeltildi.- Dinamik planlamada, bir sonraki
doSomeWorkiçin hesaplanan sürenin, mevcutdoSomeWorkiterasyonunun geçen süresi kadar yanlışlıkla azaltılmasına neden olan hata düzeltildi. Bu sorunun giderilmesi, CPU'nun boşta kalma süresini uzatır ve güç tasarrufu sağlar. - Yedek AVC veya HEVC codec'i kullanılmaya çalışılırken bazı Dolby Vision dosyalarının oynatılamaması sorunu düzeltildi.
- Oynatılmakta olan öğe oynatma listesinden kaldırıldığında oynatma sona erdikten sonra yüklemenin devam etmesi hatası düzeltildi (#2873).
- Aynı öğe üzerinde
ExoPlayer.replaceMediaItemyöntemini tekrar tekrar kullanırkenMediaItemörneklerinin sızdırılmasını önleyin (#2993). - Acil durum uyanık kalma kilidi serbest bırakmalarının neden olduğu olası ANR'leri önleme (#2979).
- Oynatmanın başında daha sorunsuz ses/video senkronizasyonu sağlamak için dinamik planlamanın yalnızca ses başladıktan sonra
- Ayıklayıcılar:
- MP3: LAME ReplayGain verilerini ayrıştırma (#2840).
- Ses:
- Otomotiv senaryolarında AC-4 kod çözücü desteği değerlendirilirken
AC4Profile22ve diğer eski profiller için destek doğru şekilde kaldırıldı (#2609).
- Otomotiv senaryolarında AC-4 kod çözücü desteği değerlendirilirken
- Video:
- İçerik kare hızı değiştiğinde takılma olmadan oynatmak için API 30'un altındaki cihazlarda video codec'lerini silme (#2941).
- Metin:
- VobSub: Yalnızca tek bir kontrol dizisi içeren veya kritik bilgileri birden fazla kontrol dizisine bölünmüş SPU'ları doğru şekilde işleyerek bazı eksik altyazıları düzeltme (#2935).
- IMA uzantısı:
- Hata düzeltmesi: Reklam MIME türünün, IMA LOADED etkinliğinde sağlanan MIME türüyle eşleşmemesine neden olan sorun düzeltildi. Düzeltme, artık reklam kapsülü dizini ve reklam konumunu kullanarak reklam MIME türünü eşler.
getAdsManager()veAdEvent.getAd()sonuçlarına erişmeden önce null kontrolü ekleyin.
- Oturum:
- Reklam oynatma sırasında durdurma işlemi gerçekleştiğinde platform oturumuna bağlı bir
MediaControllerdurdurulursa 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ıflardakiextrasBundleörneklerine ek doğrulamalar ekleyin. COMMAND_SEEK_NEXTveyaCOMMAND_SEEK_BACKiçin eksik komutların sistem medya bildiriminde boşluklara neden olabileceği sorun düzeltildi (#2976).- Bildirim simgesi için bit eşlem ölçeklendirmesini ana iş parçacığından taşıma (#2829).
- Eski
MediaMetadataCompatveMediaDescriptionCompatbiçimlerinden dönüştürme yapılırken yazar, yazar ve besteci bilgilerinin yedek olarak kullanılmamasıyla ilgili hata düzeltildi (#3018).
- Reklam oynatma sırasında durdurma işlemi gerçekleştiğinde platform oturumuna bağlı bir
- İndirilenler:
SegmentDownloadertarafından birPriorityTooLowExceptionişlenirken oluşabilecek sonsuz döngüleri düzeltin (DASH, HLS ve SmoothStreaming için). Korumalıexecuteyöntemini kullananSegmentDownloaderözel geçersiz kılma işlemlerinin, yeniden oluşturulabilmesi için görevleriniSupplieriçinde sarmalanmış olarak sağlaması gerekir (#2931).
- HLS uzantısı:
- Ham öğe listesi JSON dokümanını
Listener.onAssetListLoadCompletedgeri çağırma işlevine iletin. Bu, kararsız bir API'de zarar veren bir değişikliktir. Bu geri çağırmayı uygulayan uygulamalarınJSONObjecttüründe ek bir bağımsız değişken eklemesi gerekir (#2950).
- Ham öğe listesi JSON dokümanını
- RTSP uzantısı:
- Zaman damgaları sarmalanan RTP paketlerini doğru şekilde işleme (#2930).
- Kod çözücü uzantıları (FFmpeg, VP9, AV1 vb.):
- İlk video karesi işlenmeden önce arama yapıldığında ortaya çıkabilecek olası
NullPointerExceptiondüzeltildi (#2965).
- İlk video karesi işlenmeden önce arama yapıldığında ortaya çıkabilecek olası
- Yayınlama uzantısı:
- Oynatma listesi değiştirilirken
RemoteCastPlayerzaman çizelgesinin doğru şekilde güncellenmesini engelleyen hata düzeltildi.
- Oynatma listesi değiştirilirken
1.9.0
17 Aralık 2025
- Ortak Kitaplık:
minSdk, diğer AndroidX kitaplıklarıyla uyumlu olacak şekilde23sürümüne güncellendi.- Oynatma durumunun
Playerörnekleri arasında aktarılmasını kolaylaştıranPlayerTransferStateeklendi. - Player'a, Player'ın ses düzeyini sıfıra ayarlamadan önce ve sonra koruyan ve ardından geri yükleyen
void mute()vevoid unmute()yöntemlerini ekleyin. - Daha önce
ExoPlayertarafından dahili olarak kullanılanWakeLockManager,WifiLockManager,AudioFocusManager,AudioBecomingNoisyManagerveStuckPlayerDetectoryardımcı sınıflarını diğer oynatıcıların yeniden kullanabilmesi için yayınlayın (#1893). - Temel temsilci oynatıcı, dinleyici örneklerini karşılaştırmak için referans eşitliğini kullandığında
ForwardingPlayerdinleyici işleme sorunu düzeltildi (#2675). media3-common-ktxkitaplığına, üzerinde işlem yapılması gereken belirliPlayer.Eventsdeğerini belirten birPlayer.listenToaskıya alma uzantısı işlevi ekleyin.- Bildirilen arabelleğe alınmış konum, bildirilen süreden mantıksız bir şekilde çok daha büyük olduğunda tam sayı taşmasından kaynaklanan
BasePlayer.getBufferedPercentagekilitlenmesi düzeltildi (#2750). - Özel örnek MIME türünü yok saymayarak ve kapsayıcı MIME türünden potansiyel olarak yanlış parça türünü kullanmaya geri dönerek
TrackGroupparça türünün otomatik algılanmasını düzeltme (#2860).
- ExoPlayer:
- Oynatıcı takılı kalmış gibi görünüyorsa
StuckPlayerExceptionoynatıcı hatasını tetikleyen bir takılı kalan oynatıcı algılama özelliği ekleyin. Bu durum, aşağıdaki durumlarda ortaya çıkar. Her bir varsayılan zaman aşımı, gerekirseExoPlayer.Builderüzerinden yapılandırılabilir:- Oynatılmaya çalışılırken 10 dakika boyunca
STATE_BUFFERINGve arabelleğe alma işlemi gerçekleşmedi. - Oynatılmaya çalışılırken 10 saniye boyunca
STATE_READYve oynatma ilerlemesi yok. - Öğenin sonuna ulaşmadan, beyan edilen sürenin 1 dakika sonrasında
STATE_READY. - Oynatmayı denerken 10 dakika boyunca oynatma engelleme nedeni gösterildikten sonra.
- Oynatılmaya çalışılırken 10 dakika boyunca
- Arka planda oynatma sırasında arabelleğe alma sorunlarını düzeltmek için uyanık kalma kilidi işlemeyi varsayılan olarak etkinleştirin. Bu,
ExoPlayer.Builder.setWakeModedeğeriniC.WAKE_MODE_LOCALolarak ayarlamakla eşdeğerdir. ExoPlayer.Builderöğesine ilk olarak iletilenContextöğesine bir değişiklik bildirildiğinde sanal cihaz kimliğini otomatik olarak güncelleyecek dinleme mantığı ekleyin.ExoPlayer.Builderöğesine iletilenContextöğesinden alınan sanal cihaz kimliğini manuel olarak güncellemek içinExoPlayer.setVirtualDeviceIdöğesini ekleyin.- Oluşturucuların, oynatma listesindeki bir sonraki öğenin verilerini mevcut öğenin bitişinden en fazla 10 saniye önce kullanmasını sağlayın.
- Oluşturma işleminden sonra bu ayarları güncellemek için
ExoPlayeröğesinesetSeekBackIncrementMs,setSeekForwardIncrementMsvesetMaxSeekToPreviousPositionMsekleyin (#2736). DefaultPreloadManageruygulamasında önden belleğe alma işlevi ekleyin. Uygulamalar artık bir medya öğesinin önceden önbelleğe alınması gerektiğini belirtmek içinTargetPreloadStatusControl.getTargetPreloadStatus(T rankingData)aracılığıylaDefaultPreloadManager.PreloadStatus.specifiedRangeCached(startPositionMs, durationMs)veyaDefaultPreloadManager.PreloadStatus.specifiedRangeCached(durationMs)döndürebilir.- Kısa video demo uygulamasında
DefaultPreloadManagerönden belleğe alma işlevini kullanın. - Yerel oynatma için
DefaultLoadControl.Builderayarlayıcıları ekleyin veDefaultLoadControlvarsayılan değerlerini çok çeşitli yerel dosyalarla iyi çalışacak şekilde ayarlayın. - Boş bir oynatma listesi ayarlandığında oynatıcının
STATE_READYveyaSTATE_BUFFERINGdurumunda kalmasına neden olan hata düzeltildi. - Ön yükleme yöneticisi API'lerini iyileştirme:
- Medya öğelerini veya medya kaynaklarını toplu olarak ekleyen ve ardından otomatik olarak
invalidate()yöntemini çağıranaddMediaItems(List<MediaItem>, List<T>)veaddMediaSources(List<MediaSource>, List<T>)yöntemlerini ekleyin. - Medya öğelerini veya medya kaynaklarını toplu olarak kaldıran
removeMediaItems((List<MediaItem>)veremoveMediaSources(List<MediaSource>)yöntemlerini ekleyin ve önceden yükleme yöneticisinin, kaldırma işleminden sonra bunlardan herhangi birini önceden yüklemeye başlamadığından veya önceden yüklemeye devam etmediğinden emin olun. DefaultPreloadManager.setCurrentPlayingIndex(int)uygulamasının kendisini otomatik olarak geçersiz kılmasına izin verin. Uygulamaların, mevcut oynatma dizinini güncelledikten sonra artıkinvalidate()yöntemini açıkça çağırması gerekmez.
- Medya öğelerini veya medya kaynaklarını toplu olarak ekleyen ve ardından otomatik olarak
- Sarma modundayken aynı resim grubu içinde ileriye doğru arama yapıldığında ana kare sıfırlama işlemini atlama özelliği eklendi.
- Uygulamaların, belirtilen
playerNamedeğerine sahip bir oynatıcı için hedef arabellek bayt değeri ayarlaması amacıylaDefaultLoadControl.Builder.setPlayerTargetBufferBytes(String, int)ekleyin.DefaultLoadControlartık her oyuncunun kararlarını, ayrılan baytlarına ve hedef arabellek baytlarına göre ayrı ayrı verebilir. - Reklam grubundaki her reklam için atlama bilgilerini taşımak üzere
AdPlaybackState.AdGroupöğesineSkipInfoekleyin. - Videodan sonra gösterilen reklam oynatılırken
removeMediaItems(List)çağrıldığında kilitlenmeye neden olan hata düzeltildi (#2746). - Oynatma listesi oynatılırken karelerin yanlışlıkla her zaman son örnek olarak ayarlanıp oluşturulması nedeniyle yaşanan takılma sorunları düzeltildi.
- Oynatıcı, ses oturumu kimliği oluşturamazsa yeniden deneme yolunu etkinleştirme (#2382, #2678).
- Önceden yükleme için toplam arabellek baytlarının rastgele artmasını önlemek amacıyla
DefaultPreloadManageriçindeki kaynakların toplam arabellek baytlarını kontrol etme desteği ekleyin. Uygulamalar, varsayılan kontrol mantığını kullanmak içinDefaultLoadControl.Builder.setPlayerTargetBufferBytes(String, int)aracılığıylaPlayerId.Preload.name("preload")playerNameiçin önceden yükleme hedef arabellek baytlarını ayarlayabilir ve oluşturulanDefaultLoadControlöğesiniDefaultPreloadManager.Builder.setLoadControl(LoadControl)aracılığıyla ekleyebilir. - Varsayılan bir uygulama ile
ShuffleOrderöğesinecloneAndSet(int, int)eklendi (#2834). - Arama ayarı veya otomatik geçişten sonra reklam oynatmayı atlarken içerik devam ettirme ofsetini ekleme (#2484).
- Ses ve video parçaları için codec parametrelerini ayarlamak ve gözlemlemek üzere API ekleyin.
Bu özellik,
MediaCodectabanlı oluşturucular için uygulanır ve API 29 veya sonraki sürümleri gerektirir.- Parametreleri uygulamak için
ExoPlayer.setAudioCodecParameters()veExoPlayer.setVideoCodecParameters()tuşlarını kullanın. - Değişiklikleri dinlemek için
ExoPlayer.addAudioCodecParametersChangeListener()veExoPlayer.addVideoCodecParametersChangeListener()kullanın. Tedarikçiye özel anahtarları gözlemlemek için API 31 veya sonraki bir sürüm gerekir.
- Parametreleri uygulamak için
- Sıfır olmayan bir konuma gittikten sonra boş bir medya kaynağı ayarlayıp oynatıcıyı boş olmayan bir medya kaynağıyla hazırlamanın neden olduğu
IllegalStateExceptionhatası düzeltildi. - Sarma modundayken diğer medya öğelerine geçiş yapmanın
IllegalStateExceptionhatasına neden olabileceği hata düzeltildi. DefaultPlaybackSessionManageriçinde olasıNullPointerExceptiondüzeltildi (#2885).- Uygun videolarda ileri/geri sarma performansını iyileştirme
- Bu platform API'siyle ilgili zaman aşımı sorunlarının düzeltildiği API 36 ve sonraki sürümlerde MediaCodec'te eşzamansız şifre çözme kullanımını yeniden etkinleştirme (#1641).
MediaCodecVideoRenderer.experimentalSetLateThresholdToDropDecoderInputUsiçin varsayılan değeri 15 ms olarak değiştirin ve uygun videolar için kod çözme işleminden önce video karelerinin daha verimli bir şekilde bırakılmasını etkinleştirin.DefaultLoadControluygulamasındaki otomatik bellek hesaplamasına maksimum bellek sınırı ekleyin. Bu, yalnızca aşırı sayıda parça seçildiğinde geçerli olmalıdır (#2860).- Oynatma listesinde veya tekrar modunda oynatılırken, sonuna yakın bir yerde kaydırma modunda arama yapıldığında bir sonraki medya öğesine geçilmesine neden olan hata düzeltildi.
- Oynatıcı takılı kalmış gibi görünüyorsa
- CompositionPlayer:
CompositionPlayer, yeni bir@ExperimentalApiek açıklamasıyla yayınlanarak denemeye hazır olduğu ancak geliştirme aşamasında olduğu belirtilir. Bazı API'ler gelecekteki sürümlerde önemli ölçüde değişebilir. Ayrıca bazı kullanım alanlarıyla ilgili bilinen sorunlar ve sınırlamalar vardır (bazıları belgelenmemiştir).CompositionPlayeruygulamasındaCOMMAND_SET_AUDIO_ATTRIBUTESve ses odağı işleme desteği ekleyin.CompositionPlayeruygulamasında ikincil dizilerde hız değiştirme desteği ekleyin.EditedMediaItem.removeVideoiçin destek ekleyin.
- Transformer:
- Varsayılan muxer olarak
InAppMp4Muxerkullanın. EditedMediaItem.Builder#setSpeed()ekleyin veEffects#createExperimentalSpeedChangingEffects()yönteminin desteğini sonlandırın.EditedMediaItemSequenceiçindeforceAudioTrackveforceVideoTrackyerinetrackTypeskullanın.
- Varsayılan muxer olarak
- Kanal seçimi:
- Daha spesifik başka tercihler belirtmeden herhangi bir metin parçasının seçilmesini tercih etmek için
TrackSelectionParameters.selectTextByDefaultekleyin. - Belirli bir etikete sahip parçalar (ör. HLS NAME etiketlerinden okunanlar) için tercih belirtmek üzere
TrackSelectionParametersiçindepreferredVideoLabels,preferredAudioLabelsvepreferredTextLabelsekleyin (#1666).
- Daha spesifik başka tercihler belirtmeden herhangi bir metin parçasının seçilmesini tercih etmek için
- Ayıklayıcılar:
- FLAC: Kodlanmış FLAC verilerinde sahte başlıklar bulma olasılığını azaltmak için başlık algılamayı sıkılaştırın. Bu, kod çözme hatalarına neden olur (#558).
- MP3: MP3 dosyalarının başındaki ID3 etiketleri arasında (ve öncesinde) boşluklara izin verilir (#811, #5718).
- MP3: Bir senkronizasyon baytı için mevcut arama sınırıyla eşleşecek şekilde koklama sınırını 128 kB'ye yükseltme (#2713).
- MP3:
FLAG_ENABLE_INDEX_SEEKING, mümkün olduğunda meta veri başlıklarından (Xing ve VBRI gibi) bilgi aramayı tercih edecek, başka arama bilgisi yoksa dizine dayalı aramaya geri dönecek şekilde değiştirildi. Bu, arama meta verileri içeren dosyaların performansını artırır (#2839). - MP3: Arama meta verileri (ör. Xing, VBRI) bulunamadığında,
FLAG_ENABLE_INDEX_SEEKINGayarlanmış olsa bileMp3Extractorvarsayılan olarak sabit bit hızı (CBR) varsayımına geçecek şekilde değiştirildi. Bu, CBR'nin standart olduğu ve VBR'nin açık başlıklar gerektirdiği MP3 spesifikasyon geçmişine dayanır. Bu, meta verileri olmayan dosyaların anında aranabilirliğini artırır ancak başlıkları olmayan VBR dosyalarının doğruluğunu etkileyebilir. CBR varsayımı aranabilir değilse (ör. bilinmeyen uzunluktaki akışlar için) artık yedek olarak dizin arama kullanılır (#2848). - MP4: Çıkarıcıdan bir parça biçimi yayınlamadan önce ilk örneğin katman değerine bakarak
audio/mpeg(MP3),audio/mpeg-L1veaudio/mpeg-L2MIME türleri arasındaki belirsizliği giderin (#2683). - MP4: 1 MB'tan büyük bir
stblkutusunun, dosyanın parçalara ayrılmamış olması gerektiği anlamına geldiğini varsayarak çok büyük dosyaların koklama verimliliğini artırın (#2650). - MP4:
©mvn(hareket adı) ve©mvi(hareket dizini) meta verileri için destek eklendi. Bunlar artıkFormat.metadataiçinde sırasıylaMVNMveMVINkimliklerine sahipTextInformationFramenesneleri olarak yayınlanıyor (#2754). - MP4:
stsdkutusu eksik olan parçaları yoksay (tüm dosyayı ayrıştırmada başarısız olmak yerine). - Matroska: DTS-HD algılama desteği eklendi (#6225).
MatroskaExtractoruygulamasında, birden fazla parça içeren dosyalarda arama işleminin hatalı olmasına neden olan sorun düzeltildi. İşaret noktaları artık ilgili parçalarla doğru şekilde ilişkilendiriliyor. Bu sayede daha hassas arama yapılabiliyor.- MPEG-TS: Zaman damgası olmayan PES paketlerinin neden olduğu
ReorderingBufferQueue'denIllegalArgumentExceptiondüzeltildi (#2764). - HEIC hareketli fotoğrafları ayıklama desteği eklendi.
HeifExtractorartık yerleşik video ve ses parçaları içeren HEIC dosyalarını ayrıştırabilir.
- Müfettiş:
- Medya denetleme yardımcı programları için özel bir ana sayfa olarak hizmet verecek yeni bir
:media3-inspectormodülü kullanıma sunuldu. Bu modülde artık hem meta veri hem de kare ayıklama için birleştirilmiş bir API sağlayan yeni birandroidx.media3.inspector.MetadataRetrieveryer alıyor. Mevcutandroidx.media3.exoplayer.MetadataRetriever, bu yeni sürümün kullanıma sunulmasıyla birlikte kullanımdan kaldırıldı. - Kare ayıklama için yeni bir herkese açık API olan
androidx.media3.inspector.FrameExtractorkullanıma sunuldu. BuAutoCloseablesınıfı, HDR video, video efektleri ve özel kod çözücü seçimi desteğiyle kareleri ayıklamanın bir yolunu sunar. Belirli birMediaItemiçinBuilderüzerinden oluşturulmalıdır. - FrameExtractor: Belirli bir zaman damgası gerekmeden bir medya dosyasından temsili küçük resim karesi çıkarmak için
getThumbnail()ekleyin. - Platformun
android.media.MediaExtractorsınıfının yerine kullanılabilen ve bir medya dosyasından ham, kodlanmış medya örneklerini ayıklamanın bir yolunu sunanandroidx.media3.inspector.MediaExtractorCompatsınıfını ekleyin. Mevcutandroidx.media3.exoplayer.MediaExtractorCompat, bu yeni sınıfın kullanıma sunulmasıyla birlikte kullanımdan kaldırıldı.
- Medya denetleme yardımcı programları için özel bir ana sayfa olarak hizmet verecek yeni bir
- Ses:
AudioProcessorörneklerini arama işleminden haberdar edin.- Özel ses çıkış yollarını desteklemek için yeni
AudioOutputProviderarayüzününDefaultAudioSink.Builderiçine eklenmesine izin verin. Varsayılan değerAudioTrackAudioOutputProviderşeklindedir. GainProcessoriçinde ileri/geri sarma işlemlerini yönetin.- Parça biçimi destek değerlendirmesinde AC-4 kod çözücü profili ve seviye özelliklerini kullanın (#2580).
- Oynatmanın başında yönlendirme değişikliği geri çağırmalarının işlenmesinden kaynaklanan olası gecikmeler önlendi (#2646).
- EAC3, EAC3-JOC ve AC-4 biçimleri için codec'in yeniden kullanılmasına izin verildi (#1346).
Soniciçinde kayan noktalı PCM örnekleri için destek ekleyin.ToFloatPcmAudioProcessoruygulamasında 16 bit PCM örnekleri için destek ekleyin.
- Video:
- Farklı profillere sahip Dolby-Vision içerikleri için codec'in yeniden kullanılmasını devre dışı bırakın.
- Güvenli codec'ler için yanlış bildirilen performans puanlarıyla ilgili geçici çözümü yeniden etkinleştirin (#2856).
- Metin:
- Dolby Vision içeriklerinde CEA-6/708 altyazılarının ayrıştırılmasıyla ilgili sorun düzeltildi (#2775).
- Resim:
- Oynatıcının bir DASH küçük resim parçasını tararken takılmasına neden olan ScrubbingMode sorunu düzeltildi (#2815).
- DRM:
MediaDrmCallbackyöntemlerinin dönüş türünübyte[]yerine yeni birMediaDrmCallback.Responsetürü olarak değiştirerek isteğe bağlı ek bilgilerin döndürülmesine izin verin. Bu, kaynakta zarar veren bir değişikliktir ancak öncekibyte[]dönüş değeri, döndürülmeden öncenew Responseile sarmalanarak sorunlar kolayca çözülebilir.- URL ve gecikme gibi önemli istek bilgilerini
AnalyticsListener.onDrmKeysLoaded(#1001) ekleyin. - Temel hazırlık isteği verilerini bir URL parametresinden POST gövdesine taşıyın.
- Etki:
Presentationtek bir kenar uzunluğuyla oluşturulduğunda ayarlanmamış çıkış tarafını yuvarlamak içinPresentation.copyWithUnsetSideRoundedToekleyin.
- Çoğullayıcılar:
MediaMuxerçerçevesinin yerine kullanılabilenMediaMuxerCompatkitaplığını ekleyin.- Hareketli fotoğraf oluşturulmasına izin vermek için
MuxerUtil.createMotionPhotoFromJpegImageAndBmffVideo()ekleyin. OPUS,VORBIS,VP8veVP9medya akışlarınınwebmdosya biçiminde birleştirilmesine izin vermek içinWebmMuxerekleyin.
- IMA uzantısı:
- Uygulamaların IMA Android arşivinde yayınlanan kuralları kullanabilmesi için özel ProGuard kuralları kaldırıldı.
- IMA SDK'nın reklam tanımlayıcılarını Google Ad Manager ayarlarında belirtildiği şekilde işlemesi için Google Ad Manager ağ kodunu ayarlayan yeni bir API olan
ImaServerSideAdInsertionUriBuilder.setNetworkCodeeklendi. Ağ kodları isteğe bağlıdır ancak tam hizmet akışı istekleri için önerilir. Ağ kodunu bulmak için bu makaleyi inceleyin. - IMA bağımlılığı 3.37.0 sürümüne yükseltildi. Bu sürümde, temel kitaplık desugaring sürecinin etkinleştirilmesi gerekir. Bu özelliğin bağımlı uygulamalar tarafından da etkinleştirilmesi gerekir. IMA'nın yapılandırma notlarına bakın. * SSAI URI oluşturucuda IMA DAI özel kullanıcı arayüzü seçenekleri desteklenir. Sunucu tarafı reklam ekleme için özel kullanıcı arayüzü seçenekleri arasında "Atlanabilir" ve "Bu Reklam Hakkında" oluşturma desteği bulunur. Bu özellik şu anda izin verilenler listesindeki belirli yayıncılar tarafından kullanılabilir. Bu değişiklik, özel kullanıcı arayüzü seçenekleri API'sine erişmek için IMA SDK sürümünü de 3.38.0'a (sürüm notları) yükseltir.
- Reklamdan sonraki içerik için içerik hazırlama hatasının yanlışlıkla reklam oynatma hatası olarak bildirilmesine neden olan sorun düzeltildi (#2656).
- Oturum:
- Aramanın yalnızca bilgi toplamak için mi yoksa oynatmayı başlatmak için mi (#1764) yapıldığını belirtmek üzere
MediaSession.Callback.onPlaybackResumptionöğesine yeni parametre ekleyin. - Kendi uygulamasındaki denetleyicileri de güvenilir olarak beyan etmek için
MediaSession.ControllerInfo.isTrustedgüncellendi (#2542). - Bildirim güncellemesini manuel olarak tetiklemek için
MediaSessionService.triggerNotificationUpdateeklendi (#1833). - Özel komut yöntemlerine
ProgressListenerekleyin. MediaLibrarySession.Builder.setLibraryErrorReplicationModeiçin varsayılan değeri "önemsiz" olarak değiştirin.MediaButtonReceiver.onForegroundServiceStartNotAllowedException(#2625) içinContextparametresi ekleyin.- Ses seviyesi kontrolü kimliğini bağlayıcı üzerinden almak yerine
PlaybackInfoplatformundan okuyun. Bu sayede, oynatma türü ve ses seviyesi kontrol kimliği atomik olarak okunur ve birbiriyle eşleşir. ACTION_UPtuş etkinliklerinin özel işleme için geri çağırmaya iletilmeden önce filtrelenmesine neden olan hata düzeltildi. Bu sayede, media1'in ve platformun yaptığıyla (#2637) eşitlik sağlanır.- Komut kullanılamadığında bile
getCurrentTimeline()işlevininPlayerWrappertarafından çağrılmasına neden olan hata düzeltildi (#2665). - Ana döngüleyicinin mesaj kuyruğunda bir mesajın kalmasına ve hizmet sonlandırıldıktan sonra bellek sızıntısına neden olan hata düzeltildi (#2692).
MediaBrowseriçeren eski bir oturum uygulamasına bağlandığında özel komutlar, yalnızca özel işlem eski oturumunPlaybackStateCompatbölümünde özel işlem olarak tanıtılıyorsa oturuma gönderilir. Diğer tüm özel işlemler hizmete gönderilir.- Oturum tarafından bir ses oturumu kimliği ayarlandığında medya kumandalarını bilgilendirmek için
onAudioSessionIdChangeduygulandı (#244). KEYCODE_HEADSETHOOKuygulamasının,onStartCommand()içindeIntentmedya tuşu etkinliği alındığında oynatıcıyı başlatmamasına neden olan hata düzeltildi. Bu sorun, "KEYCODE_HEADSETHOOK"unKEYCODE_MEDIA_PLAY_PAUSEgibi işlenmesiyle düzeltildi (#2816).- Yüzey boyutunun oturum ile denetleyici arasında iletilmemesi nedeniyle demo oturumunda video efektlerinin uygulanamamasına yol açan hata düzeltildi. Kumanda kullanıyorsanız oynatıcınız
setVideoSurfaceHolderçağrısını işleyemediğinde bu durum zarar veren bir değişiklik olabilir. - span-styled dizeler gibi
StringCharSequenceolmayan meta veri değerlerinin yayılması düzeltildi (#2853). - Kumandaların istenen işlemi daha kolay tetikleyebilmesi için
CommandButton.executeActionekleyin. Ayrıca, hangi işlemin tetikleneceğini tanımlamak için bazı oynatıcı ve oturum komutlarına parametreler belirtilmesine de olanak tanır. - İşlemlerini tanımlamak için
Player.Commandveya özel olmayanSessionCommandkullananCommandButtonörnekleri için geriye dönük uyumluluk ekleyin. Bunlar artık platform medya oturumlarında (ör. sistem kullanıcı arayüzü veya Android Auto için) doğru şekilde gösteriliyor. - Bir
MediaControllerplatform medya oturumuna bağlanırken aynıBitmapöğesinin birden çok kez sıkıştırılması sorunu düzeltildi.
- Aramanın yalnızca bilgi toplamak için mi yoksa oynatmayı başlatmak için mi (#1764) yapıldığını belirtmek üzere
- Kullanıcı arayüzü:
media3-ui-composemodülüneProgressStateWithTickIntervalsınıfını ve ilgilirememberProgressStateWithTickIntervalComposable'ı ekleyin. Bu durum bilgisi depolayıcı, geçerli konumu ve süreyi metin biçiminde görüntülemek içindemo-composeiçinde kullanılır.ui-composeöğesinePlayerses seviyesinin sesini kapatma işlemini gerçekleştirenMuteButtonStateekleyin. Bu durum bilgisi depolayıcı,demo-composeiçinde sesi kapatma/açma açma/kapatma düğmesini görüntülemek için kullanılır.media3-ui-composemodülüneProgressStateWithTickCountsınıflarını ve ilgilirememberProgressStateWithTickCountComposable'ı ekleyin. Bu durum bilgisi depolayıcı, ilerleme durumunu yatay salt okunur bir ilerleme çubuğu olarak göstermek içindemo-composeiçinde kullanılır.media3-ui-composeöğesineContentFrameComposable ekleyin. Bu,PlayerSurfaceyönetimini en boy oranını yeniden boyutlandırma ve deklanşörle kapatma ile birleştirir.- Bir Compose
AndroidViewiçindeSurfaceViewkullanılırken videoların uzatılmasına/kırpılmasına neden olan ve bu nedenleSURFACE_TYPE_SURFACE_VIEWileContentFramevePlayerSurfacecomposable'larını etkileyen bilinen bir API 34 platform hatası düzeltildi (#1237, #2811). - Yeni bir
media3-ui-compose-material3modülü oluşturun ve Material3 temalı composable'ları (PlayPauseButton, NextButton, PreviousButton, SeekBackButton, SeekForwardButton, RepeatButton, ShuffleButton, MuteButton) bu modüle ekleyin. - Oyuncunun ilerleme durumunu metin biçiminde göstermek için
media3-ui-compose-material3öğesineTimeTextcomposable'ı ekleyin. Mevcut konumu, süreyi veya kalan süreyi gösterecek şekilde yapılandırılabilir. PlayerViewiçine medya rotası düğmesi yerleştirme desteği ekleyin.- Sağdan sola metin altyazılarında noktalama işaretlerini doğru şekilde görüntülemek için
BidiFormatterkullanın (#11214).
- HLS uzantısı:
- HLS geçiş reklamı atlama özelliklerini ayrıştırın.
- HLS oynatma listesindeki ve öğe listesi belgesindeki atlama kontrolü özelliklerini, herkese açık erişim için
AdPlaybackStateile eşleyin. - Başlangıç zamanını tanımlayan EXT-X-PROGRAM-START-DATE etiketi bir oynatma listesinden kaldırıldığında oynatma listesinin başlangıç zamanının silinmesine neden olan hata düzeltildi (#2760).
- Oynatma listesindeki belirli bir konumun segment dizinini bulmak için ikili arama kullanın (#2826).
- Reklamları ve reklam gruplarını dizine göre atlamak için
HlsInterstitialsAdsLoader.skipCurrentAd()veskipCurrentAdGroup()ile ilgili yöntemleri ekleyin. - Bir reklam döneminin başlangıcını bildirmek için
HlsInterstitialsAdsLoader.Listener.onAdStartedekleyin (#2859). - ISO 8601 tarih-saat dizelerinde tarih/saat ayırıcı olarak boşluk kabul edilir.
- Segment içermeyen bir
HlsMediaPlaylistiçin sonraki parçanın getirilmesi düzgün şekilde işlenir (#2821). - Canlı yayınlarda videodan önce gösterilen reklamlar için varsayılan başlangıç konumunu kullanın.
- DASH uzantısı:
- Hiyerarşik olmayan
data:URI manifestiyle DASH akışları oynatılırken oluşanUnsupportedOperationExceptionhatası düzeltildi (#2688). LiveConfiguration, yayınlandığında ve medya öğesi kullanıcı tarafından güncellendiğinde (#2606)DashMediaSource'ninMediaItemtarafından sağlanan değere sıfırlanır.- Oynatıcı hatası olarak bildirilmeyen geçersiz manifest güncellemelerinin neden olduğu kilitlenmeleri önleme (#2805).
- Hiyerarşik olmayan
- RTSP uzantısı:
- H264 ve H265 için parçalı NAL birimleri işlenirken eksik RTP paketleri hatası düzeltildi (#2613).
- Kod çözücü uzantıları (FFmpeg, VP9, AV1 vb.):
- AV1 Uzantısı: AV1 yazılım kod çözücüsü artık daha yüksek kod çözme hızı için önceki
libgav1uygulamasının yerine yüksek performanslıdav1dkitaplığını kullanıyor. - FFmpeg uzantısı:
STREAMINFObloğ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).
- AV1 Uzantısı: AV1 yazılım kod çözücüsü artık daha yüksek kod çözme hızı için önceki
- Yayınlama uzantısı:
CastPlayeruygulamasının hem yerel hem de yayın oynatması yapmasını sağlayanCastPlayer.Builderekleyin. Yalnızca Cast oynatmayı destekleyen eskiCastPlayerdavranışını korumak içinRemoteCastPlayerkullanabilirsiniz. MevcutCastPlayeroluşturucular eski davranışlarını korur ancakCastPlayerveyaRemoteCastPlayeroluşturucuların kullanılması tercih edildiğinden kullanımdan kaldırılmıştır.DefaultMediaItemConverteriçinde boş olmayan bir MIME türü zorunlu kılınmayacak.- Mümkün olduğunda
DefaultCastOptionsProvider#toMediaQueueItemiçinde kullanılacak Cast MEDIA_TYPE'ı tahmin etmek içinMediaItem.mediaMetadata.mediaTypekullanın. DefaultCastOptionsProvideruygulamasında uzaktan kendi hesabına aktarmaları etkinleştirin.- Oturum demosunda Yayınlama desteği ekleyin.
- Birleştirilebilir kullanıcı arayüzünde medya rotası düğmesi gösterme desteği ekleyin.
- İşlem çubuğu menüsünde medya rotası düğmesi gösterme desteği ekleyin.
- Medya rotası düğmesini görünüm kullanıcı arayüzü olarak gösterme desteği ekleyin.
- Test Yardımcı Programları:
FakeClockiçin otomatik ilerleme davranışına maksimum zaman farkı ekleyin. Varsayılan olarak 1 saniyedir ancakFakeClock.Builderaracılığıyla yapılandırılabilir.RobolectricUtil.runMainLooperUntil(verunLooperUntil) için mesajlar arasındaki maksimum zaman farkını ekleyin. Varsayılan olarak 1 saniyedir ancak bu yöntemlerin yeni aşırı yüklemeleri aracılığıyla yapılandırılabilir.CapturingRenderersFactory,test-utilsöğesindentest-utils-robolectricöğesine taşındı.
- Desteği sonlandırılan simgeleri kaldırın:
- Desteği sonlandırılan
DefaultPreloadManageroluşturucusunu kaldırın. Bunun yerineDefaultPreloadManager.Builderkullanın. - Desteği sonlandırılan
EditedMediaItemSequenceyapıcılar kaldırıldı. Bunun yerineEditedMediaItemSequence.Builderkullanın. BitmapFactoryImageDecoder.BitmapDecoderöğesini kaldır Bunun yerineExternallyLoadedImageDecoderkullanın.- Desteği sonlandırılan
ShadowMediaCodecConfig.forAllSupportedMimeTypes()öğesini kaldırın. Bunun yerineShadowMediaCodecConfig.withAllDefaultSupportedCodecs()politikasını kullanın. - Kullanımdan kaldırılan
ShadowMediaCodecConfig.withNoDefaultSupportedMimeTypes()öğesini kaldırın. Bunun yerineShadowMediaCodecConfig.withNoDefaultSupportedCodecs()kullanın.
- Desteği sonlandırılan
1.9.0-rc01
1 Aralık 2025
1.9.0 kararlı sürümünü kullanın.
1.9.0-beta01
20 Kasım 2025
1.9.0 kararlı sürümünü kullanın.
1.9.0-alpha01
22 Ekim 2025
1.9.0 kararlı sürümünü kullanın.
Sürüm 1.8.0
1.8.1
21 Mayıs 2026
1.8.1 sürümü aşağıdaki kayıtları içerir.
- Etki:
- Yüzey içermeyen bağlamdan geçiş yaparken
GL_DRAW_BUFFERveGL_READ_BUFFERdeğerlerini açıkça ayarlayın.
- Yüzey içermeyen bağlamdan geçiş yaparken
Sürüm 1.8.0
30 Temmuz 2025
1.8.0 sürümü bu kayıtları içerir.
- Ortak Kitaplık:
ForwardingSimpleBasePlayeriçinde oynatıcıyı değiştirme desteği ekleyin.
- ExoPlayer:
ExoPlayerarayüzüne karışık mod için alıcı eklendi (#2522).DefaultAudioSinköğesine birden fazla iş parçacığından erişilirse daha net bir istisna oluşturun. Bu durum, oynatıcı dışında birRendererCapabilities.getFormatSupportçağrısı nedeniyle meydana geliyorsa bu yöntemi ExoPlayer'ın oynatma iş parçacığıyla aynı iş parçacığında çağırdığınızdan veya oynatma için kullanılandan farklı bir örnek kullandığınızdan emin olun (#1191).- TV'lerdeki stereo olmayan ses biçimlerinin
DefaultTrackSelectortarafından desteklenmiyor olarak işaretlenmesine neden olan hata düzeltildi. - MediaCodec'in
DECODE_ONLYişaretini (varsayılan olarak sarma modunda etkindir) kullanırken son karenin doğru şekilde oluşturulduğundan emin olun. ExoPlayer.Builderöğesine iletilenContextöğesinden sanal cihaz kimliğini kullanma desteği eklendi.- Sarma modunda dinamik planlamayı varsayılan olarak etkinleştirin.
- Bir öğenin sonuna giderken kaynağın gereksiz yere yeniden yüklenmesini önleyin.
- Sarma modunda varsayılan olarak
MediaCodec.BUFFER_FLAG_DECODE_ONLYkullanılır. PreloadMediaSource, önceden yükleme ileti dizisinden farklı bir oynatma ileti dizisine sahip birExoPlayertarafından oynatıldığındaIllegalStateExceptionhatası verilir (#2495).- Varsayılan bir uygulama ile
cloneAndMoveöğesiniShuffleModeöğesine ekleyin (#2226). renderçağrısı gerekmiyorsa daha büyük bir değer döndürmek içinRenderer.getMinDurationToProgressUsvarsayılan davranışını değiştirin.- Duraklatılmış durumdayken sona gidildiğinde dahili planlamanın son kareyi geciktirmesine neden olan hata düzeltildi. Şu an için hata düzeltmesi yalnızca
ExoPlayer.Builder.experimentalSetDynamicSchedulingEnabledetkinleştirildiğinde geçerli olur. ExoPlayer.setScrubbingModeEnabled(boolean)yöntemi ekleyin. Bu, oynatıcıyı sık yapılan aramalar için optimize eder (örneğin, bir kullanıcının kaydırma çubuğunu sürüklemesi). Sarma modunun davranışı,ExoPlayerveExoPlayer.BuildercihazlardasetScrubbingModeParameters(..)ile özelleştirilebilir.- Sarma modunda kesirli arama toleransının özelleştirilmesine izin verilir.
- Sarma modunda codec çalışma hızını artırın.
AdsMediaSourceiçeriğindeki hazırlık hatalarının hiçbir zaman raporlanmamasına neden olan hata düzeltildi (#2337).MergingMediaSourceiçinde, örneğin altyazılar başka bir kaynaktan yüklenirken kullanılan bellek sızıntısı düzeltildi (#2338).- Belirli medya öğeleri için CMCD günlük kaydını devre dışı bırakmak üzere
CmcdConfiguration.Factory'ınnulldöndürmesine izin verin (#2386). - Varsayılan resim arabellek boyutu 128 kB'tan (metin parçalarından kopyala-yapıştır hatası) 26 MB'a yükseltildi. Bu boyut, 50 MP Ultra HDR resimler için yeterince büyüktür (#2417).
- Uygulamaların, belirtilen başlangıç konumu ve süresiyle tek bir medyayı önceden önbelleğe almasına olanak tanıyan
PreCacheHelperekleyin. DefaultPreloadManageriçinde belirtilen konumdan önceden yükleme desteği ekleyin.
- Transformer:
- Video kodlama ayarlarının yonga setine özgü optimizasyonlarını etkinleştiren
CodecDbLiteekleyin. - CodecDB Lite ayar optimizasyonunu etkinleştirmek için
DefaultEncoderFactorydosyasınasetEnableCodecDbLiteişaretini ekleyin. Bu işaret varsayılan olarak false değerine ayarlanır. - İlk boşluğu (
addGap()aracılığıyla eklenir) sessiz sesle doldurmak için artıkEditedMediaItemSequence.BuilderiçindeexperimentalSetForceAudioTrack(true)değerini açıkça ayarlamanız gerekir. Boşluk, dizinin ortasındaysa bu işaret gerekli değildir. Muxerarayüzünümedia3-transformerkonumundanmedia3-muxerkonumuna taşıyın.- Bir medya öğesini resim olarak içe aktarmak için
MediaItem.Builder().setImageDuration(long)ayarını zorunlu hale getirin. - Kırpma işlemi sırasında MP4 düzenleme listesi içeren
Transformer.Builder().experimentalSetMp4EditListTrimEnabled(boolean)ekleyerek oynatıcılara, kırpma başlangıç noktasından önceki ana kare ile kırpma başlangıç noktası arasındaki örnekleri yoksayma talimatı verin. - Composition Demo uygulamasını Kotlin ve Jetpack Compose kullanacak şekilde güncelleyin ve sekansları 2x2 veya PiP düzeninde düzenlemek için özel bir
VideoCompositorSettingsekleyin.
- Video kodlama ayarlarının yonga setine özgü optimizasyonlarını etkinleştiren
- Ayıklayıcılar:
- Parçalı MP4 dosyalarındaki meta verileri ayrıştırma (#2084).
- JPEG: Başlangıçta Exif segmenti olmayan hareketli fotoğraflar desteklenir (#2552).
- Birden fazla
sidxatomu içeren parçalı MP4'te arama desteği eklendi. Bu davranış,FragmentedMp4ExtractorüzerindeFLAG_MERGE_FRAGMENTED_SIDXişareti kullanılarak etkinleştirilebilir (#9373). - FLAC dosyalarındaki boş arama tablolarını (yalnızca yer tutucu arama noktaları içerenler dahil) yoksayma ve dosyanın süresi biliniyorsa ikili arama yöntemine geri dönme (#2327).
- Tanınmayan SEI türlerini tamamen atlamak için H.265 SEI birimlerinin ayrıştırılması düzeltildi (#2456).
WAVE_FORMAT_EXTENSIBLEtüründe bir dosya ayrıştırılırken ses biçimi için başlık uzantısının SubFormat verilerini kullanacak şekildeWavExtractorgüncellenir.- MP4: Ham PCM ses parçalarını tanımlayan
ipcmvefpcmkutuları için destek ekleyin (64 bit kayan noktalı PCM desteklenmez). - MP4: Videoyu hem döndüren hem de yansıtan
tkhddönüşüm matrislerinin döndürme kısmını işleyin. Bu sayede, iPhone ön kamerasıyla çekilen yansıtılmış videolar doğru yönde görüntülenir ancak y ekseninde yanlış yansıtılır (#2012). - MP3:
FLAG_ENABLE_CONSTANT_BITRATE_SEEKING(_ALWAYS)nedeniyle sabit bit hızında arama yapmaya geri dönerken, arama yapılamayan Xing, VBRI ve benzeri değişken bit hızı meta verilerinden süre ve veri boyutunu kullanın (#2194).
- Ses:
- Ses çalma, medyanın sonuna çok yakın bir zamanda başlatıldığında
AnalyticsListener.onAudioPositionAdvancingyönteminin çağrılmamasına neden olan hata düzeltildi. ChannelMappingAudioProcessorveTrimmingAudioProcessoriçinde tüm doğrusal PCM örnek biçimleri için destek eklendi.CompositionPlayerdilinde ses boşlukları için destek ekleyin.BaseAudioProcessor#reset()tarafındanBaseAudioProcessor#flush()için yapılan sahte aramayı kaldırın.- DefaultAudioMixer'da sabit güçle yukarı/aşağı miksaj yapılmasına izin verilir.
ChannelMappingAudioProcessor,TrimmingAudioProcessorveToFloatPcmAudioProcessor'yi herkese açık hale getirin (#2339).DefaultAudioSinkiçinde yetersizlikleri tespit etmek için en iyi tahmin yerineAudioTrackPositionTrackeriçindeAudioTrack#getUnderrunCount()kullanın.- Ses çıkış cihazından kaynaklanan beklenmedik konum kayması için ses zaman damgası düzeltmesi iyileştirildi.
- Bluetooth cihazlara bağlıyken duraklatıldıktan sonra devam ettirildiğinde ilk 10 saniye boyunca ses/video senkronizasyonunun bozulmasına neden olan hata düzeltildi.
AnalyticsListener.onAudioPositionAdvancingöğesinin sesin ilerlemeye başladığı zamanı değil, ilk ölçümün zamanını bildirmesine neden olan hata düzeltildi.- Bazı cihazlarda stereo sese geri döndükten sonra çok kanallı sese geri dönme sorunu düzeltildi (#2258).
- Ses çalma, medyanın sonuna çok yakın bir zamanda başlatıldığında
- Video:
- Bağlantısı kesilmiş yüzey geçici çözümünü "lenovo" ve "motorola" cihazlara genişletme (#2059).
- Ses örnekleri tam olarak istenen konumda başlamadığında, başlangıçta video karelerinin sorunsuz şekilde yayınlanmasını iyileştirir.
- Bağlantısı kesilmiş yüzey geçici çözümü "realme" cihazları kapsayacak şekilde genişletildi (#2059).
- Yalnızca kod çözme giriş arabellekleri sıraya alınırken
MediaCodec.BUFFER_FLAG_DECODE_ONLYişaretini eklemek için deneyselExoPlayerAPI'si eklendi. Bu işaret, kod çözücüye yalnızca kod çözme arabelleklerini atlamasını bildirir. Böylece daha hızlı arama yapılır.DefaultRenderersFactory.experimentalSetEnableMediaCodecBufferDecodeOnlyFlagile etkinleştirin. * Yazılım video codec'leri için codec performans kontrollerini iyileştirme Bu durum, bazı ek parçalarınEXCEEDS_CAPABILITIESolarak işaretlenmesine neden olabilir. - Bazı cihazlarda VP9 Widevine oynatma hataları düzeltildi (#2408).
- Metin:
- MP4 dosyalarındaki VobSub parçaları için destek eklendi (#2510).
- Bir altyazı segmentinin başlangıçta yüklenememesi ve daha sonra başarıyla yüklenmesi, ardından birkaç boş altyazı segmentinin gelmesi (#2517) durumunda oynatmanın duraklaması sorunu düzeltildi.
- Altyazılar etkinleştirildiğinde devam eden bir işaret göstermek için SSA ve SubRip düzeltildi (#2309).
- Altyazı hatası olan bir yayından boş altyazı parçası olan bir canlı yayına geçiş yaparken oynatmanın takılması sorunu düzeltildi (#2328).
- B kareleri içeren H.262 akışları oynatılırken CEA-608 altyazılarının bozuk olması sorunu düzeltildi (#2372).
- Matroska dosyalarında
CodecId = S_TEXT/SSAile SSA altyazıları için destek ekleyin.MatroskaExtractordaha önce yalnızca SubStation Alpha altyazılarının "gelişmiş" (v4+) varyantını temsil edenCodecId = S_TEXT/ASS'i destekliyordu (ancak ExoPlayer'ın ayrıştırma mantığı her iki varyant için de aynıdır) (#2384). - Ekranda aynı anda birden fazla işaret gösterildiğinde işaretlerin z sırasını tanımlamak için kullanılan SubStation Alpha (SSA) altyazı dosyalarındaki
layerözelliği için destek eklendi (#2124).
- Meta veriler:
MetadataRetrieveriçin medya süresini veTimelinedeğerini alma desteği eklendi ve örnek tabanlı birAutoCloseableAPI'ye taşındı.MediaItemiçin bir örnek oluşturmak üzere yeniBuilderöğesini kullanın, ardından meta veriler içinListenableFuturealmak üzereretrieveTrackGroups(),retrieveTimeline()veretrieveDurationUs()öğelerini çağırın. Önceki statik yöntemlerin desteği sonlandırıldı (#2462).
- Resim:
- Çok büyük (ör. 50 MP) resimleri göstermeye çalışırken uygulamanın
PlayerView'denCanvas: trying to draw too large bitmap.ile kilitlenmesini önlemek için kodu çözülmüş bit eşlemleriBitmapFactoryImageDecoder'daki ekran boyutuyla sınırlayın. DefaultRenderersFactory.getImageDecoderFactory()imzasınıContextparametresi alacak şekilde değiştirin.CompositionPlayeriçinde kullanılan maksimum bit eşlem çıkış boyutunuTransformeriçinde kullanılanla uyumlu hale getirin (ExoPlayeruygulamasının aksineCompositionPlayer, bit eşlemlerin kodunu çözerken ekran boyutunu dikkate almaz).
- Çok büyük (ör. 50 MP) resimleri göstermeye çalışırken uygulamanın
- DRM:
- HTTP istek başlıklarının doğru şekilde uygulanabilmesi için
MediaItem.DrmConfigurationkabul eden yeni birOfflineLicenseHelper.newWidevineInstanceaşırı yüklemesi ekleyin (#2169).
- HTTP istek başlıklarının doğru şekilde uygulanabilmesi için
- Etki:
- Giriş yönünden bağımsız olarak en kısa kenarın her zaman verilen değerle eşleşmesini sağlayan bir
PresentationoluşturanPresentation.createForShortSide(int)ekleyin.
- Giriş yönünden bağımsız olarak en kısa kenarın her zaman verilen değerle eşleşmesini sağlayan bir
- Çoğullayıcılar:
- Parçalı MP4'teki ses örnekleri için doğru örnek işaretlerinin ayarlanmamasına neden olan hata düzeltildi.
writeSampleData()API'si artıkMediaCodec.BufferInfoyerine çoklayıcıya özelBufferInfosınıfını kullanıyor.- Varsayılan olarak false değerine sahip
Muxer.Factory#supportsWritingNegativeTimestampsInEditListekleyin.
- IMA uzantısı:
- Bir reklamdaki yükleme hatasının yanlışlıkla başka bir reklam grubunu geçersiz kılmasına neden olan hata düzeltildi.
- VOD penceresinin sonundan sonraki reklam gruplarının oynatmayı duraklatmasına neden olan hata düzeltildi.
Başlangıç zamanı pencereden sonra olan reklam grupları artık
MediaPeriodQueueiçine sıraya alınmıyor (#2215).
- Oturum:
- Ayrıcalıklı olmayan üçüncü taraf Media3 denetleyicilerinden gelen bağlantıların yoksayılmasına neden olan hata düzeltildi.
- Eski bir
MediaBrowserServiceCompatcihazına özel komutlar gönderirken kullanılabilir komutlar için yapılan kontrol kaldırıldı. Bu, eski bir uygulamaya bağlandığında eski denetleyicilerin/tarayıcıların davranışıyla aynıdır. - Bir oyuncunun ilk oynatma hatasının yanlışlıkla kalıcı bir özel istisna olarak değerlendirilmesine neden olan hata düzeltildi. Bu durum, uygulamanın kurtarılmasını engeller.
- Oturum tarafından işlenmeyen bazı denetleyici değişikliklerinin
IllegalStateExceptionshatasına neden olduğu hata düzeltildi. - Oturum tarafından işlenmeyen kumanda işlemlerinin kumandayı geçersiz bir durumda bırakmasına neden olan hata düzeltildi.
- StrictMode güvenli olmayan başlatma ihlali uyarısı düzeltildi (#2330).
- Oynatıcıyı ana iş parçacığından farklı bir uygulama iş parçacığından çalıştırırken ana iş parçacığından
setSessionExtrasçağrıldığındaIllegalStateExceptionhatasına yol açan hata düzeltildi (#2265). - Bir oynatıcı, medya öğeleri hazırlanmadan veya oynatılmadan ayarlanmışsa otomatik olarak bildirim gösterilmez (#2423https://github.com/androidx/media/issues/2423). Bu davranış,
MediaSessionService.setShowNotificationForIdlePlayerüzerinden yapılandırılabilir. - Tüm veya seçili denetleyiciler için özel
PlaybackExceptionekleyin. MediaControllercihazda canlı yayında ileri/geri sarmanınIllegalArgumentExceptionhatasına neden olabildiği hata düzeltildi.- Canlı yayınlarda, Android Auto kullanıcı arayüzünde (ve platform medya oturumundaki bu bilgileri kullanan diğer denetleyicilerde) konum kusurlarını önlemek için oynatma konumunu yayınlamayı ve platform medya denetleyicileri için mevcut öğede arama yapma özelliğini durdurun (#1758).
- Eski bir
MediaBrowserServiceCompat'ye bağlıMediaBrowser'ningetLibraryRootöğesine null değerinin iletilmesiyleNullPointerExceptionhatasının oluşmasına neden olan hata düzeltildi. - Özel işlemler, arama sonucu veya getItem isteği gönderildiğinde eski oturum uygulamasının
ClassNotFoundExceptionile kilitlenmesine neden olan hata düzeltildi. MediaItem.LocalConfiguration.uri, platform oturumununMediaMetadataile paylaşıldığında oluşan hata düzeltildi. Denetleyicilerin medyayı yeniden istemesine izin vermek için bir URI'yi kasıtlı olarak paylaşmak istiyorsanız bunun yerineMediaItem.RequestMetadata.mediaUrideğerini ayarlayın.
- Kullanıcı arayüzü:
LazyColumngibi yeniden kullanılabilir bileşenlerin içindekiPlayerSurfaceöğesinin doğru çalışmamasıyla ilgili hata düzeltildi (#2493).- İlk düğme durumlarının ayarlanması ile durumdaki değişikliğin (ör. simge şekilleri veya etkinleştirilme) gözlemlenmesi arasında boşluk oluşmasına neden olan bir Compose hatası düzeltildi. Gözlem dönemi dışında Player'da yapılan değişiklikler artık algılanıyor (#2313).
SeekBackButtonStateveSeekForwardButtonStateiçinmedia3-ui-composemodülüne durum bilgisi depolayıcılar ve composable'lar ekleyin.PlayerControlViewiçin ExoPlayer'ın sarma modu desteğini ekleyin. Bu özellik etkinleştirildiğinde, kullanıcı kaydırma çubuğunu sürüklemeye başladığında oynatıcı kaydırma moduna geçer, her hareket için birplayer.seekToçağrısı yapar ve ardından dokunma ekrandan kaldırıldığında kaydırma modundan çıkar. Bu entegrasyon, XML'detime_bar_scrubbing_enabled = trueveya Java/Kotlin'desetTimeBarScrubbingEnabled(boolean)yöntemiyle etkinleştirilebilir.PlayerSurfaceişlevinin boş değer atanabilir birPlayerbağımsız değişkeni kabul etmesini sağlayın.
- İndirilenler:
- Aşamalı akışlar için kısmi indirme desteği ekler. Uygulamalar,
DownloadHelperile aşamalı bir akış hazırlayabilir ve indirmenin kapsaması gereken zamana dayalı medya başlangıç ve bitiş konumlarını belirterek yardımcıdan birDownloadRequestisteyebilir. DöndürülenDownloadRequest, çözümlenen bayt aralığını taşır. Bu aralıkla birProgressiveDownloaderoluşturulabilir ve içerik buna göre indirilebilir. - Statik
DownloadHelper.forMediaItem()yöntemlerinin değiştirileceğiDownloadHelper.Factoryekleyin. SegmentDownloaderuygulamaları içinFactoryekleyin.- Uyarlanabilir akışlar için kısmi indirme desteği ekleyin. Uygulamalar,
DownloadHelperile uyarlanabilir bir akış hazırlayabilir ve indirmenin kapsaması gereken zamana dayalı medya başlangıç ve bitiş konumlarını belirterek yardımcıdan birDownloadRequestisteyebilir. DöndürülenDownloadRequest, çözümlenen zaman aralığını taşır. Bu aralıkla somut birSegmentDownloaderoluşturulabilir ve içerik buna göre indirilebilir.
- Aşamalı akışlar için kısmi indirme desteği ekler. Uygulamalar,
- Cronet uzantısı:
- Otomatik çerez işleme özelliği eklendi (#5975).
- HLS uzantısı:
- Arabellekte kullanılabilir parça yokken
HlsSampleStreamWrapperöğesinin arabellekte arama yapmaya çalışmasıyla ilgili hata düzeltildi #2598. - Düşük gecikmeli parçalar yüklendikten sonra parça seçiminin değişmesi ve önceden yükleme ipuçlarının oynatmanın takılmasına veya donmasına neden olmasıyla ilgili hata düzeltildi (#2299).
CAN-BLOCK-RELOAD=YESsunucu tarafından dikkate alınmadığında hedef sürenin yarısı kadar bekleyerek aşırı yeniden yüklemeyi önleyin (#2317).- Ara reklamdan önce geçiş reklamı akışı başlatılırken oynatmanın duraklatılmasına ve yanlış reklam için öğe listesi çözünürlüğünün denenmesine neden olan hata düzeltildi (#2558).
- Tırnak içine alınmış dize özellik değerlerinde
\f(form feed) kabul etmek için oynatma listesi ayrıştırma düzeltildi (#2420). - Aynı kimliğe sahip geçiş reklamlarının güncellenmesi desteklenir (#2427).
- Canlı yayında yüklenecek segment kalmadığında oynatma listesi yükleme hatalarının bazen yayılmamasına neden olan hata düzeltildi (#2401https://github.com/androidx/media/issues/2401).
- Altyazı yorumlarını, ses yorumlarının gruplandırılmasına benzer şekilde NAME etiketine göre gruplandırma (#1666).
HlsInterstitialsAdsLoaderile X-ASSET-LIST ve canlı yayınları destekleyin.
- Arabellekte kullanılabilir parça yokken
- DASH uzantısı:
- İleri sarma/geri sarma uyarlama grubunun, geçersiz bir
TrackGroupoluşturmak için ana uyarlama grubuyla birleştirilmesi sorunu düzeltildi (#2148). - Yeni sürenin ötesindeki örnekler oluşturma ardışık düzeni tarafından zaten okunduğunda DASH dönem süresinin kısaltılmasının istisnaya neden olabileceği hata düzeltildi (#2440).
- CMCD sorgu parametreleri kullanılırken yönlendirmenin takip edilmemesine neden olan hata düzeltildi (#2475).
- İleri sarma/geri sarma uyarlama grubunun, geçersiz bir
- RTSP uzantısı:
- RFC 7798#4.4.2 (#2413) uyarınca H265 için RTP toplama paketi desteği eklendi.
- HTTP 302 yanıtı işlenirken konum URI'sinin sağlandığı şekilde kullanılması için
RtspClientdüzeltildi (#2398). - Sondaki boşluk karakterlerini içeren satırlara sahip SessionDescriptions için ayrıştırma desteği eklendi (#2357).
- Kod çözücü uzantıları (FFmpeg, VP9, AV1 vb.):
DefaultTrackSelector.setAllowInvalidateSelectionsOnRendererCapabilitiesChangeöğesinin ses kod çözücü uzantıları üzerinde hiçbir etkisi olmaması hatası düzeltildi (#2258).
- Yayınlama uzantısı:
- Test Yardımcı Programları:
- Oynatıcıyı belirtilen konuma ulaşana kadar ilerletmek için
TestPlayerRunHelperöğesineadvance(player).untilPositionAtLeastveuntilMediaItemIndexekleyin. Çoğu durumda bu yöntemler, mevcutuntilPositionveuntilStartOfMediaItemyöntemlerinden daha güvenilirdir. - Diğer testlerde yeniden kullanmak için
FakeDownloaderöğesinitest-utils-robolectricmodülüne taşıyın. transformer.TestUtil.addAudioDecoders(String...),transformer.TestUtil.addAudioEncoders(String...)vetransformer.TestUtil.addAudioEncoders(ShadowMediaCodec.CodecConfig, String...)kaldırıldı. Bunun yerine gölge kodlayıcıları ve kod çözücüleri yapılandırmak içinShadowMediaCodecConfigkullanın.ShadowMediaCodecConfigtarafından bildirilen codec adlarındaki "exotest" ön eki "media3" ile değiştirildi.
- Oynatıcıyı belirtilen konuma ulaşana kadar ilerletmek için
- Desteği sonlandırılan simgeleri kaldırın:
- Desteği sonlandırılan
SegmentDownloaderoluşturucuSegmentDownloader(MediaItem, Parser<M>, CacheDataSource.Factory, Executor)ve alt sınıflarındaki ilgili oluşturucularDashDownloader,HlsDownloaderveSsDownloaderkaldırıldı. - Kullanımdan kaldırılan
Player.hasNext(),Player.hasNextWindow()kaldırıldı. Bunun yerinePlayer.hasNextMediaItem()kullanın. - Kullanımdan kaldırılan
Player.next()kaldırıldı. Bunun yerinePlayer.seekToNextMediaItem()kullanın. - Kullanımdan kaldırılan
Player.seekToPreviousWindow()kaldırıldı. Bunun yerinePlayer.seekToPreviousMediaItem()kullanın. - Kullanımdan kaldırılan
Player.seekToNextWindow()kaldırıldı. Bunun yerinePlayer.seekToNextMediaItem()kullanın. exoplayermodülünde desteği sonlandırılanBaseAudioProcessorkaldırıldı.commonmodülünün altındakiBaseAudioProcessoröğesini kullanın.- Desteği sonlandırılan
MediaCodecVideoRendereroluşturucusunu kaldırınMediaCodecVideoRenderer(Context, MediaCodecAdapter.Factor, MediaCodecSelector, long, boolean, @Nullable Handler, @Nullable VideoRendererEventListener, int, float, @Nullable VideoSinkProvider).
- Desteği sonlandırılan
Sürüm 1.8.0-rc02
24 Temmuz 2025
1.8.0 kararlı sürümünü kullanın.
Sürüm 1.8.0-rc01
16 Temmuz 2025
1.8.0 kararlı sürümünü kullanın.
Sürüm 1.8.0-beta01
2 Temmuz 2025
1.8.0 kararlı sürümünü kullanın.
Sürüm 1.8.0-alpha01
19 Mayıs 2025
1.8.0 kararlı sürümünü kullanın.
Sürüm 1.7.0
Sürüm 1.7.1
16 Mayıs 2025
Bu sürüm, 1.6.1 ile aynı koda sahiptir ve yanlışlıkla kararlı olarak etiketlenen bir alfa sürümü olan 1.7.0'dan "daha yeni" bir sürüm olarak görünmesini sağlamak için yayınlanmaktadır (aşağıya bakın).
Sürüm 1.7.0
16 Mayıs 2025
Bu sürüm 1.7.0-alpha01 olmalıydı ancak maven.google.com'da yanlışlıkla 1.7.0 (yani kararlı) olarak etiketlendi. Lütfen bu sürümü kullanmayın. 1.6.1 sürümünde kalabilir veya 1.7.1 sürümüne (1.6.1 ile aynı koda sahiptir) yükseltebilirsiniz.
Sürüm 1.6.0
1.6.1
14 Nisan 2025
androidx.media3:media3-*:1.6.1 yayınlandı. 1.6.1 sürümü bu commit'leri içerir.
- Ortak Kitaplık:
- Yeni bir
pitchdeğeriylePlaybackParametersöğesini kolayca kopyalamak içinPlaybackParameters.withPitch(float)yöntemi eklendi (#2257).
- Yeni bir
- ExoPlayer:
- Bir sonraki medya öğesinin başlatılması sırasında kurtarılabilir oluşturucu hatası nedeniyle medya öğesi geçişinin başarısız olmasına yol açan sorun düzeltildi (#2229).
PreloadMediaSource,getBufferedDurationUs()öğesini hazırlanmadan önce çağırmaya çalıştığı içinProgressiveMediaPeriodöğesininIllegalStateExceptionhatası vermesine neden olan sorun düzeltildi (#2315).- DASH, HLS ve SmoothStreaming için manifest isteklerinde
CmcdDatagönderme sorunu düzeltildi (#2253). - Reklam grupları kaldırıldıktan sonra
AdPlaybackState.withAdDurationsUs(long[][])kullanılabilir. Kullanıcının, kaldırılan reklam grupları için boş veya null olabilecek bir süre dizisi iletmesi gerekir (#2267).
- Ayıklayıcılar:
- MP4:
tkhdkutusundanalternate_groupdeğerini ayrıştırın ve her parçanınFormat.metadataöğesindeMp4AlternateGroupDatagirişi olarak gösterin (#2242).
- MP4:
- Ses:
- Kısa içeriklerden oluşan bir oynatma listesi oynatılırken konumun takılı kalmasına neden olan boşaltma sorunu düzeltildi (#1920).
- Oturum:
- Platform
MediaSessiongeri çağırmaları için toplama zaman aşımı süresini 500 milisaniyeden 100 milisaniyeye düşürün ve uygulamaların bu değeri yapılandırmasına olanak tanıyan deneysel bir ayarlayıcı ekleyin. - Kullanıcı tarafından kapatılan bildirimlerin yeniden görünmesine neden olan sorun düzeltildi (#2302).
- Sarmalanmış oynatıcı aslında boşken oturumun tek öğeli bir zaman çizelgesi döndürmesine neden olan hata düzeltildi. Bu sorun, sarmalanmış oynatıcıda
COMMAND_GET_TIMELINEyokkenCOMMAND_GET_CURRENT_MEDIA_ITEMmevcut olduğunda ve sarmalanmış oynatıcı boş olduğunda (#2320) ortaya çıkıyordu. - Hizmetle yapılan diğer etkileşimlerden (ör.
setForegroundServiceTimeoutMs) sonraMediaSessionService.setMediaNotificationProviderçağrısının sessizce yoksayılmasına neden olan bir hata düzeltildi (#2305).
- Platform
- Kullanıcı arayüzü:
PlayerSurface,ExoPlayer.setVideoEffectsveCompositionPlayerile çalışacak şekilde etkinleştirin.PlayerSurfaceöğesinin yeni birPlayerile yeniden oluşturulamamasına neden olan hata düzeltildi.
- HLS uzantısı:
- HLS medyası için
CmcdData'te parça süresinin ayarlanmaması nedeniyle şifrelenmiş medya segmentleri işlenirken onay hatasına yol açan sorun düzeltildi (#2312).
- HLS medyası için
- RTSP uzantısı:
- RTSP oturumunu TCP kullanacak şekilde yapılandırmak için RTSPT şemasıyla URI desteği eklendi (#1484).
- Yayınlama uzantısı:
- Oynatma listesi meta verileri için destek eklendi (#2235).
1.6.0
26 Mart 2025
androidx.media3:media3-*:1.6.0 yayınlandı. 1.6.0 sürümü bu kayıtları içerir.
- Ortak Kitaplık:
androidx.mediaiçindeki eşdeğer sınıfları değiştirmek içinAudioManagerCompatveAudioFocusRequestCompatekleyin.- Kotlin'i 1.9.20'den 2.0.20'ye yükseltin ve Compose Compiler Gradle eklentisini kullanın. KotlinX Coroutines kitaplığı 1.8.1'den 1.9.0'a yükseltildi.
Format.toBundle(boolean excludeMetadata)yöntemini kaldırın, bunun yerineFormat.toBundle()yöntemini kullanın.SimpleBasePlayeriçinde,nullMediaMetadatailesetPlaylistsonrasındaStateiçinde yeni bircurrentMediaItemIndexayarlandığında meta verilerin yeniden değerlendirilmemesine neden olan hata düzeltildi (#1940).- Diğer sınıflardaki güncellemeleri daha kolay yönetmek için
SimpleBasePlayer.Stateerişimini korumalıdan herkese açık olarak değiştirin (#2128).
- ExoPlayer:
- Platform
MediaExtractorile eşdeğer özellikler sunan yeni bir sınıf olanMediaExtractorCompateklendi. MediaCodecVideoRendererkullanarak oynatma için deneysel "ExoPlayer" önceden ısıtma desteği ekleyin.ExoPlayeriçin ikincil birMediaCodecVideoRenderersağlamak üzereexperimentalSetEnableMediaCodecVideoRendererPrewarmingüzerindenDefaultRenderersFactoryyapılandırabilirsiniz. EtkinleştirilirseExoPlayer, medya öğesi geçiş gecikmesini azaltmak için oynatma sırasında ardışık medya öğelerinin videosunu önceden işler.DefaultLoadControliçindebufferForPlaybackMsvebufferForPlaybackAfterRebufferMsiçin varsayılan değerleri sırasıyla 1.000 ve 2.000 ms'ye düşürün.DeviceInfove cihaz ses seviyesini eşzamansız olarak ilk kullanıma hazırlayın (setDeviceVolumeControlEnabledkullanılarak etkinleştirildiyse). Bu değerlerExoPlayer.Builder.build()işleminden hemen sonra kullanılamaz vePlayer.Listener, değişikliklerionDeviceInfoChangedveonDeviceVolumeChangedaracılığıyla bildirir.- İlk ses oturumu kimliği, oynatıcı oluşturulduktan hemen sonra kullanılamaz. Gerekirse ilk güncellemeyi dinlemek için
AnalyticsListener.onAudioSessionIdChangeddüğmesini kullanabilirsiniz. - Video parçasını seçerken dili göz önünde bulundurun. Varsayılan olarak, seçilen ses parçasının diliyle eşleşen bir "ana" video parçası seçin (varsa). Açık video dili tercihleri
TrackSelectionParameters.Builder.setPreferredVideoLanguage(s)ile ifade edilebilir. DefaultTrackSelector.selectVideoTrack()yöntemineselectedAudioLanguageparametresi eklendi.MediaSourceEventListener.onLoadStartedve ilgiliMediaSourceEventListener.EventDispatcheryöntemlerineretryCountparametresi eklendi.- Oynatma listesi öğelerinin veya çok dönemli DASH akışlarındaki dönemlerin sürelerinin gerçek içerikle eşleşmemesi nedeniyle öğenin sonunda karelerin donmasına neden olabilen hata düzeltildi (#1698).
BasePreloadManager.Listeneröğesini üst düzeye taşıyınPreloadManagerListener.- Önceden ısıtma için ikincil oluşturucular sağlamak üzere
RenderersFactory.createSecondaryRendereruygulanabilir. Ön ısıtma, oynatma sırasında medya öğesi geçişlerinin daha hızlı yapılmasını sağlar. - DASH, HLS ve SmoothStreaming uyarlanabilir akış biçimlerindeki manifest istekleri için
CmcdDatagöndermeyi etkinleştirin (#1951). MediaCodecRenderer.onReadyToInitializeCodeciçinde başlatılacak codec'inMediaCodecInfodeğerini sağlayın (#1963).- Reklam grupları ekleyerek
AdPlaybackStateskampanyasının büyümesine izin vermek içinAdsMediaSourceayarını değiştirin. Geçersiz değişiklikler algılanır ve bir istisna oluşturulur. - Ara reklamdan sonra içerik medyasına geçiş yaparken yalnızca kod çözme işlemi uygulanan ek karelerin hızlı bir şekilde art arda gösterilmesiyle ilgili sorun düzeltildi.
- Uygulamaların varsayılan olarak iki farklı meta veri şeması almasını sağlamak için
DefaultRenderersFactory'ın ikiMetadataRendererörneği eklemesini sağlayın. - Oynatma duraklatıldığında devam eden bir parçanın yüklenmesinin iptal edilip edilmeyeceğini yeniden değerlendirme (#1785).
ClippingMediaSourceiçin, ileri/geri sarılamayan medyalarda kırpmaya izin verme seçeneği ekleyin.- Ön ısıtma ile arama yapıldığında sonraki medya öğesi geçişinin engellenmesine neden olan hata düzeltildi.
ExoPlayer.isLoading(),STATE_IDLEveyaSTATE_ENDEDdurumuna geçiş yapmasına rağmentrueolarak kalmasına neden olan hata düzeltildi (#2133).LoadControl.ParameteriçinlastRebufferRealtimeMsekleyin (#2113).
- Platform
- Transformer:
- Geriye dönük uyumlu alternatif biçimlere dönüştürme desteği ekleyin.
- Dolby Vision (profil 8) biçiminin kod dönüştürme ve çoklama desteği eklendi.
Formatkullanmak içinVideoFrameProcessor.registerInputStreamveVideoFrameProcessor.Listener.onInputStreamRegisteredparametrelerini güncelleyin.DefaultEncoderFactorykullanırken HDR statik meta verileri oluşturun.MediaMetricsManagerkullanarak Android platformu teşhisleri için desteği etkinleştirin. Transformer, düzenleme etkinliklerini ve performans verilerini platforma iletir. Bu sayede, cihazda sistem performansı ve hata ayıklama bilgileri sağlanır. Bu veriler, cihaz kullanıcısı tarafından kullanım ve teşhis bilgileri paylaşımı etkinleştirilmişse Google tarafından da toplanabilir. Uygulamalar,Transformer.Builder.setUsePlatformDiagnostics(false)ile Transformer için platform teşhisine katkıda bulunmaktan kapsamı dışında kalmayı seçebilir.InAppMuxer,InAppMp4MuxerveInAppFragmentedMp4Muxerolarak bölündü. Parçalanmamış bir MP4 dosyası oluşturmak içinInAppMp4Muxer, parçalanmış bir MP4 dosyası oluşturmak için iseInAppFragmentedMp4Muxerkullanılır.Muxerarayüzünümedia3-muxerkonumundanmedia3-transformerkonumuna taşıyın.- Ekran kaydı için
MediaProjectionüzerinden medya sağlayanMediaProjectionAssetLoaderöğesini ekleyin ve Transformer demo uygulamasına ekran kaydı desteği ekleyin. Codecarayüzüne#getInputFormat()ekleyin.- Mümkün olduğunda
GlObjectsProvideröğesini serbest bırakma sorumluluğunuDefaultVideoFrameProcessorveDefaultVideoCompositoriçindeki çağırana devredin.
- Ayıklayıcılar:
- AVI: Akış başlığının, parça sayısı yerine bayt sayısını depoladığı, sabit bit hızında sıkıştırılmış ses içeren dosyaların işlenmesi düzeltildi.
- Uzunlukları 4 yerine 1 veya 2 bayt olarak ifade edilen NAL birimlerinin işlenmesi düzeltildi.
- Düzenleme listesi, önceki senkronizasyon karesi olmadan senkronizasyon dışı bir karede başladığında MP4 düzenleme listelerindeki
ArrayIndexOutOfBoundsExceptiondüzeltildi (#2062). - TS akışlarının bazı cihazlarda takılmasına neden olan sorun düzeltildi (#2069).
- FLAC: 32 bit FLAC dosyaları için destek eklendi. Daha önce bu tür içerikler
IllegalStateException: Playback stuck buffering and not loadingile oynatılamıyordu (#2197).
- Ses:
- Oynatma devam ettirildiğinde çağrılacak
onAudioPositionAdvancingdüzeltildi (daha önce oynatma duraklatıldığında çağrılıyordu). SpeedChangingAudioProcessorvarsayılan parametrelerle yapılandırıldığındaSonicAudioProcessoratlanmaz.Sonic#getOutputSize()içindeDefaultAudioSinköğesinin durmasına neden olabilecek yetersizlik sorununu düzeltin.MediaCodecAudioRenderer.getDurationToProgressUs()veDecoderAudioRenderer.getDurationToProgressUs()öğelerini düzelterek arama işlemlerinin, sağlanan süreleri doğru şekilde sıfırlamasını sağlayın.androidx.media3.common.audio.SonicAudioProcessornihai hale getirilsin.ChannelMappingAudioProcessorveTrimmingAudioProcessoriçin kayan noktalı PCM desteği eklendi.
- Oynatma devam ettirildiğinde çağrılacak
- Video:
- Uygulamaların yer tutucu yüzeylerin kullanımını engellemek için geçersiz kılabilmesi amacıyla
MediaCodecVideoRenderer.shouldUsePlaceholderSurfacedeğerini korumalı olarak değiştirin (#1905). - Arama işlemini hızlandırmak için deneysel
ExoPlayerAV1 örnek bağımlılık ayrıştırması ekleyin. YeniDefaultRenderersFactory.experimentalSetParseAv1SampleDependenciesAPI ile etkinleştirin. - Bağımlı olmayan geç
MediaCodecVideoRendererkod çözücü giriş arabelleklerini bırakmak için deneyselExoPlayerAPI'yi ekleyin.DefaultRenderersFactory.experimentalSetLateThresholdToDropDecoderInputUsile etkinleştirin. * Yüzeyi olmayan bir oynatıcının hemen hazır olması ve bekleyen karelerin kodunu çok yavaş çözmesi sorunu düzeltildi (#1973). - Ekran titremesini önlemek için Xiaomi ve OPPO cihazları ayrılmış yüzey modundan hariç tutun (#2059).
- Uygulamaların yer tutucu yüzeylerin kullanımını engellemek için geçersiz kılabilmesi amacıyla
- Metin:
- VobSub altyazıları için destek eklendi (#8260).
MediaItem.Builder.setSubtitleConfigurationsile yapılandırılan tüm altyazı dosyalarının istekli yüklenmesi durduruldu ve bunun yerine, parça seçimi tarafından seçilirse yalnızca bir altyazı dosyası yüklenecek şekilde değiştirildi (#1721).- TTML:
stylekullanaraktts:originvetts:extentreferansları için destek eklendi (#2953). - WebVTT ve SubRip zaman damgalarını tam olarak 3 ondalık basamakla kısıtlayın. Daha önce, ondalık basamak sayısını yanlış ayrıştırıyor ancak değerin her zaman milisaniye cinsinden olduğunu varsayıyorduk. Bu da yanlış zaman damgalarına (#1997) yol açıyordu.
- Oynatma listesinde CEA-608 veya CEA-708 altyazılı kırpılmış öğeler olduğunda oynatmanın takılması sorunu düzeltildi.
- SSA dosyasında sıfır süreli (başlangıç ve bitiş zamanı eşit) bir işaret olduğunda
IllegalStateExceptiondüzeltildi (#2052). - Altyazılar ses ve video ile aynı kapsayıcıda birleştirildiğinde altyazı ayrıştırma hatalarını gizleme (ve günlüğe kaydetme) (#2052).
- CR satır sonları kullanan WebVTT dosyalarındaki çok baytlı UTF-8 karakterlerinin işlenmesiyle ilgili sorun düzeltildi (#2167).
- DRM:
- API < 27 cihazlarda ClearKey içeriği oynatılırken oluşan
MediaCodec$CryptoException: Operation not supported in this configurationhatası düzeltildi (#1732).
- API < 27 cihazlarda ClearKey içeriği oynatılırken oluşan
- Etki:
OverlaySettingsişleviStaticOverlaySettingsiçine taşındı. Dinamik yer paylaşımı ayarlarına izin vermek içinOverlaySettingsalt sınıfı oluşturulabilir.
- Çoğullayıcılar:
- Çok uzun bir tam nitelikli ad kullanmamak için
MuxerException,Muxerarayüzünden taşındı. - Hem
Mp4Muxer.Builderhem deFragmentedMp4Muxer.Builder'dasetSampleCopyEnabled()yöntemisetSampleCopyingEnabled()olarak yeniden adlandırıldı. Mp4Muxer.addTrack()veFragmentedMp4Muxer.addTrack()artıkTrackTokenyerineintparça kimliği döndürüyor.Mp4MuxerveFragmentedMp4MuxerartıkMuxerarayüzünü uygulamıyor.Mp4Muxerörnek toplu işlemini ve kopyalamayı varsayılan olarak devre dışı bırakın.FragmentedMp4Muxer'da yalnızca ses parçası yazıldığında çok sayıda parça oluşturan bir hata düzeltildi.
- Çok uzun bir tam nitelikli ad kullanmamak için
- Oturum:
- Oynatma duraklatıldığında, durdurulduğunda veya başarısız olduğunda ön plan hizmeti durumunu 10 dakika daha koruyun. Bu sayede kullanıcılar, çeşitli cihazlarda ön plan hizmet kısıtlamaları riski olmadan bu zaman aşımı süresi içinde oynatmaya devam edebilir.
onTaskRemovedgeçersiz kılınırken ön plan hizmetinistopSelf()öncesinde durdurmak için artık yalnızcaplayer.pause()çağrısının kullanılamayacağını unutmayın. Bunun yerineMediaSessionService.pauseAllPlayersAndStopSelf()kullanın. - Oynatma hata veya durduruldu durumuna girdiğinde bildirimi görünür tutun. Bildirim yalnızca oynatma listesi temizlendiğinde veya oynatıcı serbest bırakıldığında kaldırılır.
- Android platformu MediaSession işlemleri ACTION_PLAY ve ACTION_PAUSE'un işlenmesi, mevcut komutlara göre yalnızca birini ayarlayacak ve yalnızca biri ayarlandığında kabul edecek şekilde iyileştirildi.
Context,MediaButtonReceiver.shouldStartForegroundServiceiçin parametre olarak eklendi (#1887).- Eski bir oturuma bağlı
MediaControllerüzerindePlayeryöntemini çağırmanın, bekleyen bir güncellemedeki değişiklikleri iptal etmesine neden olan hata düzeltildi. MediaSession.setSessionActivity(PendingIntent)'ın null değerini kabul etmesini sağlayın (#2109).- Oynatma listesi temizlendiğinde eski bir bildirimin görünür kalmasına neden olan hata düzeltildi (#2211).
- Oynatma duraklatıldığında, durdurulduğunda veya başarısız olduğunda ön plan hizmeti durumunu 10 dakika daha koruyun. Bu sayede kullanıcılar, çeşitli cihazlarda ön plan hizmet kısıtlamaları riski olmadan bu zaman aşımı süresi içinde oynatmaya devam edebilir.
- Kullanıcı arayüzü:
PlayerSurface,PresentationState,PlayPauseButtonState,NextButtonState,PreviousButtonState,RepeatButtonState,ShuffleButtonStatevePlaybackSpeedStateiçinmedia3-ui-composemodülüne durum bilgisi depolayıcılar ve composable'lar ekleyin.
- İndirilenler:
- Veri kaynağının
IOExceptiondışında birExceptionoluşturması durumunda veri kaynaklarını açık ve önbellek alanlarını kilitli bırakanCacheWriteriçindeki hata düzeltildi (#9760).
- Veri kaynağının
- HLS uzantısı:
HlsInterstitialsAdsLoaderiçin ilk sürümü ekleyin. Reklam yükleyici, bir HLS medya oynatma listesinin HLS geçiş reklamlarını okur ve bunlarıAdsMediaSourceöğesine iletilenAdPlaybackStateile eşler. Bu ilk sürüm, yalnızcaX-ASSET-URIözelliklerine sahip HLS VOD akışlarını destekler.HlsInterstitialsAdsLoader.AdsMediaSourceFactoryekleyin. Uygulamalar,HlsInterstitialsAdsLoaderkullananAdsMediaSourceörneklerini kolay ve güvenli bir şekilde oluşturmak için bu API'yi kullanabilir.- Dolby Vision biçimlerini algılamak için HLS oynatma listesindeki
SUPPLEMENTAL-CODECSetiketini ayrıştırma (#1785). - HLS yayınında senkronizasyon konumlarını arama koşulu gevşetildi (#2209).
- DASH uzantısı:
- DASH için AC-4 Level-4 biçim desteği eklendi (#1898).
- Çok dönemli canlı yayınlarda reklam ekleme için güncelleme aralığı hesaplanırken oluşan sorun düzeltildi (#1698).
- Dolby Vision biçimlerini algılamak için DASH manifestinden
scte214:supplementalCodecsözelliğini ayrıştırın (#1785). - Dönemin, belirtilen dönem süresinin ötesinde medya örnekleri içerdiği canlı yayınlarda dönem geçişlerinin işlenmesi iyileştirildi (#1698).
adaptation-set-switchingile işaretlenmiş ancak farklı diller veya rol işaretleri içeren adaptasyon setlerinin birleştirilmesiyle ilgili sorun düzeltildi (#2222).
- Kod çözücü uzantıları (FFmpeg, VP9, AV1 vb.):
- MPEG-H sesin kodunu çözmek için yerleşik MPEG-H kod çözücüyü kullanan MPEG-H kod çözücü modülü eklendi (#1826).
- MIDI uzantısı:
- Özel
AudioSinkveAudioRendererEventListenerörnekleriniMidiRendereriçine yerleştirin.
- Özel
- Yayınlama uzantısı:
- Google Play Hizmetleri'nin yüklü ancak devre dışı olduğu cihazlarda API 34 ve sonraki sürümleri hedefleyen uygulamalarda
FLAG_MUTABLEkilitlenmesini düzeltmek içinplay-services-cast-frameworkbağımlılığını 21.5.0'a yükseltin (#2178).
- Google Play Hizmetleri'nin yüklü ancak devre dışı olduğu cihazlarda API 34 ve sonraki sürümleri hedefleyen uygulamalarda
- Demo uygulama:
- Ek düğmelerle
demo-composedeneyimini genişletin ve ölçeklendirme ile deklanşör desteğiylePlayerSurfaceentegrasyonunu iyileştirin.
- Ek düğmelerle
- Desteği sonlandırılan simgeleri kaldırın:
- Desteği sonlandırılan
AudioMixer.create()yöntemini kaldırın. Bunun yerineDefaultAudioMixer.Factory().create()kullanın. - Desteği sonlandırılan aşağıdaki
Transformer.Builderyöntemleri kaldırıldı:setTransformationRequest(). Bunun yerinesetAudioMimeType(),setVideoMimeType()vesetHdrMode()politikalarını kullanın.setAudioProcessors(), ses işlemcisiniEditedMediaItem.Builder.setEffects()içinde ayarlayın ve bunun yerineTransformer.start()öğesine iletin.setVideoEffects(), video efektiniEditedMediaItem.Builder.setEffects()içinde ayarlayın ve bunun yerineTransformer.start()öğesine iletin.setRemoveAudio(), bunun yerineTransformer.start()öğesine iletilenEditedMediaItemöğesinden sesi kaldırmak içinEditedMediaItem.Builder.setRemoveAudio()kullanın.setRemoveVideo(), videoyuTransformer.start()yöntemine iletilenEditedMediaItemlistesinden kaldırmak içinEditedMediaItem.Builder.setRemoveVideo()yöntemini kullanın.setFlattenForSlowMotion(),Transformer.start()öğesine iletilenEditedMediaItemöğesini düzleştirmek içinEditedMediaItem.Builder.setFlattenForSlowMotion()kullanın.setListener(). Bunun yerineaddListener(),removeListener()veyaremoveAllListeners()kullanın.
- Desteği sonlandırılan aşağıdaki
Transformer.Listeneryöntemleri kaldırıldı:onTransformationCompleted(MediaItem), bunun yerineonCompleted(Composition, ExportResult)kullanın.onTransformationCompleted(MediaItem, TransformationResult), bunun yerineonCompleted(Composition, ExportResult)kullanın.onTransformationError(MediaItem, Exception), bunun yerineonError(Composition, ExportResult, ExportException)kullanın.onTransformationError(MediaItem, TransformationException), bunun yerineonError(Composition, ExportResult, ExportException)kullanın.onTransformationError(MediaItem, TransformationResult, TransformationException), bunun yerineonError(Composition, ExportResult, ExportException)kullanın.onFallbackApplied(MediaItem, TransformationRequest, TransformationRequest), bunun yerineonFallbackApplied(Composition, TransformationRequest, TransformationRequest)kullanın.
- Desteği sonlandırılan
TransformationResultsınıfını kaldırın. Bunun yerineExportResultkullanın. - Desteği sonlandırılan
TransformationExceptionsınıfını kaldırın. Bunun yerineExportExceptionkullanın. - Desteği sonlandırılan
Transformer.PROGRESS_STATE_NO_TRANSFORMATIONöğesini kaldırın. Bunun yerineTransformer.PROGRESS_STATE_NOT_STARTEDkullanın. - Desteği sonlandırılan
Transformer.setListener()öğesini kaldırın. Bunun yerineTransformer.addListener(),Transformer.removeListener()veyaTransformer.removeAllListeners()kullanın. - Desteği sonlandırılan
Transformer.startTransformation()öğesini kaldırın. Bunun yerineTransformer.start(MediaItem, String)kullanın. - Desteği sonlandırılan
SingleFrameGlShaderProgramöğesini kaldırın. Bunun yerineBaseGlShaderProgramkullanın. Transformer.flattenForSlowMotionöğesini kaldır Bunun yerineEditedMediaItem.flattenForSlowMotionkullanın.ExoPlayer.VideoComponent,ExoPlayer.AudioComponent,ExoPlayer.TextComponentveExoPlayer.DeviceComponentkaldırıldı.androidx.media3.exoplayer.audio.SonicAudioProcessorkaldırıldı.- Desteği sonlandırılan aşağıdaki
DownloadHelperyöntemleri kaldırıldı:DownloadHelper(MediaItem, @Nullable MediaSource, TrackSelectionParameters, RendererCapabilities[])oluşturucusu yerineDownloadHelper(MediaItem, @Nullable MediaSource, TrackSelectionParameters, RendererCapabilitiesList)kullanın.getRendererCapabilities(RenderersFactory), eşdeğer işlevsellikRenderersFactoryile birDefaultRendererCapabilitiesListoluşturarak veDefaultRendererCapabilitiesList.getRendererCapabilities()çağrılarak elde edilebilir.PlayerNotificationManager.setMediaSessionToken(MediaSessionCompat)yöntemi kaldırıldı. Bunun yerinePlayerNotificationManager.setMediaSessionToken(MediaSession.Token)kullanın ve(MediaSession.Token) compatToken.getToken()değerini iletin.
- Desteği sonlandırılan
1.6.0-rc02
19 Mart 2025
1.6.0 kararlı sürümünü kullanın.
1.6.0-rc01
12 Mart 2025
1.6.0 kararlı sürümünü kullanın.
1.6.0-beta01
26 Şubat 2025
1.6.0 kararlı sürümünü kullanın.
Sürüm 1.6.0-alpha03
6 Şubat 2025
1.6.0 kararlı sürümünü kullanın.
Sürüm 1.6.0-alpha02
30 Ocak 2025
1.6.0 kararlı sürümünü kullanın.
Sürüm 1.6.0-alpha01
20 Aralık 2024
1.6.0 kararlı sürümünü kullanın.
Sürüm 1.5
Sürüm 1.5.1
19 Aralık 2024
androidx.media3:media3-*:1.5.1 yayınlandı. 1.5.1 sürümü bu commit'leri içerir.
- ExoPlayer:
- Bu platform API'siyle ilgili bildirilen codec zaman aşımı sorunlarını önlemek için MediaCodec'te eşzamansız şifre çözme kullanımını devre dışı bırakın (#1641).
- Ayıklayıcılar:
- MP3: Bir
VBRIkaresinin içindekiler tablosu, dosyadaki tüm MP3 verilerini kapsamadığında oynatma erken durdurulmaz (#1904).
- MP3: Bir
- Video:
onOutputFormatChangedişlenirken sağlananMediaCodecAdapterpiksel en boy oranı değerlerinin kullanılması geri alındı (#1371).
- Metin:
ReplacingCuesResolver.discardCuesBeforeTimeUsiçinde,timeUsanında etkin olan (daha önce başlamış ancak henüz bitmemiş) işaretin yanlışlıkla silinmesine (#1939) neden olan hata düzeltildi.
- Meta veriler:
- Vorbis yorumlarındaki disk/parça numaralandırmasını ve türü
MediaMetadataiçine çıkarın (#1958).
- Vorbis yorumlarındaki disk/parça numaralandırmasını ve türü
Sürüm 1.5.0
27 Kasım 2024
androidx.media3:media3-*:1.5.0 yayınlandı. 1.5.0 sürümü bu commit'leri içerir.
- Ortak Kitaplık:
- Tam tutarlılık ve dinleyici yönetimi sağlarken küçük ayarlamalarla başka bir oynatıcıya yönlendirmeye olanak tanıyan
ForwardingSimpleBasePlayerekleyin (#1183). SimpleBasePlayer.State.playlistyerinegetPlaylist()yöntemini kullanın.- Oynatma listesi yapısı oluşturmak yerine doğrudan bir
Timelineve mevcutTracksileMetadatabelirtmek içinSimpleBasePlayer.State.Builder.setPlaylist()için geçersiz kılma ekleyin. minSdkdeğerini 21'e (Android Lollipop) yükseltin. Bu, diğer tüm AndroidX kitaplıklarıyla uyumludur.- Ortak kitaplık üzerine inşa edilmiş Kotlin'e özgü işlevler sağlayan
androidx.media3:media3-common-ktxyapısını ekleyin. media3-common-ktxkitaplığınaPlayer.Eventsdinlemek için bir eş yordam oluşturacakPlayer.listenaskıya alma uzantı işlevi ekleyin.- Çalışma zamanı sınıf doğrulama hatalarını önlemek için tasarlanmış, manuel olarak satır dışı bırakılan dahili sınıflardan
@DoNotInlineek açıklamalarını kaldırın. R8'in son sürümleri, çalışma zamanı hatalarını önlemek için artık bu tür çağrıları otomatik olarak satır dışı bırakıyor (bu nedenle manuel olarak satır dışı bırakma işlemine artık gerek yok).compileSdk = 35nedeniyle, kitaplığın tüm Gradle kullanıcıları, bunu yapan bir R8 sürümünü kullanan Android Gradle eklentisinin bir sürümünü kullanıyor olmalıdır. Kitaplığı Gradle dışı derleme sistemleriyle kullanan kullanıcıların, çalışma zamanı sınıf doğrulama hatalarını önlemek için R8 eşdeğeri küçültme/kod karartma adımlarının benzer bir otomatik satır dışı işlem gerçekleştirdiğinden emin olması gerekir. Bu değişiklik diğer AndroidX kitaplıklarında zaten yapılmıştır.
- Tam tutarlılık ve dinleyici yönetimi sağlarken küçük ayarlamalarla başka bir oynatıcıya yönlendirmeye olanak tanıyan
- ExoPlayer:
MediaCodecRenderer.onProcessedStreamChange()artık her medya öğesi için çağrılabilir. Daha önce ilk öğe için çağrılmıyordu. Bu özelliği etkinleştirmek içinMediaCodecRenderer.experimentalEnableProcessedStreamChangedAtStart()kullanın.- Hata oluştuğunda
PreloadMediaSource.PreloadControluygulamalarının işlem yapmasına izin vermek içinPreloadMediaSource.PreloadControl.onPreloadErrorekleyin. - Ön yükleme etkinliklerini uygulamalara yaymak için
BasePreloadManager.Listenerekleyin. - SNTP istemcisi zaman aşımının değiştirilmesine ve zaman aşımı durumunda alternatif adreslerin yeniden denenmesine izin ver (#1540).
- Alan her zaman sıfır olduğu için
MediaCodecAdapter.Configuration.flagskaldırıldı. - Kullanıcının Wear OS API 35+'te (cihazın bunu desteklediği durumlarda) oynatma için yerleşik hoparlörü seçmesine izin verin.
- Ses odağı işleme etkinleştirilene kadar
Context.getSystemService(Context.AUDIO_SERVICE)için engelleme çağrısını erteleyin. Bu sayede, ses odağı işleme etkinleştirilmemişse engelleme çağrısı yapılmaz (#1616). - Yükleme başarısız olduğunda, arabelleğe alınan süreye bakılmaksızın oynatmaya izin verme (#1571).
- Ayrı oluşturucular oynatmanın hazır olmasına izin verdiğinde sinyal vermek için
AnalyticsListener.onRendererReadyChanged()ekleyin. MediaCodec, eşzamansız modda (API 31 ve sonraki sürümlerde varsayılan davranış) çalıştırıldığındaMediaCodec.CryptoExceptionbazen "beklenmeyen çalışma zamanı hatası" olarak bildiriliyordu. Bu sorun düzeltildi.PreloadMediaSource.PreloadControl.onContinueLoadingRequested()ilebufferedPositionUsyerinebufferedDurationUsödeyin. AyrıcaDefaultPreloadManager.Status.STAGE_LOADED_TO_POSITION_MSdeğeriniDefaultPreloadManager.Status.STAGE_LOADED_FOR_DURATION_MSolarak değiştirir. Bu durumda uygulamaların, bir konum yerine, ilgili medya kaynağının bu IntDef ile önceden yüklenmesi gereken varsayılan başlangıç konumundan belirli bir süreyi temsil eden bir değer iletmesi gerekir.- Tüm yöntem çağrılarını başka bir oluşturucuya yönlendiren
ForwardingRendereruygulamasını ekleyin (1703). - Oynatma listesindeki bir sonraki öğe için oynatma listesi önceden yükleme özelliğini ekleyin. Uygulamalar,
ExoPlayer.setPreloadConfiguration(PreloadConfiguration)yöntemini uygun şekilde çağırarak önceden yüklemeyi etkinleştirebilir. Önceden yükleme varsayılan olarak devre dışıdır. Özellik etkinleştirildiğinde ve oynatmayı engellememek içinDefaultLoadControl, önceden yüklemeyi yalnızca oynatıcı oynatma için yükleme yapmadığında başlayacak ve devam edecek şekilde kısıtlar. Uygulamalar,LoadControl.shouldContinuePreloading()yöntemini uygun şekilde uygulayarak bu davranışı değiştirebilir (ör.DefaultLoadControliçinde bu yöntemi geçersiz kılarken).LoadControlyönteminin varsayılan uygulaması, bir uygulamanınLoadControlyönteminin özel bir uygulamasını kullanması durumunda önceden yüklemeyi devre dışı bırakır. - Alt sınıf işleyicilerin etkinliklerinin çağrılmasına izin vermek için
MediaSourceEventListener.EventDispatcher.dispatchEvent()yöntemi eklendi (1736). - Sürekli olarak paylaşılan yapılandırmalarla
DefaultPreloadManagerveExoPlayerörneklerini oluşturanDefaultPreloadManager.Builderekleyin. DefaultLoadControluygulaması, akış türleriniExoTrackSelection[]öğesinden alabildiği içinRenderer[]parametresiLoadControl.onTracksSelected()öğesinden kaldırıldı.DefaultLoadControl.calculateTargetBufferBytes(Renderer[], ExoTrackSelection[])desteği sonlandırıldı ve geçersiz kılmaları önlemek için yöntem "final" olarak işaretlendi. Bunun yerine yeniDefaultLoadControl.calculateTargetBufferBytes(ExoTrackSelection[])kullanılmalıdır.MergingMediaSourceiçinde ikincil kaynaklardan gelenMediaSourceEventListeneretkinliklerini raporla. Bu, yan yüklenen altyazılar (MediaItem.LocalConfiguration.subtitleConfigurationsile eklenenler) için yükleme başlatma/hata/iptal edildi/tamamlandı etkinliklerinin raporlanmasına neden olur. Bu etkinlikler,AnalyticsListenertarafından yayınlanan yinelenen yükleme etkinlikleri olarak görünebilir.- Altyazı ve meta veri hatalarının oynatmayı tamamen durdurmasını önleyin.
Bunun yerine, sorunlu parça devre dışı bırakılır ve kalan parçaların oynatılması devam eder (#1722).
- Yeni altyazı işleme sırasında (ayıklama sırasında), ilişkili ayrıştırma (ör. geçersiz altyazı verileri) ve yükleme hataları (ör. HTTP 404)
onLoadErrorgeri çağırmaları aracılığıyla yayınlanır. - Eski altyazı işleme sırasında (oluşturma sırasında), yalnızca ilişkili yükleme hataları
onLoadErrorgeri çağırmaları aracılığıyla yayınlanırken ayrıştırma hataları sessizce yoksayılır (bu, önceden var olan bir davranıştır).
- Yeni altyazı işleme sırasında (ayıklama sırasında), ilişkili ayrıştırma (ör. geçersiz altyazı verileri) ve yükleme hataları (ör. HTTP 404)
- Oynatma listesi öğelerinin veya çok dönemli DASH akışlarındaki dönemlerin sürelerinin gerçek içerikle eşleşmemesi nedeniyle öğenin sonunda karelerin donmasına neden olabilen hata düzeltildi (#1698).
- İstemcinin yeniden başlatılmasından sonraki son güncellemeden bu yana geçen maksimum süreyi ayarlamak için
SntpClientsınıfına bir ayarlayıcı ekleyin (#1794).
- Transformer:
- Video verilerini bir
Surfacearacılığıyla Transformer'a sıraya eklemeyi destekleyenSurfaceAssetLoaderöğesini ekleyin. ImageAssetLoader,IllegalStateExceptionhatası vermek yerineAssetLoader.onErrorüzerinden desteklenmeyen giriş bildiriyor.- Resim dışa aktarma için
MediaItem.Builder.setImageDurationMskullanarak resim süresini ayarlamayı zorunlu hale getirin. - Ses EditedMediaItem'ları dizilerindeki boşluklar için dışa aktarma desteği ekleyin.
- Video verilerini bir
- Kanal seçimi:
DefaultTrackSelector: Diğer faktörler eşit olduğunda kanal tabanlı ses yerine nesne tabanlı sesi tercih edin.
- Ayıklayıcılar:
Mp4ExtractorveFragmentedMp4Extractor, sonraki örnekler tarafından referans olarak kullanılmayan H264 örneklerini tanımlayabilir.AmrExtractoriçinde dizine dayalı aramayı etkinleştirme seçeneği ekleyin.- Geçerli kareler arasında 128 kB'tan fazla veri bulunan MP3 dosyalarını geçersiz yerine kesilmiş olarak değerlendirin. Bu, sonunda MP3 olmayan veriler bulunan ve MP3 baytlarının uzunluğunu gösteren başka meta verileri olmayan dosyaların artık
ParserException: Searched too many bytes.{contentIsMalformed=true, dataType=1}(#1563) ile başarısız olmak yerine MP3 verilerinin sonunda oynatmayı durdurduğu anlamına gelir. - MP4 dosyalarındaki düzenleme listeleri işlenirken anahtar kare olmayan medya başlangıç konumları için videodan önce gösterilen reklam örneği işleme sorunu düzeltildi (#1659).
Mp4ExtractorveFragmentedMp4Extractor'dekimdhdkutusundan medya süresi kullanılarak kare hızı hesaplaması iyileştirildi (#1531).- MP4 düzenleme listelerinde
media_timeöğesinin yanlış ölçeklendirilmesi düzeltildi.segment_duration, film zaman ölçeği kullanılarak doğru şekilde ölçeklendirilmişti.media_timeise artık MP4 biçim standardında belirtildiği gibi parça zaman ölçeği kullanılarak doğru şekilde ölçeklendiriliyor (#1792). - Düzenleme listesi içeren MP4 için
endIndiceshesaplamasında sıra dışı kareleri işleme (#1797). -1değerlerini işlemek için MP4 dosyalarınınmdhdkutusundaki medya süresi ayrıştırması düzeltildi (#1819).- H.263 video için MP4 dosyalarında
h263kutusunu tanımlama desteği eklendi (#1821). - AC-4 Seviye 4 ISO temel medya dosyası biçimi desteği eklendi (#1265).
- DataSource:
HttpEngineDataSource, API düzeyi 34 yerine S uzantısı 7 sürümünden itibaren kullanıma izin verecek şekilde güncellendi (#1262).DataSourceContractTest:DataSource.getUri()yönteminin, çözümlenen URI'yi (belgelendiği şekilde) döndürdüğünü doğrulayın. Bu, istenen URI'den farklıysa testler yeniDataSourceContractTest.TestResource.Builder.setResolvedUri()yöntemini kullanarak bunu belirtebilir.DataSourceContractTest:DataSource.getUri()vegetResponseHeaders(),open()için başarısız bir çağrıdan sonra ("bulunamadı" kaynağı nedeniyle) ve sonraki birclose()çağrısından önce "açık" değerlerini döndürür.DataSourceContractTest.getNotFoundResources()yöntemini geçersiz kılmak, test alt sınıflarının birden fazla "bulunamadı" kaynağı ve beklenen tüm üstbilgileri sağlamasına olanak tanır. Bu sayede, HTTP 404 (üstbilgilerle) ve "sunucu bulunamadı" (üstbilgi yok) arasında ayrım yapılabilir.
- Ses:
- Medyada varsa codec'te CTA-2075 ses düzeyi meta verilerini otomatik olarak yapılandırın.
- İleri veya geri sararken ses seviyesinin sorunsuz bir şekilde azalmasını sağlayın.
- İleri/geri sarma sırasında oluşabilecek patlama seslerini düzeltme
- Sonic'in zaman uzatma/perde kaydırma algoritması için kesme hatası birikimini düzeltme.
SpeedChangingAudioProcessoriçinde, çıkış karelerinin düşmesine neden olan hata düzeltildi.
- Video:
MediaCodecVideoRenderer, oluşturulmayan veya diğer örnekler tarafından referans olarak kullanılmayan örneklerin kodunu çözmez.- API 35 ve sonraki sürümlerde
MediaCodecAdapterartıkconfigureiçindenullSurfacealabilir ve codec destekliyorsa (MediaCodecInfo.detachedSurfaceSupported) önceden ayarlanmış birSurfacedeğerini kaldırmak için yeni birdetachOutputSurfaceyöntemini çağırabilir. onOutputFormatChangedişlenirken sağlanmışsaMediaCodecAdaptertarafından sağlanan piksel en boy oranı değerlerini kullanın (#1371).- Galaxy Tab S7 FE'de 60 fps güvenli H264 akışlarının desteklenmiyor olarak işaretlenmesine neden olan bir cihaz sorunu için geçici çözüm eklendi (#1619).
- Son örnekten sonra akış sonu sinyali döndürmeden takılan codec'ler için geçici çözüm ekleyin.
- Metin:
- Özel bir
VoiceSpanekleyin ve WebVTT ses aralıkları için doldurun (#1632). - HLS'de çok büyük altyazı zaman damgalarına sahip WebVTT'nin (mikrosaniye olarak gösterildiğinde ve
90,000MPEG zaman tabanıyla çarpıldığında 64 bitlongtaşan) gösterildiğinden emin olun (#1763). - Dolby Vision içeriklerinde CEA-608 altyazıları desteklenir (#1820).
- CEA-608 altyazıları etkinleştirildiğinde DASH çok dönemli akışlarda oynatmanın takılması sorunu düzeltildi (#1863).
- Özel bir
- Meta veriler:
- Icy veya vnd.dvb.ait içeriği barındıran parçalara
C.TRACK_TYPE_METADATAtürünü atayın.
- Icy veya vnd.dvb.ait içeriği barındıran parçalara
- Resim:
- Glide veya Coil gibi harici resim yükleme kitaplıklarıyla basitleştirilmiş entegrasyon için
ExternallyLoadedImageDecoderekleyin.
- Glide veya Coil gibi harici resim yükleme kitaplıklarıyla basitleştirilmiş entegrasyon için
- DataSource:
FileDescriptoröğesinden okuma yapmak için kullanılabilecek yeni birDataSourceolanFileDescriptorDataSourceeklendi (#3757).
- Etki:
- Küçük
SurfaceTextureölçeklendirme içinDefaultVideoFrameProcessorgeçici çözümü ekleyin.SurfaceTexture, kırpılmış bir arabelleğin kenarındaki 1 teksellik kenarlığı kesen küçük bir ölçeklendirme içerebilir. Bu sorun artık çözüldü. Çıktı, beklenen sonuca daha yakın. DefaultVideoFrameProcessor.queueInputBitmap()hızlandırın. Bu sayede,Transformerile Resimden Videoya Dönüştürme işlemi daha hızlı tamamlanır.
- Küçük
- IMA uzantısı:
- Oynatma listesini temizlemenin
ImaServerSideAdInsertionMediaSourceuygulamasındaArrayIndexOutOfBoundsExceptionhatasına neden olabileceği hata düzeltildi. - Preroll içermeyen sunucu tarafı eklenmiş DAI akışlarının, son midroll'den sonra oynatıldığında
ArrayIndexOutOfBoundsExceptionile sonuçlanmasına neden olan hata düzeltildi (#1741).
- Oynatma listesini temizlemenin
- Oturum:
- Uygulamaların bu yöntemi geçersiz kılarak oynatmayı devam ettirmek için gelen oynatma komutunu engellemesine izin vermek için
MediaButtonReceiver.shouldStartForegroundService(Intent)ekleyin. Varsayılan olarak hizmet her zaman başlatılır ve sistem, hizmetiForegroundServiceDidNotStartInTimeExceptionile kilitlenmeden oynatma engellenemez (#1528). - Eski bir hizmete bağlıyken
MediaBrowserüzerinden gönderilen özel komutların, yönteminMediaBrowserServiceCompatvaryantı yerineMediaSessionCompat.Callbackvaryantına gönderilmesine neden olan hata düzeltildi. Bu durum,MediaBrowserhizmetinin eski hizmet tarafından gönderilen gerçek dönüş değerini almasını engelliyordu (#1474). - Medya düğmesi intent'leri için yayın alıcısı ayarlanırken belirli üreticilerin cihazları tarafından oluşturulan
IllegalArgumentExceptionhatası düzeltildi (#1730). - Medya öğeleri için komut düğmeleri ekleyin. Bu işlem, eski kitaplıkta
Custom browse actionsolarak bilinen Media3 API'siniMediaBrowserCompatile ekler. Media3 ile medya öğeleri için komut düğmelerinin hemMediaBrowserhem deMediaControlleriç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ınplay()isteğinde bulunduktan sonra ön plan hizmeti başlatmasına izin vermemesine neden olan hata düzeltildi. CommandButton.Builder.setIconUriöğesini yalnızca içerik URI'lerini kabul edecek şekilde kısıtlayın.- Eski bir
MediaBrowserCompathizmetine bağlanırken Media3 tarayıcısının bağlantı ipuçlarını ilkMediaBrowserCompathizmetine iletin. Hizmet,onGetRoot()için yapılan ilk çağrıyla kök ipuçları olarak iletilen bağlantı ipuçlarını alabilir. - Eski bir tarayıcı hizmetine bağlı olan
MediaBrowser, tarayıcı birparentidhizmetine abone olduktan sonra hizmet tarafından gönderilen hatayı almadığı hata düzeltildi. - Eski bir
MediaBrowserServicehizmetine bağlı Media3 tarayıcısının, bir üst öğeye abone olurkenparentIdalt öğelerini iki kez istememesi için birlikte çalışabilirlik davranışını iyileştirin.
- Uygulamaların bu yöntemi geçersiz kılarak oynatmayı devam ettirmek için gelen oynatma komutunu engellemesine izin vermek için
- Kullanıcı arayüzü:
- XML tabanlı paylaşılan geçişlerle ilgili sorunlar nedeniyle
PlayerView-in-Compose-AndroidViewgeçici çözümünde uzatılmış/kırpılmış videoyu etkinleştirin.AndroidViewiçindePlayerViewkullanan uygulamaların, etkinleştirmek içinPlayerView.setEnableComposeSurfaceSyncWorkaroundçağrısı yapması gerekir (#1237, #1594). - Tam ekran düğmesinin simgesinin isteğe bağlı olarak (ör. bant dışı ve tıklama etkileşimine tepki vermeden) güncellenmesine izin vermek için
PlayerViewöğesinesetFullscreenButtonStateekleyin (#1590, #184). - Uygulama tarafından tanımlanmış metin parçası seçim tercihleri varsa metin seçimindeki "Hiçbiri" seçeneğinin çalışmamasıyla ilgili hata düzeltildi.
- XML tabanlı paylaşılan geçişlerle ilgili sorunlar nedeniyle
- 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 Bundlehatası düzeltildi (#1779).
- Metin parçaları içeren SmoothStreaming akışları oynatılırken oluşan
- RTSP uzantısı:
- Kod çözücü uzantıları (FFmpeg, VP9, AV1 vb.):
- Sesi sentezlemek için libiamf yerel kitaplığını kullanarak IAMF parçaları içeren MP4 dosyalarının oynatılmasını destekleyen IAMF kod çözücü modülünü ekleyin.
- Oynatma, stereo düzenin yanı sıra isteğe bağlı kafa hareketi izleme özelliği etkinleştirilmiş uzamsallaştırma ile 5.1 düzeninde etkinleştirilir ancak çift kulaklı oynatma desteği şu anda kullanılamamaktadır.
- Android 15'te kod çözücü uzantıları için 16 KB sayfa desteği eklendi (#1685).
- Sesi sentezlemek için libiamf yerel kitaplığını kullanarak IAMF parçaları içeren MP4 dosyalarının oynatılmasını destekleyen IAMF kod çözücü modülünü ekleyin.
- Cast Uzantısı:
- CastSession bağlantısı kesildikten sonra zaman çizelgesini temizlemeyi durdurur. Bu sayede, gönderen uygulama bağlantı kesildikten sonra oynatmayı yerel olarak devam ettirebilir.
Contextsağlandığında CastPlayer'ınDeviceInfodeğerini doldurun. Bu sayedeMediaSession,RoutingSessionile bağlanabilir. Bu, çıkış değiştiriciyi (#1056) entegre etmek için gereklidir.
- Test Yardımcı Programları:
DataSourceContractTestartık aşağıdakileri doğrulamak için testler içeriyor:read positiongiriş akışı güncellendi.- Çıkış arabelleği
offsetdoğru şekilde uygulanıyor.
- Demo uygulama
- Demo kısa video uygulamasındaki bellek sızıntıları giderildi (#1839).
- Desteği sonlandırılan simgeleri kaldırın:
- Kullanımdan kaldırılan
Player.hasPrevious,Player.hasPreviousWindow()öğesini kaldırın. Bunun yerinePlayer.hasPreviousMediaItem()politikasını kullanın. - Desteği sonlandırılan
Player.previous()yöntemini kaldırın. Bunun yerinePlayer.seekToPreviousMediaItem()kullanın. - Desteği sonlandırılan
DrmSessionEventListener.onDrmSessionAcquiredyöntemini kaldırın. - Desteği sonlandırılan
DefaultEncoderFactoryoluşturucuları kaldırın. Bunun yerineDefaultEncoderFactory.Builderkullanın.
- Kullanımdan kaldırılan
Sürüm 1.5.0-rc02
19 Kasım 2024
1.5.0 kararlı sürümünü kullanın.
Sürüm 1.5.0-rc01
13 Kasım 2024
1.5.0 kararlı sürümünü kullanın.
Sürüm 1.5.0-beta01
30 Ekim 2024
1.5.0 kararlı sürümünü kullanın.
Sürüm 1.5.0-alpha01
10 Eylül 2024
1.5.0 kararlı sürümünü kullanın.
Sürüm 1.4.0
Sürüm 1.4.1
27 Ağustos 2024
androidx.media3:media3-*:1.4.1 yayınlandı. 1.4.1 sürümü bu kayıtları içerir.
- ExoPlayer:
- Ayıklayıcılar:
- MP3:
Infoçerçevesindeki uzunluk alanına göre MP3 olmayan verileri doğru şekilde yoksayarakSearched too many byteshatası düzeltildi (#1480).
- MP3:
- Metin:
- TTML: Yüzde
tts:fontSizedeğerlerinin, yüzdetts:fontSizedeğerlerine sahip üst düğümlerden doğru şekilde devralınmasını sağlamak için bu değerlerin işlenmesi düzeltildi. - İstenen çıkış başlangıç zamanının
Subtitleiçindeki son etkinlik zamanından büyük veya ona eşit olması durumunun yanlış işlenmesi nedeniyleLegacySubtitleUtiliçindekiIndexOutOfBoundsExceptiondüzeltildi (#1516).
- TTML: Yüzde
- DRM:
- L1 Widevine içeriği oynatan API 31 ve sonraki sürüme sahip cihazlarda
android.media.MediaCodec$CryptoException: Operation not supported in this configuration: ERROR_DRM_CANNOT_HANDLEhatası düzeltildi. Bu hata, çerçeveMediaDrm.requiresSecureDecoderyönteminin (#1603) eksik uygulanmasından kaynaklanır.
- L1 Widevine içeriği oynatan API 31 ve sonraki sürüme sahip cihazlarda
- Etki:
GlObjectsProvideriçinrelease()yöntemi ekleyin.
- Oturum:
KEYCODE_HEADSETHOOKiçin iki kez dokunma işlemini, belgelendiği gibi "sonrakine atla" işlemine dönüştürün (#1493).ForegroundServiceDidNotStartInTimeException'yi önlemek içinKEYCODE_HEADSETHOOKkomutunun yoksayılıp yoksayılmayacağına karar verirken bu komutuMediaButtonReceiveriçinde "oynat" komutu olarak işleyin (#1581).
- RTSP uzantısı:
- SDP ayrıştırmada geçersiz medya açıklamalarını atlama (#1087).
Sürüm 1.4.0
25 Temmuz 2024
androidx.media3:media3-*:1.4.0 yayınlandı. 1.4.0 sürümü bu kayıtları içerir.
- Ortak Kitaplık:
- İşlem yapmadığı varsayılan arama çağrılarını yoksaymak yerine korumalı
BasePlayer.seekTo()veSimpleBasePlayer.handleSeek()yöntemlerine yönlendirin. Bu yöntemleri özel bir oynatıcıda uyguluyorsanız bu ek çağrılarımediaItemIndex == C.INDEX_UNSETile işlemeniz gerekebilir. - Gelişmiş Java 8 desugaring işlemindeki derleme bağımlılığı kaldırıldı (#1312).
MediaItem.Builder.setImageDurationMs()yöntemine iletilen sürenin, resim olmayanMediaItemiçin yoksayıldığından (belgelendiği gibi) emin olun.Formatörnekleri hakkında uygulama tarafından sağlanan özel bilgileri depolamak içinFormat.customDataekleyin.
- İşlem yapmadığı varsayılan arama çağrılarını yoksaymak yerine korumalı
- ExoPlayer:
rankingDatatarafından tanımlanan önceliklere göre birden fazla kaynak için önceden yüklemeyi koordine edenBasePreloadManagerekleyin. Bu sınıfı genişleterek özelleştirme yapabilirsiniz. Kaynakların medya örneklerini belleğe önceden yüklemek içinPreloadMediaSourcekullanan ve kullanıcı arayüzündeki bir öğenin dizinini belirten bir tam sayırankingDatakullananDefaultPreloadManagerekleyin.LoadControluygulamalarının birden fazla oynatıcıyı desteklemesini sağlamak için çoğuLoadControlyönteminePlayerIdekleyin.Buffer.isDecodeOnly()veC.BUFFER_FLAG_DECODE_ONLYaraçlarını kaldırın. Oluşturucular ve kod çözücüler, zaman damgasına göre arabellekleri atlamaya karar vereceğinden bu işaretin ayarlanmasına gerek yoktur. ÖzelRendereruygulamaları, bir örneğin gösterilip gösterilmeyeceğine karar vermek için ara zamanın en azBaseRenderer.getLastResetPositionUs()olup olmadığını kontrol etmelidir. ÖzelSimpleDecoderuygulamaları, gerekirseisAtLeastOutputStartTimeUs()değerini kontrol edebilir veya diğer arabellekleri atlamak içinDecoderOutputBuffer.shouldBeSkippedile işaretleyebilir.- Belirli bir
rankingDataileMediaSourceönceden yüklenmemesi gerektiğini belirtmek içinTargetPreloadStatusControl.getTargetPreloadStatus(T)tarafından boş değer döndürülmesine izin verin. remove(MediaSource)öğesiniBasePreloadManageradlı listeye ekleyin.- Önceden yükleme yöneticisi örneğini korurken tüm tutma kaynaklarını serbest bırakmak için
BasePreloadManageröğesinereset()ekleyin. PriorityTaskManagerve API 35'ten itibaren MediaCodec önemi için kullanılan öncelik değerini tanımlamak üzereExoPlayer.setPriority()(veBuilder.setPriority()) ekleyin.- CMCD'de yanlış
bs(tampon yetersizliği) anahtarına neden olan son yeniden arabelleğe alma süresini güncelleme sorunu düzeltildi (#1124). - Kaynağın sonuna kadar yüklendiğini belirtmek için
PreloadMediaSource.PreloadControl.onLoadedToTheEndOfSource(PreloadMediaSource)ekleyin. Bu sayedeDefaultPreloadManagerve özelPreloadMediaSource.PreloadControluygulamaları, bir sonraki kaynağı önceden yükleyebilir veya başka işlemler yapabilir. - Öğelerin sonunda sessizliği atlamanın oynatma istisnasına neden olabildiği hata düzeltildi.
- Önceden yükleme süresini silmek için
PreloadMediaSourceöğesineclearekleyin. - Daha yüksek öncelikli görevler için codec kaynakları geri alındığında kullanılan yeni hata kodu
PlaybackException.ERROR_CODE_DECODING_RESOURCES_RECLAIMEDeklendi. AdsMediaSource, ilk içerik medya hazırlığı tamamlanmadan önce videodan önce gösterilen reklamları yüklesin (#1358).- Orijinal dönem manifestten kaldırıldıktan sonra çok dönemli DASH canlı yayını yeniden hazırlanırken oynatmanın
STATE_ENDEDdeğerine taşınmasına neden olan hata düzeltildi. PreloadMediaSource.PreloadControliçindeonTimelineRefreshed()öğesinionSourcePrepared(),onPrepared()öğesinionTracksSelected()olarak yeniden adlandırın.DefaultPreloadManager.Stageiçindeki IntDef'leri de buna göre yeniden adlandırın.- Çalışmayı CPU uyanma döngüleriyle daha iyi uyumlu hale getirmek ve oluşturucular ilerleyene kadar uyanmayı geciktirmek için dinamik planlamaya deneysel destek ekleyin.
ExoPlayer örneğinizi ayarlarken
experimentalSetDynamicSchedulingEnabled()kullanarak bu özelliği etkinleştirebilirsiniz. Renderer.getDurationToProgressUs()ekleyin.Renderer, oluşturucunun ilerlemesi için oynatmanın ilerlemesi gereken süreyi ExoPlayer'a döndürmek üzere bu yöntemi uygulayabilir.ExoPlayer,experimentalSetDynamicSchedulingEnabled()ile ayarlanırsaExoPlayer, iş görevini planlama zamanını hesaplarken bu yöntemi çağırır.- Giriş ve çıkış arabellekleri
MediaCodecRenderertarafından kullanılabilir olduğunda uyarı göndermek içinMediaCodecAdapter#OnBufferAvailableListenerekleyin.MediaCodecRenderer, bu geri çağırmaları alırkenExoPlayersinyali verir veExoPlayer,experimentalSetDynamicSchedulingEnabled()ile ayarlanırsaExoPlayer, oluşturucular ilerleme kaydedebileceği için çalışma döngüsünü planlar. LoadControlyöntemleri için ayrı parametreler yerine veri sınıfı kullanın.Exoplayer.release()işlevinin çağrılıp çağrılmadığını kontrol etmek içinExoPlayer.isReleased()ekleyin.seekToPrevious()öğesinin önceki öğeye (#1425) geçiş yapacağı maksimum konumu yapılandırmak içinExoPlayer.Builder.setMaxSeekToPreviousPositionMs()eklendi.- Oynatıcı duraklatıldığında tam veya geçici odak kaybının bildirilmemesi gibi bazı ses odağı tutarsızlıkları düzeltildi (#1436).
- İlk hazırlık adımından sonra ek parçalar bildiren ayıklayıcıların neden olduğu olası
IndexOutOfBoundsExceptionsorununu düzeltme (#1476). ExoPlayer.setVideoEffect()sürümündekiEffects, oluşturucu ofseti kaldırılmış zaman damgalarını alacak (#1098).- Başka bir oynatma listesi öğesi önceden okunurken meydana gelen oynatıcı hatası işlenirken ortaya çıkabilecek
IllegalArgumentExceptiondüzeltildi (#1483).
- Transformer:
- Çıkış dosyasındaki ilgili parçanın nasıl oluşturulduğunu belirtmek için
ExportResultöğesineaudioConversionProcessvevideoConversionProcessekleyin. - Kırpma optimizasyonu H.264 seviye kontrollerini esnetme
- Bir sekans içinde SDR ve HDR giriş medyası arasında geçiş yapma desteği eklendi.
- Oluşturma düzeyinde ses efektleri için destek ekleyin.
- Ultra HDR resimleri HDR videolara kod dönüştürme desteği ekleyin.
DefaultAudioMixersıfırlanıp yeniden kullanıldıktan sonra doğru miktarda bayt çıkışı yapmamasıyla ilgili sorun düzeltildi.- PCM girişi işlenirken ses kanalı sayısının stereo ile sınırlandırıldığı bir kod çözücü hatası düzeltildi.
ExoPlayerAssetLoaderuygulamasında parça seçerken ses kanalı sayısı kısıtlamalarını yoksayın. Bu kısıtlamalar yalnızca oynatma için geçerlidir.androidx.media3.transformer.Muxerarayüzünüandroidx.media3.muxer.Muxerile değiştirin veandroidx.media3.transformer.Muxerarayüzünü kaldırın.- İçerik URI şemalarından HEIC resim yükleme sorunu düzeltildi. (#1373).
- Ses ve görüntü senkronizasyonunu iyileştirmek için
AudioGraphInputuygulamasında ses parçasının süresini ayarlayın. ExportResult.processedInputsalanını kaldırın. Bu alanı codec ayrıntıları için kullanıyorsanız bunun yerineDefaultDecoderFactory.listenerkullanın. Codec istisnası durumunda codec ayrıntılarıExportException.codecInfoiçinde yer alır.
- Çıkış dosyasındaki ilgili parçanın nasıl oluşturulduğunu belirtmek için
- Ayıklayıcılar:
- MPEG-TS: Bir akışın son erişim birimini örnek sırasına geçirerek son karenin oluşturulmasını sağlayan değişikliği ileri sarın (#7909). Yalnızca I-frame HLS akışlarında(#1150) ve H.262 HLS akışlarında (#1126) ortaya çıkan sorunları çözmek için düzeltmeler yapıldı.
- MP3: Temel akış tarafından bildirilen boyut (ör. dosya boyutu veya HTTP
Content-Lengthbaşlığı) yerineInfoçerçevesindeki veri boyutunu tercih edin. Bu sayede, oynatılamayan fragman verileri (ör. albüm kapağı) sabit bit hızı arama hesaplamalarından hariç tutulur ve aramalar daha doğru hale gelir (#1376). - MP3: Sabit bit hızı arama için ortalama bit hızını hesaplamak amacıyla
Infokaresindeki (varsa) kare sayısını ve diğer verileri kullanın.Infokaresinden sonraki karenin bit hızından tahmin yürütmeyin. Bu, yapay olarak küçük olabilir (ör.PCUTkaresi) (#1376). - AVI kapsayıcılarında PCM ses biçimi ayıklama sorunu düzeltildi.
- Ses:
- Doğrudan geçişli oynatma için DTS:X Profile 2 kodlama özellikleri düzeltildi (#1299).
- Yükü azaltılmış oynatma için
AudioTrack.stop()çağrılmadan önceDefaultAudioSinkiçinde akış tamamlama izleme alanını sıfırlayın. BöyleceAudioTrack.StreamEventCallback#onPresentationEnded, bekleyen tüm verilerin ne zaman oynatıldığını doğru şekilde tanımlar. SilenceSkippingAudioProcessor'da farklı ses biçimleri (ör. stereodan monoya) arasındaki geçişlerin, işlemcinin istisna oluşturmasına neden olabildiği hata düzeltildi (#1352).- ExoPlayer'ın ana çalışma döngüsünü MediaCodecAudioRenderer'ın ilerleme kaydedebileceği zamana dinamik olarak planlaması için
MediaCodecAudioRenderer.getDurationToProgressUs()uygulayın.
- Video:
- Oynatma sırasında yüzey değiştirirken
Listener.onRenderedFirstFrame()öğesinin çok erken gelmesine neden olan sorun düzeltildi. - Dolby Vision için kod çözücü yedek mantığı, gerektiğinde uyumlu bir AV1 kod çözücü kullanacak şekilde düzeltildi (#1389).
- Oynatma sırasında video oluşturucunun etkinleştirilmesinden kaynaklanabilecek codec istisnası düzeltildi.
- Oynatma sırasında yüzey değiştirirken
- Metin:
- Arama konumundan önce başlayan altyazıların atlanmasına neden olan sorun düzeltildi. Bu sorun yalnızca Media3 1.4.0-alpha01 sürümünde ortaya çıkmıştır.
- Varsayılan altyazı ayrıştırma davranışını, oluşturma yerine ayıklama sırasında gerçekleşecek şekilde değiştirin (ayıklama ve oluşturma arasındaki fark için ExoPlayer'ın mimari diyagramına bakın).
- Bu değişiklik, hem
MediaSource.Factory.experimentalParseSubtitlesDuringExtraction(false)hem deTextRenderer.experimentalSetLegacyDecodingEnabled(true)çağrılarak geçersiz kılınabilir. Bu bileşenleri birExoPlayerörneğine nasıl ekleyeceğinizi öğrenmek için özelleştirmeyle ilgili belgelere göz atın. Bu yöntemler (ve eski altyazı kod çözme desteğinin tamamı) gelecekteki bir sürümde kaldırılacaktır. - Özel
SubtitleDecoderuygulamaları olan uygulamaların, bunun yerineSubtitleParser(veSubtitleDecoderFactoryyerineSubtitleParser.Factory) uygulayacak şekilde güncellenmesi gerekir.
- Bu değişiklik, hem
- PGS:
0değerini gerçek bir renk değeri yerine renk dizini olarak çözmek için çalışma uzunluğu kod çözme işlemini düzeltme (#1367). - CEA-708:
rowLockdeğeri yok sayılır. CEA-708-E S-2023 spesifikasyonu, akıştaki değerlerden bağımsız olarakrowLockvecolumnLockdeğerlerinin her ikisinin de doğru olarak kabul edilmesi gerektiğini belirtir (columnLockdesteği uygulanmadığından her zaman yanlış olduğu varsayılır).- Bu değişiklik, ilk olarak
1.3.0-alpha01sürüm notlarına dahil edilmişti ancak1.3.0-rc01sürümünden önce yanlışlıkla geri alındı. Bu sorun düzeltildi ve değişiklik tekrar uygulanıyor.
- Bu değişiklik, ilk olarak
- CEA-708: ExoPlayer'ın "kalem konumunu ayarla" komutunu basit bir şekilde işlemesi nedeniyle yinelenen yeni satırların eklenmesini önleme (#1315).
- WebVTT altyazı örneği, örneğin bir DASH akışının parçası olarak işaret içermediğinde
LegacySubtitleUtilkaynaklıIllegalArgumentExceptiondüzeltildi (#1516).
- Meta veriler:
- MP4'ün ID3 sıralama etiketleriyle eşlemesi düzeltildi. Daha önce "albüm sıralama" (
soal), "sanatçı sıralama" (soar) ve "albüm sanatçısı sıralama" (soaa) MP4 etiketleri,TSO2,TSOAveTSOPID3 etiketleriyle yanlış eşleniyordu (#1302). - Değer bir bayttan uzun olduğunda MP4 (/iTunes) sayısal
gnre(tür) vetmpo(tempo) etiketlerinin okunması düzeltildi. - ID3
TCONkaresiniMediaMetadata.genreöğesine yayma (#1305).
- MP4'ün ID3 sıralama etiketleriyle eşlemesi düzeltildi. Daha önce "albüm sıralama" (
- Resim:
- Kare olmayan DASH küçük resim ızgaraları için destek eklendi (#1300).
- API 34 ve sonraki sürümler için AVIF desteği ekleyin.
- Daha önce ayarlanmış bir
ImageOutputdeğerini temizlemek içinExoPlayer.setImageOutput()parametresi olaraknulldeğerine izin verin.
- DataSource:
package, mevcut uygulamanın paketinden farklı olduğundaandroid.resource://package/idham kaynak URI'leri için destek uygulayın. Bu yöntem daha önce belgelendirilmemişti ancak başka bir paketteki kaynaklara adla erişmekten daha verimli bir yöntemdir.DataSpecoluşturucularındaurldeğerinin boş olmadığını kontrol edin. Bu parametre, boş olmayan olarak zaten ek açıklamayla belirtilmiş.ByteArrayDataSourceöğesinin, oluşturma sırasında sabit kodlanmış olmak yerineopen()sırasında bir URI'yi bayt dizisine çözümlemesine izin verin (#1405).
- DRM:
DefaultDrmSessionManagerProviderüzerindeLoadErrorHandlingPolicyayarlanmasına izin verilir (#1271).
- Etki:
SpeedChangeEffectuygulamasında aynıEditedMediaItemveyaCompositioniçinde birden fazla hız değişikliğini destekleme- Ultra HDR bitmap girişinden HLG ve PQ çıkışı desteği sunar.
- ExoPlayer.setVideoEffect ve Transformer'ın hata ayıklama SurfaceView'unda HLG yüzey çıkışını iyileştiren EGL_GL_COLORSPACE_BT2020_HLG_EXT desteği eklendi.
setOverlayFrameAnchor()içinde uygulanan x ve y değerlerini ters çevirerek yer paylaşımı matrisi uygulamasını dokümanlarla tutarlı olacak şekilde güncelleyin.OverlaySettings.Builder.setOverlayFrameAnchor()kullanıyorsanız x ve y değerlerini-1ile çarparak ters çevirin.ExoPlayer#setVideoEffectsile kullanıldığındaTimestampWrapperuygulamasının kilitlenmesine neden olan hata düzeltildi (#821).- Varsayılan SDR renk çalışma alanını doğrusal renklerden elektrikli BT 709 SDR videoya değiştirin. Ayrıca orijinal renk alanını korumak için üçüncü bir seçenek sunun.
- EditedMediaItemSequences'ın belirsiz z sırasının tanımlanmasına izin verilir (#1055).
- Farklı HDR içerik parçalarında tutarlı bir parlaklık aralığı sağlar (HLG aralığını kullanır).
- HDR içeriklerde Ultra HDR (bit eşlem) yer paylaşımları için destek ekleyin.
- API 26'dan önce
SeparableConvolutionefektlerinin kullanılmasına izin ver. - Yer paylaşımının ve karenin dinamik aralığı eşleşmesi gerektiğinden kullanılmayan
OverlaySettings.useHdröğesini kaldırın. TextOverlayiçin HDR desteği ekleyin. Metin yer paylaşımının parlaklığıOverlaySettings.Builder.setHdrLuminanceMultiplier()ile ayarlanabilir.
- IMA uzantısı:
- Uygulamaların DAI reklam akışlarını oynatması için gereken API'yi kararlı sürüme yükseltme
- Çalışma zamanında reklam etiketi parametrelerinin değiştirilmesine olanak tanıyan
replaceAdTagParameters(Map <String, String>)özelliğiniImaServerSideAdInsertionMediaSource.AdLoadersınıfına ekleyin. - Reklam oynatma sırasında oynatıcı hatası oluştuğunda
VideoAdPlayer.VideoAdPlayerCallback.onError()işlevinin çağrılmamasına neden olan hata düzeltildi (#1334). data://reklam etiketi URI'leri kullanılırken oluşanNullPointerExceptionsorununu düzeltmek için IMA SDK sürümünü 3.33.0'a yükseltin (#700).
- Oturum:
CommandButton.enablediçin varsayılan değeritrueolarak değiştirin ve ilişkili komut kullanılabilir olsa bile kumandalar için değerin yanlış kalabileceğinden emin olun.- Özel simge kaynakları yerine kullanılması gereken
CommandButtoniçin simge sabitleri ekleyin. - Uygulamaların, hizmetin
onTaskRemoved()içinde durdurulması gerekip gerekmediğini sorgulamasına olanak tanımak içinMediaSessionService.isPlaybackOngoing()ekleyin (#1219). - Tüm oturumların oynatılmasını kolayca duraklatmanıza olanak tanıyan
MediaSessionService.pauseAllPlayersAndStopSelf()ekleyin veMediaSessionServiceyaşam döngüsünü sonlandırmak içinstopSelf()çağrısı yapın. - Oynatma devam ediyorsa hizmetin ön planda çalışmasını sağlayan, aksi takdirde hizmeti durduran güvenli bir varsayılan uygulama sağlamak için
MediaSessionService.onTaskRemoved(Intent)yöntemini geçersiz kılın. - Platform oturumu meta verilerinde süreyi ayarlamayarak canlı yayınlar için medya bildirimindeki arama çubuğunu gizleme (#1256).
MediaMetadatadönüşümünüMediaDescriptionCompatile uyumlu hale getirerek meta veri özelliklerini seçerken media1 ile aynı tercih sırasını ve mantığı kullanın.- Media3 denetleyicisine önemli olmayan hatalar göndermeye olanak tanıyan
MediaSession.sendError()ekleyin. Bildirim denetleyicisi kullanılırken (bkz.MediaSession.getMediaNotificationControllerInfo()), özel hata, platform oturumununPlaybackStatedeğerini verilen hata bilgileriyle (#543) bir hata durumuna güncellemek için kullanılır. - Belirli bir kumandadan gelen bir dizi oyuncu etkileşimi tamamlandığında oturumları bilgilendirmek için
MediaSession.Callback.onPlayerInteractionFinished()ekleyin. - Hata hakkında daha fazla bilgi vermek ve mümkünse hatanın nasıl çözüleceğini açıklamak için
SessionErroröğesini ekleyin ve hata kodu yerineSessionResultileLibraryResultiçinde kullanın. - Medya oturumu yayınlayan uygulamalarla etkileşimleri test etmek için kullanılabilecek media3 denetleyici test uygulamasının kodunu yayınlayın.
- Media3'ün
MediaSession[Builder].setSessionExtras()öğesine iletilen ekstraları media1 denetleyicisininPlaybackStateCompat.getExtras()öğesine yayınlayın. - Önemli ve önemsiz hataları platform oturumuyla eşleyin.
PlaybackException,PlaybackStateCompat'nin önemli hata durumuna eşlenir.MediaSession.sendError(ControllerInfo, SessionError)ile medya bildirimi denetleyicisine gönderilen birSessionError,PlaybackStateCompatiçinde önemli olmayan bir hatayla eşlenir. Bu, hata kodunun ve mesajın ayarlandığı ancak platform oturumunun durumununSTATE_ERRORdeğerinden farklı kaldığı anlamına gelir. - Genel oturum etkinliğini geçersiz kılmak için oturum etkinliğinin her denetleyici için ayarlanmasına izin verin. Oturum etkinliği, bağlantı sırasında
AcceptedResultBuilder.setSessionActivivty(PendingIntent)ile birConnectionResultoluşturularak kumanda için tanımlanabilir. Bağlantı kurulduktan sonra oturum etkinliğiMediaSession.setSessionActivity(ControllerInfo, PendingIntent)ile güncellenebilir. MediaLibrarySession.Callbackçağrılarının hata replikasyonunu iyileştirme. Hata replikasyonu artık hata türünü seçmek veya varsayılan olarak etkin olan hata replikasyonunu devre dışı bırakmak içinMediaLibrarySession.Builder.setLibraryErrorReplicationMode()kullanılarak yapılandırılabilir.
- Kullanıcı arayüzü:
ExoPlayercihazına bağlıykenPlayerViewiçin resim görüntüleme desteği ekleyin (#1144).- Genel geçersiz kılmalar yerine her
PlayerViewörneği için farklı çizilebilir öğelere izin vermek amacıyla xml özellikleri aracılığıylaPlayerControlViewiçindeki çeşitli simgelerin özelleştirilmesi eklendi (#1200). - API 34'te bir Compose
AndroidViewiçindeSurfaceViewkullanıldığında videonun uzatılmasına/kırpılmasına neden olan bir platform hatası düzeltildi (#1237).
- İndirilenler:
DownloadHelperöğesinin, yayınlanmamışRendererörneklerini sızdırmadığından emin olun. Bu durum, uygulamanınIllegalStateException: Too many receivers, total of 1000, registered for pidile kilitlenmesine neden olabilir (#1224).
- Cronet Uzantısı:
CronetDataSourceuygulamasındaSocketTimeoutExceptionsorununu düzeltin. Cronet'in bazı sürümlerinde, geri çağırma tarafından sağlanan istek her zaman aynı değildir. Bu durum, geri çağırmanın tamamlanmamasına ve isteğin zaman aşımına uğramasına neden olur (https://issuetracker.google.com/328442628).
- HLS uzantısı:
- Süreksizlik bekleyen EMSG örneklerinin yanlış bir ofsetle
HlsSampleStreamWrapperiçinde atanarakIndexOutOfBoundsExceptionveyaIllegalArgumentExceptionhatasına neden olduğu hata düzeltildi (#1002). - LL-HLS yayınları için birincil olmayan oynatma listelerinin sürekli yeniden yüklenmesine neden olan hata düzeltildi (#1240).
- Başlatma segmentleriyle HLS için CMCD'nin etkinleştirilmesinin
Source ErrorveIllegalArgumentExceptionile sonuçlanmasına neden olan hata düzeltildi. - Canlı oynatma sırasında birincil olmayan oynatma listelerinin yenilenmemesine neden olan hata düzeltildi (#1240).
- HLS canlı yayınları için CMCD'nin etkinleştirilmesinin neden olduğu hata düzeltildi.
ArrayIndexOutOfBoundsException(#1395).
- Süreksizlik bekleyen EMSG örneklerinin yanlış bir ofsetle
- DASH uzantısı:
- Cast Uzantısı:
- Media3 medya öğesinde
MediaQueueItemalbüm başlığını sanatçıya dönüştüren hata düzeltildi (#1255).
- Media3 medya öğesinde
- Test Yardımcı Programları:
FakeRenderer'deonInit()veonRelease()uygulayın.TestPlayerRunHelper.runUntil()/playUntil()yöntemlerini, önemli olmayan hatalarda (ör.AnalyticsListener.onVideoCodecError()yöntemine bildirilenler) başarısız olacak şekilde değiştirin. Bu davranışı devre dışı bırakmak için yeniTestPlayerRunHelper.run(player).ignoringNonFatalErrors().untilXXX()yöntem zincirini kullanın.
- Demo uygulama:
- Kısa video demo uygulamasında
DefaultPreloadManagerkullanın. - Komut satırından
Intentbağımsız değişkenleriyle tekrar modunun ayarlanmasına izin verilir (#1266). - Cihaz tarafından desteklendiğinde
HttpDataSourceolarakHttpEngineDataSourcekullanın.
- Kısa video demo uygulamasında
- Desteği sonlandırılan simgeleri kaldırın:
CronetDataSourceFactoryöğesini kaldır Bunun yerineCronetDataSource.Factorykullanın.- Bazı
DataSpecoluşturucuları kaldırın. Bunun yerineDataSpec.Builderpolitikasını kullanın. setContentTypePredicate(Predicate)yöntemiDefaultHttpDataSource,OkHttpDataSourceveCronetDataSourceöğelerinden kaldırıldı. Bunun yerine herXXXDataSource.Factoryiçin eşdeğer yöntemi kullanın.OkHttpDataSourceoluşturucuyu veOkHttpDataSourceFactoryöğesini kaldırın. Bunun yerineOkHttpDataSource.Factorypolitikasını kullanın.PlayerMessage.setHandler(Handler)öğesini kaldır Bunun yerinesetLooper(Looper)kullanın.Timeline.Window.isLivealanını kaldırın. Bunun yerineisLive()yöntemini kullanın.DefaultHttpDataSourcekurucuyu kaldırın. Bunun yerineDefaultHttpDataSource.Factorykullanın.DashMediaSource.DEFAULT_LIVE_PRESENTATION_DELAY_MSöğesini kaldır Bunun yerineDashMediaSource.DEFAULT_FALLBACK_TARGET_LIVE_OFFSET_MSkullanın.MediaCodecInfo.isSeamlessAdaptationSupported(Format, Format, boolean)öğesini kaldır Bunun yerineMediaCodecInfo.canReuseCodec(Format, Format)politikasını kullanın.DrmSessionManager.DUMMYvegetDummyDrmSessionManager()yöntemini kaldırın. Bunun yerineDrmSessionManager.DRM_UNSUPPORTEDpolitikasını kullanın.AnalyticsListener.onAudioInputFormatChanged(EventTime, Format),AnalyticsListener.onVideoInputFormatChanged(EventTime, Format),AudioRendererEventListener.onAudioInputFormatChanged(Format),VideoRendererEventListener.onVideoInputFormatChanged(Format)kaldırın. Bunun yerineDecoderReuseEvaluationalan aşırı yüklemeleri kullanın.RendererSupport.FormatSupportIntDef veFORMAT_HANDLED,FORMAT_EXCEEDS_CAPABILITIES,FORMAT_UNSUPPORTED_DRM,FORMAT_UNSUPPORTED_SUBTYPE,FORMAT_UNSUPPORTED_TYPEsabitlerini kaldırın. Bunun yerineandroidx.media3.common.Ciçinde eşdeğer IntDef ve sabitleri (ör.C.FORMAT_HANDLED) kullanın.Bundleablearayüzünü kaldırın. Buna, tümBundleable.Creator<Foo> CREATORsabit alanlarının kaldırılması da dahildir. Arayanlar bunun yerine her türdeBundle toBundle()vestatic Foo fromBundle(Bundle)yöntemlerini kullanmalıdır.
Sürüm 1.4.0-rc01
10 Temmuz 2024
1.4.0 kararlı sürümünü kullanın.
Sürüm 1.4.0-beta01
26 Haziran 2024
1.4.0 kararlı sürümünü kullanın.
Sürüm 1.4.0-alpha02
7 Haziran 2024
1.4.0 kararlı sürümünü kullanın.
Sürüm 1.4.0-alpha01
17 Nisan 2024
1.4.0 kararlı sürümünü kullanın.
Sürüm 1.3.0
Sürüm 1.3.1
11 Nisan 2024
androidx.media3:media3-*:1.3.1 yayınlandı. 1.3.1 sürümü bu commit'leri içerir.
- Ortak Kitaplık:
- Yerelleştirilmiş veya diğer alternatif etiketlere izin vermek için
Format.labelsekleyin.
- Yerelleştirilmiş veya diğer alternatif etiketlere izin vermek için
- ExoPlayer:
PreloadMediaPeriodtekrar önceden yüklendiğinde akışları koruyamamasıyla ilgili sorun düzeltildi.- Parça yeniden seçimi sırasında çalma süresine doğru
TrackSelectionResultdeğerini uygulayın. - Medya öğeleri arasında geçiş yaparken oynatma süresini ilerlettikten sonra erken etkinleştirilen oluşturucuları başlatma (#1017).
DefaultVideoFrameProcessor.Factory.Builder.build()için proguard-keepclasseswithmemberskuralına eksik dönüş türü eklendi (#1187).
- Transformer:
- API 30'dan önce negatif sunum zaman damgalarını desteklemeyen
MediaMuxernedeniyle oluşan istisna için geçici çözüm ekleyin.
- API 30'dan önce negatif sunum zaman damgalarını desteklemeyen
- Kanal seçimi:
DefaultTrackSelector: Kare hızı daha düşük veya ayarlanmamış olanlar yerine "makul" kare hızına (>=10 fps) sahip video parçalarını tercih edin. Bu sayede oynatıcı, biri daha yüksek çözünürlüğe ancak çok az sayıda kareye sahip iki HEVC parçası içerebilen hareketli fotoğraflardan çıkarılan MP4'lerde "gerçek" video parçasını seçer (#1051).
- Ayıklayıcılar:
- WAV dosyalarından tek boyutlu parçalar okunurken dolgunun atlanmaması sorunu düzeltildi (#1117).
- MP3:
Format.averageBitratealanınıXINGveVBRIgibi meta veri çerçevelerinden doldurun. - MPEG-TS: Bir akışın son erişim birimini örnek sırasına geçirerek son karenin oluşturulmasını sağlamayı amaçlayan bir değişikliği geri alma (#7909). Bunun nedeni, değişikliğin yalnızca I-frame HLS akışları (#1150) ve H.262 HLS akışları (#1126) ile ilgili yeni sorunlara yol açmasıdır.
- Ses:
- Ses parçası boşaltma modunda başlatılamazsa boşaltmayı devre dışı bırakarak oluşturucu kurtarmaya izin verin.
- Video:
- Galaxy Tab S7 FE, Google TV'li Chromecast ve Lenovo M10 FHD Plus'ta 60 fps H265 yayınların desteklenmiyor olarak işaretlenmesine neden olan cihaz sorunu için geçici çözüm eklendi.
- Cihaz, API'nin gerektirdiği şekilde bunu otomatik olarak yapmasa bile tünel oluşturma sırasında ilk karenin her zaman oluşturulmasını sağlayan geçici çözüm eklendi (#1169). (#966).
- HDR renk bilgisi işlemenin codec'in hatalı çalışmasına neden olduğu ve SDR video parçaları için uyarlanabilir biçim geçişlerini engellediği sorun düzeltildi (#1158).
- Metin:
- WebVTT: Doğrudan ardışık işaretlerin,
WebvttParser.parsekaynağından sahte ekCuesWithTimingörnekleri oluşturmasını önleme (#1177).
- WebVTT: Doğrudan ardışık işaretlerin,
- DRM:
- Bazı Android 14 cihazlarda
ResourceBusyExceptionveyaNotProvisionedExceptionyerineMediaDrmçerçevesi tarafından oluşturulabilenNoSuchMethodErrorile ilgili geçici çözüm uygulandı (#1145).
- Bazı Android 14 cihazlarda
- Etki:
- Renk alanları dönüştürülerek PQ'dan SDR'ye ton eşleme iyileştirildi.
- Oturum:
- Kullanıcı arayüzü:
Localebir görünen ad tanımlayamazsa ses parçası dil adını içerecek şekilde yedekleme (#988).
- DASH uzantısı:
- Manifestteki tüm
LabelöğeleriniFormat.labelsiçine doldurun (#1054).
- Manifestteki tüm
- RTSP uzantısı:
- SDP ayrıştırmada boş oturum bilgisi değerlerini (i etiketleri) atlama (#1087).
- Kod çözücü uzantıları (FFmpeg, VP9, AV1, MIDI vb.):
- MIDI uzantısı, ek bir Maven deposunun yapılandırılmasını gerektirdiğinden bu uzantıyı varsayılan olarak yerel bağımlılık olarak devre dışı bırakın. Bu modüle yerel bir bağımlılıktan ihtiyaç duyan kullanıcılar modülü yeniden etkinleştirebilir.
Sürüm 1.3.0
6 Mart 2024
androidx.media3:media3-*:1.3.0 yayınlandı. 1.3.0 sürümü bu kayıtları içerir.
- Ortak Kitaplık:
package, mevcut uygulamanın paketinden farklı olduğundaandroid.resource://package/[type/]nameham kaynak URI'leri için destek uygulayın. Bu özelliğin çalıştığı her zaman belgelenmişti ancak şimdiye kadar doğru şekilde uygulanmamıştı.- Uygulama kodu tarafından ayarlanan veya medyadan okunan MIME türlerini tamamen küçük harf olacak şekilde normalleştirin.
AdPlaybackStateiçinde tek birUriyerine tamMediaItemile reklamları tanımlayın.minSdkdeğerini 19'a (Android KitKat) yükseltin. Bu, diğer tüm AndroidX kitaplıklarıyla uyumludur ve AndroidX bağımlılıklarımızın en yeni sürümlerine yükseltme yapmamız için gereklidir.- En az biri boş olmadığında
MediaMetadata.Builder.populate(MediaMetadata)içinde hemartworkUrihem deartworkDatadeğerlerini doldurun (#964).
- ExoPlayer:
- Uygulamaların, oynatmadan önce belirli bir başlangıç konumunda içerik medya kaynağını önceden yüklemesine olanak tanıyan
PreloadMediaSourcevePreloadMediaPeriodeklendi.PreloadMediaSource,Timelinealmak için içerik medya kaynağını hazırlama, belirtilen başlangıç konumunda dönemi hazırlama ve önbelleğe alma, parçaları seçme ve dönem için medya verilerini yükleme işlemlerini gerçekleştirir. Uygulamalar,PreloadMediaSource.PreloadControlöğesini uygulayarak önceden yükleme işlemini kontrol eder ve önceden yüklenen kaynağı oynatıcıya ayarlar. - Uygulamaların
ImageRenderer.ImageOutputayarlamasına olanak tanıyanExoPlayer.setImageOutputekleyin. DefaultRenderersFactoryartık varsayılan olarak boşImageOutputveImageDecoder.Factory.DEFAULTile oyuncuyaImageRenderersağlar.- Sessiz bölümler atlandığında
Player.Listener.onPositionDiscontinuityetkinliğini yayınlama (#765). - Ayıklama sırasında altyazıları ayrıştırmak için deneysel destek ekleyin. Bu özelliği
MediaSource.Factory.experimentalParseSubtitlesDuringExtraction()kullanarak etkinleştirebilirsiniz. PreloadMediaSourceile uyarlanabilir medya kaynaklarını destekleyin.- HttpEngine API'yi kullanarak
HttpEngineDataSource(HttpDataSource) uygulayın. CompositeSequenceableLoaderalt sınıflandırmasını önleyin. Bu bileşen daha önce genişletilebilir hale getirilmişti ancak kitaplıkta hiçbir zaman alt sınıflandırılmadı. Özelleştirmeler, dekoratör kalıbı kullanılarak bir örneğin sarmalanması ve özel birCompositeSequenceableLoaderFactoryuygulanmasıyla yapılabilir.- Aynı zamanın tekrarlanmasının bu öğenin meta verilerinin temizlenmesine neden olduğu sorun düzeltildi (#1007).
BundledChunkExtractor.FactoryveDefaultHlsExtractorFactory'dekiexperimentalSetSubtitleParserFactoryyöntemlerinisetSubtitleParserFactoryolarak yeniden adlandırın venull'nin iletilmesine izin vermeyin. Ayrıştırma davranışını kontrol etmek için yeniexperimentalParseSubtitlesDuringExtraction(boolean)yöntemlerini kullanın.- Ayıklama sırasında kullanılan
SubtitleParser.Factoryöğesini özelleştirme desteği ekleyin. Bu,MediaSource.Factory.setSubtitleParserFactory()ile yapılabilir. MergingMediaSourcekaynağından oluşturulan tümFormat.idalanlarına kaynak öneki ekleyin. Bu sayede, hangi kaynağınFormatürettiği belirlenebilir (#883).- Özel Common Media Client Data (CMCD) anahtar adlarını doğrulamak için kullanılan normal ifadeyi, yalnızca kısa çizgiyi kontrol edecek şekilde değiştirerek düzeltme (#1028).
- CMCD sorgu parametrelerinin çift kodlanması durduruldu (#1075).
- Uygulamaların, oynatmadan önce belirli bir başlangıç konumunda içerik medya kaynağını önceden yüklemesine olanak tanıyan
- Transformer:
- H.265/HEVC SEF ağır çekim videoları düzleştirme desteği eklendi.
- Özellikle "videoyu kaldır" düzenlemelerinde transmuxing hızını artırın.
- Çıkış dosyasının bir video karesinde başlamasını sağlamak için API ekleyin. Bu sayede, kırpma işlemlerinin çıkışı, ilk video karesini sunum zaman damgasına kadar göstermeyen oynatıcı uygulamalarıyla daha uyumlu hale gelebilir (#829).
- Tek öğeli MP4 kırpma işlemlerini optimize etme desteği eklendi.
- Bir video karesinin çıkış dosyasında ilk zaman damgasına sahip olmasını sağlamak için destek ekleyin. iOS tabanlı oynatıcılarda siyah kareyle başlayan çıkış dosyaları düzeltildi (#829).
- Kanal seçimi:
- Resim parçası seçimini etkinleştirmek için
DefaultTrackSelector.selectImageTrackekleyin. - Hem resim parçası hem de video parçası mevcutsa resim parçasının seçilip seçilmeyeceğini belirlemek için
TrackSelectionParameters.isPrioritizeImageOverVideoEnabledekleyin. Varsayılan değerfalse'dir. Bu, video parçasının seçilmesine öncelik verildiği anlamına gelir.
- Resim parçası seçimini etkinleştirmek için
- Ayıklayıcılar:
ColorInfo.colorSpace,ColorInfo.colorTransferveColorInfo.colorRangedeğerlerini almak için MP4 ayıklayıcıya ek AV1C ayrıştırma özelliği eklendi (#692).- MP3:
Infoüstbilgisine (Xingüstbilgisinin CBR eşdeğeri) sahip dosyalar için sabit bit hızı (CBR) aramasını kullanın. Daha önceInfobaşlığındaki arama tablosunu kullanıyorduk ancak bu, başlığı yok sayıp dosyanın CBR olduğunu varsaydığımız duruma göre daha az hassas arama yapılmasına neden oluyor. - MPEG2-TS: DTS, DTS-LBR ve DTS:X Profile2 desteği eklendi (#275).
- TS tanımlayıcılarından ses türlerini ayıklayıp bunları rol işaretleriyle eşleyerek kullanıcıların daha bilinçli ses parçası seçimleri yapmasına olanak tanıma (#973).
- Ses:
- Video:
VideoFrameProcessor.Factorybağımsız değişkenini alanMediaCodecVideoRendererkurucusunu,VideoSinkProviderbağımsız değişkenini alan bir kurucuyla değiştirin. Özel birVideoFrameProcessor.Factoryeklemek isteyen uygulamalar, özelVideoFrameProcessor.Factorykullanan birCompositingVideoSinkProviderörneklendirebilir ve video alıcı sağlayıcısınıMediaCodecVideoRendereröğesine iletebilir.
- Metin:
DefaultExtractorsFactory.setTextTrackTranscodingEnabledkullanırkenTried to marshall a Parcel that contained Binder objectshatasını çözmek için bitmap işaretlerinin serileştirilmesi düzeltildi (#836).- CEA-708:
rowLockdeğeri yok sayılır. CEA-708-E S-2023 spesifikasyonu, akıştaki değerlerden bağımsız olarakrowLockvecolumnLockdeğerlerinin her ikisinin de doğru olarak kabul edilmesi gerektiğini belirtir (columnLockdesteği uygulanmadığından her zaman yanlış olduğu varsayılır).
- Resim:
- DASH küçük resimleri için destek eklendi. Izgara resimleri kırpılır ve tek tek küçük resimler, sunum zamanlarına yakın bir zamanda
ImageOutputiletilir.
- DASH küçük resimleri için destek eklendi. Izgara resimleri kırpılır ve tek tek küçük resimler, sunum zamanlarına yakın bir zamanda
- DRM:
- DRM içeriğindeki "clear lead" şifrelenmemiş örnekleri, daha sonraki şifrelenmiş örneklerin anahtarları henüz hazır olmasa bile varsayılan olarak hemen oynatın. Oynatma konumu şifrelenmiş örneklere ulaştığında anahtarlar hâlâ hazır değilse bu durum, oynatma sırasında duraklamalara neden olabilir (ancak daha önce oynatma bu noktada hiç başlamamış olurdu). Bu davranış,
MediaItem.DrmConfiguration.Builder.setPlayClearContentWithoutKeyveyaDefaultDrmSessionManager.Builder.setPlayClearSamplesWithoutKeysile 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.
- DRM içeriğindeki "clear lead" şifrelenmemiş örnekleri, daha sonraki şifrelenmiş örneklerin anahtarları henüz hazır olmasa bile varsayılan olarak hemen oynatın. Oynatma konumu şifrelenmiş örneklere ulaştığında anahtarlar hâlâ hazır değilse bu durum, oynatma sırasında duraklamalara neden olabilir (ancak daha önce oynatma bu noktada hiç başlamamış olurdu). Bu davranış,
- Oturum:
- TV uygulamaları için çift tıklama algılama devre dışı bırakıldı (#962).
- Yalnızca boş olmayan ekstralara sahip
MediaItem.RequestMetadataöğesinin medya kumandaları ve oturumlar arasında iletilmemesi sorunu düzeltildi. MediaLibrarySession.BuildersınıfınaMediaLibraryServiceyerine yalnızcaContextalan bir kurucu ekleyin.
- HLS uzantısı:
HlsMediaPeriodöğesini pakete özel görünürlüğe düşürün. Bu tür, HLS paketinin dışından doğrudan bağımlı olmamalıdır.- Bir segmentin başına daha verimli bir şekilde atlama sorunu çözüldü (#1031).
- Kod çözücü uzantıları (FFmpeg, VP9, AV1, MIDI vb.):
- MIDI kod çözücü: SysEx etkinlik mesajlarını yoksayma (#710).
- Test Yardımcı Programları:
TestPlayerRunHelper.playUntilPositionuygulamasında oynatmayı duraklatma. Test, oynatmayı oynatma durumunda tutar ancak test, onaylar ve başka işlemler ekleyene kadar ilerlemeyi askıya alır.
- Demo uygulama:
- Kısa içerik kullanım alanıyla
PreloadMediaSourcekullanımını göstermek için kısa bir demo modülü ekleyin.
- Kısa içerik kullanım alanıyla
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/maxOffsetaralığının dışındaki manuel aramaların, ofsetimin/maxOffsetdeğerine geri ayarlamaya devam etmesiyle ilgili sorun düzeltildi.- 3, 5, 6, 7 ve 8 kanallı OPUS ve VORBIS kanal düzenlerinin yanlış olması sorunu düzeltildi (#8396).
- Canlı yayında sıfıra sarma işleminden sonra yapılan parça seçimlerinin, yayının varsayılan konumunda başlamasına neden olan sorun düzeltildi (#9347).
- Yeni
CmcdData.Factoryörneklerinin, parça kaynaklarındanbufferedDurationUsiçin negatif değerler alarakIllegalArgumentExceptionhatasına yol açması sorunu düzeltildi (#888).
- Transformer:
- Yüksek çalışma hızı ayarlandığı için kodlayıcının yapılandırma sırasında hata vermesine neden olan sorun için geçici çözüm uygulandı.
- Ayıklayıcılar:
- JPEG hareketli fotoğraflardaki ikincil (oynatılamayan) HEVC parçalarını
ROLE_FLAG_ALTERNATEolarak işaretleyerek daha yüksek çözünürlükleri nedeniyle oynatma için otomatik olarak seçilmelerini önleyin. - TS H264 akışları için yanlış animasyon karesi algılama sorunu düzeltildi (#864).
- 47.721 saniyeden uzun TS akışlarının süre tahminini düzeltme (#855).
- JPEG hareketli fotoğraflardaki ikincil (oynatılamayan) HEVC parçalarını
- Ses:
- Birden çok kez çağrıldığında
SilenceSkippingAudioProcessoriçin EOS'un işlenmesi düzeltildi (#712).
- Birden çok kez çağrıldığında
- Video:
- Galaxy Tab S7 FE, Google TV'li Chromecast ve Lenovo M10 FHD Plus'ta 60 fps AVC akışlarının desteklenmiyor olarak işaretlenmesine neden olan cihaz sorunu için geçici çözüm eklendi (#693).
- Meta veriler:
MediaMetadataalanının yalnızca büyük harfli anahtarlar içeren Vorbis yorumlarından doldurulmasıyla ilgili hata düzeltildi (#876).- Çok büyük ID3 çerçeveleri ayrıştırılırken
OutOfMemoryErroryakalanır. Bu sayede, oynatma tamamen başarısız olmak yerine etiket bilgileri olmadan devam edebilir.
- DRM:
- Sahte ClearKey
https://default.urllisans URL'si için geçici çözüm, API 33+ sürümüne genişletildi (önceden geçici çözüm yalnızca API 33 sürümünde geçerliydi) (#837). - Oynatıcıya bağlı bir yüzey olmadan şifrelenmiş içerikten şifrelenmemiş içeriğe geçiş yaparken
ERROR_DRM_SESSION_NOT_OPENEDdüzeltildi. Hata, şifrelenmemiş içeriği oynatmak için güvenli bir kod çözücünün yanlış kullanılmasından kaynaklanmıştır.
- Sahte ClearKey
- Oturum:
- Özel anahtarları ve değerleri
MediaMetadataCompatileMediaMetadata.extrasveMediaMetadata.extrasileMediaMetadataCompatarasına yerleştirin (#756, #802). - Eski denetleyiciler için
notifyChildrenChangedyayınlama sorunu düzeltildi (#644). - Bildirimin devre dışı bırakılmış
setWhenzamanlayıcısı için negatif bir süre ayarlandığında bazı cihazlarda kilitlenmeye neden olan hata düzeltildi (#903). IllegalStateExceptionİlk bildirim güncellemesi istendiğinde medya bildirim denetleyicisinin bağlantıyı tamamlamaması sorunu (#917) düzeltildi.
- Özel anahtarları ve değerleri
- Kullanıcı arayüzü:
- DASH uzantısı:
- DASH manifestinde Dolby için kanal sayısı 5 olarak "f800" ayrıştırılır (#688).
- Kod çözücü uzantıları (FFmpeg, VP9, AV1, MIDI vb.):
- Cast Uzantısı:
- Yayın cihazında medya yükleme başarısız olduğunda uygulamanın kilitlenmemesi için
Timelineoluşturma işlemini temizleyin (#708).
- Yayın cihazında medya yükleme başarısız olduğunda uygulamanın kilitlenmemesi için
Sürüm 1.2.0
15 Kasım 2023
- Ortak Kitaplık:
Log.Loggerarayüzündeki yöntemlere@Nullable Throwableparametresi ekleyin. Bu yöntemlerinmessageparametresi artıkLog.{d,i,w,e}()yöntemlerine iletilenThrowablehakkında bilgi içermiyor. Bu nedenle, uygulamaların istenirse bu bilgileri manuel olarak eklemesi gerekir (Logger.appendThrowableString(String, Throwable)kullanarak).- Boş değer atanabilir genel tür parametrelerinin ve boş değer atanabilir dizi öğesi türlerinin boş değer atanabilir olarak algılanmadığı Kotlin uyumluluk sorunu düzeltildi.
TrackSelectorResultveSimpleDecoderyöntem parametreleri buna örnek verilebilir (#6792). - Oynatma geçici olarak durdurulduğunda (ör. geçici ses odağı kaybı nedeniyle) "oynat" düğmesini göstermek için
Util.shouldShowPlayButtonuygulamasındaki varsayılan kullanıcı arayüzünü ve bildirim davranışını değiştirin. Eski davranış,PlayerView.setShowPlayButtonIfPlaybackIsSuppressed(false)veyaMediaSession.Builder.setShowPlayButtonIfPlaybackIsSuppressed(false)kullanılarak sürdürülebilir (#11213). - https://issuetracker.google.com/251172715 sorununu düzeltmek için
androidx.annotation:annotation-experimentalsürümünü1.3.1sürümüne yükseltin. ExoPlayer.setAudioAttributesöğesiniPlayerarayüzüne taşıyın.
- ExoPlayer:
- Yalnızca kod çözme örneklerinin doğru şekilde tanımlanmamasından kaynaklanan AC4 akışlarındaki arama sorunları düzeltildi (#11000).
- Bu özellik
ExoPlayer.Builder.setSuppressPlaybackOnUnsuitableOutputüzerinden etkinleştirildiğinde uygun olmayan ses çıkış cihazlarında (ör. Wear OS cihazlardaki yerleşik hoparlör) oynatmayı engelleme özelliği eklendi. Uygun ses çıkışı yokken oynatma denenirse veya oynatma sırasında tüm uygun çıkışların bağlantısı kesilirse oynatma engelleme nedeniPlayer.PLAYBACK_SUPPRESSION_REASON_UNSUITABLE_AUDIO_OUTPUTolarak güncellenir. Uygun bir çıkış bağlandığında engelleme nedeni kaldırılır. Player.replaceMediaItem(s)üzerinden oluşturulduktan sonraMediaItemgüncellemelerini kabul etmek içinMediaSource.canUpdateMediaItemveMediaSource.updateMediaItemekleyin.Player.replaceMediaItem(s)aracılığıyla kitaplık tarafından sağlanan tümMediaSourcesınıfları içinMediaItemgüncellemelerine izin verin (#33, #9978).MimeTypes.TEXT_EXOPLAYER_CUESadlı öğeyiMimeTypes.APPLICATION_MEDIA3_CUESolarak yeniden adlandırın.- Tüm PNG dosyasını tek bir örnek olarak
TrackOutputiçine gönderen ve okuyanPngExtractorekleyin. SequenceableLoaderarayüzündekiSequenceableLoader.continueLoading(long)yöntemiSequenceableLoader.continueLoading(LoadingInfo loadingInfo)olarak geliştirildi.LoadingInfo, mevcutplaybackPositionUsparametresine ek olarakplaybackSpeedvelastRebufferRealtimeMsgibi ek parametreler içerir.ChunkSourcearayüzündekiChunkSource.getNextChunk(long, long, List, ChunkHolder)yöntemiChunkSource.getNextChunk(LoadingInfo, long, List, ChunkHolder)olarak iyileştirildi.- Ortak Medya İstemci Verileri (CMCD) günlüğüne ek alanlar ekleyin: arabellek yetersizliği (
bs), son tarih (dl), oynatma hızı (pr) ve başlatma (su) (#8699). ColorInfoiçin luma ve kroma bit derinliği ekleyin (#491).- Ortak Medya İstemci Verileri (CMCD) günlüğüne ek alanlar ekleyin: sonraki nesne isteği (
nor) ve sonraki aralık isteği (nrr) (#8699). - Sorgu parametrelerini kullanarak Common Media Client Data (CMCD) verilerini iletme işlevi eklendi (#553).
ExperimentalBandwidthMeteruygulamasındaConcurrentModificationExceptionsorununu düzeltin (#612).CompositeMediaSource.getMediaTimeForChildMediaTimeöğesineMediaPeriodIdparametresini ekleyin.ConcatenatingMediaSource2içindeClippingMediaSource(ve dönem/pencere zamanı ofsetleri olan diğer kaynaklar) desteği (#11226).BaseRenderer.onStreamChanged()işlevini,MediaPeriodIdbağımsız değişkenini de alacak şekilde değiştirin.
- Transformer:
- Resim girişleri için EXIF döndürme verilerini ayrıştırın.
TransformationRequest.HdrModeek açıklama türünü ve ilişkili sabitlerini kaldırın. Bunun yerineComposition.HdrModeve ilişkili sabitlerini kullanın.- Döndürme sorunlarını düzeltmek için
OverlaySettingsbasitleştirin. SampleConsumer.queueInputBitmapadlı öğeninframeRatevedurationUsparametreleriTimestampIteratorolarak değiştirildi.
- Kanal seçimi:
- Sorunsuz olmayan uyarlamaya açıkça izin vermek veya izin vermemek için
DefaultTrackSelector.Parameters.allowAudioNonSeamlessAdaptivenessekleyin. Varsayılan ayar, mevcuttruedavranışında kalır.
- Sorunsuz olmayan uyarlamaya açıkça izin vermek veya izin vermemek için
- Ayıklayıcılar:
- MPEG-TS: Bir akışın son erişim birimini örnek sırasına geçirerek son karenin oluşturulmasını sağlayın (#7909).
rotationDegreesbelirlenirken yapılan yazım hatasını düzeltin.projectionPosePitch,projectionPoseRollolarak değiştirildi (#461).Extractorörneklerinin doğrudaninstanceofile incelenebileceği varsayımını kaldırın. BirExtractoröğesinin uygulama ayrıntılarına çalışma zamanı erişimi istiyorsanız önceExtractor.getUnderlyingInstanceöğesini çağırmanız gerekir.BmpExtractorekleyin.WebpExtractorekleyin.HeifExtractorekleyin.Mp4Extractoriçin QuickTime klasik desteği ekleyin.
- Ses:
- MP4 ve Matroska'da 24/32 bit big-endian PCM desteği eklendi ve MP4'te
lpcmiçin PCM kodlaması ayrıştırıldı. - MP4'te Vorbis ses çıkarma desteği eklendi.
- Alıcının, biçim için sağlayabileceği boşaltma desteği düzeyini
DefaultAudioOffloadSupportProvideraracılığıyla alanAudioSink.getFormatOffloadSupport(Format)ekleyin.isFormatSupported,isGaplessSupportedveisSpeedChangeSupportediçeren yeniAudioOffloadSupportdeğerini döndürür. - Ses havuzundaki boşaltma yapılandırmasının ayarlandığı
AudioSink.setOffloadMode()ekleyin. Varsayılan değer:AudioSink.OFFLOAD_MODE_DISABLED. - Kullanılmayan uygulamaları kaldırma özelliği,
TrackSelectionParametersuygulamasındasetAudioOffloadPreferenceüzerinden etkinleştirilebilir. Tercih etkinleştirme olarak ayarlanırsa, cihaz biçim için boşaltmayı desteklerse ve parça seçimi tek bir ses parçasıysa ses boşaltma etkinleştirilir. audioOffloadModePreference,AUDIO_OFFLOAD_MODE_PREFERENCE_REQUIREDolarak ayarlanırsaDefaultTrackSelectoryalnızca bir ses parçası seçer ve bu parça yalnızca biçimi boşaltmada destekleniyorsa seçilir. Yük devretmede desteklenen ses parçası yoksa parça seçilmez.- Parça geçişinden sonra oynatma konumu sorunu nedeniyle API düzeyi 33'ten önceki sürümlerde boşluksuz oynatma desteği devre dışı bırakıldı.
enableOffloadparametresiniDefaultRenderersFactory.buildAudioSinkyöntem imzasından kaldırın.DefaultAudioSink.Builder.setOffloadModeyöntemini kaldırın.- intdef değerini kaldırın
DefaultAudioSink.OffloadMode.OFFLOAD_MODE_ENABLED_GAPLESS_DISABLED. - Boşaltma sırasında Opus boşluksuz meta verileri için destek ekleyin.
- İlk yazma işleminde başarısız olursa boşaltmayı devre dışı bırakarak oluşturucu kurtarmaya izin verilir (#627).
- Yalnızca ses aktarımlı oynatma için Aktarım Planlama'yı varsayılan olarak etkinleştirin.
ExoPlayer.experimentalSetOffloadSchedulingEnabledveAudioOffloadListener.onExperimentalOffloadSchedulingEnabledChangedsilinsin mi?onExperimentalSleepingForOffloadChanged,onSleepingForOffloadChangedolarak;onExperimentalOffloadedPlaybackiseonOffloadedPlaybackolarak yeniden adlandırıldı.- Ses boşaltma moduyla ilgili
TrackSelectionParametersarayüzlerini ve tanımlarını dahili birAudioOffloadPreferencessınıfına taşıyın. AnalyticsListener,AudioRendererEventListenerveAudioSink.ListeneröğelerineonAudioTrackInitializedveonAudioTrackReleasedgeri çağırmaları ekleyin.- DTS Express ses arabelleği yetersizliği sorunu düzeltildi (#650).
- E-AC3-JOC için özellik kontrolünün
IllegalArgumentExceptionhatası vermesine neden olan hata düzeltildi (#677).
- MP4 ve Matroska'da 24/32 bit big-endian PCM desteği eklendi ve MP4'te
- Video:
MediaCodecVideoRendereruygulamasının özel birVideoFrameProcessor.Factorykullanmasına izin verin.- Ses akışı negatif zaman damgalarıyla başladığında ilk karenin oluşturulamamasına neden olan hata düzeltildi (#291).
- Metin:
ExoplayerCuesDecoderöğesini kaldırsampleMimeType = application/x-media3-cuesiçeren metin parçaları artıkSubtitleDecoderörneğine gerek olmadan doğrudanTextRenderertarafından işlenir.
- Meta veriler:
- Uygulamanın her durumda null döndürmesi gerektiğinden
MetadataDecoder.decodeartık "yalnızca kod çözme" örnekleri için çağrılmayacak.
- Uygulamanın her durumda null döndürmesi gerektiğinden
- Etki:
VideoFrameProcessor.queueInputBitmap(Bitmap, Iterator<Long>)ekleyin Bitmap girişi zaman damgasına göre sıraya ekleniyor.VideoFrameProcessor.registerInputStream()değerini engelleyici olmayacak şekilde değiştirin. UygulamalarVideoFrameProcessor.Listener#onInputStreamRegistered()yöntemini uygulamalıdır.VideoFrameProcessor.queueInputBitmapadlı öğeninframeRatevedurationUsparametreleriTimestampIteratorolarak değiştirildi.
- IMA uzantısı:
- Oynatma listesindeki ilk öğe olmayan çok dönemli bir DASH canlı yayınının istisna oluşturmasına neden olan hata düzeltildi (#571).
AdsLoader.destroy()yöntemini çağırmadan önce StreamManager'ı serbest bırakın- IMA SDK sürümü 3.31.0'a yükseltildi.
- Oturum:
DefaultMediaNotificationProvider(#167) içinde bildirimler ön plan hizmeti davranışınıFOREGROUND_SERVICE_IMMEDIATEolarak ayarlayın.- Samsung cihazlarda desteği sonlandırılmış API ile ilgili sorunları önlemek için API 31'in üzerinde yalnızca
android.media.session.MediaSession.setMediaButtonBroadcastReceiver()kullanın (#167). - Kullanılabilir komutları ve bildirimi ve platform oturumunu doldurmak için kullanılan özel düzeni ayarlamak üzere medya bildirimi denetleyicisini proxy olarak kullanın.
MediaSessionService.onStartCommand()tarafından alınan medya düğmesi etkinliklerini platform oturumuna ve tekrar Media3'e yönlendirmek yerine Media3 içinde dönüştürün. Bu sayede, arayan denetleyici her zaman medya bildirimi denetleyicisi olur ve uygulamalar, desteklenen tüm API düzeylerinde bildirimden gelen aramaları aynı şekilde kolayca tanıyabilir.- Eski bir
MediaSessionCompatcihazına bağlandığındaMediaController.getCurrentPosition()cihazının ilerlememesine neden olan hata düzeltildi. - Kolaylık için
MediaLibrarySession.getSubscribedControllers(mediaId)ekleyin. - Denetleyicinin abone olduğu üst kimliğin kullanılabilirliğini onaylamak için
MediaLibrarySession.Callback.onSubscribe()öğesini geçersiz kılın. İşlem başarılı olursa abonelik kabul edilir ve tarayıcıyı bilgilendirmek için hemennotifyChildrenChanged()çağrılır (#561). - Automotive OS için oturum demosu modülü ekleyin ve Android Auto için oturum demosunu etkinleştirin.
- Medya bildirim denetleyicisi için
COMMAND_GET_TIMELINEkullanılamıyorsa çerçeve oturumunun sırasını ayarlamayın. Android Auto, çerçeve oturumundan okuma yapan istemci denetleyicisi olarak kullanıldığında Android Auto kullanıcı arayüzündekiqueuedüğmesi gösterilmez (#339). SimpleBitmapLoaderyerine varsayılan olarakDataSourceBitmapLoaderkullanın (#271, #327).- Uygulamaların varsayılan medya düğmesi etkinlik işlemeyi geçersiz kılmasına olanak tanıyan
MediaSession.Callback.onMediaButtonEvent(Intent)ekleyin.
- Kullanıcı arayüzü:
- Kullanıcının uygun bir ses çıkışı (ör. Bluetooth kulaklık) bağlamasına olanak tanıyan bir sistem iletişim kutusu başlatarak
Player.PLAYBACK_SUPPRESSION_REASON_UNSUITABLE_AUDIO_OUTPUTnedeniyle oynatmanın engellenmesini yöneten Wear OS cihazlar için birPlayer.Listeneruygulaması ekleyin. Yapılandırılabilir bir zaman aşımı süresi içinde (varsayılan olarak 5 dakika) uygun bir cihaz bağlanırsa dinleyici, oynatmayı otomatik olarak devam ettirir.
- Kullanıcının uygun bir ses çıkışı (ör. Bluetooth kulaklık) bağlamasına olanak tanıyan bir sistem iletişim kutusu başlatarak
- İndirilenler:
- Android 14 uyumluluğu için
DownloadServiceuygulamasında "veri senkronizasyonu" ön plan hizmet türünü beyan edin. Uygulama bu hizmeti kullanırken manifest dosyasınadataSyncöğesiniforegroundServiceTypeolarak eklemeli veFOREGROUND_SERVICE_DATA_SYNCiznini eklemelidir (#11239).
- Android 14 uyumluluğu için
- HLS uzantısı:
- HLS canlı oynatma listesini, son yükleme tamamlanma zamanı yerine son yükleme başlangıç zamanından hesaplanan bir aralıkla yenileyin (#663).
- DASH uzantısı:
- Segment şablonu URL'sinde aynı DASH tanımlayıcısından birden fazla kullanılmasına izin verin.
- Ayıklama sırasında altyazıları ayrıştırmak için deneysel destek ekleyin. Bu, altyazı segmentleri arasında geçiş yaparken titremeyi çözme de dahil olmak üzere, çakışan altyazıları birleştirme konusunda daha iyi destek sunar. Bu özelliği
DashMediaSource.Factory.experimentalParseSubtitlesDuringExtraction()(#288) kullanarak etkinleştirebilirsiniz.
- RTSP uzantısı:
- TCP'ye geri dönüldüğünde
IndexOutOfBoundsExceptionhatasına veya bazı durumlarda oynatmanın takılmasına neden olabilen yarışma durumu düzeltildi. RtspMediaPeriodyükleme durumu döndürülürken RTSP kurulumundaki durum kontrolü (#577).- Options yanıtı genel başlığındaki özel Rtsp istek yöntemlerini yoksayma (#613).
- Etkin tutma RTSP seçenekleri istekleri gönderme zaman aralığında RTSP kurulum yanıtı zaman aşımı değerini kullanma (#662).
- TCP'ye geri dönüldüğünde
- Kod çözücü uzantıları (FFmpeg, VP9, AV1, MIDI vb.):
- Ses sentezlemek için Jsyn kitaplığını kullanarak standart MIDI dosyalarının oynatılmasını destekleyen MIDI kod çözücü modülünü yayınlayın.
- Sunulması gerekmeyen çıkış arabelleklerini doğrudan işaretlemek için
DecoderOutputBuffer.shouldBeSkippedekleyin. Bu, desteği sonlandırılacak olanC.BUFFER_FLAG_DECODE_ONLYyerine tercih edilir. - Kod çözücülerin başlangıç zamanından önce yalnızca kod çözme örneklerini bırakmasına izin vermek için
Decoder.setOutputStartTimeUsveSimpleDecoder.isAtLeastOutputStartTimeUsekleyin. Bu, desteği sonlandırılacak olanBuffer.isDecodeOnlyyerine tercih edilmelidir. - MIDI kod çözücü yapısının Maven deposunda yayınlanmasıyla ilgili hata düzeltildi. Öğe,
media3-exoplayer-midi(#734) olarak yeniden adlandırıldı.
- Leanback uzantısı:
- Bir yüzeyin devre dışı bırakılmasının Leanback kodunda
ArithmeticExceptionhatasına neden olabileceği hata düzeltildi (#617).
- Bir yüzeyin devre dışı bırakılmasının Leanback kodunda
- Test Yardımcı Programları:
TestExoPlayerBuilderveFakeClock'yi Espresso kullanıcı arayüzü testleri ve Compose kullanıcı arayüzü testleriyle uyumlu hale getirme Bu sayede, Espresso veya Compose görünüm etkileşimleri sırasında oynatmanın rastgele ilerlemesine neden olan bir hata düzeltildi.
- Desteği sonlandırılan simgeleri kaldırın:
TransformationRequest.Builder.setEnableRequestSdrToneMapping(boolean)veTransformationRequest.Builder.experimental_setEnableHdrEditing(boolean)araçlarını kaldırın. Bunun yerineComposition.Builder.setHdrMode(int)kullanın veCompositiondeğeriniTransformer.start(Composition, String)öğesine iletin.- Desteği sonlandırılan
DownloadNotificationHelper.buildProgressNotificationyöntemini kaldırın ve bunun yerinenotMetRequirementsparametresi 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
multidexbağımlılığı tüm modüllerden kaldırıldı (#499).
- Yanlışlıkla eklenen
- ExoPlayer:
PlaybackStatsListeneruygulamasında, oynatma listesi temizlendikten sonra sahtePlaybackStatsoluşturulması sorunu düzeltildi.- Ortak Medya İstemci Verileri (CMCD) günlüğüne ek alanlar ekleyin: akış biçimi (sf), akış türü (st), sürüm (v), en yüksek bit hızı (tb), nesne süresi (d), ölçülen işleme hızı (mtp) ve nesne türü (ot) (#8699).
- Ses:
- Çok kısa dosyalar oynatılırken
Player.getState()durumunun hiçbir zamanSTATE_ENDEDdurumuna geçmemesine neden olan hata düzeltildi (#538).
- Çok kısa dosyalar oynatılırken
- Ses Boşaltma:
- RFC 7845'e uygun olarak, boşaltılmış Opus oynatma için bit akışına Ogg kimlik başlığı ve yorum başlığı sayfalarını ekleyin.
- Video:
- H.265/HEVC: SPS kısa ve uzun vadeli referans resim bilgilerini ayrıştırma sorunu düzeltildi.
- Metin:
- CEA-608: İşaret kısaltma mantığı, yalnızca görünür metni dikkate alacak şekilde değiştirildi. Daha önce, işaret uzunluğu 32 karakterle sınırlandırılırken girinti ve sekme ofseti dahil ediliyordu (bu, spesifikasyona göre teknik olarak doğruydu) (#11019).
- IMA uzantısı:
- IMA SDK sürümü 3.30.3'e yükseltildi.
- Oturum:
- Denetleyicinin durumuna özel düzen ekleyin ve buna erişmek için bir alıcı sağlayın. Özel düzen değiştiğinde
MediaController.Listener.onCustomLayoutChangedçağrılır. Farklı Media3 denetleyicilerine farklı özel düzenler göndermek isteyen uygulamalar, bağlantı tamamlandığında özel düzenin denetleyici tarafından kullanılabilmesi içinMediaSession.Callback.onConnectiçindeAcceptedResultBuilderkullanarak bunu yapabilir. MediaLibraryServiceLegacyStub, bunu desteklemeyen birResult'e hata gönderdiğindeUnsupportedOperationExceptionhatasının oluştuğu durumlar düzeltildi (#78).- Hem eski komutlar (
COMMAND_ADJUST_DEVICE_VOLUMEveCOMMAND_SET_DEVICE_VOLUME) hem de yeni komutlar (COMMAND_ADJUST_DEVICE_VOLUME_WITH_FLAGSveCOMMAND_SET_DEVICE_VOLUME_WITH_FLAGS) aracılığıylavolumeControlTypedeğerini belirleyerekPlayerWrapperaracınınVolumeProviderCompatoluşturma şekli düzeltildi (#554).
- Denetleyicinin durumuna özel düzen ekleyin ve buna erişmek için bir alıcı sağlayın. Özel düzen değiştiğinde
Sürüm 1.1.0
5 Temmuz 2023
- Ortak Kitaplık:
- Uygun olmayan ses rotası için engelleme nedeni ekleyin ve hazır olduğunda oynatın. Çok uzun süre engellenme nedenini değiştirin. (#15).
- Player'a komut ekleme:
COMMAND_GET_METADATACOMMAND_SET_PLAYLIST_METADATACOMMAND_SET_DEVICE_VOLUME_WITH_FLAGSCOMMAND_ADJUST_DEVICE_VOLUME_WITH_FLAGS
- Kullanıcıların ses düzeyi işaretlerini belirtebilmesi için Player'a aşırı yüklenmiş yöntemler ekleyin:
void setDeviceVolume(int, int)void increaseDeviceVolume(int)void decreaseDeviceVolume(int)void setDeviceMuted(boolean, int)
DeviceInfoiçinBuildereklendi ve mevcut kurucunun desteği sonlandırıldı.- Uzaktan oynatma için yönlendirme denetleyici kimliğini belirtmek üzere
DeviceInfo.routingControllerIdekleyin. - Aynı konumda öğe ekleme ve kaldırma için kısayol olarak
Player.replaceMediaItem(s)ekleyin (#8046).
- ExoPlayer:
- ExoPlayer'ın cihaz ses seviyesi yöntemlerini kontrol etmesine yalnızca açıkça etkinleştirildiğinde izin verin.
ExoPlayer.Builder.setDeviceVolumeControlEnabledkullanarak şunlara erişebilirsiniz:getDeviceVolume()isDeviceMuted()setDeviceVolume(int)vesetDeviceVolume(int, int)increaseDeviceVolume(int)veincreaseDeviceVolume(int, int)decreaseDeviceVolume(int)vedecreaseDeviceVolume(int, int)
MediaSourceiçindeki kullanılabilir parça türlerini filtrelemeye olanak tanıyanFilteringMediaSourceekleyin.- DASH, HLS ve SmoothStreaming gibi uyarlanabilir akış biçimlerinin giden isteklerine Ortak Medya İstemci Verileri'ni (CMCD) dahil etme desteği eklendi.
br,bl,cid,rtpvesidalanları dahil edildi (#8699). API yapısı ve API yöntemleri:- CMCD günlüğü varsayılan olarak devre dışıdır. Etkinleştirmek için
MediaSource.Factory.setCmcdConfigurationFactory(CmcdConfiguration.Factory cmcdConfigurationFactory)kullanın. - Tüm anahtarlar varsayılan olarak etkindir. Günlüğe kaydedilen anahtarları filtrelemek için
CmcdConfiguration.RequestConfig.isKeyAllowed(String key)değerini geçersiz kılın. - Özel tuş kaydını etkinleştirmek için
CmcdConfiguration.RequestConfig.getCustomData()ayarını geçersiz kılın.
- CMCD günlüğü varsayılan olarak devre dışıdır. Etkinleştirmek için
- Demo uygulamasını özel bir
*.exolist.jsondosyasıyla başlatmayı kolaylaştırmak için ana demonun manifest dosyasına ek işlem ekleyin (#439). - Video oynatma sırasında
Effectkullanmak içinExoPlayer.setVideoEffects()ekleyin. SampleQueueöğesini,sourceIddeğeriniintyerinelongolarak depolayacak şekilde güncelleyin. Bu işlem, herkese açık yöntemlerin (SampleQueue.sourceIdveSampleQueue.peekSourceId) imzalarını değiştirir.LoadControlyöntemlerishouldStartPlaybackveonTracksSelected'ye, bu yöntemlerin ilgiliMediaPeriodile ilişkilendirilmesine olanak tanıyan parametreler eklendi.ServerSideAdInsertionMediaSource.setAdPlaybackStates(Map<Object, AdPlaybackState>)imzasını, haritada anahtar olarak kullanılan UID'leri içeren dönemleri içeren bir zaman çizelgesi parametresi ekleyerek değiştirin. Bu, çok dönemli canlı yayınlarda eşzamanlılık sorunlarını önlemek için gereklidir.EventDispatcher.withParameters(int windowIndex, @Nullable MediaPeriodId mediaPeriodId, long mediaTimeOffsetMs)veBaseMediaSource.createEventDispatcher(..., long mediaTimeOffsetMs)'in desteği sonlandırıldı. Bunun yerine, yöntemlerinmediaTimeOffsetUsiçermeyen varyantı çağrılabilir. Desteği sonlandırılan varyantlarda bile, dağıtıcı tarafından gönderilenMediaLoadDatanesnelerininstartTimeUsveendTimeUsdeğerlerine artık ofset eklenmediğini unutmayın.ExoTrackSelection.blacklistöğesiniexcludeTrack,isBlacklistedöğesini iseisTrackExcludedolarak yeniden adlandırın.- Boş bir oynatma listesinde çağrıldığında
ExoPlayer.setMediaItem(s)veaddMediaItem(s)arasındaki tutarsız davranışı düzeltin.
- ExoPlayer'ın cihaz ses seviyesi yöntemlerini kontrol etmesine yalnızca açıkça etkinleştirildiğinde izin verin.
- Transformer:
Transformer.Builder.setMediaSourceFactory(MediaSource.Factory)öğesini kaldır Bunun yerineExoPlayerAssetLoader.Factory(MediaSource.Factory)veTransformer.Builder.setAssetLoaderFactory(AssetLoader.Factory)politikalarını kullanın.Transformer.startTransformation(MediaItem, ParcelFileDescriptor)öğesini kaldır- Giriş karesinin işlenmesi beklenirken video akışının sonu işaretlendiğinde dönüşümün takılmasına (çoğullayıcı zaman aşımına neden olur) yol açan hata düzeltildi.
- Desteği genişletmek için
findDecoder/EncoderForFormatyardımcı programlarını kullanmak yerineMediaCodecListaracılığıyla codec'leri sorgulayın. - Bazı cihazlarda çalışmadığı için
DefaultEncoderFactoryuygulamasındaki B-frame yapılandırmasını kaldırın.
- Parça seçimi:
- Varsayılan olarak devre dışı olan
DefaultTrackSelector.Parameters.allowInvalidateSelectionsForRendererCapabilitiesChangeöğesini ekleyin. EtkinleştirildiğindeDefaultTrackSelector, oluşturucu özellikleri değiştiğinde yeni bir parça seçimini tetikler.
- Varsayılan olarak devre dışı olan
- Ayıklayıcılar:
- Ses:
- Tünel oluşturma etkinleştirildiğinde ve
AudioProcessorsetkin olduğunda (ör. boşluksuz kırpma için) bazı oynatma işlemlerinin başarısız olmasına neden olan hata düzeltildi (#10847). - Doğrudan oynatmalarda (boşaltma) Opus karelerini Ogg paketlerine kapsülleyin.
- Yük devretme planlamasıyla uyku sırasında mevcut konumu tahmin etme
- Oynatıcının yaşam döngüsünün sonunda kaynakları serbest bırakmak için
Renderer.release()veAudioSink.release()yöntemlerini ekleyin. DefaultAudioSinkuygulamasında ses özelliklerindeki değişiklikleri dinleyin.DefaultAudioSinkoluşturucusuna gerekli bircontextparametresi ekleyin.DefaultAudioSink, bu parametreyleAudioCapabilitiesReceiveriçin dinleyici olarak kaydolur ve özellik değişikliği bildirildiğindeaudioCapabilitiesözelliğini günceller.- Ses özellikleri değişikliklerini
onAudioCapabilitiesChangedarayüzündeki yeni bir etkinlikAudioSink.ListenerveonRendererCapabilitiesChangedetkinliklerini tetikleyen yeni birRendererCapabilities.Listenerarayüzü aracılığıyla yayma. - Ses kanallarına ölçeklendirme/karıştırma uygulamak için
ChannelMixingAudioProcessorekleyin. - Ses özellikleri değiştikten sonra baypas modu mümkün olduğunda ses kod çözücüyü silmek için
DecoderDiscardReasonsöğesine yeni tam sayı değeriDISCARD_REASON_AUDIO_BYPASS_POSSIBLEekleyin. - DTS Express ve DTS:X için doğrudan oynatma desteği eklendi (#335).
- Tünel oluşturma etkinleştirildiğinde ve
- Video:
- Oluşturucu devre dışı bırakıldığında
MediaCodecVideoRendereröğesinin genişliği ve yüksekliği 0 olan birVideoSizebildirmesini sağlayın.Player.getVideoSize()değiştiğindePlayer.Listener.onVideoSizeChangedbuna göre çağrılır. Bu değişiklikle birlikte,Player.getCurrentTracksvideo desteklemediğinde veya desteklenen video parçasının boyutu henüz belirlenmediğinde ExoPlayer'ınMediaCodecVideoRendererile video boyutunun genişliği ve yüksekliği 0 olur.
- Oluşturucu devre dışı bırakıldığında
- DRM:
DefaultDrmSessionüzerinde, DRM paketinin dışından çağrılması beklenmeyen, yalnızca dahili kullanıma yönelik birkaç yöntemin görünürlüğünü azaltın:void onMediaDrmEvent(int)void provision()void onProvisionCompleted()onProvisionError(Exception, boolean)
- Muxer:
- MP4 kapsayıcı dosyası oluşturmak için kullanılabilecek yeni bir muxer kitaplığı ekleyin.
- IMA uzantısı:
- DAI için çok dönemli canlı DASH yayınlarını etkinleştirme Mevcut uygulamanın canlı yayınlarda ileri/geri sarmayı henüz desteklemediğini lütfen unutmayın (#10912).
- Ardışık zaman çizelgelerinde hesaplanan içerik konumu biraz farklı olduğu için canlı yayınlara yeni bir reklam grubunun eklenmesine neden olan hata düzeltildi.
- Oturum:
- Şu anda bir
Playeryöntemini çağıran denetleyici hakkında bilgi edinmek içinMediaSession.getControllerForCurrentRequestyardımcı yöntemini ekleyin. - Uygulamaların, örneğin bir Bluetooth mikrofonlu kulaklık tarafından gönderilen medya düğmesi etkinlikleriyle oynatmayı devam ettirmesini sağlamak için
androidx.media3.session.MediaButtonReceiverekleyin (#167). LocalConfiguration(ör. URI) varsa istenenMediaItemsdeğerininPlayerdeğerine aktarılmasına izin vermek içinMediaSession.Callback.onAddMediaItemsöğesine varsayılan uygulama ekleyin (#282).- Android 12 ve önceki sürümlerde varsayılan olarak kompakt medya bildirimi görünümüne "önceki öğeye git" ve "sonraki öğeye git" komut düğmeleri eklendi (#410).
LocalConfiguration(ör. URI) varsa istenenMediaItemsdeğerininPlayerdeğerine aktarılmasına izin vermek içinMediaSession.Callback.onAddMediaItemsöğesine varsayılan uygulama ekleyin (#282).- Android 12 ve önceki sürümlerde varsayılan olarak kompakt medya bildirimi görünümüne "önceki öğeye git" ve "sonraki öğeye git" komut düğmeleri eklendi (#410).
- Şu anda bir
- Kullanıcı arayüzü:
- Oynat/duraklat düğmesiyle özel kullanıcı arayüzü öğeleri yazmak için
shouldShowPlayButtonvehandlePlayPauseButtonActionyardımcı yöntemlerini ekleyin.
- Oynat/duraklat düğmesiyle özel kullanıcı arayüzü öğeleri yazmak için
- RTSP uzantısı:
- DASH uzantısı:
- Çok dönemli DASH akışları için
MediaLoadData.startTimeMsveMediaLoadData.endTimeMs'den medya zaman farkını kaldırın. - Çok dönemli canlı Dash medya kaynağının yeniden hazırlanması sırasında
IndexOutOfBoundsExceptionhatasının oluşmasına neden olan hata düzeltildi (#10838).
- Çok dönemli DASH akışları için
- HLS uzantısı:
- Yükleme iş parçacığının
TimestampAdjusterbaşlatılmasını beklemesi için bir zaman aşımı süresi ayarlamak üzereHlsMediaSource.Factory.setTimestampAdjusterInitializationTimeoutMs(long)ekleyin. Başlatma işlemi zaman aşımından önce tamamlanmazsa oynatmanın sonsuza kadar duraklamasını önlemek içinPlaybackExceptionhatası verilir. Zaman aşımı varsayılan olarak sıfıra ayarlanır (#323).
- Yükleme iş parçacığının
- Test Yardımcı Programları:
DataSourceContractTestuygulamasında URI şemasının büyük/küçük harfe duyarlı olup olmadığını kontrol edin.
- Desteği sonlandırılan simgeleri kaldırın:
DefaultAudioSinkyapıcılarını kaldırın, bunun yerineDefaultAudioSink.Builderkullanın.HlsMasterPlaylistkaldırılacak, bunun yerineHlsMultivariantPlaylistkullanılacak.Player.stop(boolean)öğesini kaldır Bunun yerinePlayer.stop()vePlayer.clearMediaItems()(reset,trueise) kullanın.- Desteği sonlandırılan iki
SimpleCacheoluşturucuyu kaldırın. Daha iyi performans için bunun yerineDatabaseProvideralan ve desteği sonlandırılmamış bir oluşturucu kullanın. DefaultBandwidthMeteroluşturucusunu kaldırın, bunun yerineDefaultBandwidthMeter.Builderkullanın.DefaultDrmSessionManageroluşturucularını kaldırın, bunun yerineDefaultDrmSessionManager.Builderkullanın.- Kullanımdan kaldırılan iki
HttpDataSource.InvalidResponseCodeExceptionoluşturucuyu kaldırın. Hata günlük kaydını iyileştirmek için ek alanları(cause,responseBody) kabul eden, kullanımdan kaldırılmamış bir oluşturucu kullanın. DownloadHelper.forProgressive,DownloadHelper.forHls,DownloadHelper.forDashveDownloadHelper.forSmoothStreamingpolitikalarını kaldırın, bunun yerineDownloadHelper.forMediaItempolitikasını kullanın.- Desteği sonlandırılan
DownloadServiceoluşturucuyu kaldırın,channelDescriptionResourceIdparametresi sağlama seçeneğini içeren ve desteği sonlandırılmamış bir oluşturucu kullanın. - Karakter kümeleri için desteği sonlandırılmış dize sabitlerini (
ASCII_NAME,UTF8_NAME,ISO88591_NAME,UTF16_NAMEveUTF16LE_NAME) kaldırın. Bunun yerinekotlin.textpaketindeki Kotlin karakter kümelerini,java.nio.charset.StandardCharsetsveyacom.google.common.base.Charsetskullanın. - Desteği sonlandırılan
WorkManagerSchedulerkurucusunu kaldırın ve bunun yerineContextparametresi sağlama seçeneğini içeren, desteği sonlandırılmamış bir kurucu kullanın. Formatsınıfını örneklendirmek için kullanılan, desteği sonlandırılmışcreateVideoSampleFormat,createAudioSampleFormat,createContainerFormatvecreateSampleFormatyöntemleri kaldırıldı. Bunun yerineFormatörnekleri oluşturmak içinFormat.Builderkullanın.- Desteği sonlandırılan
copyWithMaxInputSize,copyWithSubsampleOffsetUs,copyWithLabel,copyWithManifestFormatInfo,copyWithGaplessInfo,copyWithFrameRate,copyWithDrmInitData,copyWithMetadata,copyWithBitratevecopyWithVideoSizeyöntemlerini kaldırın, bunun yerineFormat.buildUpon()ve ayarlayıcı yöntemlerini kullanın. - Desteği sonlandırılan
ExoPlayer.retry()politikasını kaldırın ve bunun yerineprepare()politikasını kullanın. - Kullanımdan kaldırılan sıfır bağımsız değişkenli
DefaultTrackSelectoroluşturucuyu kaldırın, bunun yerineDefaultTrackSelector(Context)kullanın. - Desteği sonlandırılan
OfflineLicenseHelperoluşturucusunu kaldırın, bunun yerineOfflineLicenseHelper(DefaultDrmSessionManager, DrmSessionEventListener.EventDispatcher)kullanın. - Desteği sonlandırılan
DownloadManageroluşturucusunu kaldırın, bunun yerineExecutoralan oluşturucuyu kullanın. - Desteği sonlandırılan
Cueoluşturucuları kaldırın, bunun yerineCue.Builderkullanın. - Desteği sonlandırılan
OfflineLicenseHelperoluşturucusunu kaldırın, bunun yerineOfflineLicenseHelper(DefaultDrmSessionManager, DrmSessionEventListener.EventDispatcher)kullanın. - Desteği sonlandırılan dört
AnalyticsListeneryöntemi kaldırıldı:onDecoderEnabled, bunun yerineonAudioEnabledve/veyaonVideoEnabledkullanın.onDecoderInitialized, bunun yerineonAudioDecoderInitializedve/veyaonVideoDecoderInitializedkullanın.onDecoderInputFormatChanged, bunun yerineonAudioInputFormatChangedve/veyaonVideoInputFormatChangedkullanın.onDecoderDisabled, bunun yerineonAudioDisabledve/veyaonVideoDisabledkullanın.
- Desteği sonlandırılan
Player.Listener.onSeekProcessedveAnalyticsListener.onSeekProcessedişlemlerini kaldırın, bunun yerineonPositionDiscontinuityişleminiDISCONTINUITY_REASON_SEEKile kullanın. ExoPlayer.setHandleWakeLock(boolean)politikasını kaldırın, bunun yerinesetWakeMode(int)politikasını kullanın.- Desteği sonlandırılan
DefaultLoadControl.Builder.createDefaultLoadControl()politikasını kaldırın ve bunun yerinebuild()politikasını kullanın. - Desteği sonlandırılan
MediaItem.PlaybackPropertiespolitikasını kaldırın, bunun yerineMediaItem.LocalConfigurationpolitikasını kullanın. Kullanımdan kaldırılanMediaItem.playbackPropertiesalanı artıkMediaItem.LocalConfigurationtüründe.
Sürüm 1.1.0-rc01
21 Haziran 2023
1.1.0 kararlı sürümünü kullanın.
Sürüm 1.1.0-beta01
7 Haziran 2023
1.1.0 kararlı sürümünü kullanın.
Sürüm 1.1.0-alpha01
10 Mayıs 2023
1.1.0 kararlı sürümünü kullanın.
Sürüm 1.0.0
Sürüm 1.0.2
18 Mayıs 2023
androidx.media3:media3-*:1.0.2 yayınlandı. 1.0.2 sürümü bu commit'leri içerir.
Bu sürüm, ExoPlayer 2.18.7 sürümüne karşılık gelir.
Bu sürüm, 1.0.1 sürümünden bu yana aşağıdaki değişiklikleri içerir:
- Çekirdek kitaplık:
Buffer,C.BUFFER_FLAG_LAST_SAMPLEişaretini içeriyorsa bunu belirtenBuffer.isLastSample()ekleyin.- Kare içeren son örnek, "akışın sonu" örneği okunmadan sıradan çıkarılırsa son karenin oluşturulmamasına neden olan sorun düzeltildi. (#11079).
- Ayıklayıcılar:
- RTSP ve MP4 ayıklayıcılar tarafından kullanılan ayrıştırma mantığını yeniden kullanarak MPEG-TS dosyalarındaki H.265 SPS ayrıştırma sorunu düzeltildi (#303).
- Metin:
- SSA: Bayt sırası işaretiyle başlıyorlarsa UTF-16 dosyaları için destek ekleyin (#319).
- Oturum:
MediaController, işlemlerini güncelleyen eski birMediaSessionCompatcihazına bağlandığında kullanılabilir komutlarını güncellememesiyle ilgili sorun düzeltildi.- API 30'da sistem kullanıcı arayüzünden
params.isRecent == trueileCallback.onGetLibraryRootiçin yapılan bir çağrıdaMediaLibraryServiceöğesinin null değerini döndürmesini engelleyen hata düzeltildi (#355). MediaSessionServiceveyaMediaLibraryServicebellek sızıntısını düzeltme (#346).MediaSessioniçinde birleştirilmişTimelineve konum güncellemesinin,MediaControllertarafındanIllegalStateExceptionhatası verilmesine neden olabileceği hata düzeltildi.
Sürüm 1.0.1
18 Nisan 2023
androidx.media3:media3-*:1.0.1 yayınlandı. 1.0.1 sürümü bu kayıtları içerir.
Bu sürüm, ExoPlayer 2.18.6 sürümüne karşılık gelir.
- Çekirdek kitaplık:
- Varsayılan konuma sararken hedef canlı yayın geçersiz kılma işlemini sıfırlama (#11051).
- Medyadaki boş örnek akışların oynatmanın takılmasına neden olabileceği hata düzeltildi.
- Oturum:
- Eski bir
MediaSessionCompattarafından yayınlanan birden fazla aynı sıra öğesininMediaControlleriçinde bir istisnaya neden olduğu hata düzeltildi (#290). - Eski
MediaControllerCompat.Callback.onSessionEventiçin eksik olanMediaSession.broadcastCustomCommandyönlendirmesini ekleyin (#293). MediaSession.setPlayerçağrıldığında kullanılabilir komutların güncellenmemesine neden olan hata düzeltildi.MediaControllertarafından gönderilenTrackSelectionOverrideörneklerinin,Format.metadataiçeren bir gruba referans vermeleri durumunda yoksayılmasına neden olan sorun düzeltildi (#296).- Eski
MediaSessionCompataracılığıyla meta verilere erişmek içinPlayer.COMMAND_GET_CURRENT_MEDIA_ITEMuygulamasının kullanılabilir olması gereken sorun düzeltildi. - Arka plan iş parçacığındaki
MediaSessionörneklerininMediaSessionServiceiçinde kullanıldığında kilitlenmelere neden olması sorunu düzeltildi (#318). - Uygulama amaçlamadığı halde kitaplık tarafından bir medya düğmesi alıcısının beyan edilmesiyle ilgili sorun düzeltildi (#314).
- Eski bir
- DASH:
- Boş segment zaman çizelgelerinin işlenmesiyle ilgili sorun düzeltildi (#11014).
- RTSP:
- UDP ile RTSP kurulumu, RTSP hatası 461 UnsupportedTransport ile başarısız olursa TCP ile tekrar deneyin (#11069).
Sürüm 1.0.0
22 Mart 2023
androidx.media3:media3-*:1.0.0 yayınlandı. 1.0.0 sürümü bu kayıtları içerir.
Bu sürüm, ExoPlayer 2.18.5 sürümüne karşılık gelir.
1.0.0-rc02 sürümünden bu yana herhangi bir değişiklik yapılmadı.
Sürüm 1.0.0-rc02
2 Mart 2023
androidx.media3:media3-*:1.0.0-rc02 yayınlandı. 1.0.0-rc02 sürümü şu commit'leri içerir:
Bu sürüm, ExoPlayer 2.18.4 sürümüne karşılık gelir.
- Çekirdek kitaplık:
- İndirilenler:
- Birleştirilecek iki segmentin başlangıç zamanı arasındaki maksimum farkı
SegmentDownloaderve alt sınıflarında yapılandırılabilir hale getirin (#248).
- Birleştirilecek iki segmentin başlangıç zamanı arasındaki maksimum farkı
- Ses:
- Video:
- HEVC HDR10 biçimini
HEVCProfileMain10yerineHEVCProfileMain10HDR10ile eşleyin. - Google TV Yüklü Chromecast ve Lenovo M10 FHD Plus'ta 60 fps AVC akışlarının desteklenmiyor olarak işaretlenmesine neden olan cihaz sorunu için geçici çözüm eklendi (#10898).
- Ekran yenileme hızından çok daha yüksek kare hızına sahip medya oynatılırken kare yayınlama performans sorunlarını düzeltme
- HEVC HDR10 biçimini
- Oyuncular:
- Medya öğeleri arasında geçiş yaparken geçici
STATE_IDLEsorununu düzeltme (#245).
- Medya öğeleri arasında geçiş yaparken geçici
- RTSP:
- Geçersiz RTSP Describe yanıt mesajlarının ayrıştırılması sırasında ortaya çıkan IllegalArgumentException hatasını yakalama (#10971).
- Oturum:
- Bildirim oynat/duraklat düğmesinin oynatıcı durumuyla güncellenmemesine neden olan hata düzeltildi (#192).
- IMA uzantısı:
- İlk (ve reklamsız durumda tek)
LOADEDetkinliği alınmadığı için reklamsız DAI akışlarının başlamasını engelleyen bir hata düzeltildi.
- İlk (ve reklamsız durumda tek)
Sürüm 1.0.0-rc01
16 Şubat 2023
androidx.media3:media3-*:1.0.0-rc01 yayınlandı. 1.0.0-rc01 sürümü şu commit'leri içerir:
Bu sürüm, ExoPlayer 2.18.3 sürümüne karşılık gelir.
- Çekirdek kitaplık:
- Oluşturucunun kod çözücü sıralama mantığını, bir kod çözücü medyayı yüksek performansla oynatamayabileceğini bildirse bile
MediaCodecSelectortercihlerini koruyacak şekilde ayarlayın. Örneğin, varsayılan seçici kullanıldığında, biçimi tam olarak destekleyen yazılım tabanlı kod çözücü yerine yalnızca işlevsel destek sunan donanım tabanlı kod çözücü tercih edilir (#10604). - Yeni bir ExoPlayer örneği için önceden var olan bir oynatma iş parçacığı ayarlayan
ExoPlayer.Builder.setPlaybackLooperekleyin. - İndirme yöneticisi yardımcılarının temizlenmesine izin verilir (#10776).
- İleri/geri sarma için kullanılan komutu da belirtmek üzere
BasePlayer.seekToparametresini ekleyin. - API 21 ve sonraki sürümlerde çizilebilir öğeler yüklenirken tema kullanma (#220).
- Birden fazla medya öğesinin tek bir pencerede birleştirilmesine olanak tanıyan
ConcatenatingMediaSource2ekleyin (#247).
- Oluşturucunun kod çözücü sıralama mantığını, bir kod çözücü medyayı yüksek performansla oynatamayabileceğini bildirse bile
- Ayıklayıcılar:
- Trak atomları ayrıştırılırken örnek tablosunda (stbl) gerekli bir örnek açıklaması (stsd) eksikse
NullPointerExceptionyerineParserExceptionoluşturun. - fMP4'te doğrudan bir senkronizasyon karesine atlarken örnekleri doğru şekilde atlama (#10941).
- Trak atomları ayrıştırılırken örnek tablosunda (stbl) gerekli bir örnek açıklaması (stsd) eksikse
- Ses:
- Doğrudan oynatmalarda (geçiş)
AudioTrackiçin minimum arabellek boyutunu hesaplamak üzere sıkıştırılmış ses biçimi bit hızını kullanın.
- Doğrudan oynatmalarda (geçiş)
- Metin:
- Bir altyazı dosyası işaret içermiyorsa
Subtitle.getEventTimeöğesine geçersiz (negatif) bir dizin iletenTextRenderersorununu düzeltin. - SubRip: Bayt sırası işaretiyle başlayan UTF-16 dosyaları için destek ekleyin.
- Bir altyazı dosyası işaret içermiyorsa
- Meta veriler:
- ID3 v2.4 tarafından izin verildiği şekilde, ID3 çerçevelerinden null ile ayrılmış birden fazla değeri ayrıştırın.
- Meta verilerle açıklanan içerik türünü veya klasör türünü belirtmek için
MediaMetadata.mediaTypeekleyin. MediaMetadata.folderTypeyerineMediaMetadata.isBrowsableekleyin. Klasör türünün desteği bir sonraki sürümde sonlandırılacak.
- DASH:
- Kare sayıları da dahil olmak üzere resim uyarlama setleri için tam ayrıştırma eklendi (#3752).
- Kullanıcı arayüzü:
- Görünürlük değişikliklerinin kayıtlı dinleyiciye iletilmesini sağlamak için desteği sonlandırılan
PlayerView.setControllerVisibilityListener(PlayerControlView.VisibilityListener)öğesini düzeltin (#229). - Sağdan sola (RTL) düzen kullanılırken
PlayerViewuygulamasında ortadaki oynatıcı kontrollerinin sıralaması düzeltildi (#227).
- Görünürlük değişikliklerinin kayıtlı dinleyiciye iletilmesini sağlamak için desteği sonlandırılan
- Oturum:
- Özel oynatıcılar için
Playerarayüzünün uygulanmasına yardımcı olmak amacıyla soyutSimpleBasePlayereklendi. - Platform oturum jetonunu Media3'e dönüştürmek için yardımcı yöntem eklendi
SessionToken(#171). - Platform medya oturumunun güncellemelerini tetiklemek için
onMediaMetadataChangedkullanın (#219). - Medya oturumunu
DefaultMediaNotificationProvidersınıfınıngetMediaButtons()yöntemine bağımsız değişken olarak ekleyin ve netlik için sabit listeler kullanın (#216). - Oynatıcıda ayarlamadan önce oturuma göre
MediaItemlistesini, başlangıç dizinini ve konumunu değiştirme/ayarlama imkanı sağlamak içinonSetMediaItemsgeri çağırma dinleyicisi ekleyin (#156). - Bluetooth dışı medya düğmesi etkinlikleri için iki kez dokunma algılamasından kaçının (#233).
- Şüpheli bir eski oturum durumu olması durumunda
QueueTimelinedaha sağlam hale getirildi (#241).
- Özel oynatıcılar için
- Meta veriler:
- ID3 v2.4 tarafından izin verildiği şekilde, ID3 çerçevelerinden null ile ayrılmış birden fazla değeri ayrıştırın.
- Meta verilerle açıklanan içerik türünü veya klasör türünü belirtmek için
MediaMetadata.mediaTypeekleyin. MediaMetadata.folderTypeyerineMediaMetadata.isBrowsableekleyin. Klasör türünün desteği bir sonraki sürümde sonlandırılacak.
- Yayınlama uzantısı:
- Cast SDK sürümü 21.2.0'a yükseltildi.
- IMA uzantısı:
- İş parçacığı sorunlarını önlemek için uygulama iş parçacığında
ImaServerSideAdInsertionMediaSourceöğesinin oynatıcı dinleyicisini kaldırın. - TV cihazlarında atla düğmesine odaklanılmasını istemek için
ImaServerSideAdInsertionMediaSource.AdsLoader.BuilderöğesinefocusSkipButtonWhenAvailableözelliğini ekleyin ve varsayılan olarak "true" değerine ayarlayın. - Atla düğmesine odaklanmayı programatik olarak istemek için
ImaServerSideAdInsertionMediaSource.AdsLoadersınıfınafocusSkipButton()yöntemini ekleyin. - IMA SDK sürümü 3.29.0'a yükseltildi.
- İş parçacığı sorunlarını önlemek için uygulama iş parçacığında
- Demo uygulama:
- Çalışma zamanında indirme bildirimleri için bildirim izni isteyin (#10884).
Sürüm 1.0.0-beta03
22 Kasım 2022
androidx.media3:media3-*:1.0.0-beta03 yayınlandı. 1.0.0-beta03 sürümü
bu kayıtları içerir.
Bu sürüm, ExoPlayer 2.18.2 sürümüne karşılık gelir.
- Çekirdek kitaplık:
- Seçili parçalar için tünel oluşturmanın etkin olup olmadığını kontrol etmek üzere
ExoPlayer.isTunnelingEnabledekleyin (#2518). - Tek bir
MediaSourcesarmalamayı basitleştirmek içinWrappingMediaSourceeklendi (#7279). - Yetersiz bellek nedeniyle oynatma takılmadan önce arka arabelleği silin.
- Yük devretme etkinleştirildiğinde Tracing "doSomeWork" bloğunu kapatın.
PlaybackStatsListeneriçinde hızlı aramalarla ilgili oturum izleme sorunu düzeltildi (#180).- Tek öğeli bir oynatma listesinde
seekToNextveyaseekToPreviousçağrılırken eksikonMediaItemTransitiongeri çağırma işlevi gönderiliyor (#10667). - Videonun oluşturulduğu yüzeyin boyutunu döndüren
Player.getSurfaceSizeekleyin. - Oynatıcı yayınlanırken dinleyicilerin kaldırılmasının
IllegalStateExceptionhatasına neden olabildiği hata düzeltildi (#10758).
- Seçili parçalar için tünel oluşturmanın etkin olup olmadığını kontrol etmek üzere
- Oluşturun:
- Derleme hatalarını önlemek için minimum
compileSdkVersionsürümünü zorunlu kılın (#10684). - Başka bir Gradle derlemesine dahil edildiğinde yayınlama engellemesini önleyin.
- Derleme hatalarını önlemek için minimum
- Parça seçimi:
- Ekran Dolby Vision'ı desteklemiyorsa Dolby Vision yerine diğer parçaları tercih edin. (#8944).
- İndirilenler:
- Aynı
PriorityTaskManagerile eşzamanlı indirme ve oynatmanın neden olduğuProgressiveDownloaderiçindeki olası sonsuz döngü düzeltildi (#10570). - İndirme bildiriminin hemen görünmesini sağlama (#183).
- Aşırı iş parçacığı oluşturulmasını önlemek için paralel indirme kaldırma işlemlerini 1 ile sınırlayın (#10458).
- Aynı
- Video:
- Ekran desteklemiyorsa Dolby Vision için alternatif kod çözücüyü deneyin. (#9794).
- Ses:
- Aynı anda birden fazla oynatıcıyı serbest bırakırken OutOfMemory hatalarını önlemek için
AudioTrackörneklerini serbest bırakmak üzereSingleThreadExecutorkullanın (#10057). - AudioTrack boşaltma durumu için
AudioOffloadListener.onExperimentalOffloadedPlaybackekler. (#134). AudioTrackBufferSizeProvideröğesini herkese açık bir arayüz yapın.- Tercih edilen ses çıkış cihazını ayarlamak için
ExoPlayer.setPreferredAudioDeviceekleyin (#135). androidx.media3.exoplayer.audio.AudioProcessoradlı öğeyiandroidx.media3.common.audio.AudioProcessorolarak yeniden adlandırın.- Tüm Android sürümlerinde 8 kanallı ve 12 kanallı sesleri sırasıyla 7.1 ve 7.1.4 kanal maskeleriyle eşleme (#10701).
- Aynı anda birden fazla oynatıcıyı serbest bırakırken OutOfMemory hatalarını önlemek için
- Meta veriler:
MetadataRendererartık meta verileri kullanılabilir hale gelir gelmez oluşturacak şekilde yapılandırılabilir. Oluşturucunun meta verileri erken mi yoksa oynatıcı konumuyla senkronize olarak mı çıkaracağını belirtmek içinMetadataRenderer(MetadataOutput, Looper, MetadataDecoderFactory, boolean)ile bir örnek oluşturun.
- DRM:
- Android 13 ClearKey uygulamasında boş olmayan ancak geçersiz bir lisans URL'si döndüren hatayı düzeltir.
- Bir oynatma listesindeki DRM şemaları arasında geçiş yaparken (ör. Widevine'dan ClearKey'e) karşılaşılan
setMediaDrmSession failed: session not openedhatası düzeltildi.
- Metin:
- CEA-608: 2. alandaki hizmet değiştirme komutlarının doğru şekilde işlendiğinden emin olun (#10666).
- DASH:
- Manifestlerden
EventStream.presentationTimeOffsetayrıştırın (#10460).
- Manifestlerden
- Kullanıcı arayüzü:
- Oynatıcının mevcut geçersiz kılma işlemlerini
TrackSelectionDialogBuilderiçinde hazır ayar olarak kullanın (#10429).
- Oynatıcının mevcut geçersiz kılma işlemlerini
- Oturum:
- Bazı komutlar eşzamansız çözüm gerektirse bile komutların her zaman doğru sırada yürütülmesini sağlayın (#85).
DefaultMediaNotificationProviderörnek oluşturmak içinDefaultMediaNotificationProvider.Builderekleyin. 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çinDefaultMediaNotificationProvider.setSmallIcon(int)yöntemini ekleyin. (#104).MediaController.release()tarihinden önce gönderilen komutların silinmediğinden emin olun (#99).SimpleBitmapLoader,file://URI'lerinden bit eşlem yükleyebilir (#108).MediaControlleröğesinin bir dönemdeki reklamda arama yapmasını engelleyen onaylama düzeltildi (#122).- Oynatma sona erdiğinde
MediaSessionServiceön planda durdurulur ve en son oynatılan medya öğesinin oynatılmasını yeniden başlatmak için bir bildirim gösterilir (#112). - Duraklatma için beklemede olan intent ile ön plan hizmeti başlatmayın (#167).
- API 26 ve API 27'de
DefaultNotificationProvidertarafından oluşturulan bildirimle ilişkili "rozeti" manuel olarak gizleyin (rozet, API 28 ve sonraki sürümlerde otomatik olarak gizlenir) (#131). - Eski bir MediaSession'dan Media3 MediaController'a ikinci bir bağlayıcı bağlantısının IllegalStateExceptions'a neden olduğu hata düzeltildi (#49).
- RTSP:
- IMA:
- IMA SDK'nın bir reklamı yüklerken takıldığı durumları (#10510) ele almak için reklam bilgilerini yüklemeye zaman aşımı eklendi.
- İçeriğin sonuna doğru ileri sararken ara reklamların atlanmasını önleme (#10685).
- Sunucu tarafında reklam eklenen canlı yayınlar (ör. IMA DAI) için pencere süresini doğru şekilde hesaplama (#10764).
- FFmpeg uzantısı:
- FFmpeg kitaplıklarını NDK 23.1.7779620 ve sonraki sürümlere bağlamak için yeni gerekli işaretleri ekleyin (#9933).
- AV1 uzantısı:
- En son Android Studio sürümleriyle uyumsuzlukları önlemek için CMake sürümünü güncelleyin (#9933).
- Yayınlama uzantısı:
MediaControllerile oynatmayı kontrol ederkenCastPlayeröğesini tanımlayabilmek içingetDeviceInfo()öğesini uygulayın (#142).
- Transformer:
- Çıkış örneği oluşturma işleminin çok yavaş olduğunu algılamak için muxer watchdog zamanlayıcısı ekleyin.
- Desteği sonlandırılan simgeleri kaldırın:
Transformer.Builder.setOutputMimeType(String)öğesini kaldır Bu özellik kaldırıldı. Varsayılan muxer kullanıldığında MIME türü her zaman MP4 olur.
Sürüm 1.0.0-beta02
21 Temmuz 2022
androidx.media3:media3-*:1.0.0-beta02 yayınlandı. 1.0.0-beta02 sürümü
bu commit'leri içerir.
Bu sürüm, ExoPlayer 2.18.1 sürümüne karşılık gelir.
- Çekirdek kitaplık:
ShuffleOrderdeğeriniExoPlayer.setShuffleOrderile değiştirmenin,reason=Player.TIMELINE_CHANGE_REASON_PLAYLIST_CHANGEDilePlayer.Listener#onTimelineChangedçağrısına neden olduğundan emin olun (#9889).- Aşamalı medya için yalnızca seçili parçaları arabelleğe alınmış konuma dahil edin (#10361).
- Tüm ExoPlayer günlük çıkışları için özel günlükçüye izin verilir (#9752).
DefaultMediaSourceFactoryiçinde bazı durumlarda çalışmayansetDataSourceFactoryuygulamasını düzeltme (#116).
- Ayıklayıcılar:
- DASH:
- ClearKey lisans URL'sini manifestlerden ayrıştırma (#10246).
- Kullanıcı arayüzü:
- TalkBack'in, oynatma kontrolleri menüsünde etkin olan hız seçeneğini duyurmasını sağlayın (#10298).
- RTSP:
- VP8 parçalı paket işleme özelliği eklendi (#110).
- Leanback uzantısı:
LeanbackAdapter(10420) içinplayWhenReadydeğişikliklerini dinleyin.
- Oyuncular:
Sürüm 1.0.0-beta01
16 Haziran 2022
androidx.media3:media3-*:1.0.0-beta01 yayınlandı. 1.0.0-beta01 sürümü
bu kayıtları içerir.
Bu, ExoPlayer 2.18.0 sürümüne karşılık gelir.
- Çekirdek kitaplık:
MediaMetricsManagerüzerinden Android platformu teşhisleri için desteği etkinleştirin. ExoPlayer, oynatma etkinliklerini ve performans verilerini platforma iletir. Bu sayede cihazda sistem performansı ve hata ayıklama bilgileri sağlanır. Bu veriler, cihaz kullanıcısı tarafından kullanım ve teşhis bilgileri paylaşımı etkinleştirilmişse Google tarafından da toplanabilir. Uygulamalar,ExoPlayer.Builder.setUsePlatformDiagnostics(false)ile ExoPlayer için platform teşhisine katkıda bulunmaktan kapsamı dışında kalmayı seçebilir.MergingMediaSourcekullanılırken parçaların çok sık sıfırlanmasına neden olan hata düzeltildi. Örneğin, altyazılar yan yüklenirken ve seçilen altyazı oynatma sırasında değiştirilirken (#10248).- API 29 ve 30'da 5G-NSA ağ türü algılamayı durdurun. Bu oynatmalarda 4G ağı kullanılacağı varsayılır.
null'inMediaSource.Factory.setDrmSessionManagerProviderveMediaSource.Factory.setLoadErrorHandlingPolicy'a geçirilmesine izin verme GerekirseDefaultDrmSessionManagerProviderveDefaultLoadErrorHandlingPolicyörnekleri açıkça iletilebilir.- Tam
LocalConfigurationbilinmediğinde medyayı oynatmak için gereken meta verileri temsil etmek üzereMediaItem.RequestMetadataekleyin. Ayrıca artıkRequestMetadataiçinde yer aldığındanMediaMetadata.mediaUrlöğesini de kaldırın. - Oyuncuların tek bir öğe ayarlamasına izin vermek için
Player.Command.COMMAND_SET_MEDIA_ITEMekleyin.
- Parça seçimi:
TrackSelectionOverridessınıfınıTrackSelectionParameterssınıfına düzleştirin veTrackSelectionOverridesınıfını üst düzey bir sınıfa yükseltin.TracksInfoöğesiniTracks,TracksInfo.TrackGroupInfoöğesiniTracks.Groupolarak yeniden adlandırın.Player.getCurrentTracksInfovePlayer.Listener.onTracksInfoChanged,Player.getCurrentTracksvePlayer.Listener.onTracksChangedolarak yeniden adlandırıldı. Buna,Player.Listener.onTracksChangedyöntem adının "kullanımdan kaldırılmaması" ancak farklı parametre türleriyle kullanılması da dahildir.DefaultTrackSelector.buildUponParametersveDefaultTrackSelector.Parameters.buildUpondeğerlerini, desteği sonlandırılanDefaultTrackSelector.ParametersBuilderyerineDefaultTrackSelector.Parameters.Builderdeğerini döndürecek şekilde değiştirin.- Varsayılan olarak etkin olan
DefaultTrackSelector.Parameters.constrainAudioChannelCountToDeviceCapabilitiesekleyin. EtkinleştirildiğindeDefaultTrackSelector, kanal sayısı cihazın çıkış özelliklerini aşmayan ses parçalarını tercih eder. El cihazlarındaDefaultTrackSelector, çok kanallı ses biçimi üç boyutlu ses (Android 12L+) olarak ayarlanmadığı veya Dolby surround ses biçimi olmadığı sürece çok kanallı ses biçimleri yerine stereo/mono ses biçimlerini tercih eder. Ayrıca, ses uzamsallaştırmayı destekleyen cihazlardaDefaultTrackSelector, Spatializer özelliklerindeki değişiklikleri izler ve bunlara göre yeni bir parça seçimi tetikler.televisionKullanıcı arayüzü modu olan cihazlar bu kısıtlamalardan hariç tutulur ve en yüksek kanal sayısına sahip biçim tercih edilir. Bu özelliği etkinleştirmek içinDefaultTrackSelectorörneği,Contextile oluşturulmalıdır.
- Video:
DummySurfaceadlı öğeyiPlaceholderSurfaceolarak yeniden adlandırın.MediaCodecVideoRenderer.getCodecMaxInputSizeiçin AV1 desteği ekleyin.
- Ses:
- Standart olmayan MIME türünü bildiren LG AC3 ses kod çözücüsünü kullanın.
- API < 21'de yavaş ART doğrulamasını önlemek için
AudioAttributes.getAudioAttributesV21()dönüş türünüandroid.media.AudioAttributesyerine yeni birAudioAttributesV21sarmalayıcı sınıfı olarak değiştirin. - Biçim ses kanalı sayısı ayarlanmadığında (HLS parçasız hazırlıkta gerçekleşir) ses geçişi için platformu (API 29+) sorgulayın veya ses kodlama kanalı sayısını varsayın (10204).
- Kod çözücü 12 kanallı PCM ses çıkışı veriyorsa
AudioTracköğesiniAudioFormat.CHANNEL_OUT_7POINT1POINT4kanal maskesiyle yapılandırın (#10322).
- DRM
- Biçim değişikliğinden hemen sonra ileri veya geri sarma işlemi yapıldığında DRM oturumunun her zaman doğru şekilde güncellenmesi sağlandı (10274).
- Metin:
Player.getCurrentCues(),List<Cue>yerineCueGroupdöndürecek şekilde değiştirin.- SSA:
BorderStyle == 3olduğundaOutlineColourstil ayarını destekleyin (ör.OutlineColour, işaretin arka planını ayarlar) (#8435). - CEA-708: Verileri birden fazla hizmet bloğuna ayrıştırın ve seçili hizmet numarasıyla ilişkili olmayan blokları yoksayın.
- Yalnızca Google'ın dahili altyazı biçimini işlemek için kullanılan
RawCcExtractorkaldırıldı.
- Ayıklayıcılar:
- Kullanıcı arayüzü:
useController=falsedurumundaPlayerViewüzerinde ayarlananOnClickListeneröğelerine etkinliklerin teslimi düzeltildi (#9605). Ayrıca tüm görünüm yapılandırmaları için etkinliklerinOnLongClickListeneradlı görünüme gönderilmesini düzeltin.ACTION_UP'den öncePlayerViewsınırlarının dışına çıkan bir dizi dokunma etkinliğinin yanlışlıkla tıklama olarak değerlendirilmesi sorunu düzeltildi (#9861).- Dokunulduğunda kontrolleri gizlemek yerine oynatmayı açıp kapatabilen
PlayerViewerişilebilirlik sorunu düzeltildi (#8627). TrackSelectionViewveTrackSelectionDialogBuilderöğeleriniExoPlayeryerinePlayerarayüzüyle çalışacak şekilde yeniden yazın. Bu sayede görünümler diğerPlayeruygulamalarıyla kullanılabilir ve kullanıcı arayüzü modülünün ExoPlayer modülüne olan bağımlılığı ortadan kalkar. Bu, zarar veren bir değişikliktir.- Zorunlu metin parçalarını
PlayerViewparça seçicide göstermeyin ve "Yok" seçiliyse uygun bir zorunlu metin parçasını seçili tutun (#9432).
- DASH:
- DTS
AudioChannelConfigurationöğelerinden kanal sayısını ayrıştırın. Bu, DTS akışları için ses geçişini yeniden etkinleştirir (#10159). nulldeğerininDashMediaSource.Factory.setCompositeSequenceableLoaderFactorydeğerine aktarılmasına izin verme. GerekirseDefaultCompositeSequenceableLoaderFactoryörnekleri açıkça iletilebilir.
- DTS
- HLS:
- Oynatma listesi CODECS özelliği ses codec'ini içermiyorsa parçalı hazırlığa geri dönme (#10065).
nullparametresininHlsMediaSource.Factory.setCompositeSequenceableLoaderFactory,HlsMediaSource.Factory.setPlaylistParserFactoryveHlsMediaSource.Factory.setPlaylistTrackerFactoryparametrelerine aktarılmasına izin verme GerekirseDefaultCompositeSequenceableLoaderFactory,DefaultHlsPlaylistParserFactoryörnekleri veyaDefaultHlsPlaylistTracker.FACTORYreferansı açıkça iletilebilir.
- Smooth Streaming:
nulldeğerininSsMediaSource.Factory.setCompositeSequenceableLoaderFactorydeğerine aktarılmasına izin verme. GerekirseDefaultCompositeSequenceableLoaderFactoryörnekleri açıkça iletilebilir.
- RTSP:
- H263 için RTP okuyucu ekleme (#63).
- MPEG4 için RTP okuyucu ekleme (#35).
- HEVC için RTP okuyucu ekleme (#36).
- AMR için RTP okuyucu ekleyin. Şu anda yalnızca tek kanallı, aralıksız AMR akışları desteklenmektedir. Bileşik AMR RTP yükü desteklenmiyor. (#46)
- VP8 için RTP okuyucu ekleme (#47).
- WAV için RTP okuyucu ekleme (#56).
- RTSP temel yetkilendirme üstbilgisini düzeltme (#9544).
- ExoPlayer'ın zorunlu SDP alanlarına ihtiyacı olmadığından bu alanların kontrolü durduruldu (#10049).
- RTSP zamanlaması ayrıştırılırken denetlenen istisna oluşturma (#10165).
- VP9 için RTP okuyucu ekleme (#47).
- OPUS için RTP okuyucu ekleme (#53).
- Veri kaynakları:
DummyDataSourceadlı öğeyiPlaceholderDataSourceolarak yeniden adlandırın.- OkHttp kesinti işleme için geçici çözüm.
- Oturum:
- İsteklerin eşzamansız çözümlenmesine izin vermek için
MediaSession.MediaItemFilleryerineMediaSession.Callback.onAddMediaItemskullanın. MediaControllereski bir medya oturumuna bağlandığındasetMediaItems(s)yöntemlerini destekleyin.MediaController.setMediaUriveMediaSession.Callback.onSetMediaUriaraçlarını kaldırın. Aynı işlevMediaController.setMediaItemveMediaSession.Callback.onAddMediaItemskullanılarak da elde edilebilir.- Eski
MediaControllerçağrılarınıonSetMediaUriyerineMediaSession.Callback.onAddMediaItemshedefine yönlendirerek medya oynatın. - Bildirimin özelleştirilebilmesi için
MediaNotification.ProviderveDefaultMediaNotificationProviderekleyin. - Albüm kapağı resimlerini indirmek için
BitmapLoaderveSimpleBitmapLoaderekleyin. - Eski oturumla geriye dönük uyumluluk sağlamak için
MediaSession.setCustomLayout()ekleyin. - Eski oturumla özellik eşitliği sağlamak için
MediaSession.setSessionExtras()ekleyin. MediaSession.MediaSessionCallbacköğesiniMediaSession.Callback,MediaLibrarySession.MediaLibrarySessionCallbacköğesiniMediaLibrarySession.CallbackveMediaSession.Builder.setSessionCallbacköğesinisetCallbackolarak yeniden adlandırın.MediaControllerImplLegacyiçindeki NPE'yi düzeltin (#59).- Zaman çizelgesindeki oturum konumu bilgilerini güncelleme değişikliği(#51).
- Denetleyiciyi yayınladıktan sonra
MediaControllerImplBaseiçindeki NPE'yi düzeltin (#74).
- İsteklerin eşzamansız çözümlenmesine izin vermek için
- Reklam oynatma / IMA:
- Medya Derecelendirme Konseyi (MRC) önerilerine uymak için reklam yoklama sıklığını her 100 ms'den her 200 ms'ye düşürün.
- FFmpeg uzantısı:
- Android Studio'nun Gradle senkronizasyonunun başarısız olmasına neden olan bir CMake hatasını önlemek için CMake sürümünü
3.21.0+olarak güncelleyin (#9933).
- 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ü
- Desteği sonlandırılan simgeleri kaldırın:
Player.Listener.onTracksChanged(TrackGroupArray, TrackSelectionArray)öğesini kaldır Bunun yerinePlayer.Listener.onTracksChanged(Tracks)kullanın.Player.getCurrentTrackGroupsvePlayer.getCurrentTrackSelectionsaraçlarını kaldırın. Bunun yerinePlayer.getCurrentTrackskullanın. Ayrıca, desteği sonlandırılmış olsa daExoPlayer.getCurrentTrackGroupsveExoPlayer.getCurrentTrackSelectionsyöntemlerini kullanmaya devam edebilirsiniz.DownloadHelperDEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_VIEWPORTveDEFAULT_TRACK_SELECTOR_PARAMETERSsabitlerini kaldırın. MümkünsegetDefaultTrackSelectorParameters(Context), aksi takdirdeDEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_CONTEXTkullanın.DefaultTrackSelector(ExoTrackSelection.Factory)oluşturucusunu kaldırın. Bunun yerineDefaultTrackSelector(Context, ExoTrackSelection.Factory)politikasını kullanın.Transformer.Builder.setContextöğesini kaldır Bunun yerineContext,Transformer.Builderoluşturucusuna iletilmelidir.
Sürüm 1.0.0-alpha03
14 Mart 2022
androidx.media3:media3-*:1.0.0-alpha03 yayınlandı. 1.0.0-alpha03 sürümü bu kayıtları içerir.
Bu, ExoPlayer 2.17.1 sürümüne karşılık gelir.
- Ses:
- HLS'de Dolby Atmos (E-AC3-JOC) için ses özelliklerini kontrol etme hatası düzeltildi.
- Ayıklayıcılar:
- FMP4: Hem v0 hem de v1 emsg atomları içeren akışlar için emsg örnek meta verilerinin yanlış sırada çıkış yapmasına neden olan sorun düzeltildi (#9996).
- Metin:
SubtitleConfigurationalanına öncelik vermek ve ayarlanmamışsaFactorydeğerine geri dönmek içinSingleSampleMediaSource.Factory.setTrackIdveMediaItem.SubtitleConfiguration.Builder.setIdetkileşimini düzeltin (#10016).
- Reklam oynatma:
- Canlı HLS SSAI akışlarında reklam dönemleri arasındaki ses kesintilerini düzeltme
Sürüm 1.0.0-alpha02
2 Mart 2022
androidx.media3:media3-*:1.0.0-alpha02 yayınlandı. 1.0.0-alpha02 sürümü şu taahhütleri içerir:
Bu, ExoPlayer 2.17.0 sürümüne karşılık gelir.
- Core Library:
buildVideoRenderers()veyabuildAudioRenderers()yöntemini geçersiz kılanDefaultRenderersFactoryalt sınıflarının, codec bağdaştırıcı fabrikasına erişebilmesi ve oluşturduklarıMediaCodecRendererörneklerine iletebilmesi için korumalıDefaultRenderersFactory.getCodecAdapterFactory()yöntemini ekleyin.- ICY üstbilgi alanları
namevegenre, sırasıylaMediaMetadata.stationveMediaMetadata.genrealanlarına yayılır. BöylecePlayer.Listener.onMediaMetadataChanged()üzerinden uygulamaya ulaşırlar (#9677). DefaultHttpDataSource#getResponseHeadersöğesinden boş anahtarları kaldırın.MediaCodecörneği oluşturma işlemi başarısız olduğunda bekleyip tekrar deneyin. Bu sayede, bazı cihazlarda bir yüzey güvenli bir codec'ten başka bir codec'e geçirilirken ortaya çıkan sorun (#8696) giderilir.- Kullanıcıların
MediaCodecüzerinden metrik verileri almasına izin vermek içinMediaCodecAdapter.getMetrics()ekleyin. (#9766). - Maven bağımlılık çözümlemesi düzeltildi (#8353).
- Düşük gecikme özellikleri olmayan ve kullanıcının hızı ayarlamadığı canlı yayınlar için otomatik hız ayarını devre dışı bırakma (#9329).
DecoderCounters#inputBufferCountadlı öğeyiqueuedInputBufferCountolarak yeniden adlandırın.SimpleExoPlayer.renderersgizli hale getirilsin. OluşturucularaExoPlayer.getRendererüzerinden erişilebilir.- Bazı
AnalyticsListener.EventFlagssabit değerleri,Player.EventFlagsdeğerleriyle eşleşecek şekilde güncellendi. - Uygulamanın ihtiyaç duymaması halinde R8 tarafından kaldırılabilmesi için
AnalyticsCollectoröğesini bir arayüze ve varsayılan uygulamaya bölün.
- Parça seçimi:
- Parça seçiminde tercih edilen video rolü işaretlerini destekleme (#9402).
- Uyarlama için birden fazla video parçası seçerken tercih edilen MIME türlerini ve rol işaretlerini dikkate alacak şekilde video parçası seçim mantığı güncellendi (#9519).
- Video ve ses parçası seçim mantığı, yalnızca aynı düzeyde kod çözücü ve donanım desteğine sahip uyarlanabilir seçimler için biçimleri seçecek şekilde güncellendi (#9565).
- Birincil, donanım hızlandırmalı kod çözücüler tarafından birden fazla codec destekleniyorsa daha verimli codec'leri tercih etmek için video parça seçim mantığı güncellendi (#4835).
- Ses içeriği tercihlerini (ör. "varsayılan" ses parçası veya sistem yerel ayar diliyle eşleşen bir parça), teknik parça seçimi kısıtlamalarına (ör. tercih edilen MIME türü veya maksimum kanal sayısı) tercih edin.
- Bir parça grubunu geçersiz kılmanın aynı türdeki diğer parça gruplarını devre dışı bırakmadığı parça seçimi sorunu düzeltildi (#9675).
- Boş olmayan ve boş parça geçersiz kılmalarının karışımının doğru şekilde uygulanmadığı parça seçimi sorunu düzeltildi (#9649).
TrackGroupArrayiçinde yinelenenTrackGroupöğelerini yasaklayın.TrackGroups,TrackGroupoluşturucusunda biridayarlanarak her zaman ayırt edilebilir hale getirilebilir. Bu sayede, etkin bir parça geçersiz kılma işlemiyle uygulama arka plana alındıktan sonra oynatma devam ettirilirken oluşan kilitlenme sorunu düzeltildi (#9718).- Oynatma canlı yayına çok yakın olsa bile yeterli ağ bant genişliği altında kalite artışına izin vermek için
AdaptiveTrackSelectioniçindeki mantık değiştirildi (#9784).
- Video:
- Dolby Vision için kod çözücü yedek mantığı düzeltilerek gerektiğinde uyumlu bir H264/H265 kod çözücü kullanılması sağlandı.
- Ses:
- Dolby Atmos (E-AC3-JOC) için kod çözücü yedek mantığı düzeltilerek gerektiğinde uyumlu bir E-AC3 kod çözücü kullanılması sağlandı.
AudioCapabilitiesAPI'lerini,nullyerine açıkçaAudioCapabilities.DEFAULT_AUDIO_CAPABILITIESiletilecek şekilde değiştirin.DefaultAudioSinköğesineAudioTrackBufferSizeProviderekleyerekAudioTrackarabellek boyutu hesaplamasının özelleştirilmesine izin verin. (#8891).- İstenen arabellek boyutu 1 MB'tan büyükse
AudioTrackoluşturma işlemini yeniden deneyin. (#9712).
- Ayıklayıcılar:
- Metin:
- Yapılandırmadan oluşturulan altyazı parçasının
Format.idalanına yayılan birMediaItem.SubtitleConfiguration.idalanı ekleyin (#9673). - Matroska kapsayıcılarında WebVTT altyazıları için temel destek eklendi (#9886).
Cea708Decoderuygulamasının, bir hizmet bloğunun beyan edilen boyutundan daha fazlasını okumasını engelleyin.
- Yapılandırmadan oluşturulan altyazı parçasının
- DRM:
playbackLooper,DrmSessionManager.(pre)acquireSessionhesabından kaldırılsın mı? Bir uygulama tarafından özel birMediaSourceiçindeDrmSessionManagerkullanıldığındaplaybackLooper'ninDrmSessionManager.setPlayer'ye iletilmesi gerekir.
- Reklam oynatma / IMA:
- IMA Dinamik Reklam Ekleme (DAI) için destek eklendi (#8213).
AdPlaybackStateiçin bir reklam grubunun sıfırlanmasına ve tekrar oynatılmasına olanak tanıyan bir yöntem ekleyin (#9615).- Reklam oynatılırken oynatma hızını 1,0 olarak zorunlu kılma (#9018).
- Yüklenemeyen bir reklam grubunun oynatmanın hemen sıfırlanmasına neden olduğu sorun düzeltildi (#9929).
- Kullanıcı arayüzü:
- DASH:
- Ayrıştırılmış temel ve ek özellikleri
Representationöğesine ekleyin (#9579). forced-subtitleparça rolünü destekleyin (#9727).mainparça rolünüC.SELECTION_FLAG_DEFAULTolarak yorumlamayı durdurun.- DVB ad alanını bildirmeyen manifestler için ana URL hariç tutma mantığı düzeltildi (#9856).
- Göreceli
MPD.LocationURL'leri destekleme (#9939).
- Ayrıştırılmış temel ve ek özellikleri
- HLS:
- Yalnızca ses içeren HLS akışları için
Format.labeldeğerini doğru şekilde doldurun (#9608). - Başlatma süresini iyileştirmek için varsayılan olarak parçasız hazırlığı kullanın. Yorumlarınız, ana oynatma listesinde belirtilmeyen, birleştirilmiş altyazı dosyaları içeriyorsa bunları ana oynatma listesine ekleyerek oynatılabilir hale getirmeniz veya
HlsMediaSource.Factory.setAllowChunklessPreparation(false)ile parçasız hazırlığı devre dışı bırakmanız gerekir. - HLS'de animasyon karesi hassasiyetinde arama desteği (#2882).
- Yalnızca ses içeren HLS akışları için
- RTSP:
- Herhangi bir sunucu bağlantısı için kullanılan
SocketFactorydeğerini geçersiz kılmak üzere bir istemci API'si sağlayın (#9606). - Her ikisi de mevcutsa BASIC yerine DIGEST kimlik doğrulama yöntemini tercih etme (#9800).
- RTSP parça zamanlaması kullanılamadığında işleme (#9775).
- Geçersiz RTP-Info üstbilgi değerlerini yoksayma (#9619).
- Herhangi bir sunucu bağlantısı için kullanılan
- Transformer:
- Gerekli minimum API sürümü 21'e yükseltildi.
TransformationExceptionartık dönüşüm sırasında oluşan hataları açıklamak için kullanılıyor.- Dönüşüm seçeneklerini belirtmek için
TransformationRequestekleyin. - Birden fazla dinleyicinin kaydedilmesine izin verin.
- Codec çıkışı kısmen okunduğunda Transformer'ın takılması sorunu düzeltildi.
- Muxer serbest bırakılırken
Transformer.getProgressiçinde olası NPE'yi düzeltme hataları. - Dönüşümleri uygulamak için bir demo uygulaması ekleyin.
- MediaSession uzantısı:
MediaSessionConnector, varsayılan olarak durdurulduğunda oynatma listesini temizler. Oynatma listesinin saklanmasını isteyen uygulamalar, bağlayıcıdasetClearMediaItemsOnStop(false)yöntemini çağırabilir.
- Yayınlama uzantısı:
- FFmpeg uzantısı:
build_ffmpeg.sh, GNU'nun ikili yardımcı programları yerine LLVM'nin ikili yardımcı programlarına bağlı hale getirildi (#9933).
- Android 12 uyumluluğu:
- Cast uzantısını
com.google.android.gms:play-services-cast-framework:20.1.0'e bağlı olacak şekilde yükseltin.play-services-cast-framework'nin önceki sürümleri Android 12'yi hedefleyen uygulamalarla uyumlu değildir vePendingIntentoluştururkenIllegalArgumentExceptionile kilitlenir (#9528).
- Cast uzantısını
- Desteği sonlandırılan simgeleri kaldırın:
Player.EventListeneröğesini kaldır Bunun yerinePlayer.Listenerpolitikasını kullanın.MediaSourceFactory#setDrmSessionManager,MediaSourceFactory#setDrmHttpDataSourceFactoryveMediaSourceFactory#setDrmUserAgentöğelerini kaldırın. Bunun yerineMediaSourceFactory#setDrmSessionManagerProviderkullanın.MediaSourceFactory#setStreamKeysöğesini kaldır Bunun yerineMediaItem.Builder#setStreamKeyskullanın.MediaSourceFactory#createMediaSource(Uri)öğesini kaldır Bunun yerineMediaSourceFactory#createMediaSource(MediaItem)kullanın.setTag,DashMediaSource,HlsMediaSourceveSsMediaSourcehesaplarından kaldırılsın mı? Bunun yerineMediaItem.Builder#setTagpolitikasını kullanın.DashMediaSource#setLivePresentationDelayMs(long, boolean)öğesini kaldır Manifesti geçersiz kılmak içinMediaItem.Builder#setLiveConfigurationveMediaItem.LiveConfiguration.Builder#setTargetOffsetMs, yedek değer sağlamak içinDashMediaSource#setFallbackTargetLiveOffsetMskullanın.(Simple)ExoPlayer.setThrowsWhenUsingWrongThreadöğesini kaldır İleti dizisi yaptırımını devre dışı bırakmak artık mümkün değildir.ActionFileveActionFileUpgradeUtilaraçlarını kaldırın. Eski işlem dosyalarınıDefaultDownloadIndexile birleştirmek içinActionFileUpgradeUtilkullanmak üzere ExoPlayer 2.16.1 veya önceki bir sürümü kullanın.ProgressiveMediaSource#setExtractorsFactoryöğesini kaldır Bunun yerineProgressiveMediaSource.Factory(DataSource.Factory, ExtractorsFactory)oluşturucusunu kullanın.ProgressiveMediaSource.Factory#setTagveProgressiveMediaSource.Factory#setCustomCacheKeyaraçlarını kaldırın. Bunun yerineMediaItem.Builder#setTagveMediaItem.Builder#setCustomCacheKeypolitikalarını kullanın.DefaultRenderersFactory(Context, @ExtensionRendererMode int)veDefaultRenderersFactory(Context, @ExtensionRendererMode int, long)oluşturucularını kaldırın. Bunun yerineDefaultRenderersFactory(Context)oluşturucusunu,DefaultRenderersFactory#setExtensionRendererModeveDefaultRenderersFactory#setAllowedVideoJoiningTimeMs'yi kullanın.- Herkese açık tüm
CronetDataSourceyapıcıları kaldırın. Bunun yerineCronetDataSource.Factorykullanın.
- Aşağıdaki
IntDefsdeğerini yalnızca@Target(TYPE_USE)olarak değiştirin. Bu durum, Kotlin'deki kullanımların derlenmesini bozabilir. Bu sorun, ek açıklama türü (Int) ek açıklama ekleyecek şekilde taşınarak düzeltilebilir.@AacAudioObjectType@Ac3Util.SyncFrameInfo.StreamType@AdLoadException.Type@AdtsExtractor.Flags@AmrExtractor.Flags@AspectRatioFrameLayout.ResizeMode@AudioFocusManager.PlayerCommand@AudioSink.SinkFormatSupport@BinarySearchSeeker.TimestampSearchResult.Type@BufferReplacementMode@C.BufferFlags@C.ColorRange@C.ColorSpace@C.ColorTransfer@C.CryptoMode@C.Encoding@C.PcmEncoding@C.Projection@C.SelectionReason@C.StereoMode@C.VideoOutputMode@CacheDataSource.Flags@CaptionStyleCompat.EdgeType@DataSpec.Flags@DataSpec.HttpMethods@DecoderDiscardReasons@DecoderReuseResult@DefaultAudioSink.OutputMode@DefaultDrmSessionManager.Mode@DefaultTrackSelector.SelectionEligibility@DefaultTsPayloadReaderFactory.Flags@EGLSurfaceTexture.SecureMode@EbmlProcessor.ElementType@ExoMediaDrm.KeyRequest.RequestType@ExtensionRendererMode@Extractor.ReadResult@FileTypes.Type@FlacExtractor.Flags(com.google.android.exoplayer2.ext.flacpaketinde)@FlacExtractor.Flags(com.google.android.exoplayer2.extractor.flacpaketinde)@FragmentedMp4Extractor.Flags@HlsMediaPlaylist.PlaylistType@HttpDataSourceException.Type@IllegalClippingException.Reason@IllegalMergeException.Reason@LoadErrorHandlingPolicy.FallbackType@MatroskaExtractor.Flags@Mp3Extractor.Flags@Mp4Extractor.Flags@NotificationUtil.Importance@PlaybackException.FieldNumber@PlayerNotificationManager.Priority@PlayerNotificationManager.Visibility@PlayerView.ShowBuffering@Renderer.State@RendererCapabilities.AdaptiveSupport@RendererCapabilities.Capabilities@RendererCapabilities.DecoderSupport@RendererCapabilities.FormatSupport@RendererCapabilities.HardwareAccelerationSupport@RendererCapabilities.TunnelingSupport@SampleStream.ReadDataResult@SampleStream.ReadFlags@StyledPlayerView.ShowBuffering@SubtitleView.ViewType@TextAnnotation.Position@TextEmphasisSpan.MarkFill@TextEmphasisSpan.MarkShape@Track.Transformation@TrackOutput.SampleDataPart@Transformer.ProgressState@TsExtractor.Mode@TsPayloadReader.Flags@WebvttCssStyle.FontSizeUnit
Sürüm 1.0.0-alpha01
27 Ekim 2021
androidx.media3:media3-*:1.0.0-alpha01 yayınlandı. 1.0.0-alpha01 sürümü şu taahhütleri içerir.
Yeni özellikler
Media3, ExoPlayer dahil olmak üzere medya destek kitaplıklarının yeni adresidir. İlk alfa sürümü, medya kullanım alanlarını uygulamak için kitaplıkların erken ve işlevsel uygulamalarını içerir. Bunlar arasında şunlar yer alır:
- ExoPlayer, Android için özelleştirilmesi ve genişletilmesi kolay, uygulama düzeyinde bir medya oynatıcıdır.
- Oynatmaları göstermek ve kontrol etmek için medya oturumu işlevi. Bu yeni oturum modülü, ExoPlayer ile aynı
Playerarayüzünü kullanır. - Medya oynatma kullanıcı arayüzleri oluşturmak için kullanıcı arayüzü bileşenleri.
- ExoPlayer ile kullanılmak üzere diğer kitaplıklardaki işlevleri sarmalayan modüller (ör. IMA SDK aracılığıyla reklam ekleme).
Daha fazla bilgi için Media3 GitHub projesine bakın.
ExoPlayer daha önce ayrı bir ExoPlayer GitHub projesinde barındırılıyordu. Media3'te paket adı androidx.media3.exoplayer şeklindedir. Uygulamaların Media3'e geçiş yapmasına zaman tanımak için ExoPlayer GitHub projesini bir süre daha sürdürmeyi ve yayınlamayı planlıyoruz.
Media3, yeni media3-session modülüyle değiştirilen eski media2 ve mediasession uzantıları hariç tüm ExoPlayer modüllerinin yerine kullanılabilir. Bu sayede, bağdaştırıcı/bağlayıcı sınıfı kullanmaya gerek kalmadan oynatıcılar ile medya oturumları arasında doğrudan entegrasyon sağlanır.