Media3
| Son Güncelleme | Kararlı Sürüm | Sürüm Adayı | Beta Sürümü | Alfa Sürümü |
|---|---|---|---|---|
| 11 Kasım 2026 | 1.11.1 | - | 1.12.0-beta01 | - |
Bağımlılıkları bildirme
Media3'e bağımlılık eklemek için Google Maven deposunu projenize eklemeniz gerekir. Daha fazla bilgi için Google'ın Maven deposu sayfasını okuyun.
Uygulamanız veya modülünüz için build.gradle dosyasında ihtiyacınız olan yapıların bağımlılıklarını ekleyin:
Eski
dependencies { def media3_version = "1.11.1" // For media playback using ExoPlayer implementation "androidx.media3:media3-exoplayer:$media3_version" // For DASH playback support with ExoPlayer implementation "androidx.media3:media3-exoplayer-dash:$media3_version" // For HLS playback support with ExoPlayer implementation "androidx.media3:media3-exoplayer-hls:$media3_version" // For SmoothStreaming playback support with ExoPlayer implementation "androidx.media3:media3-exoplayer-smoothstreaming:$media3_version" // For RTSP playback support with ExoPlayer implementation "androidx.media3:media3-exoplayer-rtsp:$media3_version" // For MIDI playback support with ExoPlayer (see additional dependency requirements in // https://github.com/androidx/media/blob/release/libraries/decoder_midi/README.md) implementation "androidx.media3:media3-exoplayer-midi:$media3_version" // For ad insertion using the Interactive Media Ads SDK with ExoPlayer implementation "androidx.media3:media3-exoplayer-ima:$media3_version" // For loading data using the Cronet network stack implementation "androidx.media3:media3-datasource-cronet:$media3_version" // For loading data using the OkHttp network stack implementation "androidx.media3:media3-datasource-okhttp:$media3_version" // For loading data using librtmp implementation "androidx.media3:media3-datasource-rtmp:$media3_version" // For building media playback UIs using Jetpack Compose implementation "androidx.media3:media3-ui-compose:$media3_version" // For building media playback UIs using Jetpack Compose with Material Design 3 implementation "androidx.media3:media3-ui-compose-material3:$media3_version" // For building media playback UIs using Views implementation "androidx.media3:media3-ui:$media3_version" // For building media playback UIs for Android TV using the Jetpack Leanback library implementation "androidx.media3:media3-ui-leanback:$media3_version" // For exposing and controlling media sessions implementation "androidx.media3:media3-session:$media3_version" // For extracting data from media containers implementation "androidx.media3:media3-extractor:$media3_version" // For inspecting media files implementation "androidx.media3:media3-inspector:$media3_version" // For extracting and processing video frames implementation "androidx.media3:media3-inspector-frame:$media3_version" // For integrating with Cast implementation "androidx.media3:media3-cast:$media3_version" // For scheduling background operations using Jetpack Work's WorkManager with ExoPlayer implementation "androidx.media3:media3-exoplayer-workmanager:$media3_version" // For transforming media files implementation "androidx.media3:media3-transformer:$media3_version" // For applying effects on video frames implementation "androidx.media3:media3-effect:$media3_version" // For applying Lottie effects on video frames implementation "androidx.media3:media3-effect-lottie:$media3_version" // For muxing media files implementation "androidx.media3:media3-muxer:$media3_version" // Utilities for testing media components (including ExoPlayer components) implementation "androidx.media3:media3-test-utils:$media3_version" // Utilities for testing media components (including ExoPlayer components) via Robolectric implementation "androidx.media3:media3-test-utils-robolectric:$media3_version" // Common functionality for reading and writing media containers implementation "androidx.media3:media3-container:$media3_version" // Common functionality for media database components implementation "androidx.media3:media3-database:$media3_version" // Common functionality for media decoders implementation "androidx.media3:media3-decoder:$media3_version" // Common functionality for loading data implementation "androidx.media3:media3-datasource:$media3_version" // Common functionality used across multiple media libraries implementation "androidx.media3:media3-common:$media3_version" // Common Kotlin-specific functionality implementation "androidx.media3:media3-common-ktx:$media3_version" }
Kotlin
dependencies { val media3_version = "1.11.1" // For media playback using ExoPlayer implementation("androidx.media3:media3-exoplayer:$media3_version") // For DASH playback support with ExoPlayer implementation("androidx.media3:media3-exoplayer-dash:$media3_version") // For HLS playback support with ExoPlayer implementation("androidx.media3:media3-exoplayer-hls:$media3_version") // For SmoothStreaming playback support with ExoPlayer implementation("androidx.media3:media3-exoplayer-smoothstreaming:$media3_version") // For RTSP playback support with ExoPlayer implementation("androidx.media3:media3-exoplayer-rtsp:$media3_version") // For MIDI playback support with ExoPlayer (see additional dependency requirements in // https://github.com/androidx/media/blob/release/libraries/decoder_midi/README.md) implementation("androidx.media3:media3-exoplayer-midi:$media3_version") // For ad insertion using the Interactive Media Ads SDK with ExoPlayer implementation("androidx.media3:media3-exoplayer-ima:$media3_version") // For loading data using the Cronet network stack implementation("androidx.media3:media3-datasource-cronet:$media3_version") // For loading data using the OkHttp network stack implementation("androidx.media3:media3-datasource-okhttp:$media3_version") // For loading data using librtmp implementation("androidx.media3:media3-datasource-rtmp:$media3_version") // For building media playback UIs using Compose implementation("androidx.media3:media3-ui-compose:$media3_version") // For building media playback UIs using Views implementation("androidx.media3:media3-ui:$media3_version") // For building media playback UIs using Jetpack Compose implementation("androidx.media3:media3-ui-compose:$media3_version") // For building media playback UIs for Android TV using the Jetpack Leanback library implementation("androidx.media3:media3-ui-leanback:$media3_version") // For exposing and controlling media sessions implementation("androidx.media3:media3-session:$media3_version") // For extracting data from media containers implementation("androidx.media3:media3-extractor:$media3_version") // For inspecting media files implementation("androidx.media3:media3-inspector:$media3_version") // For extracting and processing video frames implementation("androidx.media3:media3-inspector-frame:$media3_version") // For integrating with Cast implementation("androidx.media3:media3-cast:$media3_version") // For scheduling background operations using Jetpack Work's WorkManager with ExoPlayer implementation("androidx.media3:media3-exoplayer-workmanager:$media3_version") // For transforming media files implementation("androidx.media3:media3-transformer:$media3_version") // For applying effects on video frames implementation("androidx.media3:media3-effect:$media3_version") // For applying Lottie effects on video frames implementation("androidx.media3:media3-effect-lottie:$media3_version") // For muxing media files implementation("androidx.media3:media3-muxer:$media3_version") // Utilities for testing media components (including ExoPlayer components) implementation("androidx.media3:media3-test-utils:$media3_version") // Utilities for testing media components (including ExoPlayer components) via Robolectric implementation("androidx.media3:media3-test-utils-robolectric:$media3_version") // Common functionality for reading and writing media containers implementation("androidx.media3:media3-container:$media3_version") // Common functionality for media database components implementation("androidx.media3:media3-database:$media3_version") // Common functionality for media decoders implementation("androidx.media3:media3-decoder:$media3_version") // Common functionality for loading data implementation("androidx.media3:media3-datasource:$media3_version") // Common functionality used across multiple media libraries implementation("androidx.media3:media3-common:$media3_version") // Common Kotlin-specific functionality implementation("androidx.media3:media3-common-ktx:$media3_version") }
Bağımlılıklar hakkında daha fazla bilgi için Derleme Bağımlılıkları Ekleme başlıklı makaleyi inceleyin.
Geri bildirim
Geri bildirimleriniz Jetpack'i geliştirmemize yardımcı olur. Sorulara, bilinen sorunlara ve özellik isteklerine yanıt bulmak ve yeni sorunları bildirmek için Media3 Issue Tracker'ı kullanabilirsiniz.
Sürüm 1.12.0
Sürüm 1.12.0-beta01
11 Kasım 2026
1.12.0-beta01 sürümü aşağıdaki kayıtları içerir.
- Ortak Kitaplık:
C.DEFAULT_BUFFER_SEGMENT_SIZEdeğerini65536yerine65520olarak ayarlayın. Böylece her arabellek tahsisi (byte[]nesne başlığı dahil), ART'nin büyük nesne alanındaki tüm OS sayfalarına sığar ve örnek arabellek bellek kullanımı 4 KiB sayfalık cihazlarda yaklaşık %6, 16 KiB sayfalık cihazlarda ise yaklaşık %20 azalır.androidx.media3.common.util.NullableTypeyerine JSpecify kullanınorg.jspecify.annotations.Nullable.androidx.media3.common.util.UnknownNullöğesini kaldırıp JSpecify nullness ek açıklamalarını kullanın. Boş değer atanabilir sonuç türüne (ör.Void?) sahipRunnableFutureTasksınıfının Kotlin alt sınıfları, boş değer atanabilir tür bağımsız değişkeni (ör.RunnableFutureTask<Void?, Exception>) belirtmelidir.- Reklam oynatma sırasında yeniden boyutlandırılabilen video kapsayıcısını
Viewsağlamak içinAdViewProvider.getAdVideoView()ekleyin. MimeTypes.getMediaMimeTypeiçindemlpaRFC 6381 codec dizesiniMimeTypes.AUDIO_TRUEHDile eşleyerek HLS parçasız hazırlık sırasında eksik çoğullanmış Dolby TrueHD ses parçalarını düzeltme (#3485).AdPlaybackState.withAdDurationsUsyöntemini, iletilen diziyi kopyalayacak şekilde veAdPlaybackState.fromAdPlaybackStateyöntemini, reklam gruplarının tüm dizi alanlarını kopyalayacak şekilde düzeltin. Böylece, bir örnek artık saklanan veya paylaşılan diziler aracılığıyla değiştirilemez.Player.listenveyaPlayer.listenTo, oynatıcının uygulama iş parçacığı dışındaki bir iş parçacığından (ör. Compose kullanıcı arayüzü testi kaldırma sırasında) iptal edildiğindeIllegalStateException("Oynatıcıya yanlış iş parçacığından erişildi.") hatası düzeltildi (#3005).
- ExoPlayer:
- Yaklaşan bir medya dönemi için erken etkinleştirilen bir oluşturucunun, oynatma bu döneme geçmeden önce oluşturmaya başlayabilmesi sorunu düzeltildi.
- Boş değer atanabilir alt kaynak kimlikleri (ör.
Void?) kullananCompositeMediaSourcesınıfının Kotlin alt sınıfları, boş değer atanabilir bir tür bağımsız değişkeni (ör.CompositeMediaSource<Void?>) belirtmelidir. AdsMediaSourcemetriğininAdPlaybackStategüncelleme boyuncaAdPlaybackState.removedAdGroupCountdeğerinin altına düşmediğini doğrulayın.- Farklı oluşturucular kullanan medya dönemleri arasında geçiş yaparken, giden oluşturucu oluşturma işlemini tamamlamadan önce gelen oluşturucunun erken etkinleştirilmesine (ör.
Flags.FLAG_PER_STREAM_MEDIA_PROGRESSIONetkinleştirildiğindeIllegalStateException["Birden fazla oluşturucu medya saati etkinleştirildi."] hatası verilmesine) neden olan sorun düzeltildi. Flags.FLAG_PER_STREAM_MEDIA_PROGRESSIONetkinleştirildiğinde özel oynatma hızında bir reklama geçişin, tüm oluşturucuların reklam dönemine ilerlemesini geciktirebilmesine neden olan sorun düzeltildi.- Medya dönemi geçişleri sırasında oluşturucuları önceden ısıtma ve parça yeniden seçimleriyle ilgili sorunlar düzeltildi.
MediaPeriod.supportsStreamPrerollFlags()(varsayılan olarakfalse) ekleyin. Böylece özelMediaPerioduygulamaları,SampleStream.getFlags()kullanarak ilk kesintileri bildirmeyi etkinleştirebilir. Desteklenmediğinde veFlags.FLAG_PER_STREAM_MEDIA_PROGRESSIONetkinleştirildiğindeMediaPeriod.readDiscontinuity()kullanılır.- Bir reklamın atlanmasının ardından aynı reklam grubundaki başka bir reklamın atlanmasının
DISCONTINUITY_REASON_SKIPyerineDISCONTINUITY_REASON_AUTO_TRANSITIONile raporlanması veyaAdsMediaSourcegeç içerik kaynağı hazırlama özelliğini kullandığında hiç raporlanmaması sorunu düzeltildi.
- Transformer:
- Ölçülen kodlayıcı kalite verilerinden mevcut cihaz için video kodlayıcı yapılandırmaları (codec, kodlayıcı ayarları ve bit hızı) öneren CodecDB (
androidx.media3.transformer.codecdb) eklendi.
- Ölçülen kodlayıcı kalite verilerinden mevcut cihaz için video kodlayıcı yapılandırmaları (codec, kodlayıcı ayarları ve bit hızı) öneren CodecDB (
- Ayıklayıcılar:
- ADTS: Kısmi bir ilk karenin yükündeki yanlış senkronizasyon kelimesinden ses biçimini türeten
AdtsExtractordüzeltildi. Bu sorun, kare ortasında katılan canlı AAC akışlarının oynatılmasının başarısız olmasına veya durmasına neden olabiliyordu (#3464). - Bir parçada örnek içermeyen bir
trunkutusu olduğundaFragmentedMp4ExtractoriçindekiArrayIndexOutOfBoundsExceptiondüzeltildi (#3471). - ADTS: Akıştaki ID3 verilerinin
application/id3parçası olarak çıkışını durdurmak içinFLAG_DISABLE_ID3_METADATAöğesiniAdtsExtractoröğesine ekleyin. - MP4: Kodlayıcı dolgusunu hariç tutmak için son
sttsgirişini kısaltan ve dolgununelstdüzenleme listesinden 0 olarak türetilmesine ve son karenin sonunun oynatılmasına neden olan çoklayıcısı (FFmpeg gibi) bulunan AAC parçalarının kesintisiz oynatılması düzeltildi (#3489). ID3ile başlayan bozuk veya medya olmayan dosyalar algılanırken oluşan büyük önceden peek arabelleği ayırmaları veOutOfMemoryErrordüzeltildi (#3502).
- ADTS: Kısmi bir ilk karenin yükündeki yanlış senkronizasyon kelimesinden ses biçimini türeten
- Denetleyici:
MetadataRetriever.retrieveDurationUs()tarafından döndürülen geleceğin iptal edilmesi nedeniyleclose()öğesinin temelMediaSourceöğesini yayınlamasını engelleyen sorun düzeltildi (#3468).MediaExtractorCompatişlevini,MediaExtractorplatformuyla eşleşen bir tam sayı olarakMediaFormat.KEY_FRAME_RATEdöndürecek şekilde düzeltin.
- Ses:
- Oynatma atlanan bölgeye ulaşmadan önce, arabelleğe alınmış atlanan sessizliğin
AudioSink.getCurrentPositionUs(boolean)içine dahil edilmesi veAudioSink.Listener.onSilenceSkipped()kullanılarak bildirilmesiyle ilgili sorun düzeltildi (#3472). - Sıkıştırılmış bir biçimden kodu çözülen uzamsal çok kanallı PCM ses çalarken API 37 ve sonraki sürümlerde
AudioTrack.Builder.setCodecProvenancekullanarak codec kaynağını ayarlayın. - 1 saniyelik sesin en az ilk arabellek boyutu kadar olduğu durumlarda
AudioTrackbaşlatma yeniden denemelerinin atlanması sorunu düzeltildi. Bu sorun, sınırlı ses belleğine sahip cihazlarda DTS-HD geçişinin başarısız olmasına neden oluyordu (#3487).
- Oynatma atlanan bölgeye ulaşmadan önce, arabelleğe alınmış atlanan sessizliğin
- Video:
- Geriye dönük uyumlu Dolby Vision Profile 7 akışları için H.265/HEVC kod çözücüye geri dönme izni verildi. Temel katmanı, belirtilmemiş aktarım özellikleriyle tam aralık sinyali veren Profile 10 akışları için artık AV1 kod çözücüye geri dönülmeyecek (#3486).
- Biçimi tam olarak destekleyen bir kod çözücü olmadığında, biçimin profilini işlevsel olarak desteklemeyen birincil kod çözücülerin (farklı bir profil için Dolby Vision kod çözücü gibi) seçilmesini önlemek amacıyla
MediaCodecUtiliçindeki kod çözücü seçimi düzeltildi (#3486).
- Metin:
DvbParseruygulamasında, tam ekran bir geçici bit eşlem tutmak yerine altyazı bölgelerini doğrudan bölge boyutundaki bit eşlemlere dönüştürerek bellek kullanımını azaltın.
- Etki:
- Temizleme sırasında (örneğin,
CompositionPlayeriçinde arama veya ileri geri oynatma yaparken)DefaultVideoFrameProcessoriçindeNullPointerExceptiondüzeltildi (#3470). - Sağlayıcı bir sürümden sonra yeniden kullanıldığında
DefaultGlObjectsProvider.releaseöğesininGlExceptionhatası vermesi sorunu düzeltildi (#2016).
- Temizleme sırasında (örneğin,
- Çoğullayıcılar:
Mp4MuxerveyaFragmentedMp4Muxer'ye parça eklerkenFormatparçasını doğrulayın. Bu sayede, daha sonra örnek yazarken veya muxer'ı kapatırken hata oluşmaz.- Tüm kitaplık uygulamalarında
Muxer.close()işlevini tekrarlayarak çağırın veclose()hata verse bile çoklayıcıyı kapalı olarak değerlendirin.Muxerclose()yönteminden sonra başka bir yöntem çağrıldığında artıkIllegalStateExceptionhatası veriliyor.
- IMA uzantısı:
- Etkileşimli reklamların reklam kapsayıcısı içindeki video oynatıcı görünümünü yeniden boyutlandırmasına ve yeniden konumlandırmasına olanak tanımak için IMA SDK'nın
ResizablePlayerarayüzünü destekleyin veImaAdsLoader.requestAds(DataSpec, Object, AdViewProvider)(ImaAdsLoader.requestAds(DataSpec, Object, ViewGroup)desteği sonlandırılıyor) ekleyin.
- Etkileşimli reklamların reklam kapsayıcısı içindeki video oynatıcı görünümünü yeniden boyutlandırmasına ve yeniden konumlandırmasına olanak tanımak için IMA SDK'nın
- Oturum:
- Medya düğmesi tercihleri API'lerini kararlı hale getirme.
- Sıkıştırılmış albüm kapağı verilerini
CacheBitmapLoaderiçinde tutmayarak bellek kullanımını azaltın. - Platform oturum sırası zaten
nullolduğunda (örneğin,Player.COMMAND_GET_TIMELINEkullanılamadığında) zaman çizelgesi güncellemelerinde gereksizMediaSession.setQueue(null)çağrılarından kaçının. MediaSessionServiceöğesinin, yeni bir oturum oluşturmaya çalışmayarak bir hizmet uygulamasının düzgün şekilde kurtarılmasına izin vermemesiyle ilgili sorun düzeltildi (#3490).- Eski bir
MediaSessionCompatmeta veri güncellemesi, sırayı değiştirmeden etkin sıra öğesinin meta verilerini veya süresini değiştirdiğindePlayer.TIMELINE_CHANGE_REASON_PLAYLIST_CHANGEDyerinePlayer.TIMELINE_CHANGE_REASON_SOURCE_UPDATEdeğerini bildirin. - Geçerli bir
METADATA_KEY_ALBUM_ARTile birliktenullMETADATA_KEY_DISPLAY_ICON(veya poster URI'si) ayarlayan eski oturumlarda eksik posterleri düzeltin: Eski meta veriler dönüştürülürken boş poster değerleri artık atlanıyor.
- Kullanıcı arayüzü:
ContentFramevePlayeriçinsubtitlescomposable alanı ekleyin.media3-ui-compose-material3, bitmap ve yatay metin altyazı işaretlerini oluşturmak için varsayılan desteğe sahiptir.- Çift yönlü altyazı metin kaydırma için kullanılan metin yönü buluşsal yönteminin özelleştirilmesine olanak tanımak amacıyla
SubtitleView.setTextDirectionHeuristiceklendi (#3454). media3-ui-compose-material3içindePlayer'deki tüm kontrol alanlarını (özel olanlar dahil) canlandırın vevisibleparametresiniPlayerDefaults.TopControls,CenterControlsveBottomControls'ten kaldırın. Bu, kararsız bir API'de zarar veren bir değişikliktir.exo_content_frameöğesiniexo_content_frame_containeriçine sarmalayarakPlayerViewiçindeAdViewProvider.getAdVideoView()desteği sağlayın.SubtitleViewuygulamasında, işaretler temizlendiğinde önbelleğe alınmış altyazı bitmap'lerini ve metin düzenlerini serbest bırakarak bellek kullanımını azaltın. Ayrıca, bir işaretin düzenleme için yeterli genişliği olmadığında eski altyazı metninin görünür kalmasına neden olan sorunu düzeltin.
- HLS uzantısı:
- Başarısız veya iptal edilmiş bir HLS medya parçasının yeniden yüklenmesinin, kısmen arabelleğe alınmış örnekleri silmeden veya birleştirmeden tutabileceği ya da yükleme konumunu eski bir arama konumuna sıfırlayabileceği sorunlar düzeltildi (#3362).
- Uyarlanabilir parça geçişinden sonra arabelleğe alınmış bir segmentin başına gidildiğinde oluşan
IllegalStateExceptionhatası düzeltildi. - HLS Content Steering ile yollar arasında geçiş yaparken karşılaşılan çeşitli oynatma sorunları düzeltildi (#3465).
- DASH uzantısı:
- Bir yayında birden fazla yerleşik altyazı dosyası olduğunda yinelenen veya bozuk CEA-608 altyazıları düzeltildi (#887).
- Yayınlama uzantısı:
RemoteCastPlayeryükleme isteklerinin Android TV alıcıları tarafından bırakılması sorunu düzeltildi (#3462).com.google.android.gms:play-services-cast-frameworkbağımlılığını23.0.0olarak güncelleyin.AndroidManifest.xmliçindeMediaTransferReceiverbeyan edilmesine gerek kalmadan Cast cihazlarının sistem çıkış değiştiricide görünüp görünmeyeceğini yapılandırmak içinCastParams.Builder.setSystemOutputSwitcherEnabled(boolean)ekleyin ve API 37 ve sonraki sürümleri çalıştıran cihazlarda API 37 ve sonraki sürümleri hedefleyen uygulamalar için sistem çıkış değiştiriciyi varsayılan olarak etkinleştirin.- Özel bir
MediaItem.mediaMetadataözelliği olmayan alanlarıMediaItem.mediaMetadata.extrasile eşleyerekDefaultMediaItemConverteriçinde önceden tanımlanmış CastMediaMetadataalanlarını destekleyin veMediaInfo.customDataiçinde özel ekstraları koruyun. - Oynatma URI'si eksik olduğunda veya dönüşüm başarısız olduğunda
DefaultMediaItemConverteriçinde istisna oluşturmayı durdurun. Oynatma URI'si olmayan yayın sırası öğeleri için medya kimliğini ve meta verileriCastPlayerzaman çizelgesinde koruyun. - Kullanılabilir bir Cast oturumunun Intent to Join kullanılarak başlatılıp başlatılmadığını belirtmek için
SessionAvailabilityListener.onCastSessionAvailable(boolean)eklendi veCastPlayersürümünde Intent to Join kullanılarak bir Cast oturumuna katılırken uzaktan oynatma durumu, yerel oynatıcı durumuyla üzerine yazılmak yerine korundu. DefaultMediaItemConverterveRemoteCastPlayeriçindeki canlı olmayan öğeler içinMediaInfove zaman çizelgesi süreleriniMediaMetadata.durationMsile doldurun ve alıcı tarafından çözümlenen süreleri ve canlı yayın durumunu sıra aramalarında koruyun.
- Demo uygulama:
- Oturum demo uygulamasında sürükleyerek oynatma listesi öğelerinin yeniden sıralanmasına izin verin.
- Desteği sonlandırılan simgeleri kaldırın:
androidx.media3.transformer.TextureAssetLoaderöğesini kaldır Bunun yerineandroidx.media3.transformer.RawAssetLoaderkullanın.- Herkese açık
DefaultDecoderFactoryyapıcıları kaldırın. Bunun yerineDefaultDecoderFactory.Builderkullanın. DefaultLoadErrorHandlingPolicy.DEFAULT_TRACK_BLACKLIST_MSöğesini kaldır Bunun yerineDefaultLoadErrorHandlingPolicy.DEFAULT_TRACK_EXCLUSION_MSkullanın.DefaultVideoFrameProcessor.Factory.Builder.setRequireRegisteringAllInputFrames(boolean)öğesini kaldırın. Bunun yerineVideoFrameProcessor.INPUT_TYPE_SURFACE_AUTOMATIC_FRAME_REGISTRATIONkullanın.EditedMediaItemSequence.Builder.experimentalSetForceAudioTrack(boolean)veEditedMediaItemSequence.Builder.experimentalSetForceVideoTrack(boolean)araçlarını kaldırın. Bunun yerineEditedMediaItemSequence.Builder(Set)politikasını kullanın.EditedMediaItemSequence.forceAudioTracköğesini kaldır Bunun yerinetrackTypes.contains(C.TRACK_TYPE_AUDIO)kullanın.EditedMediaItemSequence.forceVideoTracköğesini kaldır Bunun yerinetrackTypes.contains(C.TRACK_TYPE_VIDEO)kullanın.ExportResult.durationMsveExportResult.Builder.setDurationMsöğelerini kaldırın. Bunun yerineExportResult.approximateDurationMsveExportResult.Builder.setApproximateDurationMskullanın.SilenceSkippingAudioProcessor.DEFAULT_PADDING_SILENCE_USöğesini kaldır Bunun yerinesilenceRetentionRatiokullanarak sessizlik davranışını belirtin.Timeline.getPeriodPosition(Window, Period, int, long, long)öğesini kaldır Bunun yerineTimeline.getPeriodPositionUs(Window, Period, int, long, long)kullanın.
Sürüm 1.12.0-alpha02
26 Ekim 2026
1.12.0-alpha02 sürümü aşağıdaki kayıtları içerir.
- Effect Play hizmetleri:
- Video iyileştirme için
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 kayıtları 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:
- Bir sonraki dönemin ilk parçası yüklenemediğinde DASH çok dönemli oynatmanın takılmasına neden olan sorun düzeltildi (#3396).
- Yükleme yeniden denemeleri tükendiğinde
AnalyticsListener.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çeriklerde (ör. DASH) reklam desteği ekleyin. - Devam eden bir hazırlık isteğinin iptal edilmesinin arka planda indirme işlemlerini başlatmasına neden olan
PreCacheHelperiçindeki 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ı daha doğru çalışır. Seçilmeyen video veya resim parçaları oynatma sırasında etkinleştirilirse bu durum ek arabelleğe almaya neden olabilir.- Dinamik planlama etkinleştirildiğinde
Player.getCurrentPosition()işlevinin eski değerler döndürmesine (saniyede yalnızca birkaç kez güncelleme) neden olan sorun düzeltildi (#3286). AudioTrackoynatma kafası konumunda beklenmeyen bir azalma veya sıfırlamanın yanlışlıkla tam sayı taşması olarak değerlendirilmesine ve oynatmanın arabelleğe alma sırasında durmasına neden olan sorun düzeltildi (#3407).- Deneysel
DefaultMediaCodecAdapterFactory.setAsyncCryptoSynchronizationEnabled(boolean)özelliğini kaldır. - Geçiş reklamlarından veya reklamlardan, sonunda kırpılmış içeriğe dönerken gereksiz oluşturucu yeniden etkinleştirmelerini ve aksaklıkları önleyin (#3371).
Flags.FLAG_PER_STREAM_MEDIA_PROGRESSIONetkinleştirildiğinde, yaklaşan bir oynatma listesi öğesindeki oluşturucu hatasının mevcut oynatmayı erken kesintiye uğratmasına neden olan sorun düzeltildi.Flags.FLAG_PER_STREAM_MEDIA_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. preload()aynı kaynakta birden fazla kez çağrıldığındaPreloadMediaSourceveDefaultPreloadManageröğelerindeki bellek sızıntısı düzeltildi (#3445).- İçerik zaman çizelgesi yenilemesi beklenirken
AdsMediaSourceyayınlandığında oluşanNullPointerExceptiondüzeltildi (#3442). - İleri sarma işleminden sonra yükleme (veya oynatmayı sıfır olmayan bir konumda başlatma) başarısız olduğunda ve yeniden denendiğinde, aşamalı medyanın oynatılmasının yanlış konuma atlamasına neden olan sorun düzeltildi (#3440).
- Xiaomi TV Stick 4K (MiTV-AYFR0) H.264 kod çözücünün kesintisiz çözünürlük değişikliklerinde donmasıyla ilgili geçici çözüm eklendi (#3457).
- Yayınlanan bir yükleme tamamlanmadan veya hata geri çağırma işlevi yürütülmeden önce izleyici durdurulduğunda
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ının neden olduğu çok dizili kompozisyonlardaki kare düşüşlerini düzeltin. Bu özellik yalnızca API 29'dan itibaren etkinleştirilir. Bunun nedeni, video dizisi başına bir ek kareyi daha beklemede tutmayı gerektirmesidir.
- 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ının neden olduğu çok dizili kompozisyonlardaki kare düşüşlerini düzeltin. Bu özellik yalnızca API 29'dan itibaren etkinleştirilir. Bunun nedeni, video dizisi başına bir ek kareyi daha beklemede tutmayı gerektirmesidir.
AudioProcessorskullanıldığındaTransformer#setAudioMimeType(AUDIO_RAW)değerine uyun. Bu düzeltmeden önceMimeTypes.AUDIO_RAWisteğinde bulunupAudioProcessoruygulandığında sıkıştırılmış çıkış elde ediliyordu.
- Dışa aktarma iş akışları için
- Parça seçimi:
- Bazı cihazlarda SDR parçasının desteklenen bir Dolby Vision parçası yerine yanlışlıkla tercih edilmesine neden olan sorun düzeltildi (#3135).
- Ayıklayıcılar:
- Mp4Extractor: MP4'te Opus için
dOpskutusu 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_H265öğelerini kaldırın. - Mp4Extractor:
Mp4LocationDatadeğerini doldurmak için rakım koordinatlarını içerenxyzkutularından konum meta verilerinin ayrıştırılması düzeltildi. - Kodlanmış ses biçimleri için örnek başına ses karesi sayısını hesaplamak üzere
ExtractorUtil.getFramesPerEncodedSampleekleyin (#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 bozuk AC-3, DTS ve LPCM sesleri düzeltmek için yük, ses okuyucuya (#3327) iletilmeden önce
PsExtractoriçindeki her PES paketindenprivate_stream_1alt akış başlığı kaldırıldı. - 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 Profil 20 yapılandırma verilerini ayrıştırma ve desteklenmeyen Dolby Vision profillerini, yanlış renklerle standart HEVC olarak oynatmak yerine reddetme (#3427).
- MP3: Birçok
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. Bu durumda 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 bir sayfaya gittikten sonra örnek zaman damgalarını düzeltme.
- Ogg: Zincirleme Ogg Opus akışlarında akış ortasındaki Opus kimliği ve yorum başlığı paketlerini yoksayarak kod çözme hatalarını ve yaklaşık 1 saniyelik zaman damgası atlamalarını düzeltme.
- Mp4Extractor: MP4'te Opus için
- Denetleyici:
MetadataRetrieverkullanarak MP4 dosyalarından XMP meta verilerini alma desteğiMediaExtractorCompatiçindemebxkutulu zamanlanmış meta veri parçalarınınMimeTypes.APPLICATION_MEBXolarak ayıklanması desteklenir.
- İnceleme Çerçevesi:
FrameExtractorile Ultra HDR kareleri çıkarırken SDR tabanlı görüntüdeki geniş gamutlu BT.2020 renklerinin kırpılmasını düzeltin. Gam dışı renkler artık kırpılmak yerine sRGB gamına hafifçe sıkıştırılıyor.
- Ses:
- Yanlış ileti dizisinde
android.media.AudioDeviceCallbackçağrısı yapan cihazlar için geçici çözüm eklendi (#3386). - Sıkıştırılmış boşaltma ile parça geçişlerinden sonra olası takılı oynatmaları düzeltme
- Amazon Fire TV stick'lerde, dönem geçişleri sırasında AC-3 sesin donmasına neden olan sorun giderildi (#3448).
- Ogg ve WebM/Matroska Opus kesintisiz oynatma için akış sonu kodlayıcı dolgusunu kırpma desteği (#2576).
- Dinamik boşaltma boşluksuz gecikme ve dolgu güncellemelerini, parça geçişleri sırasında çalan parça yerine gelen parçaya uygulanacak şekilde düzeltin.
- Oynatma listesinin ortasındaki boşluksuz geçişlere ek olarak, tek akışlarda ve oynatma listesindeki son akışta kodlayıcı bitiş dolgusunu kırpma (#2576).
- Akış başı kodlayıcı gecikmesi kırpma işlemi tamamlandıktan ve akış sonu dolgusunun kırpılması gerekmediğinde
TrimmingAudioProcessoriçinde gereksiz ses arabelleği kopyalarından kaçının.
- Yanlış ileti dizisinde
- Video:
- Aynı yayın zaman damgalarına sahip geç video karelerinin raporlanması düzeltildi. Bu kareler artık atlanmış yerine bırakılmış olarak raporlanacak.
- Metin:
- Başka bir kaynaktan yüklenen altyazıların zaman damgalarını medyaya göre kaydırmak için
MediaItem.SubtitleConfiguration.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).
- Başka bir kaynaktan 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:
Mp4MuxerveFragmentedMp4Muxeriçinde Opus içindOpskutu yazma hatası düzeltildi. BuradaPreSkip,InputSampleRateveOutputGain, big-endian yerine little-endian olarak yazılmıştı (#3431).Mp4MuxerkullanarakMp4LocationDatabiçiminde GPS rakımı yazma desteği.- Doğrudan
ParcelFileDescriptordosyasına çoklama yapılmasına izin vermek 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ı Temel Medya Kod Çözme Süresi) kutusu yazın. Mp4Muxeriçinde E-AC-3 ve E-AC-3 JOC (Dolby Atmos)dec3kapsayıcı kutularını yazma desteği.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üzeltin (#3369). Mp4MuxerveFragmentedMp4Muxeriçinde 32 bit kayan noktalı PCM ses parçaları desteklenir (#3389).- Parça eklerken
Mp4MuxerveFragmentedMp4Muxerbiçimlerindeki desteklenmeyen Dolby Vision profillerini reddetme Mp4MuxerveFragmentedMp4Muxer'da 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
MediaBrowser'daNullPointerExceptionhatası 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 ileri geri oynatma modu desteği ekleyin.PresentationStateiçinshowArtworkdesteği ekleyin ve bunuContentFramevePlayer'da 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,PlayerDefaultsveMiniControlleröğelerinin composable alanları artık oynatıcıyı veya denetimlerin görünürlüğünü parametre olarak almıyor. Bunun yerine, çağrı kapsamından yakalayın (örneğin,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 eklendi.media3-ui-compose-material3'eLiveButtonComposable ekleyin (#2213).
- Ktor uzantısı:
KtorDataSource, akış ortasındaki bağlantı hatalarınıHttpDataSourceExceptionhatası vermek yerine giriş sonu olarak değerlendirebiliyordu. Bu sorun düzeltildi (#3460).
- HLS uzantısı:
EXT-X-STREAM-INFveEXT-X-I-FRAME-STREAM-INFüzerindeVIDEO-RANGE'yi (PQveHLG)Format.colorInfoolarak ayrıştırın (#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.metadatadeğerlerininnullolduğ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).- Hile 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ırma,AdaptationSet.producerReferenceTimesiçinde gösterme ve VOD akışları içinTimeline.Window.presentationStartTimeMsveTimeline.Window.windowStartTimeMsdoldurmak üzere kullanma desteği.- DASH Content Steering için destek eklendi (#1689).
<UTCTiming>öğesinde eksik özellik bulunan bir DASH manifesti ayrıştırılırken oluşabilecekNullPointerExceptionhatası dü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ı ileri geri oynatmanın TCP protokolü yedek mekanizmasını yanlışlıkla tetiklemesine neden olan sorun düzeltildi.
- RTSP istemcisi parça yeniden seçimi, oturum sonlandırma veya URI yönlendirmesi sırasında durumu sıfırladıktan sonra geciken ağ yanıtları işlenirken oluşabilen
IllegalStateExceptionkilitlenmesi düzeltildi. - Oynatma yeniden başlatılmadan önce tekrar ileri/geri sarmanın
IllegalStateExceptionkilitlenmesine neden olabileceği sorun düzeltildi. - Bekleyen bir sarma işlemi varken geriye sarma işleminin ses kesintisine ve video oynatmanın donmasına neden olabileceği sorun düzeltildi.
- Toplama veya IDR olmayan paketle biten H.264 ve H.265 ana kare erişim birimlerinin ana kare olarak işaretlenmemesi nedeniyle oynatmanın arabelleğe alma aşamasında takılı kalmasına neden olan sorun düzeltildi (#3434).
- 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 dolguyu silme aynı pakete denk geldiğinde dolguyu silmenin yoksayılması sorunu düzeltildi (#2576).
- Yayınlama uzantısı:
- Oturumun kullanılamama nedenini temsil etmek için
SessionAvailabilityListener.SessionUnavailableReasonözelliğini kullanıma sunun ve bunu göstermek içinSessionAvailabilityListener.onCastSessionUnavailableiçin aşırı yüklenmiş bir yöntem sağlayın. - Yayın oturumu durdurulduktan sonra oynatmanın beklenmedik şekilde yerel olarak devam etmesine neden olan sorun düzeltildi.
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üğe kaydedilir (#3373).- Bir arama işlemi beklemedeyken Cast alıcı sırası değiştiğinde veya küçüldüğünde
RemoteCastPlayeriçindekiArrayIndexOutOfBoundsExceptiondüzeltildi (#3372). - Varsayılan Cast alıcısında, zaman çizelgesinin tüm oynatma listesi yerine yalnızca etkin öğenin hemen etrafındaki medya öğelerini doldurmasıyla ilgili sorun düzeltildi (#3129).
- Oynatma listesini değiştirirken (
setMediaItems,addMediaItems,moveMediaItems,removeMediaItems) veyaRemoteCastPlayeriçinde arama yaparken zaman çizelgesini ve oynatma konumunu hemen güncelleyin ve sırayla güvenilir bir şekilde yürütülmeleri için ardışık oynatma listesi işlemlerini sıraya alın (#2639, #3272). RemoteCastPlayeriçinde boş bir sıradaaddMediaItemsçağrıldığında medya öğelerinin Cast 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
RemoteCastPlayerüzerinde ayarlandığındaplayWhenReady,repeatModeveplaybackParametersdeğerlerinin aktarılmaması veya uygulanmaması sorunu düzeltildi (örneğin,CastPlayeruygulamasında yerelden uzaktan oynatmaya aktarım sırasında) (#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)öğelerini kaldırın. Bunun yerineDashUtil.buildDataSpec(Representation, BaseUrl, RangedUri, int, Map<String, String>)kullanın.
- Oluştur:
- 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.setParseHagcMetadatayöntemi getirildi. Bu sayede, Matroska/WebM kapsayıcılarında devre dışı bırakma işleminin çalışmaması sorunu da çözülür. - Geçiş yapmayan ikincil oluşturucu önceden ısıtılırken oynatmanın durmasına neden olan sorun düzeltildi.
- Arama işlemi her iki oluşturucuyu da sıfırlayıp devre dışı bıraktığında
Surfaceöğesinin birincil oluşturucuya döndürülmesi gereken ön ısıtma sorunu düzeltildi. - Canlı zaman çizelgesi yenilemesi, varsayılan konumu o anda oynatılmakta olan sunucu tarafı eklenmiş bir reklamın ötesine taşıdığında
ArrayIndexOutOfBoundsExceptiondüzeltildi (#3348). ScrubbingModeParameters.allowSkippingMediaCodecFlushetkinleştirilmişken arama yapıldığında eski video karelerinin kısa bir süre gösterilebildiği, ileri geri oynatma moduyla ilgili bir sorun düzeltildi.
- İ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çindeki arabellek boyutu hesaplaması düzeltildi. Böylece minimum sessizlik süresi, kare boyutu (#3271) tarafından yanlış şekilde ölçeklendirilmeyecek.PcmAudioUtiliçinde 8 bit PCM işleme, örnekleri Android tarafından tanımlandığı şekilde işaretsiz olarak değerlendirecek şekilde düzeltildi (#3271).- Sınırlı donanım arabellek boyutları nedeniyle videodan önce gösterilen reklam veya kesintisiz geçişler sırasında oynatmanın duraklamasına neden olan boşaltma sorunu düzeltildi.
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ığındaNullPointerExceptionhatası dü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.channelMaskve bunu 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 edicisine veMediaCodecAudioRendereriçindeki codec çıkış biçimine geri dönün ve gereksiz codec sıfırlamalarından kaçının. - Ana oynatıcıda istemci tarafı eklenen reklamlar için içerik kırpma özelliğini kaldırın. Bunun yerine, kırpma mantığını
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.prioritizeTimeOverSizeThresholdsuygulamasının OOM riskini azaltın. MediaItem.imageDurationUsayarlanmadığında hareketsiz resimlerin işlenmesini uyumlu hale getirme: JPEG ve HEIC hareketsiz resimler artık çok kısa bir varsayılan süreyle "oynatılır" (PNG ve diğer resimlerin daha önce davrandığı şekilde).BandwidthMeterileMediaSourcearasındaki farkı ölçmek içinMediaSource.prepareSource(MediaSourceCaller, PlayerId, BandwidthMeter)ekleyin. Özel uygulama içeren desteği sonlandırılmış yöntem varsayılan olarak çağrılmaya devam eder. Ancak yeni yöntemi uygulamanız ve eski yöntemle eşitlik sağlamak iç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ştirme
ExoPlayeroynatma iş döngüsü, statik bir aralık yerine dinamik olarak çalışır. - Videodan önce gösterilen örneklerin bulunduğu parçalar etkin oynatmaya katılırken gerçekleşebilecek gereksiz sıfırlama işlemini kaldırma
DefaultBandwidthMeteriçinde, ülke grubu atamalarını bir dizi yerine 32 bitlik bir tam sayı olarak döndürmek içingetInitialBitrateCountryGroupAssignmentişlevini optimize edin. Böylece kod boyutu küçülür ve tahsisat yapılmaz.- Diğer yeniden denemeler (arabellek boyutu yarıya indirilerek) başarısız olursa yeniden deneme mantığının her zaman en az 1 saniyelik arabellek boyutu denemesini sağlayarak bazı cihazlardaki
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ı" önlenir (#3122). 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).- İleri yönlü medya (ör. MP4, Matroska) için deneysel HAGC (ST 2094-50) zamanlanmış meta veri oynatma desteği eklendi. Oynatıcı, HAGC meta veri parçalarını ilişkili video parçasıyla otomatik olarak birleştirir ve meta verileri, API 37 ve sonraki sürümleri çalıştıran cihazlarda bant dışı olarak kod çözücüye iletir. Bu davranış,
DefaultMediaSourceFactory.setExperimentalEnableHagcPlayback(false)üzerinden devre dışı bırakılabilir. - Parça seçiminde
Formatiçin göreceli tercihi temsil edenFormat.selectionPriorityekleyin (#3236). - Akışın sonuna sarma sırasında sarmanın durmasına neden olabilen potansiyel ileri geri oynatma 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 olabilecek bir sorun düzeltildi.
- Kanal seçimi:
BaseTrackSelection.DEFAULT_FORMAT_COMPARATORöğesini gösterin ve yalnızca bit hızına göre sıralamanın ötesinde özel biçim sıralamasına ve ABR seçim önceliğine izin vermek içinAdaptiveTrackSelection.Factory.setTrackFormatComparatoröğesini ekleyin.- Seçim parametrelerini izlemek için yapılan hızlı sıralı güncellemelerin bazı güncellemelerin kaybolmasına veya üzerine yazılmasına neden olabileceği, zamana bağlı bir eşzamanlılık sorunu düzeltildi.
- Ayıklayıcılar:
- MP4, MP3 ve FLAC: Çalışma zamanı bellek tüketimini azaltmak için kapsayıcı ayrıştırma sırasında ekli resimlerin ve kapak resmi meta verilerinin silinmesine izin vermek üzere
FLAG_DISABLE_ARTWORK_METADATAeklendi (#2077). Bu özellik,DefaultExtractorsFactory.setDisableArtworkMetadataüzerinden merkezi olarak da etkinleştirilebilir. it35zamanlanmış meta veri parçalarını ayıklamak için ITU-T T.35 desteği eklendi.- MP4: Bölüm meta verilerini (hem Nero hem de QuickTime biçimleri) ayıklama desteği eklendi. Her ikisi de mevcutsa QuickTime bölümleri tercih edilir. Ayıklanan bölüm bilgileri, parçanın
Metadataöğ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
av1Cverileri yoksayılır. - MP4:
fpcmkutularında big-endian kayan nokta PCM desteği 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üleri ve sınır dışı okumaları önleme
ilst(#3191). - MPEG-TS: Son PES paketinin bilinen bir uzunluğa sahip olduğu akışlar için son karenin oluşturulduğundan emin olun (#3206).
- MP3: Xing ve VBRI başlığına sahip dosyalar için bit hızı raporlaması düzeltildi.
- Matroska: Son kümede tanımlanan parçaları işleme (#3250).
- Matroska: ALAC için destek eklendi (#3268).
- MP4: Parçalı MP4 dosyalarında değişken uzunlukta
sgpdkutularına izin verilir (#3243). - AVI: Ses parçalarında animasyon karesi işaretleri olmayan dosyaların oynatılması nedeniyle ses kaybı ve
OutOfMemoryErroryaşanması sorunu düzeltildi. - MP3: Xing/Info başlıklarından boşluksuz süreleri kullanma (#3183).
- MP3: LAME/Xing kodlayıcı gecikmesini ve dolgu meta verilerini, kodu çözülmüş PCM kırpma ile eşleşecek şekilde ayarlayın (#3200).
- MP4, MP3 ve FLAC: Çalışma zamanı bellek tüketimini azaltmak için kapsayıcı ayrıştırma sırasında ekli resimlerin ve kapak resmi meta verilerinin silinmesine izin vermek üzere
- Ses:
- Hazır durumdan hazır değil durumuna geçerken ExoPlayer'ın ses oluşturucularına 100 ms'lik bir ek süre ekleyerek geçici yetersizlikleri önleyin ve etkin oynatma sırasında beklenmedik arabelleğe alma durumlarını engelleyin (#3210).
DefaultAudioTrackBufferSizeProvideruygulamasında varsayılan PCM arabellek boyutu mantığını, cihaza daha az bağımlı hale getirmek için sabit 500 ms arabellek kullanacak şekilde değiştirin.MediaCodecAudioRenderer, platform kod çözücüsünden uzamsal channelMask'i çıkaracak şekilde güncellendi. Bö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ın süresini uzatırken perdeyi koruma desteği ekleyin.- 8 bit PCM, 16 bit big-endian PCM ve 64 bit kayan noktalı PCM'yi 32 bit kayan noktalı PCM'ye dönüştürmeyi desteklemek için
ToFloatPcmAudioProcessoriyileştirildi (#3090). DecoderAudioRenderer.getChannelMappingişlevinin 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'ye 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 oynatma için EAC3-JOC'nin EAC3'e yedek yolu kaldırıldı. Bu cihazların standart EAC3 kod çözücüleri, EAC3-JOC akışlarının kodunu çözemez (#3257).
- Video:
- Katılma sırasında bırakılan arabellekleri bırakılan yerine atlanan olarak saymak için video katılma mantığı düzeltildi.
- Yer tutucu yüzeyleri desteklemeyen cihazlarda kare düşüşlerini önlemek için yeni yüzey ayarlanırken anında oluşturma kararı düzeltildi.
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:
- Oynatıcının arama sırasında donmasını önlemek için temizleme sırasında
FinalShaderProgramWrapperiçindeki yeniden çizim durumunu temizleyin.
- Oynatıcının arama sırasında 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 ekleyin. Bu sayede, parçalar arasında ilişki kurulabilir (ör. bir meta veri parçasını, açıkladığı video parçasına bağlama). 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.FactorydosyasınasetAttemptStreamableOutputEnabledekleyin. Mp4MuxerveFragmentedMp4Muxer'da 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 uygulama döngüleyici iş parçacığına otomatik olarak gönderir ve durum erişimcileri (getters), uygulama döngüleyici dışında bir iş parçacığından çağrılırsa açıkça birIllegalStateExceptionhatası verir.- Oturum tarafında her denetleyici için durum tutarlılığını izleyerek sınır dışı zaman çizelgesi birleştirme kilitlenmesi (
MediaUtils.mergePlayerInfoiçindeIllegalStateException) düzeltildi. - Etkin medya oturumlarını sorgulama ve Media3
SessionTokenörneklerini döndürme desteği sağlamak içinandroidx.media3.session.MediaSessionManagerekleyin. - Yöntem, güvenilmeyen denetleyicilere yalnızca okuma erişimi sağlayacak şekilde geçersiz kılınmazsa
MediaSession.Callback.onConnectöğesinin varsayılan davranışını değiştirin. - Yeni bir API
MediaSession.Builder#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ıyla ilgili 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 bir 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 öğesi içinde arama yaparken
MediaControllerüzerinde beklenmedikonMediaItemTransition()geri çağırma sorunu 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, çalınmakta olanMediaItemile 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.MiniControllercomposable'ımedia3-ui-compose-material3modülüne 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 vePlayerü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ı seç-izle yeniden çözümleme için tekrar kullanılamaz duruma sıfırlamasına izin vermek üzere
HlsInterstitialsAdsLoaderöğesinesetWithAssetListResetekleyin. EXT-X-STREAM-INFveEXT-X-I-FRAME-STREAM-INFiçinSCOREözelliğini ayrıştırın veFormat.selectionPriorityözelliğini doldurun (#3236).- Oynatma listesi artık birincil veya etkin olmasa bile planlanmış HLS oynatma listesi yenilemelerinin devam etmesine neden olan hata düzeltildi (#3254).
- Geçiş reklamı öğe listeleri çözümlenirken içerik devam ettirme ofsetinin hesaplanması düzeltildi (#3322).
- Oynatma listesi isteği başarısız olduktan sonra düşük gecikmeli canlı oynatma devam ettirilirken beklenmedik ses parçası zaman damgası süreksizliği düzeltildi (#3311).
HlsMediaPeriod.getStreamKeys()'da ses yorumlarındaki ID3 parçasının altyazı olarak kabul edilmesiyle ilgili hata düzeltildi (#3333).
- DASH uzantısı:
- CEA altyazılarını dile göre farklı
TrackGroupöğelerine ayırın (#3113). - Manifestten (MPD) birden fazla
Locationöğesini ayrıştırma ve manifest yükleme işlemleri başarısız olduğ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üzeltir.
- Yayınlama uzantısı:
Cast.initialize(CastParams)çağrılarak 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ştiricisinin kullanılmasını tetikleyen yeni
CastParams.getShowSystemOutputSwitcherOnCastIconClick()seçeneği eklendi. - Medya rotası seçicinin görünürlük durumunun gözlemlenmesini desteklemek için
MediaRouteButtonStateverememberMediaRouteButtonStateeklendi veMediaRouteButton'estateparametresi eklendi (#3172). RemoteCastPlayer, parça seçiminden sonra kalıcı olarak parça maskeleme durumunda takılı kalabiliyor ve Cast alıcısından gelen sonraki parça güncellemelerini yoksayabiliyordu. Bu hata düzeltildi (#3237).DefaultMediaItemConverter, Media3 dışı bir gönderenden başlatılan yayın oturumuna katılmaya çalışırkenNullPointerExceptionhatası veriyordu. Bu hata düzeltildi.- Etkin oynatıcı değiştirilirken
CastPlayeruygulamasının oynatılamayanMediaItemsaktarması 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ı:
DataSourceContractTest, başlık ve gövde içerenPOSTisteklerini destekleyecek şekilde genişletin,HttpDataSourceTestEnv'ye bazıPOSTkaynakları ekleyin veWebServerDispatcher'de beklenen HTTP yöntemi, başlıkları ve gövdesi için onaylar ekleyin.DataSource.open()tarafından döndürülen uzunluklar içinDataSourceContractTestiçindeki onayları sıkılaştırın.C.LENGTH_UNSETile sonuçlanabilecek kaynaklar, bunuTestResource.Builder.setMayResolveToUnknownLength(boolean)kullanarak belirtmelidir.setPlaybackLooperöğesiniTestExoPlayerBuilderöğesine 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 derlemelerini (
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 derlemelerini (
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:
SimpleBasePlayerveForwardingSimpleBasePlayerdillerindeonAudioSessionIdChangediş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 kilitlenmelerini düzeltme
- AV1 tabanlı Dolby Vision codec kullanılırken başlatma verileri sağlanması nedeniyle video yapaylıklarının oluşmasına neden olan sorun düzeltildi (#3153).
- Tünel moduyla
- Kanal seçimi:
- Yedek MIME türlerini çözmek için
VideoTrackInfoöğesindeki parça seçimi mantığını ayarlayın ve HDR ile codec puanı tercihlerini kalite tercihlerine taşıyın (#3135).
- Yedek MIME türlerini çözmek için
- Ayıklayıcılar:
- MP3: Xing veri uzunluğu, bilinen akış uzunluğundan daha uzunsa yoksay (#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ı "ileri geri oynatmayı durdurduğunda" geçerli olduğu ileri geri oynatma modundaki sorun düzeltildi (#2815).
- Oturum:
- Uygulama iş parçacığının ana iş parçacığı olmadığı durumlarda
ForegroundServiceStartNotAllowedExceptionöğesinin iş parçacığı sınırları boyunca yayılmamasıyla ilgili hata düzeltildi (#2499). - Diğer öğelere geçişi destekleyen ancak oynatma listesi değişikliklerini desteklemeyen, yalnızca platforma özel bir oturuma bağlanırken
COMMAND_SEEK_TO_MEDIA_ITEMöğ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üncellemelerine 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ı:
SampleQueueuygulamasında, iptal edilmekte olan bir parçaya atlanırken oluşan kilitlenme düzeltildi.
1.10.0
26 Mart 2026
- Ortak kitaplık:
Player.mute()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 zamana daha iyi uyarlamak 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 minimum/basit/tesadüfi olduğunda önerilir (#2985).- Bu nedenle,
DEFAULT_STUCK_PLAYING_DETECTION_TIMEOUT_MSExoPlayer'denExoPlayer.Builder'ye taşındı (desteği sonlandırılmadan).
- Bu nedenle,
ProgressiveMediaSourceöğesinin güncel olmayan zaman çizelgesi bilgilerini oynatıcıya yaymasına ve sıraya alınan dönemlerin beklenmedik şekilde kaldırılmasına neden olan bir hata düzeltildi (#3016).- Telefon aramaları sırasında oynatma istendiğinde ExoPlayer'ın gecikmeli ses odağı istememesiyle ilgili sorun düzeltildi.
- Seç-izle içerikten canlı içeriğe geçişlerin, seç-izle içeriğin sonunda yeniden arabelleğe almaya neden olabileceği hata düzeltildi (#3052).
- Dolby Vision Profile 10 için destek eklendi (#2830).
- Başlatılmamış bir videodan önce gösterilen reklamın
ArrayIndexOutOfBoundsExceptionoluşturduğu hata düzeltildi (#3125).
- 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.
- Kanal 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çili olup olmadığına bakılmaksızın yerleşik meta veri parçalarının seçilmesi sorunu düzeltildi (#294).
preferredVideoLanguages,preferredVideoLabels,preferredAudioLabels,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:
- Denetleyici:
- 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 (veya varsa Spatializer'ın) çıkış düzenini eşleştirmeye çalışın. Bu işlem, AudioCapabilities ve AudioCapabilitiesReceiver'daki yeni alanlar ve mantık tarafından desteklenen IAMF uzantısı ve medya codec kod çözücüleri ile yapılır.
- Sıkıştırılmış boşaltma modunda kesintisiz ses oynatma listesi oynatılırken oynatmanın takılmasına neden olan hata düzeltildi.
- 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 varsayılan meta veri oluşturucu 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 uygulamak için işlevsellik sağlayan yeni bir
:media3-effect-lottiemodülü sunun.
- Lottie efektlerini video karelerine uygulamak için işlevsellik sağlayan yeni bir
- IMA uzantısı:
- En son reklam medya bilgisi API'sine erişmek için IMA SDK sürümünü 3.39.0'a güncelleyin.
- Reklam MIME türünün, IMA LOADED etkinliğinde sağlanan MIME türüyle eşleşmemesine neden olan hata düzeltildi. Düzeltme, artık IMA tarafından sağlanan reklam medya bilgilerini kullanarak reklam MIME türünü eşler.
setEnableCustomTabs,ImaAdsLoaderveImaServerSideAdInsertionMediaSource'ye eklenerek kullanıcıların reklam tıklama URL'lerinin özel sekmeler kullanılarak başlatılıp başlatılmayacağını kontrol etmesine olanak tanır.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 eklemeyi mümkün kılın (#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, sistem tarafındanForegroundServiceDidNotStartInTimeExceptionhatası verilmesini önler. Bu, yeni bir zorunlu yöntem olduğu için özelMediaNotification.Provideruygulayan uygulamalarda kararsız bir API'de zarar veren bir değişikliktir. - Ana ekran widget'larıyla kullanılacak
PendingIntentörnekleri için oluşturucular ekleyin (#2933). - Oluşturma tabanlı ana ekran widget'ları için
Intentörnekleri oluşturmak üzere statik yöntemler ekleyin (#2933). - Oynatma, "AUTO" ve "SEEK" süreksizlik nedeniyle belirli bir medya öğesi dizininden aynı medya öğesine sahip başka bir dizine geçtiğinde medya öğesi geçişinin denetleyicilere bildirilmemesine neden olan hata düzeltildi (#2997).
- Sistem kullanıcı arayüzü düğme yerleşimiyle ilgili geçici çözümün, Android Auto gibi diğer kullanıcı arayüzü yüzeylerini veya geçici çözüme ihtiyaç duymayan üreticileri olumsuz etkilemesi sorunu düzeltildi (#3041).
- Aboneliklere erişimin senkronize edilmemesiyle ilgili sorun düzeltildi (#3056).
- Belirli bir boyuttaki medya oturumu resminin SysUI'nin kilitlenmesine ve cihazın yeniden başlatılmasına neden olabildiği API 29'daki SysUI hatası için geçici çözüm (#3118).
- Android Q'da bildirim resmi simge ölçeklendirmesi düzeltildi (#3084).
- Kullanıcı arayüzü:
- Oynatma hızını görüntülemek ve değiştirmek için
media3-ui-composeöğesinePlaybackSpeedControlComposable 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
media3-ui-compose-material3öğesineProgressSliderComposable 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 geçiş reklamlarıyla 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).
- Farklı konumlardan yedek akışlar varsa yükleme hatalarıyla karşılaşıldığında konum yedeğine izin verilir (#1988).
- Başlangıç ve devam konumunu doğru şekilde hesaplamak için HLS geçiş reklamlarında X-SNAP davranışını düzeltme (#3013).
- DASH uzantısı:
- RTSP uzantısı:
- H.264 ve H.265 akışında, birden fazla RTP paketini kapsayan aynı erişim biriminin örneklerini yanlış ayrıştıran gerileme düzeltildi. Bu durum, videoda görsel kusurlara ve bozulmalara neden oluyordu (#3121).
- Kod çözücü uzantıları (FFmpeg, VP9, AV1 vb.):
- MPEG-H kod çözücü uzantısına MPEG-H kullanıcı arayüzü yöneticisi desteği eklendi (#3066).
- Yayınlama uzantısı:
- Cast oynatmaları için parça seçiminin uygulanmasını sağlayan
RemoteCastPlayer.Builder#setTrackSelectoryöntemi eklendi.
- Cast 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 bir ses/video senkronizasyonu sağlamak için dinamik planlamanın
doSomeWorkaralığını yalnızca ses başladıktan sonra 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,doSomeWork'ın mevcut iterasyonunun geçen süresi kadar yanlışlıkla azaltılmasına neden olan hata düzeltildi. Bu sorunun giderilmesi, CPU boşta kalma süresini uzatır ve güç tasarrufu sağlar. - Yedek AVC veya HEVC codec'i kullanılmaya çalışıldığında Dolby Vision dosyalarının oynatılamaması sorunu düzeltildi.
- Oynatılmakta olan öğe oynatma listesinden kaldırıldığında oynatma sona erdikten sonra yüklemenin devam etmesi hatası düzeltildi (#2873).
- Aynı öğe üzerinde
ExoPlayer.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 bir ses/video senkronizasyonu sağlamak için dinamik planlamanın
- 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, oynatmanın takılmasını önlemek için API 30'un altındaki cihazlarda video codec'leri silinir (#2941).
- Metin:
- VobSub: Yalnızca tek bir kontrol dizisi içeren veya kritik bilgileri birden fazla kontrol dizisine bölünmüş SPU'ları doğru şekilde işleyerek bazı eksik altyazıları düzeltme (#2935).
- IMA uzantısı:
- Hata düzeltmesi: Reklam MIME türünün, IMA LOADED etkinliğinde sağlanan MIME türüyle eşleşmemesine neden olan sorun düzeltildi. Düzeltme, artık reklam kapsülü dizini ve reklam konumunu kullanarak reklam MIME türünü eşler.
getAdsManager()veAdEvent.getAd()sonuçlarına erişmeden önce null kontrolü ekleyin.
- Oturum:
- Platform oturumuna bağlı bir
MediaControllerdurdurulduğunda, durdurma işlemi reklam oynatılırken gerçekleşirse uygulamanın kilitlenmesine neden olan hata düzeltildi (#2948). - Diğer işlemlerden gönderilen hatalı biçimlendirilmiş
Bundleörneklerine karşı koruma sağlamak için çeşitli sını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 bitmap ölçeklendirmeyi 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).
- Platform oturumuna bağlı bir
- İndirilenler:
SegmentDownloadertarafından birPriorityTooLowExceptionişlenirken ortaya çıkabilecek sonsuz döngüler düzeltildi (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 yapılan ve bu geri çağırmayı uygulayan uygulamalarınJSONObjecttüründe ek bir bağımsız değişken eklemesini gerektiren zarar veren bir değişikliktir (#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:
- Diğer AndroidX kitaplıklarıyla uyumlu olacak şekilde
minSdk,23sürümüne güncellendi. Playerörnekleri arasında oynatma durumunun 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.Eventsöğesini 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).
- Diğer AndroidX kitaplıklarıyla uyumlu olacak şekilde
- 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 gerçekleşir. 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ğinde - 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. - Oynatılmaya çalışılırken 10 dakika boyunca oynatma engelleme nedeni olduğunda.
- 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.setVirtualDeviceIdekleyin.- Oluşturucuların, oynatma listesindeki bir sonraki öğeden veri tüketmeye mevcut öğenin bitişinden en fazla 10 saniye önce başladığından emin olun.
- Oluşturma işleminden sonra bu ayarları güncellemek için
setSeekBackIncrementMs,setSeekForwardIncrementMsvesetMaxSeekToPreviousPositionMsöğeleriniExoPlayeröğesine ekleyin (#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 biçimli 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. - Önceden yükleme yöneticisi API'lerini iyileştirme:
- Medya öğelerini veya medya kaynaklarını toplu olarak ekleyen ve ardından otomatik olarak
invalidate()yöntemini çağı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 kare hızı 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ına olanak tanıyanDefaultLoadControl.Builder.setPlayerTargetBufferBytes(String, int)özelliğini 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ın atlama bilgilerini taşımak için
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 sorunu düzeltildi.
- Oynatıcı, ses oturumu kimliği oluşturamazsa yeniden deneme yolunu etkinleştirme (#2382, #2678).
- Önceden yükleme için toplam arabellek baytlarının rastgele artmasını önlemek amacıyla
DefaultPreloadManageriçindeki kaynakların toplam arabellek baytlarını kontrol etme desteği ekleyin. Uygulamalar, varsayılan kontrol mantığını kullanmak içinPlayerId.Preload.name("preload")playerNameiçinDefaultLoadControl.Builder.setPlayerTargetBufferBytes(String, int)aracılığıyla önceden yükleme amacıyla hedef arabellek baytlarını ayarlayabilir ve oluşturulanDefaultLoadControlöğesiniDefaultPreloadManager.Builder.setLoadControl(LoadControl)aracılığıyla ekleyebilir. - Varsayılan bir uygulama ile
cloneAndSet(int, int),ShuffleOrderöğesine eklendi (#2834). - Arama ayarı veya otomatik geçişten sonra reklam oynatmayı atlarken içerik devam ettirme ofsetini ekleme (#2484).
- Ses ve video parçaları için codec parametrelerini ayarlayıp gözlemlemek üzere API ekleyin.
Bu özellik,
MediaCodectabanlı oluşturucular için uygulanır ve API 29 veya sonraki sürümleri gerektirir.- Parametreleri uygulamak için
ExoPlayer.setAudioCodecParameters()veExoPlayer.setVideoCodecParameters()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ıNullPointerExceptionsorununu düzeltin (#2885).- Uygun videolarda ileri/geri sarma performansını iyileştirir.
- Bu platform API'siyle ilgili zaman aşımı sorunlarının düzeltildiği API 36 ve sonraki sürümlerde MediaCodec'te eşzamansız şifre çözme kullanımını yeniden etkinleştirme (#1641).
MediaCodecVideoRenderer.experimentalSetLateThresholdToDropDecoderInputUsvarsayılan değerini 15 ms olarak değiştirin ve uygun videolar için kod çözme işleminden önce video karelerinin daha verimli bir şekilde bırakılmasını etkinleştirin.DefaultLoadControliçinde otomatik bellek hesaplamasına maksimum bellek sınırı ekleyin. Bu, yalnızca aşırı sayıda parça seçildiğinde geçerli olmalıdır (#2860).- Oynatma listesinde veya tekrar modunda oynatılırken, sona yakın bir yerde kaydırma modunda arama yapıldığında bir sonraki medya öğesine geçilmesine neden olan hata düzeltildi.
- Oynatıcı takılı kalmış gibi görünüyorsa
- CompositionPlayer:
CompositionPlayer, denemeye hazır olduğunu ancak geliştirme aşamasında olduğunu belirtmek için yeni bir@ExperimentalApiek açıklamasıyla yayınlanır. Bazı API'lerin gelecekteki sürümlerde önemli ölçüde değişmesi muhtemeldir ve bazı kullanım alanlarıyla ilgili bilinen sorunlar ve sınırlamalar vardır (bazıları belgelenmemiştir).CompositionPlayeriçindeCOMMAND_SET_AUDIO_ATTRIBUTESve ses odağı işleme desteği ekleyin.CompositionPlayeruygulamasında ikincil sekanslarda hız değiştirme desteği ekleyin.EditedMediaItem.removeVideoiçin destek ekleyin.
- Transformer:
- Varsayılan muxer olarak
InAppMp4Muxerkullanın. EditedMediaItem.Builder#setSpeed()eklendi veEffects#createExperimentalSpeedChangingEffects()yönteminin desteği sonlandırıldı.EditedMediaItemSequenceiçindeforceAudioTrackveforceVideoTrackyerinetrackTypeskullanın.
- Varsayılan muxer olarak
- Parça seçimi:
- Diğer daha spesifik tercihleri 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).
- Diğer daha spesifik tercihleri 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ın bulunma olasılığını azaltmak için başlık algılamayı sıkılaştırın. Bu, kod çözme hatalarına neden olur (#558).
- MP3: MP3 dosyalarının başındaki ID3 etiketleri arasında (ve öncesinde) boşluklara izin verilir (#811, #5718).
- MP3: Bir senkronizasyon baytı için mevcut arama sınırıyla eşleşecek şekilde koklama sınırını 128 kB'ye yükseltme (#2713).
- MP3:
FLAG_ENABLE_INDEX_SEEKING, mümkün olduğunda meta veri başlıklarından (Xing ve VBRI gibi) bilgi aramayı tercih edecek, başka arama bilgisi yoksa dizine dayalı aramaya geri dönecek şekilde değiştirildi. Bu, meta veri arama özelliği olan dosyaların performansını artırır (#2839). - MP3: Arama meta verileri (ör. Xing, VBRI) bulunamadığında,
FLAG_ENABLE_INDEX_SEEKINGayarlanmış olsa bileMp3Extractorvarsayılan olarak sabit bit hızı (CBR) varsayımına ayarlanacak şekilde değiştirildi. Bu, CBR'nin standart olduğu ve VBR'nin açık başlıklar gerektirdiği MP3 spesifikasyon geçmişine dayanır. Bu, meta verileri olmayan dosyaların anında aranabilirliğini artırır ancak başlıkları olmayan VBR dosyalarının doğruluğunu etkileyebilir. CBR varsayımı aranabilir değilse (ör. bilinmeyen uzunluktaki akışlar için) artık yedek olarak dizin arama kullanılır (#2848). - MP4: Çıkarıcıdan bir parça biçimi yayınlamadan önce ilk örneğin katman değerine bakarak
audio/mpeg(MP3),audio/mpeg-L1veaudio/mpeg-L2MIME türleri arasındaki anlam belirsizliğini 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.
- Denetleyici:
- Medya denetleme yardımcı programları için özel bir ana sayfa olarak kullanılacak 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.MetadataRetrieverbulunuyor. 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 medya dosyasından temsili bir 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.MediaExtractorCompatsınıfı, 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 kullanılacak yeni bir
- Ses:
AudioProcessorörneği, arama işleminden haberdar edin.- Özel ses çıkış yollarını desteklemek için yeni
AudioOutputProviderarayüzününDefaultAudioSink.Builderiçine yerleştirilmesine izin ver. 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 kullanma (#2580).
- Oynatmanın başında yönlendirme değişikliği geri çağırmalarının işlenmesinden kaynaklanan olası gecikmeler önlendi (#2646).
- EAC3, EAC3-JOC ve AC-4 biçimleri için codec'in yeniden kullanılmasına izin verildi (#1346).
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ımını devre dışı bırakın.
- Güvenli codec'ler için yanlış bildirilen performans puanlarıyla ilgili geçici çözümü yeniden etkinleştirin (#2856).
- Metin:
- Dolby Vision içeriklerinde CEA-6/708 altyazılarının ayrıştırılmasıyla ilgili sorun düzeltildi (#2775).
- Resim:
- Oynatıcının bir DASH küçük resim parçasını ileri geri oynatırken takılmasına neden olan ScrubbingMode sorunu düzeltildi (#2815).
- DRM:
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ğerini döndürmeden öncenew Responseile sarmalayarak sorunları kolayca çözebilirsiniz.- URL ve gecikme gibi önemli istek bilgilerini
AnalyticsListener.onDrmKeysLoaded(#1001) tablosuna ekleyin. - Temel hazırlık isteği verilerini bir URL parametresinden POST gövdesine taşıyın.
- Etki:
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ılabilecekMediaMuxerCompatkitaplığı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 özel proguard kurallarını kullanabilmesi için bu kurallar kaldırıldı.
- IMA SDK'nın reklam tanımlayıcılarını Google Ad Manager ayarlarında belirtildiği şekilde işlemesi için Google Ad Manager ağ kodunu ayarlayan yeni bir API olan
ImaServerSideAdInsertionUriBuilder.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'a yükseltildi. Bu sürümde, temel kitaplık desugaring sürecinin etkinleştirilmesi gerekir. Bu özelliğin bağımlı uygulamalar tarafından da etkinleştirilmesi gerekir. IMA'nın yapılandırma notlarına bakın. * SSAI URI oluşturucuda IMA DAI özel kullanıcı arayüzü seçenekleri desteklenir. Sunucu tarafı reklam ekleme için özel kullanıcı arayüzü seçenekleri arasında "Atlanabilir" ve "Bu Reklam Hakkında" oluşturma desteği bulunur. Bu özellik şu anda izin verilenler listesindeki belirli yayıncılar tarafından kullanılabilir. Bu değişiklik, özel kullanıcı arayüzü seçenekleri API'sine erişmek için IMA SDK sürümünü de 3.38.0'a (sürüm notları) yükseltir.
- Reklamdan sonraki içerik için içerik hazırlama hatasının yanlışlıkla reklam oynatma hatası olarak bildirilmesine neden olan sorun düzeltildi (#2656).
- Oturum:
- Aramanın yalnızca bilgi toplamak için mi yoksa oynatmayı başlatmak için mi (#1764) yapıldığını belirtmek üzere
MediaSession.Callback.onPlaybackResumptionöğesine yeni parametre ekleyin. - Kendi uygulamasındaki denetleyicileri de güvenilir olarak beyan etmek için
MediaSession.ControllerInfo.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 ölümcül olmayan 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, media1'in ve platformun yaptığıyla (#2637) eşitlik sağlar.- Komut kullanılamadığında bile
getCurrentTimeline()komutununPlayerWrappertarafı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_HEADSETHOOK,onStartCommand()içindeIntentmedya tuşu etkinliği geldiğinde oynatıcıyı başlatmıyordu. Bu 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. Denetleyici kullanıyorsanız oynatıcınız
setVideoSurfaceHolderçağrısını işleyemediğinde bu durum zarar veren bir değişiklik olabilir. - span-styled dizeler gibi
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.Playerses seviyesinin sesini kapatma işlemini gerçekleştirenui-composeöğesineMuteButtonStateekleyin. Bu durum bilgisi depolayıcı,demo-composeiçinde ses açma/kapatma düğmesini görüntülemek için kullanılır.ProgressStateWithTickCountsınıflarını ve ilgilirememberProgressStateWithTickCountComposable'ımedia3-ui-composemodülüne ekleyin. Bu durum bilgisi depolayıcı, ilerleme durumunu yatay ve 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ı için geçici çözüm uygulandı (#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ırma
- HLS oynatma listesi ve öğe listesi dokümanındaki 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ını giderme (#2613).
- Kod çözücü uzantıları (FFmpeg, VP9, AV1 vb.):
- AV1 Uzantısı: AV1 yazılım kod çözücüsü, daha yüksek kod çözme hızı için önceki
libgav1uygulamasının yerine artık yüksek performanslıdav1dkitaplığını kullanıyor. - FFmpeg uzantısı:
STREAMINFObloğunun doğru şekilde ayrıştırılmasını ve kod çözücüye iletilmesini sağlayarak bazı FLAC dosyalarının oynatılmasını engelleyen bir sorun düzeltildi (#2887).
- AV1 Uzantısı: AV1 yazılım kod çözücüsü, daha yüksek kod çözme hızı için önceki
- Yayınlama uzantısı:
CastPlayer.Builderekleyin. Bu sayedeCastPlayerhem yerel hem de yayınlama oynatması yapabilir. Yalnızca Cast oynatmayı destekleyen eskiCastPlayerdavranışını korumak içinRemoteCastPlayerkullanabilirsiniz. MevcutCastPlayeroluşturucular eski davranışlarını korur ancak bunların yerineCastPlayerveyaRemoteCastPlayeroluşturucuların kullanılması önerilir.DefaultMediaItemConverteriçinde boş olmayan bir MIME türünü zorunlu kılmayı durdurun.- Mümkün olduğunda
DefaultCastOptionsProvider#toMediaQueueItemiçinde kullanılacak Cast MEDIA_TYPE'ı tahmin etmek içinMediaItem.mediaMetadata.mediaTypekullanın. DefaultCastOptionsProvideruygulamasında uzaktan yerel ortama aktarımları etkinleştirin.- Session demosuna Cast desteği ekleyin.
- Birleştirilebilir kullanıcı arayüzünde medya rotası düğmesi gösterme desteği ekleyin.
- İşlem çubuğu menüsünde medya rotası düğmesi gösterme desteği ekleyin.
- Medya rotası düğmesini View kullanıcı arayüzü olarak gösterme desteği eklendi.
- Test Yardımcı Programları:
FakeClockiçin otomatik ilerleme davranışının maksimum zaman farkını 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şınacak.
- 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
EditedMediaItemSequenceoluşturucular 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. - Desteği sonlandı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 ileti dizisinden erişilirse daha net bir şekilde istisna oluşturun. Bu durum, oynatıcı dışındanRendererCapabilities.getFormatSupportçağrısı yapılması nedeniyle ortaya çıkıyorsa bu yöntemi ExoPlayer'ın oynatma iş parçacığıyla aynı iş parçacığında çağırdığınızdan veya oynatma için kullanılandan farklı bir örnek kullandığınızdan emin olun (#1191).- TV'lerdeki stereo olmayan ses biçimlerinin
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 iletilenContextsanal cihaz kimliğini kullanma desteği ekleyin.- Sarma modunda dinamik planlamayı varsayılan olarak etkinleştirin.
- Bir öğenin sonuna giderken kaynağın gereksiz yere yeniden yüklenmesini önleme.
- Sarma modunda varsayılan olarak
MediaCodec.BUFFER_FLAG_DECODE_ONLYkullanın. PreloadMediaSource, önceden yükleme iş parçacığından farklı bir oynatma iş parçacığına sahip birExoPlayertarafından oynatıldığındaIllegalStateExceptionhatası verilir (#2495).- Varsayılan bir uygulama ile
cloneAndMove,ShuffleModeöğesine eklendi (#2226). renderçağrısı gerekmiyorsa daha büyük bir değer döndürmek içinRenderer.getMinDurationToProgressUsvarsayılan davranışını değiştirin.- Duraklatılmışken sona doğru ilerlerken dahili planlamanın son kareyi geciktirmesine neden olan hata düzeltildi. Şu an için hata düzeltmesi yalnızca
ExoPlayer.Builder.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.BuilderüzerindesetScrubbingModeParameters(..)ile özelleştirilebilir.- Sarma modunda kesirli arama toleransının özelleştirilmesine izin ver.
- İleri geri oynatma modunda codec çalışma hızını artırın.
AdsMediaSourceiçeriğindeki hazırlık hatalarının hiçbir zaman raporlanmamasına neden olan hata düzeltildi (#2337).MergingMediaSourcemodülünde, örneğin altyazılar başka bir kaynaktan yüklenirken kullanılan bellek sızıntısı düzeltildi (#2338).CmcdConfiguration.Factory'ın, belirli medya öğeleri için CMCD günlük kaydını devre dışı bırakmak üzerenulldöndürmesine izin verin (#2386).- Varsayılan resim arabellek boyutu 128 kB'tan (metin parçalarından kopyala-yapıştır hatası) 26 MB'a yükseltildi. Bu boyut, 50 MP Ultra HDR resimler için yeterlidir (#2417).
- Uygulamaların, belirtilen başlangıç konumu ve süresiyle tek bir medyayı önceden önbelleğe almasına olanak tanıyan
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. addGap()aracılığıyla eklenen ilk boşluğu sessiz sesle doldurmak için artıkEditedMediaItemSequence.BuilderiçindeexperimentalSetForceAudioTrack(true)değerini açıkça ayarlamak gerekiyor. Boşluk, dizinin ortasındaysa bu işaret gerekli değildir.Muxerarayüzünümedia3-transformerkonumundanmedia3-muxerkonumuna taşıyın.- Medya öğesini resim olarak içe aktarmak için
MediaItem.Builder().setImageDuration(long)ayarını zorunlu hale getirin. - Kırpma sırasında MP4 düzenleme listesi içeren
Transformer.Builder().experimentalSetMp4EditListTrimEnabled(boolean)ekleyin. Böylece oynatıcılara, kırpma başlangıç noktasından önceki ana kare ile kırpma başlangıç noktası arasındaki örnekleri yoksayma talimatı verilir. - Composition Demo uygulamasını Kotlin ve Jetpack Compose kullanacak şekilde güncelleyin ve sekansları 2x2 veya PiP düzeninde düzenlemek için özel bir
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 dosyayı ayrıştırırken ses biçimi için başlık uzantısının SubFormat verilerini kullanacak şekildeWavExtractorgüncellendi.- 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ı aramaya geri dönerken, arama yapılamayan Xing, VBRI ve benzeri değişken bit hızı meta verilerinden süre ve veri boyutunu kullanın (#2194).
- Ses:
- Ses çalma, medyanın sonuna çok yakın bir zamanda başlatıldığında
AnalyticsListener.onAudioPositionAdvancingöğesinin çağrılmamasıyla ilgili hata düzeltildi. ChannelMappingAudioProcessorveTrimmingAudioProcessoriçin tüm doğrusal PCM örnek biçimlerine destek ekleyin.CompositionPlayerdilinde ses boşlukları için destek ekleyin.BaseAudioProcessor#reset()tarafındanBaseAudioProcessor#flush()için yapılan sahte aramayı kaldırın.- DefaultAudioMixer'da sürekli güçle yukarı/aşağı miksaj yapılmasına izin verilir.
ChannelMappingAudioProcessor,TrimmingAudioProcessorveToFloatPcmAudioProcessor'yi herkese açık hale getirin (#2339).DefaultAudioSink'deki yetersizlikleri en iyi tahmin yerineAudioTrackPositionTracker'dekiAudioTrack#getUnderrunCount()ile tespit edin.- Ses çıkış cihazından kaynaklanan beklenmedik konum kayması için ses zaman damgası yumuşatmayı iyileştirme.
- Bluetooth cihazlara bağlıyken duraklatıldıktan sonra devam ettirildiğinde ilk 10 saniye boyunca ses/video senkronizasyonunun bozulmasına neden olan hata düzeltildi.
AnalyticsListener.onAudioPositionAdvancing, sesin ilerlemeye başladığı zamanı değil, ilk ölçümün zamanını bildiriyordu. Bu hata düzeltildi.- Bazı cihazlarda stereo sese geri döndükten sonra çok kanallı sese geri dönme sorunu düzeltildi (#2258).
- Ses çalma, medyanın sonuna çok yakın bir zamanda başlatıldığında
- Video:
- Bağlantısı kesilen yüzey geçici çözümü "lenovo" ve "motorola" cihazlara genişletildi (#2059).
- Ses örnekleri tam olarak istenen konumda başlamadığında, başlangıçta sorunsuz video karesi yayınlama özelliğini iyileştirir.
- Bağlantısı kesilmiş yüzey geçici çözümü "realme" cihazları kapsayacak şekilde genişletildi (#2059).
- Yalnızca kod çözme giriş arabellekleri sıraya alınırken
MediaCodec.BUFFER_FLAG_DECODE_ONLYişaretini eklemek için deneyselExoPlayerAPI'si eklendi. Bu işaret, kod çözücüye yalnızca kod çözme arabelleklerini atlamasını bildirir ve böylece daha hızlı arama yapılmasını sağlar.DefaultRenderersFactory.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 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 eklendi.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 ö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'deki 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ış boyutunu,Transformeriçinde kullanılan boyutla 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
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
- Ç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 muxer'a ö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.
- Seç-izle penceresinin sonundan sonraki reklam gruplarının oynatmayı duraklatmasına neden olan hata düzeltildi.
Başlangıç zamanı pencereden sonra olan reklam grupları artık
MediaPeriodQueueiçin sıraya alınmıyor (#2215).
- Oturum:
- Ayrıcalıklı olmayan üçüncü taraf Media3 denetleyicilerinden gelen bağlantıların yoksayılmasına neden olan hata düzeltildi.
- Eski bir
MediaBrowserServiceCompatcihazına özel komutlar gönderirken kullanılabilir komutlar için yapılan kontrolü kaldırın. Bu, eski bir uygulamaya bağlandığında eski denetleyicilerin/tarayıcıların davranışıyla aynıdır. - Oynatıcının ilk oynatma hatasının yanlışlıkla kalıcı bir özel istisna olarak değerlendirilmesine neden olan hata düzeltildi. Bu durum, uygulamanın kurtarılmasını engeller.
- Oturum tarafından işlenmeyen bazı denetleyici değişikliklerinin
IllegalStateExceptionshatasına neden olabileceği hata düzeltildi. - Oturum tarafından işlenmeyen kumanda işlemlerinin kumandayı geçersiz bir durumda bırakmasına neden olan hata düzeltildi.
- StrictMode güvenli olmayan başlatma ihlali uyarısı düzeltildi (#2330).
- Oynatıcıyı ana iş parçacığından farklı bir uygulama iş parçacığından çalıştırırken ana iş parçacığından
setSessionExtrasçağrıldığındaIllegalStateExceptionhatasına neden olan hata düzeltildi (#2265). - Bir oynatıcı, medya öğeleri hazırlanmadan veya oynatılmadan bu öğelerle ayarlanırsa otomatik olarak bildirim gösterilmez (#2423https://github.com/androidx/media/issues/2423). Bu davranış,
MediaSessionService.setShowNotificationForIdlePlayerüzerinden yapılandırılabilir. - Tüm veya seçili denetleyiciler için özel
PlaybackExceptionekleyin. MediaControllercihazda canlı yayında ileri/geri sarmanınIllegalArgumentExceptionhatasına neden olduğu hata düzeltildi.- Canlı yayınlarda, Android Auto kullanıcı arayüzünde (ve platform medya oturumundaki bu bilgileri kullanan diğer kumandalarda) konum kusurlarını önlemek için oynatma konumunun yayınlanmasını ve platform medya kumandaları için mevcut öğede arama yapma özelliğini durdurun (#1758).
- Eski bir
MediaBrowserServiceCompat'ye bağlıMediaBrowser'ningetLibraryRootdeğerine null iletildiğindeNullPointerExceptionhatası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 ileri geri oynatma modu desteğini ekleyin. Bu özellik etkinleştirildiğinde, kullanıcı ilerleme noktasını sürüklemeye başladığında oynatıcı ileri geri oynatma moduna geçer, her hareket için birplayer.seekToçağrısı yapar ve ardından dokunma ekrandan kaldırıldığında ileri geri oynatma modundan çıkar. Bu entegrasyon, XML'detime_bar_scrubbing_enabled = trueveya Java/Kotlin'dekisetTimeBarScrubbingEnabled(boolean)yöntemiyle etkinleştirilebilir.PlayerSurfaceişlevinin null değer alabilen birPlayerbağımsız değişkeni kabul etmesini sağlayın.
- İndirilenler:
- Aşamalı akışlar için kısmi indirme desteği ekleyin. 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ştirildiğ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ıdanDownloadRequestisteyebilir. 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 ekleyin. Uygulamalar,
- Cronet uzantısı:
- Otomatik çerez işleme özelliği eklendi (#5975).
- HLS uzantısı:
- Arabellekte parça yokken
HlsSampleStreamWrapperarabellekte arama yapmaya çalıştığında oluşan hata düzeltildi #2598. - Düşük gecikmeli parçalar yüklendikten sonra parça seçiminin değişmesi ve önceden yükleme ipuçlarının oynatmanın takılmasına veya donmasına neden olmasıyla ilgili hata düzeltildi (#2299).
CAN-BLOCK-RELOAD=YESsunucu tarafından dikkate alınmadığında hedef sürenin yarısı kadar bekleyerek aşırı yeniden yüklemeyi önleyin (#2317).- Bir ara reklamdan önce geçiş reklamı akışı başlatılırken oynatmanın duraklatılmasına ve yanlış reklam için öğe listesi çözünürlüğünün denenmesine neden olan hata düzeltildi (#2558).
- Tırnak içine alınmış dize özellik değerlerinde
\f(form feed) kabul etmek için oynatma listesi ayrıştırma düzeltildi (#2420). - Aynı kimliğe sahip geçiş reklamlarının güncellenmesi desteklenir (#2427).
- Canlı yayında yüklenecek segment kalmadığında oynatma listesi yükleme hatalarının bazen yayılmamasına neden olan hata düzeltildi (#2401https://github.com/androidx/media/issues/2401).
- Grup altyazı yorumları, ses yorumlarının gruplandırılmasına benzer şekilde NAME etiketiyle gruplandırılır (#1666).
HlsInterstitialsAdsLoaderile X-ASSET-LIST ve canlı yayınları destekleyin.
- Arabellekte parça yokken
- DASH uzantısı:
- Hızlı ileri/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).
- Hızlı ileri/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). - Sonda boşluk karakterleri içeren satırlara sahip SessionDescription'lar için ayrıştırma desteği eklendi (#2357).
- Kod çözücü uzantıları (FFmpeg, VP9, AV1 vb.):
- Ses kod çözücü uzantıları için
DefaultTrackSelector.setAllowInvalidateSelectionsOnRendererCapabilitiesChangeparametresinin etkili olmaması hatası düzeltildi (#2258).
- Ses kod çözücü uzantıları için
- 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. FakeDownloaderöğesini, diğer testlerde yeniden kullanmak üzeretest-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:
- Kullanımdan kaldı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).
- Kullanımdan kaldı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 (aşağıya bakın) "daha yeni" bir sürüm olarak görünmesini sağlamak için yayınlanmaktadır.
Sürüm 1.7.0
16 Mayıs 2025
Bu sürüm 1.7.0-alpha01 olmalıydı ancak maven.google.com'da yanlışlıkla 1.7.0 (yani kararlı) olarak etiketlendi. Lütfen bu sürümü kullanmayın. 1.6.1 sürümünde kalabilir veya 1.7.1 sürümüne (1.6.1 ile aynı koda sahiptir) yükseltebilirsiniz.
Sürüm 1.6.0
1.6.1
14 Nisan 2025
androidx.media3:media3-*:1.6.1 yayınlandı. 1.6.1 sürümü bu commit'leri içerir.
- Ortak Kitaplık:
- Yeni bir
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ı sorunu 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'den 100 milisaniyeye düşürün ve uygulamaların bu değeri yapılandırmasına olanak tanıyan deneysel bir ayarlayıcı ekleyin. - Kullanıcı tarafından kapatılan bildirimlerin yeniden görünmesine neden olan sorun düzeltildi (#2302).
- Sarmalanmış oynatıcı aslında boşken oturumun tek öğeli bir zaman çizelgesi döndürmesine neden olan hata düzeltildi. Bu sorun, sarmalanmış oynatıcıda
COMMAND_GET_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ü:
PlayerSurfaceuygulamasınınExoPlayer.setVideoEffectsveCompositionPlayerile çalışmasını sağlayın.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ın yerineAudioManagerCompatveAudioFocusRequestCompatekleyin.- Kotlin'i 1.9.20'den 2.0.20'ye yükseltin ve Compose Compiler Gradle eklentisini kullanın. KotlinX Coroutines kitaplığını 1.8.1'den 1.9.0'a yükseltin.
Format.toBundle(boolean excludeMetadata)yöntemini kaldırın, bunun 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 işlemeyi kolaylaştırmak için
SimpleBasePlayer.Stateerişimini korumalıdan herkese açık olarak değiştirin (#2128).
- ExoPlayer:
MediaExtractorplatformuna eşdeğer özellikler sağlayan yeni bir sınıf olanMediaExtractorCompateklendi.MediaCodecVideoRendererkullanarak oynatma için deneysel "ExoPlayer" önceden ısıtma desteği ekleyin.ExoPlayeriçin ikincil birMediaCodecVideoRenderersağlamak üzereDefaultRenderersFactoryayarlarınıexperimentalSetEnableMediaCodecVideoRendererPrewarmingüzerinden yapı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ı 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 ekleyin.MediaSourceEventListener.onLoadStartedve ilgiliMediaSourceEventListener.EventDispatcheryöntemlerineretryCountparametresi ekleyin.- Oynatma listesi öğelerinin veya çok dönemli DASH akışlarındaki dönemlerin sürelerinin gerçek içerikle eşleşmemesi nedeniyle öğenin sonunda kare donmalarına neden olabilen hata düzeltildi (#1698).
BasePreloadManager.Listeneröğesini üst düzeye taşıyınPreloadManagerListener.- Önceden ısıtma için ikincil oluşturucular sağlamak üzere
RenderersFactory.createSecondaryRendereruygulanabilir. Önceden yükleme, oynatma sırasında medya öğesi geçişlerinin daha hızlı olmasını sağlar. - DASH, HLS ve SmoothStreaming uyarlanabilir akış biçimlerindeki manifest istekleri için
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 istisna oluşturulur. - Ara reklamdan sonra içerik medyasına geçiş yaparken yalnızca kod çözme işlemi uygulanan ek karelerin hızlı bir şekilde art arda gösterilmesiyle ilgili sorun düzeltildi.
- Uygulamaların varsayılan olarak iki farklı meta veri şeması alabilmesi için
DefaultRenderersFactoryikiMetadataRendererörneği ekler. - Oynatma duraklatıldığında devam eden parça yükleme işleminin iptal edilip edilmeyeceğini yeniden değerlendirin (#1785).
ClippingMediaSourceiçin, ileri/geri sarılamayan medyalarda klip oluşturmaya izin verme seçeneği ekleyin.- Ön ısıtma ile arama yapmanın, sonraki medya öğesi geçişini engelleyebildiği hata düzeltildi.
ExoPlayer.isLoading(),STATE_IDLEveyaSTATE_ENDEDdurumuna geçiş yaparkentruedurumunda kalmasına neden olan hata düzeltildi (#2133).lastRebufferRealtimeMs'iLoadControl.Parameter'e ekleyin (#2113).
- Transformer:
- Geriye dönük uyumlu alternatif biçimlere dönüştürme desteği ekleyin.
- Dolby Vision (profil 8) biçiminin kod dönüştürme ve çoklama desteği eklendi.
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şhislerine katkıda bulunmayı devre dışı bırakabilir.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ğlayanMediaProjectionAssetLoaderekran kaydedicisini ekleyin ve Transformer demo uygulamasına ekran kaydı desteği ekleyin. #getInputFormat()öğesiniCodecarayüzüne 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 olmayan, senkronize edilmemiş 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 videolar
IllegalStateException: Playback stuck buffering and not loading(#2197) ile oynatılamıyordu.
- Ses:
onAudioPositionAdvancing, oynatma devam ettirildiğinde çağrılacak şekilde düzeltildi (önceden oynatma duraklatıldığında çağrılıyordu).SpeedChangingAudioProcessorvarsayılan parametrelerle yapılandırıldığındaSonicAudioProcessoratlanmaz.Sonic#getOutputSize()içindeDefaultAudioSinkuygulamasının 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 PCM desteği eklendi.
- 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ı olunmayan 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ç tutuldu (#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üklenmesini durdurun ve bunun yerine, parça seçimi tarafından seçilirse yalnızca bir tane yükleyin (#1721).- TTML:
stylekullanaraktts:originvetts:extentreferansları için destek ekleyin (#2953). - WebVTT ve SubRip zaman damgalarını tam olarak 3 ondalık basamakla kısıtlayın. Daha önce, ondalık basamak sayısını yanlış ayrıştırıyorduk ancak değerin her zaman milisaniye cinsinden olduğunu varsayıyorduk. Bu da yanlış zaman damgalarına (#1997) neden oluyordu.
- Oynatma listesinde CEA-608 veya CEA-708 altyazılı kırpılmış öğeler olduğunda oynatmanın takılması sorunu düzeltildi.
- SSA dosyasında sıfır süreli (başlangıç ve bitiş zamanı eşit) bir işaret olduğunda
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ında çok baytlı UTF-8 karakterlerinin işlenmesiyle ilgili sorun düzeltildi (#2167).
- DRM:
- API < 27 cihazlarda ClearKey içeriği oynatılırken oluşan
MediaCodec$CryptoException: Operation not supported in this configurationhatası düzeltildi (#1732).
- API < 27 cihazlarda ClearKey içeriği oynatılırken oluşan
- Etki:
OverlaySettingsişleviniStaticOverlaySettingshizmetine taşıdık.OverlaySettings, dinamik yer paylaşımı ayarlarına izin verecek şekilde alt sınıfa ayrılabilir.
- Çoğullayıcılar:
- Çok uzun bir tam nitelikli ad kullanmamak için
MuxerException,Muxerarayüzünden çıkarıldı. Mp4Muxer.BuilderveFragmentedMp4Muxer.Builder'dasetSampleCopyEnabled()yöntemisetSampleCopyingEnabled()olarak yeniden adlandırıldı.Mp4Muxer.addTrack()veFragmentedMp4Muxer.addTrack()artıkTrackTokenyerineintizleme 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, durduğunda veya başarısız olduğunda ön plan hizmeti durumunu 10 dakika daha koruyun. Bu sayede kullanıcılar, çeşitli cihazlarda ön plan hizmet kısıtlamaları riski olmadan bu zaman aşımı süresi içinde oynatmaya devam edebilir.
onTaskRemovedyöntemini geçersiz kılarkenstopSelf()yönteminden önce ön plan hizmetini durdurmak için artık yalnızcaplayer.pause()yönteminin çağrılamayacağını unutmayın. Bunun yerineMediaSessionService.pauseAllPlayersAndStopSelf()yöntemini kullanın. - Oynatma sırasında hata oluştuğunda veya oynatma durdurulduğunda bildirimi görünür tutun. Bildirim yalnızca oynatma listesi temizlendiğinde veya oynatıcı serbest bırakıldığında kaldırılır.
- Android platformu MediaSession işlemlerinin (ACTION_PLAY ve ACTION_PAUSE) işleyişini iyileştirerek mevcut komutlara göre yalnızca birini ayarlayın ve yalnızca biri ayarlandığında kabul edin.
Context,MediaButtonReceiver.shouldStartForegroundServiceiçin parametre olarak eklendi (#1887).- Eski bir oturuma bağlı
MediaControllerüzerindePlayeryöntemini çağırmanın, bekleyen bir güncellemedeki değişiklikleri silmesine neden olan hata düzeltildi. MediaSession.setSessionActivity(PendingIntent)'nin null değerini kabul etmesini sağlayın (#2109).- Oynatma listesi temizlendiğinde eski bir bildirimin görünür kalmasına neden olan hata düzeltildi (#2211).
- Oynatma duraklatıldığında, durduğunda veya başarısız olduğunda ön plan hizmeti durumunu 10 dakika daha koruyun. Bu sayede kullanıcılar, çeşitli cihazlarda ön plan hizmet kısıtlamaları riski olmadan bu zaman aşımı süresi içinde oynatmaya devam edebilir.
- 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ırakanCacheWriterhatası 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şulunu gevşetme (#2209).
- DASH uzantısı:
- DASH için AC-4 Seviye 4 biçim desteği eklendi (#1898).
- Çok dönemli canlı yayınlarda reklam ekleme için güncelleme aralığı hesaplanırken oluşan sorun düzeltildi (#1698).
- Dolby Vision biçimlerini algılamak için DASH manifestinden
scte214:supplementalCodecsözelliğini ayrıştırın (#1785). - Dönemin, beyan edilen dönem süresinin ötesinde medya örnekleri içerdiği canlı yayınlarda dönem geçişlerinin işlenmesi iyileştirildi (#1698).
adaptation-set-switchingile işaretlenmiş ancak farklı diller veya rol işaretleri içeren uyarlama setlerinin birleştirilmesiyle ilgili sorun düzeltildi (#2222).
- Kod çözücü uzantıları (FFmpeg, VP9, AV1 vb.):
- MPEG-H sesin kodunu çözmek için yerleşik MPEG-H kod çözücüyü kullanan MPEG-H kod çözücü modülü eklendi (#1826).
- MIDI uzantısı:
- Özel
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 sürümüne 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öntemi kaldırıldı. 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()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 veTransformer.start()öğesine iletin.setRemoveAudio(), bunun yerineTransformer.start()öğesine iletilenEditedMediaItemöğesinden sesi kaldırmak içinEditedMediaItem.Builder.setRemoveAudio()kullanın.setRemoveVideo(), videoyuTransformer.start()öğesine iletilenEditedMediaItemlistesinden kaldırmak içinEditedMediaItem.Builder.setRemoveVideo()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),RenderersFactoryile birDefaultRendererCapabilitiesListoluşturupDefaultRendererCapabilitiesList.getRendererCapabilities()yöntemini çağırarak eşdeğer işlevsellik 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,timeUszamanında etkin olan (daha önce başlamış ancak henüz sona ermemiş) işaretin yanlışlıkla silinmesine (#1939) neden olan hata düzeltildi.
- Meta veriler:
- Vorbis yorumlarındaki disk/parça numaralandırmasını ve türü
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 düzenlemelerle 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 çalıştıracakPlayer.listenaskıya alma uzantısı işlevi ekleyin.- Çalışma zamanı sınıf doğrulama hatalarını önlemek için tasarlanmış, manuel olarak satır dışı bırakılmış dahili sınıflardan
@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ışı hale getiriyor (bu nedenle manuel satır dışı hale getirme işlemine artık gerek yok).compileSdk = 35nedeniyle, kitaplığın tüm Gradle kullanıcıları, Android Gradle eklentisinin bu işlemi yapan bir R8 sürümünü kullanan bir sürümünü kullanıyor olmalıdır. Gradle dışı derleme sistemleri kullanan kitaplık kullanıcılarının, çalışma zamanı sınıf doğrulama hatalarını önlemek için R8 eşdeğeri küçültme/kod karartma adımlarının benzer bir otomatik satır dışı işlem gerçekleştirdiğinden emin olması gerekir. Bu değişiklik diğer AndroidX kitaplıklarında zaten yapılmıştır.
- Tam tutarlılık ve dinleyici yönetimi sağlarken küçük düzenlemelerle başka bir oynatıcıya yönlendirmeye olanak tanıyan
- ExoPlayer:
MediaCodecRenderer.onProcessedStreamChange()artık her medya öğesi için çağrılabilir. Daha önce ilk öğe için çağrılmıyordu. Bunu etkinleştirmek iç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 istemci zaman aşımının değiştirilmesine ve zaman aşımı durumunda alternatif adreslerin yeniden denenmesine izin ver (#1540).
- Alan her zaman sıfır olduğu için
MediaCodecAdapter.Configuration.flagskaldırıldı. - Kullanıcının Wear OS API 35+'te (cihazın bunu desteklediği belirtilir) oynatma için yerleşik hoparlörü seçmesine izin verin.
- Ses odağı işleme etkinleştirilene kadar
Context.getSystemService(Context.AUDIO_SERVICE)için engelleme çağrısını erteleyin. Bu sayede, ses odağı işleme etkinleştirilmemişse engelleme çağrısı yapılmaz (#1616). - Yükleme başarısız olduğunda, arabelleğe alınan süreye bakılmaksızın oynatmaya izin verme (#1571).
- Ayrı oluşturucular oynatmanın hazır olduğunu bildirdiğinde
AnalyticsListener.onRendererReadyChanged()ekleyin. MediaCodec, eşzamansız modda (API 31 ve sonraki sürümlerde varsayılan davranış) çalıştırıldığındaMediaCodec.CryptoExceptionbazen "beklenmeyen çalışma zamanı hatası" olarak bildiriliyordu. Bu sorun düzeltildi.PreloadMediaSource.PreloadControl.onContinueLoadingRequested()ilebufferedPositionUsyerinebufferedDurationUskart geçişi. 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 çağırarak önceden yüklemeyi etkinleştirebilir. Önceden yükleme varsayılan olarak devre dışıdır. Özellik etkinleştirildiğinde, oynatmayı engellememek içinDefaultLoadControl, önceden yüklemenin yalnızca oynatıcı oynatma için yükleme yapmadığı zamanlarda başlatılmasını ve devam etmesini sağlar. Uygulamalar,LoadControl.shouldContinuePreloading()yöntemini uygun şekilde uygulayarak (ör.DefaultLoadControlsınıfında bu yöntemi geçersiz kılarak) bu davranışı değiştirebilir.LoadControlsınıfının varsayılan uygulaması, bir uygulamanınLoadControlsınıfının özel bir uygulamasını kullanması durumunda önceden yüklemeyi devre dışı bırakır. - Alt sınıf işleyicilerin etkinliklerinin çağrılmasına izin vermek için
MediaSourceEventListener.EventDispatcher.dispatchEvent()yöntemi eklendi (1736). - Tutarlı bir şekilde paylaşılan yapılandırmalarla
DefaultPreloadManagerveExoPlayerörneklerini oluşturanDefaultPreloadManager.Builderekleyin. DefaultLoadControluygulaması, akış türleriniExoTrackSelection[]öğesinden alabildiği içinRenderer[]parametresiniLoadControl.onTracksSelected()öğesinden kaldırın.DefaultLoadControl.calculateTargetBufferBytes(Renderer[], ExoTrackSelection[])desteği sonlandırıldı ve geçersiz kılmaları önlemek için yöntem "final" olarak işaretlendi. Bunun yerine yeniDefaultLoadControl.calculateTargetBufferBytes(ExoTrackSelection[])kullanılmalıdır.MergingMediaSourceiçindeki 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ı önleme
Bunun yerine, sorunlu parça devre dışı bırakılır ve kalan parçaların oynatılması devam eder (#1722).
- Yeni altyazı işleme sırasında (ayıklama sırasında), ilişkili ayrıştırma (ör. geçersiz altyazı verileri) ve yükleme hataları (ör. HTTP 404)
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ır, ayrıştırma hataları ise 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 kare donmalarına neden olabilen hata düzeltildi (#1698).
- İstemcinin yeniden başlatılmasından sonraki son güncellemeden bu yana geçen maksimum süreyi ayarlamak için
SntpClientsınıfına bir ayarlayıcı ekleyin (#1794).
- Transformer:
- Video verilerini
Surfacearacılığıyla Transformer'a sıraya eklemeyi destekleyenSurfaceAssetLoaderöğesini ekleyin. ImageAssetLoader,IllegalStateExceptionhatası vermek yerineAssetLoader.onErroraracılığıyla 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
- Parça seçimi:
DefaultTrackSelector: Diğer faktörler eşit olduğunda kanal tabanlı ses yerine nesne tabanlı sesi tercih edin.
- Ayıklayıcılar:
Mp4ExtractorveFragmentedMp4Extractor'nin, sonraki örnekler tarafından referans olarak kullanılmayan H264 örneklerini tanımlamasına izin verin.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 veriler içermeyen dosyaların artık
ParserException: Searched too many bytes.{contentIsMalformed=true, dataType=1}(#1563) ile başarısız olmak yerine MP3 verilerinin sonunda oynatmayı durdurduğu anlamına gelir. - MP4 dosyalarındaki düzenleme listeleri işlenirken anahtar kare olmayan medya başlangıç konumları için videodan önce gösterilen reklam örneği işleme sorunu düzeltildi (#1659).
Mp4ExtractorveFragmentedMp4Extractoriçindekimdhdkutusundan 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 tabanlı medya dosyası biçimi desteği eklendi (#1265).
- DataSource:
HttpEngineDataSource, API düzeyi 34 yerine S uzantısı 7 sürümünden itibaren kullanıma izin verecek şekilde güncellendi (#1262).DataSourceContractTest:DataSource.getUri()yönteminin, çözümlenen URI'yi (belgelendiği şekilde) döndürdüğünü onaylayın. Bu, istenen URI'dan farklıysa testler yeniDataSourceContractTest.TestResource.Builder.setResolvedUri()yöntemini kullanarak bunu belirtebilir.DataSourceContractTest:DataSource.getUri()vegetResponseHeaders()'nin,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ürdüğünü onaylayın.DataSourceContractTest.getNotFoundResources()yöntemini geçersiz kılmak, test alt sınıflarının birden fazla "bulunamadı" kaynağı ve beklenen tüm üstbilgileri sağlamasına olanak tanır. Bu sayede HTTP 404 (üstbilgilerle) ve "sunucu bulunamadı" (üstbilgi yok) arasında ayrım yapılabilir.
- Ses:
- Medyada varsa codec'te CTA-2075 ses yüksekliği meta verilerini otomatik olarak yapılandırın.
- İleri veya geri sararken ses seviyesinin sorunsuz bir şekilde azalmasını sağlar.
- İleri/geri sarma sırasında oluşabilecek patlama seslerini düzeltme
- Sonic'in zaman uzatma/perde kaydırma algoritması için kesme hatası birikmesi düzeltildi.
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).
- Akış sonu sinyali döndürmeden son örnekten sonra 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 (mikrosaniye olarak gösterildiğinde ve
90,000MPEG zaman tabanıyla çarpıldığında 64 bitlongdeğerini aşan) sahip WebVTT'nin gösterildiğinden emin olun (#1763). - Dolby Vision içeriklerinde CEA-608 altyazıları desteklenir (#1820).
- CEA-608 altyazıları etkinleştirildiğinde DASH çok dönemli akışlarda oynatmanın takılması sorunu düzeltildi (#1863).
- Ö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'den 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 resimleri video olarak dışa aktarma işlemi daha hızlı tamamlanır.
- Küçük
- IMA uzantısı:
- Oynatma listesini temizlemenin
ImaServerSideAdInsertionMediaSourceuygulamasındaArrayIndexOutOfBoundsExceptionhatasına neden olabildiği hata düzeltildi. - Videodan önce gösterilen reklam içermeyen, sunucu tarafında eklenen DAI akışlarının, son videonun ortasında gösterilen reklamdan (#1741) sonra oynatılırken
ArrayIndexOutOfBoundsExceptionhatasına neden olabildiği hata düzeltildi.
- Oynatma listesini temizlemenin
- Oturum:
- Uygulamaların bu yöntemi geçersiz kılarak kaldığı yerden oynatma için gelen oynatma komutunu engellemesine izin vermek istiyorsanız
MediaButtonReceiver.shouldStartForegroundService(Intent)ekleyin. Varsayılan olarak hizmet her zaman başlatılır ve sistem, 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,MediaBrowser'in eski hizmet tarafından geri gönderilen gerçek dönüş değerini almasını engelledi (#1474). - Medya düğmesi intent'leri için yayın alıcısı ayarlanırken belirli üreticilerin cihazları tarafından oluşturulan
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 bazenplay()isteğinde bulunduktan sonra oturum uygulamasının ön plan hizmeti başlatmasına izin veremediği hata düzeltildi. CommandButton.Builder.setIconUriöğesini yalnızca içerik URI'lerini kabul edecek şekilde kısıtlayın.- Eski bir
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. - Birlikte çalışabilirlik davranışını iyileştirerek eski bir
MediaBrowserServicehizmetine bağlı Media3 tarayıcısının, bir üst öğeye abone olurkenparentIdöğesinin alt öğelerini iki kez istememesini sağlama.
- Uygulamaların bu yöntemi geçersiz kılarak kaldığı yerden oynatma için gelen oynatma komutunu engellemesine izin vermek istiyorsanız
- 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ı baş takibi özelliği etkinleştirilmiş uzamsallaştırma ile 5.1 düzeninde etkinleştirilir ancak çift kulaklı oynatma desteği şu anda kullanılamamaktadır.
- Android 15'te kod çözücü uzantıları için 16 KB sayfa desteği eklendi (#1685).
- 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 durdurun. 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öntemi kaldırıldı. - Desteği sonlandırılan
DefaultEncoderFactoryyapıcıları 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. Subtitleiçinde istenen çıkış başlangıç zamanının 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:
- Belgelendiği gibi,
KEYCODE_HEADSETHOOKöğesine iki kez dokunulduğunda "sonrakine atla" işlemi gerçekleştirilir (#1493). ForegroundServiceDidNotStartInTimeException'yi önlemek içinKEYCODE_HEADSETHOOKkomutunun yoksayılıp yoksayılmayacağına karar verirken bu komutuMediaButtonReceiveriçinde "oynat" komutu olarak işleyin (#1581).
- Belgelendiği gibi,
- 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()öğesine iletilen sürenin, resim olmayan birMediaItemiç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 kaynağın önceden yüklenmesini 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 oyuncuyu desteklemesini sağlamak için çoğuLoadControlyönteminePlayerIdekleyin.Buffer.isDecodeOnly()veC.BUFFER_FLAG_DECODE_ONLYöğelerini kaldırın. Oluşturucular ve kod çözücüler, zaman damgasına göre arabellekleri atlamaya karar vereceğinden bu işaretin ayarlanması gerekmez. Ö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)öğesiniBasePreloadManageröğesine ekleyin.- Önceden yükleme yöneticisi örneğini korurken tüm tutma kaynaklarını serbest bırakmak için
BasePreloadManageröğesinereset()ekleyin. PriorityTaskManager'de kullanılan öncelik değerini ve API 35'ten itibaren MediaCodec önemi içinExoPlayer.setPriority()(veBuilder.setPriority()) ekleyin.- CMCD'de yanlış
bs(tampon yetersizliği) anahtarına neden olan, son yeniden arabelleğe alma süresinin güncellenmesiyle ilgili sorun düzeltildi (#1124). - Kaynağın sonuna kadar yüklendiğini belirtmek için
PreloadMediaSource.PreloadControl.onLoadedToTheEndOfSource(PreloadMediaSource)ekleyin. Bu 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
clearöğesiniPreloadMediaSourceöğesine ekleyin. - Daha yüksek öncelikli görevler için codec kaynakları geri alındığında kullanılan yeni hata kodu
PlaybackException.ERROR_CODE_DECODING_RESOURCES_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 bunu etkinleştirebilirsiniz. Renderer.getDurationToProgressUs()ekleyin.Renderer, oluşturucunun ilerlemesi için oynatmanın ilerlemesi gereken süreyi ExoPlayer'a döndürmek üzere bu yöntemi uygulayabilir.ExoPlayer,experimentalSetDynamicSchedulingEnabled()ile ayarlanırsaExoPlayer, Work Tasks 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ırkenExoPlayer'e sinyal gönderir.ExoPlayer,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()'in önceki öğeyi aradığı maksimum konumu yapılandırmak içinExoPlayer.Builder.setMaxSeekToPreviousPositionMs()ekleyin (#1425).- Oynatıcı duraklatıldığında tam veya geçici odak kaybının bildirilmemesi gibi bazı ses odağı tutarsızlıkları düzeltildi (#1436).
- İlk hazırlık adımından sonra ek parçalar bildiren ayıklayıcıların neden olduğu olası
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 gevşetme
- Bir sekans içinde SDR ve HDR giriş medyası arasında geçiş yapma desteği eklendi.
- Oluşturma düzeyinde ses efektleri için destek ekleme
- Ultra HDR resimleri HDR videolara kod dönüştürme desteği ekleyin.
DefaultAudioMixersıfırlanıp yeniden kullanıldıktan sonra doğru miktarda bayt çıkışı yapmaması sorunu düzeltildi.- PCM girişi işlenirken ses kanalı sayısının stereoyla sınırlandırıldığı bir kod çözücü hatası düzeltildi.
ExoPlayerAssetLoaderiçinde parça seçerken ses kanalı sayısı kısıtlamalarını yoksayın. Bu kısıtlamalar yalnızca oynatma için geçerlidir.androidx.media3.transformer.Muxerarayüzünüandroidx.media3.muxer.Muxerile değiştirin veandroidx.media3.transformer.Muxeröğesini kaldırın.- İçerik URI şemalarından HEIC resim yükleme sorunu düzeltildi. (#1373).
- Ses-görüntü senkronizasyonunu iyileştirmek için
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-Lengthüstbilgisi) yerineInfokaresindeki veri boyutunu tercih edin. Bu sayede, oynatılamayan fragman verileri (ör. albüm kapağı) sabit bit hızı arama hesaplamalarından hariç tutulur ve aramalar daha doğru sonuç verir (#1376). - MP3: Sabit bit hızı arama için ortalama bit hızını hesaplamak amacıyla
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 oynatma için DTS:X Profile 2 kodlama özellikleri düzeltildi (#1299).
- Yük devretmeli oynatma için
AudioTrack.stop()yöntemini çağırmadan önceDefaultAudioSinkyönteminde 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ımlayabilir. SilenceSkippingAudioProcessoruygulamasında, farklı ses biçimleri (ör. stereodan monoya) arasındaki geçişlerin işlemcinin istisna oluşturmasına neden olabildiği hata düzeltildi (#1352).- ExoPlayer'ın ana çalışma döngüsünü MediaCodecAudioRenderer'ın ilerleme kaydedebileceği şekilde dinamik olarak planlaması için
MediaCodecAudioRenderer.getDurationToProgressUs()uygulayın.
- Video:
- Oynatma sırasında yüzey değiştirirken
Listener.onRenderedFirstFrame()öğesinin çok erken gelmesiyle ilgili sorun düzeltildi. - Dolby Vision için kod çözücü yedek mantığı, gerektiğinde uyumlu bir AV1 kod çözücü kullanacak şekilde düzeltildi (#1389).
- Oynatma sırasında video oluşturucunun etkinleştirilmesinden kaynaklanabilecek codec istisnasını düzeltme.
- Oynatma sırasında yüzey değiştirirken
- Metin:
- Arama konumundan önce başlayan altyazıların atlanması sorunu düzeltildi. Bu sorun yalnızca Media3 1.4.0-alpha01 sürümünde ortaya çıkmıştır.
- Varsayılan altyazı ayrıştırma davranışını, oluşturma sırasında değil, ayıklama sırasında gerçekleşecek şekilde değiştirin (ayıklama ve oluşturma arasındaki fark için ExoPlayer'ın mimari diyagramına bakın).
- Bu değişiklik, hem
MediaSource.Factory.experimentalParseSubtitlesDuringExtraction(false)hem 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,SubtitleParser(veSubtitleDecoderFactoryyerineSubtitleParser.Factory) uygulamak için bunları güncellemesi 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üzeltin (#1367). - CEA-708:
rowLockdeğerini yoksay. CEA-708-E S-2023 spesifikasyonu, akıştaki değerlerden bağımsız olarakrowLockvecolumnLockdeğerlerinin doğru olarak kabul edilmesi gerektiğini belirtir (columnLockdesteği uygulanmadığından her zaman yanlış olarak kabul edilir).- Bu değişiklik başlangıçta
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 başlangıçta
- CEA-708: ExoPlayer'ın "set pen location" komutunu basit bir şekilde işlemesi nedeniyle yinelenen yeni satırların eklenmesi engellendi (#1315).
- WebVTT altyazı örneği işaret içermediğinde (ör. DASH akışının bir parçası olarak)
LegacySubtitleUtilkaynaklıIllegalArgumentExceptiondüzeltildi (#1516).
- Meta veriler:
- MP4'ün ID3 sıralama etiketleriyle eşlenmesi düzeltildi. Daha önce "albüm sıralama" (
soal), "sanatçı sıralama" (soar) ve "albüm sanatçısı sıralama" (soaa) MP4 etiketleri yanlışlıklaTSO2,TSOAveTSOPID3 etiketleriyle 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şlenmesi 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öntemin işe yaradığı daha önce belgelenmemiş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 bir değer olarak zaten ek açıklamayla belirtilmiş.ByteArrayDataSource'nin, oluşturma sırasında sabit kodlu 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'ında HLG yüzey çıkışını iyileştiren EGL_GL_COLORSPACE_BT2020_HLG_EXT için destek eklendi.
setOverlayFrameAnchor()içinde uygulanan x ve y değerlerini ters çevirerek yer paylaşımı matrisi uygulamasını dokümanlarla tutarlı olacak şekilde güncelleyin.OverlaySettings.Builder.setOverlayFrameAnchor()kullanıyorsanız x ve y değerlerini-1ile çarparak ters çevirin.TimestampWrapper,ExoPlayer#setVideoEffectsile kullanıldığında kilitlenmesine neden olan hata düzeltildi (#821).- Varsayılan SDR renk çalışma alanını doğrusal renklerden elektrikli BT 709 SDR videoya değiştirin. Ayrıca, orijinal renk alanını korumak için üçüncü bir seçenek sunun.
- EditedMediaItemSequences'ın belirsiz z sırasının tanımlanmasına izin verilir (#1055).
- Farklı HDR içerik parçalarında tutarlı bir parlaklık aralığı sağlar (HLG aralığını kullanır).
- HDR içeriklerde Ultra HDR (bit eşlem) yer paylaşımları için destek ekleyin.
- API 26'dan önce
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ükseltin.
- Ç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 değerin denetleyiciler için 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()yöntemini çağırın. - Oynatma devam ediyorsa hizmetin ön planda çalışmasını sağlayan, aksi takdirde hizmeti durduran güvenli bir varsayılan uygulama sağlamak için
MediaSessionService.onTaskRemoved(Intent)yöntemini geçersiz kılın. - Platform oturumu meta verilerinde süre ayarlanmayarak canlı yayınlar için medya bildirimindeki arama çubuğu gizlendi (#1256).
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 birlikte hata durumuna güncellemek için kullanılır (#543). - Belirli bir kumandadan gelen bir dizi oyuncu etkileşimi sona erdiğinde oturumları bilgilendirmek için
MediaSession.Callback.onPlayerInteractionFinished()ekleyin. - Hata ve mümkünse hatanın nasıl çözüleceği hakkında daha fazla bilgi sağlamak için hata kodu yerine
SessionErrorekleyin ve bunuSessionResultileLibraryResultiç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ın. - Önemli ve önemsiz hataları platform oturumuyla eşleyin.
PlaybackException,PlaybackStateCompat'in önemli hata durumuna eşlenir.MediaSession.sendError(ControllerInfo, SessionError)ile medya bildirimi denetleyicisine gönderilen 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. - Oturum etkinliğinin, genel oturum etkinliğini geçersiz kılacak şekilde denetleyici başına ayarlanmasına izin verin. Oturum etkinliği, bağlantı sırasında
AcceptedResultBuilder.setSessionActivivty(PendingIntent)ile 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
HlsSampleStreamWrapperiçinde yanlış bir ofsetle 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
- 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ı:
FakeRendereriçindeonInit()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
HttpEngineDataSourceadresiniHttpDataSourceolarak kullanı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.OkHttpDataSourceyapıcıyı veOkHttpDataSourceFactorykaldı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.DefaultHttpDataSourceoluşturucuyu 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çindeki 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ı sorunu 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 sunu zaman damgalarını desteklemeyen
MediaMuxernedeniyle oluşan istisna için geçici çözüm ekleyin.
- API 30'dan önce negatif sunu zaman damgalarını desteklemeyen
- Parça seçimi:
DefaultTrackSelector: Kare hızı daha düşük veya ayarlanmamış olanlar yerine "makul" kare hızına (>=10 fps) sahip video parçalarını tercih edin. Bu sayede oynatıcı, biri daha yüksek çözünürlüğe ancak çok az sayıda kareye sahip iki HEVC parçası içerebilen hareketli fotoğraflardan çıkarılan MP4'lerde "gerçek" video parçasını seçer (#1051).
- Ayıklayıcılar:
- WAV dosyalarından tek boyutlu parçalar okunurken dolgunun atlanmamasıyla ilgili sorun düzeltildi (#1117).
- MP3:
Format.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şiklik geri alındı (#7909). Bu durum, değişikliğin yalnızca I-frame HLS akışları (#1150) ve H.262 HLS akışları (#1126) ile ilgili yeni sorunlara neden olmasından kaynaklanmaktadır.
- Ses:
- Ses parçası, aktarma modunda başlatılamazsa aktarmayı devre dışı bırakarak oluşturucunun kurtarılmasına izin ver.
- Video:
- Galaxy Tab S7 FE, Google TV'li Chromecast ve Lenovo M10 FHD Plus'ta 60 fps H265 yayınların desteklenmiyor olarak işaretlenmesine neden olan cihaz sorunu için geçici çözüm ekleme
- Cihaz, API'nin gerektirdiği şekilde bunu otomatik olarak yapmasa bile tünel oluşturma sırasında ilk karenin her zaman oluşturulmasını sağlayan geçici çözüm eklendi (#1169). (#966).
- HDR renk bilgisi işleme özelliğinin codec'in hatalı çalışmasına neden olduğu ve SDR video parçaları için uyarlanabilir biçim geçişlerini engellediği sorun düzeltildi (#1158).
- Metin:
- WebVTT: Doğrudan ardışık işaretlerin,
WebvttParser.parseöğesinden sahte ekCuesWithTimingörnekleri oluşturmasını önleyin (#1177).
- WebVTT: Doğrudan ardışık işaretlerin,
- DRM:
- Bazı Android 14 cihazlarda
ResourceBusyExceptionveyaNotProvisionedExceptionyerineMediaDrmçerçevesi tarafından oluşturulabilenNoSuchMethodErroriçin 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.):
- Ek bir Maven deposunun yapılandırılmasını gerektirdiğinden MIDI uzantısını varsayılan olarak yerel bağımlılık olarak devre dışı bırakın. Yerel bir bağımlılıktan bu modüle ihtiyaç duyan kullanıcılar modülü yeniden etkinleştirebilir.
Sürüm 1.3.0
6 Mart 2024
androidx.media3:media3-*:1.3.0 yayınlandı. 1.3.0 sürümü bu kayıtları içerir.
- Ortak Kitaplık:
package, mevcut uygulamanın paketinden farklı olduğ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.
- Reklamları
AdPlaybackStateiçinde tek birUriyerine tamMediaItemile 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ükseltmemiz için gereklidir.- En az biri boş olmadığında (#964)
MediaMetadata.Builder.populate(MediaMetadata)içinde hemartworkUrihem deartworkDatadeğerlerini doldurun.
- 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 öğedeki meta verilerin 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 ön eki ekleyin. Bu, hangi kaynağınFormat(#883) ürettiğini belirlemeye yardımcı olur.- Özel Common Media Client Data (CMCD) anahtar adlarını doğrulamak için kullanılan normal ifadeyi yalnızca kısa çizgiyi kontrol edecek şekilde değiştirerek düzeltme (#1028).
- CMCD sorgu parametrelerinin çift kodlanması durduruldu (#1075).
- 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 karesiyle başlamasını sağlamak için API ekleyin. Bu sayede, kırpma işlemlerinin çıkışı, sunum zaman damgasına kadar ilk video karesini göstermeyen oynatıcı uygulamalarıyla daha uyumlu hale gelebilir (#829).
- Tek öğeli MP4 kırpma işlemlerini optimize etme desteği eklendi.
- Bir video karesinin çıkış dosyasında ilk zaman damgasına sahip olmasını sağlamak için destek ekleyin. iOS tabanlı oynatıcılarda siyah kareyle başlayan çıkış dosyaları düzeltildi (#829).
- Parça seçimi:
- Resim parçası seçimini etkinleştirmek için
DefaultTrackSelector.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 sahip dosyalar için sabit bit hızı (CBR) aramasını kullanın (Xingüstbilgisinin CBR eşdeğeri). Daha önceInfobaşlığındaki arama tablosunu kullanıyorduk ancak bu, başlığı yoksayıp dosyanın CBR olduğunu varsaydığımız duruma kıyasla daha az hassas arama yapılmasına neden oluyor. - MPEG2-TS: DTS, DTS-LBR ve DTS:X Profile2 desteği eklendi (#275).
- TS tanımlayıcılarından ses türlerini ayıklayıp bunları rol işaretleriyle eşleyerek kullanıcıların daha bilinçli ses parçası seçimleri yapmasına olanak tanıma (#973).
- Ses:
- Video:
VideoFrameProcessor.Factorybağımsız değişkenini alanMediaCodecVideoRendereroluşturucusunu,VideoSinkProviderbağımsız değişkenini alan bir oluşturucuyla 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 bit eşlem ipuçlarının serileştirilmesini düzeltme (#836).- CEA-708:
rowLockdeğerini yoksay. CEA-708-E S-2023 spesifikasyonu, akıştaki değerlerden bağımsız olarakrowLockvecolumnLockdeğerlerinin doğru olarak kabul edilmesi gerektiğini belirtir (columnLockdesteği uygulanmadığından her zaman yanlış olarak kabul edilir).
- Resim:
- DASH küçük resimleri için destek ekleyin. Izgara resimleri kırpılır ve
ImageOutput, sunum zamanlarına yakın bir zamanda tek tek küçük resimler sağlar.
- DASH küçük resimleri için destek ekleyin. Izgara resimleri kırpılır ve
- DRM:
- DRM içeriğindeki "clear lead" şifrelenmemiş örnekleri, daha sonraki şifrelenmiş örneklerin anahtarları henüz hazır olmasa bile varsayılan olarak hemen oynatır. Oynatma konumu şifrelenmiş örneklere ulaştığında anahtarlar hâlâ hazır değilse bu durum, oynatma sırasında duraklamalara neden olabilir (ancak daha önce oynatma bu noktada hiç başlamazdı). Bu davranış,
MediaItem.DrmConfiguration.Builder.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ır. Oynatma konumu şifrelenmiş örneklere ulaştığında anahtarlar hâlâ hazır değilse bu durum, oynatma sırasında duraklamalara neden olabilir (ancak daha önce oynatma bu noktada hiç başlamazdı). Bu davranış,
- Oturum:
- TV uygulamaları için çift tıklama algılamayı devre dışı bırakma (#962).
- Yalnızca boş olmayan ekstralara sahip
MediaItem.RequestMetadataöğesinin medya kumandaları ve oturumlar arasında iletilmemesi sorunu düzeltildi. MediaLibrarySession.Builderöğesine,MediaLibraryServiceyerine 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ı devam ettirir ancak test, onaylar ve başka işlemler ekleyene kadar ilerlemeyi askıya alır.
- Demo uygulama:
- Kısa içerik kullanım alanıyla
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 parça seçimlerinin, yayının varsayılan konumunda yanlış şekilde başlamasına neden olan sorun düzeltildi (#9347).
- Yeni
CmcdData.Factoryörneklerinin, parça kaynakları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 bir 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, oynatmanın tamamen başarısız olması yerine etiket bilgileri olmadan devam edebileceği anlamına gelir.
- DRM:
- Sahte ClearKey
https://default.urllisans URL'si için geçici çözüm, API 33 ve sonraki sürümleri kapsayacak şekilde genişletildi (önceden geçici çözüm yalnızca API 33 için geçerliydi) (#837). - Oynatıcıya bağlı bir yüzey olmadan şifrelenmiş içerikten net içeriğe geçiş yaparken
ERROR_DRM_SESSION_NOT_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 kumandalar için
notifyChildrenChangedyayını 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). - İlk bildirim güncellemesi istendiğinde medya bildirimi denetleyicisinin bağlantıyı tamamlamamasıyla ilgili
IllegalStateExceptionsorunu düzeltildi (#917).
- Ö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 (büyük olasılıklaLogger.appendThrowableString(String, Throwable)kullanılarak).- Boş değer atanabilir genel tür parametrelerinin ve boş değer atanabilir dizi öğesi türlerinin boş değer atanabilir olarak algılanmadığı Kotlin uyumluluk sorunu düzeltildi.
TrackSelectorResultveSimpleDecoderyöntem parametreleri buna örnek verilebilir (#6792). Util.shouldShowPlayButtonuygulamasında varsayılan kullanıcı arayüzünü ve bildirim davranışını değiştirerek oynatma geçici olarak durdurulduğunda (ör. geçici ses odağı kaybı nedeniyle) "oynat" düğmesini gösterin. Eski davranış,PlayerView.setShowPlayButtonIfPlaybackIsSuppressed(false)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 ileri/geri sarma sorunları düzeltildi (#11000).
- Bu özellik
ExoPlayer.Builder.setSuppressPlaybackOnUnsuitableOutputüzerinden etkinleştirildiğinde uygun olmayan ses çıkış cihazlarında (ör. Wear OS cihazlardaki yerleşik hoparlör) oynatmayı engelleme özelliği eklendi. Uygun ses çıkışı yokken oynatma denenirse veya oynatma sırasında tüm uygun çıkışların bağlantısı kesilirse oynatma engelleme 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 iyileş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).
ExperimentalBandwidthMeteriçindeConcurrentModificationExceptionile ilgili sorunları 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.queueInputBitmapiçinframeRatevedurationUsparametreleriTimestampIteratorolarak değiştirildi.
- Parça seçimi:
- Sorunsuz olmayan uyarlamaya açıkça izin vermek veya vermemek için
DefaultTrackSelector.Parameters.allowAudioNonSeamlessAdaptivenessekleyin. Varsayılan ayar, mevcuttruedavranışında kalır.
- Sorunsuz olmayan uyarlamaya açıkça izin vermek veya 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. BirExtractoruygulamasının ayrıntılarına çalışma zamanında erişmek istiyorsanız önceExtractor.getUnderlyingInstanceyöntemini ç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 çıkışındaki boşaltma yapılandırmasının ayarlandığı
AudioSink.setOffloadMode()ekleyin. Varsayılan değer:AudioSink.OFFLOAD_MODE_DISABLED. - Boşaltma,
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 seçim yalnızca parçanın biçimi boşaltmada destekleniyorsa yapılır. Yük devretmede desteklenen ses parçası yoksa parça seçilmez.- Parça geçişinden sonra oynatma konumu sorunu nedeniyle API düzeyi 33'ten önceki sürümlerde boşluksuz oynatma desteği devre dışı bırakıldı.
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 oynatma için Opus boşluksuz meta veri desteği ekleyin.
- İlk yazma işleminde başarısız olursa boşaltmayı devre dışı bırakarak oluşturucu kurtarmaya izin verme (#627).
- Yalnızca ses aktarımlı oynatma için Aktarma Planlama'yı varsayılan olarak etkinleştirin.
ExoPlayer.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ı eklendi.- DTS Express ses arabelleği yetersizliği sorunu düzeltildi (#650).
- E-AC3-JOC için özellik kontrolünün bir
IllegalArgumentExceptionoluşturmasına 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şleniyor.
- 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:
- Zaman damgasına göre bit eşlem girişini sıraya alan
VideoFrameProcessor.queueInputBitmap(Bitmap, Iterator<Long>)ekleyin. VideoFrameProcessor.registerInputStream()değerini engelleyici olmayacak şekilde değiştirin. UygulamalarVideoFrameProcessor.Listener#onInputStreamRegistered()yöntemini uygulamalıdır.VideoFrameProcessor.queueInputBitmapöğesininframeRatevedurationUsparametreleriTimestampIteratorolarak değiştirildi.
- Zaman damgasına göre bit eşlem girişini sıraya alan
- IMA uzantısı:
- Oynatma listesindeki ilk öğe olmayan çok dönemli bir DASH canlı yayınının istisna oluşturmasına neden olan hata düzeltildi (#571).
AdsLoader.destroy()yöntemini çağırmadan önce StreamManager'ı serbest bırakın- IMA SDK sürümü 3.31.0'a yükseltildi.
- Oturum:
- Bildirimler ön plan hizmeti davranışını
DefaultMediaNotificationProvideriçindeFOREGROUND_SERVICE_IMMEDIATEolarak ayarlayın (#167). - Samsung cihazlarda desteği sonlandırılan API ile ilgili sorunları önlemek için API 31'in üzerinde yalnızca
android.media.session.MediaSession.setMediaButtonBroadcastReceiver()kullanın (#167). - Kullanılabilir komutları ve bildirimi ve platform oturumunu doldurmak için kullanılan özel düzeni ayarlamak üzere medya bildirimi denetleyicisini proxy olarak kullanın.
MediaSessionService.onStartCommand()tarafından alınan medya düğmesi etkinliklerini platform oturumuna ve tekrar Media3'e yönlendirmek yerine Media3 içinde dönüştürün. Bu sayede, arayan denetleyici her zaman medya bildirimi denetleyicisi olur ve uygulamalar, desteklenen tüm API düzeylerinde bildirimden gelen aramaları aynı şekilde kolayca tanıyabilir.- Eski bir
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()yöntemini 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 denetleyici olarak kullanıldığında Android Auto kullanıcı arayüzündekiqueuedüğmesi gösterilmez (#339). - Varsayılan olarak
SimpleBitmapLoaderyerineDataSourceBitmapLoaderkullanı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.
- Bildirimler ön plan hizmeti davranışını
- 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 (varsayılan olarak 5 dakika) içinde 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ınaforegroundServiceTypeolarakdataSynceklemeli 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, çakışan altyazıları birleştirme konusunda daha iyi destek sunar. Altyazı segmentleri arasında geçiş yaparken titremeyi çözme de buna dahildir. Bunu
DashMediaSource.Factory.experimentalParseSubtitlesDuringExtraction()(#288) kullanarak etkinleştirebilirsiniz.
- RTSP uzantısı:
- TCP'ye geri dönerken
IndexOutOfBoundsExceptionhatasına veya bazı durumlarda oynatmanın askıya alınmasına neden olabilecek bir yarışma durumu düzeltildi. RtspMediaPeriodyükleme durumu döndürülürken RTSP kurulumundaki durumu kontrol edin (#577).- Seçenekler yanıtı genel başlığındaki özel Rtsp istek yöntemlerini yoksayma (#613).
- Etkin tutma RTSP seçenekleri isteklerini gönderme zaman aralığında RTSP kurulum yanıtı zaman aşımı değerini kullanma (#662).
- TCP'ye geri dönerken
- 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-midiolarak yeniden adlandırıldı (#734).
- 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'yı Espresso kullanıcı arayüzü testleri ve Compose kullanıcı arayüzü testleriyle uyumlu hale getirme Bu sayede, Espresso veya Compose görünüm etkileşimleri sırasında oynatmanın belirsiz bir şekilde ilerlemesine neden olan hata düzeltildi.
- Desteği sonlandırılan simgeleri kaldırın:
TransformationRequest.Builder.setEnableRequestSdrToneMapping(boolean)veTransformationRequest.Builder.experimental_setEnableHdrEditing(boolean)araçlarını kaldırın. Bunun yerineComposition.Builder.setHdrMode(int)kullanın veCompositiondeğeriniTransformer.start(Composition, String)yöntemine 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:
- Oynatma listesi temizlendikten sonra
PlaybackStatsListeneriçinde sahtePlaybackStatsoluşturulmasıyla ilgili sorun düzeltildi. - Ortak Medya İstemci Verileri (CMCD) günlüğüne ek alanlar ekleyin: akış biçimi (sf), akış türü (st), sürüm (v), en yüksek bit hızı (tb), nesne süresi (d), ölçülen işleme hızı (mtp) ve nesne türü (ot) (#8699).
- Oynatma listesi temizlendikten sonra
- 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, yük devretmeli Opus oynatma için bit akışına Ogg kimlik üstbilgisi ve yorum üstbilgisi sayfalarını ekleyin.
- Video:
- H.265/HEVC: SPS kısa ve uzun vadeli referans resim bilgilerini ayrıştırma sorunu düzeltildi.
- Metin:
- CEA-608: İşaret kısaltma mantığı, yalnızca görünür metni dikkate alacak şekilde değiştirildi. Daha önce, işaret uzunluğu 32 karakterle sınırlandırılırken girinti ve sekme ofseti dahil ediliyordu (bu, spesifikasyona göre teknik olarak doğruydu) (#11019).
- IMA uzantısı:
- IMA SDK sürümü 3.30.3'e yükseltildi.
- Oturum:
- Denetleyicinin durumuna özel düzen ekleyin ve buna erişmek için bir alıcı sağlayın. Özel düzen değiştiğinde
MediaController.Listener.onCustomLayoutChangedçağrılır. Farklı Media3 denetleyicilerine farklı özel düzenler göndermek isteyen uygulamalar, bağlantı tamamlandığında özel düzenin denetleyici tarafından kullanılabilmesi içinMediaSession.Callback.onConnectiçindeAcceptedResultBuilderkullanarak bunu yapabilir. MediaLibraryServiceLegacyStub, bunu desteklemeyen birResult'e hata gönderdiğindeUnsupportedOperationExceptionhatasının oluşmasına neden olan sorunlar düzeltildi (#78).PlayerWrapperaracının 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 belirleyerekVolumeProviderCompatoluşturma yöntemi 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çinBuilderekleyin ve mevcut oluşturucuyu kullanımdan kaldırın.- 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)
MediaSourceöğesinden kullanılabilir parça türlerini filtrelemeye olanak tanıyanFilteringMediaSourceekleyin.- Uyarlanabilir akış biçimleri DASH, HLS ve SmoothStreaming'in giden isteklerine Ortak Medya İstemci Verileri'ni (CMCD) dahil etme desteği eklendi.
br,bl,cid,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. SampleQueuedeğerini,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.- Haritada anahtar olarak kullanılan UID'leri içeren dönemleri kapsayan bir zaman çizelgesi parametresi ekleyerek
ServerSideAdInsertionMediaSource.setAdPlaybackStates(Map<Object, AdPlaybackState>)imzasını değiştirin. Bu, çok dönemli canlı yayınlarda eşzamanlılık sorunlarını önlemek için gereklidir. EventDispatcher.withParameters(int windowIndex, @Nullable MediaPeriodId mediaPeriodId, long mediaTimeOffsetMs)veBaseMediaSource.createEventDispatcher(..., long mediaTimeOffsetMs)desteğini sonlandırın. 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.blacklistdosyasınıexcludeTrack,isBlacklisteddosyasını 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)kullanın.Transformer.startTransformation(MediaItem, ParcelFileDescriptor)öğesini kaldır- Giriş karesinin işlenmeyi beklediği sırada video akışının sonu sinyali verilirse dönüşümün takılmasına (muxer zaman aşımına neden olur) yol açan hata düzeltildi.
- Desteği genişletmek için
findDecoder/EncoderForFormatyardımcı programlarını kullanmak yerineMediaCodecListüzerinden codec'leri sorgulayın. - Bazı cihazlarda çalışmadığı için
DefaultEncoderFactoryuygulamasındaki B-frame yapılandırmasını kaldırın.
- Kanal seçimi:
- Varsayılan olarak devre dışı olan
DefaultTrackSelector.Parameters.allowInvalidateSelectionsForRendererCapabilitiesChangeöğesini ekleyin. Etkinleştirildiğ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
AudioProcessorsetkinken bazı oynatma işlemlerinin başarısız olmasına neden olan hata düzeltildi (ör. boşluksuz kırpma için) (#10847). - Doğrudan oynatmalarda (boşaltma) Opus karelerini Ogg paketlerine kapsülleyin.
- Yük devretme planlamasıyla uyku sırasında mevcut konumu tahmin etme.
- Oynatıcının yaşam döngüsünün sonunda kaynakları serbest bırakmak için
Renderer.release()veAudioSink.release()yöntemlerini ekleyin. DefaultAudioSinkuygulamasında ses özelliklerindeki değişiklikleri dinleyin.DefaultAudioSinkoluşturucusuna gerekli bircontextparametresi ekleyin.DefaultAudioSink, bu parametreyleAudioCapabilitiesReceiverdinleyicisi 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 bir arayüzRendererCapabilities.Listeneraracı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 int 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 boyutu 0 genişlik ve yüksekliğe sahip 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ştirin. Meveut uygulamanın canlı yayınlarda ileri/geri sarmayı henüz desteklemediğini lütfen unutmayın (#10912).
- Ardışık zaman çizelgelerinde hesaplanan içerik konumu biraz farklı olduğu için canlı yayınlara yeni bir reklam grubunun eklenmesine neden olan hata düzeltildi.
- Oturum:
- Şu anda bir
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 kaldığı yerden oynatma özelliğini uygulayabilmesi için
androidx.media3.session.MediaButtonReceiverekleyin (#167). - İstenen
MediaItemsdeğerlerininLocalConfiguration(ör. URI) varsaPlayerdeğerine aktarılmasına izin vermek içinMediaSession.Callback.onAddMediaItemsdeğerine varsayılan uygulama ekleyin (#282). - Android 12 ve önceki sürümlerde varsayılan olarak kompakt medya bildirimi görünümüne "önceki öğeye git" ve "sonraki öğeye git" komut düğmeleri eklendi (#410).
- İstenen
MediaItemsdeğerlerininLocalConfiguration(ör. URI) varsaPlayerdeğerine aktarılmasına izin vermek içinMediaSession.Callback.onAddMediaItemsdeğerine varsayılan uygulama ekleyin (#282). - Android 12 ve önceki sürümlerde varsayılan olarak kompakt medya bildirimi görünümüne "önceki öğeye git" ve "sonraki öğeye git" komut düğmeleri eklendi (#410).
- Ş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öğelerinden 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ı ayarlamak üzereHlsMediaSource.Factory.setTimestampAdjusterInitializationTimeoutMs(long)ekleyin. Başlatma işlemi zaman aşımından önce tamamlanmazsa oynatmanın sonsuza kadar duraklatılması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ı:
DataSourceContractTestiçinde URI şeması büyük/küçük harf duyarlılığı olup olmadığını kontrol edin.
- Desteği sonlandırılan simgeleri kaldırın:
DefaultAudioSinkyapıcılarını kaldırın, bunun yerineDefaultAudioSink.Builderkullanın.HlsMasterPlaylistöğesini kaldırın, bunun yerineHlsMultivariantPlaylistöğesini kullanın.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.DefaultDrmSessionManageryapıcılarını kaldırın, bunun yerineDefaultDrmSessionManager.Builderkullanın.- Kullanımdan kaldırılan iki
HttpDataSource.InvalidResponseCodeExceptionoluşturucuyu kaldırın. Hata günlüğünü iyileştirmek için ek alanları (cause,responseBody) kabul eden, kullanımdan kaldırılmamış bir oluşturucu kullanın. DownloadHelper.forProgressive,DownloadHelper.forHls,DownloadHelper.forDashveDownloadHelper.forSmoothStreamingpolitikalarını kaldırın, bunun yerineDownloadHelper.forMediaItempolitikasını kullanın.- Desteği sonlandırılan
DownloadServiceoluşturucuyu kaldırın vechannelDescriptionResourceIdparametresi sağlama seçeneğini içeren, desteği sonlandırılmamış bir oluşturucu kullanın. - Karakter kümeleri için desteği sonlandırılan dize sabitlerini (
ASCII_NAME,UTF8_NAME,ISO88591_NAME,UTF16_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
WorkManagerScheduleroluşturucusunu kaldırın ve bunun yerineContextparametresi sağlama seçeneğini içeren, desteği sonlandırılmamış bir oluşturucu 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, bunun yerineprepare()politikasını kullanın. - Desteği sonlandı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 yerineonPositionDiscontinuityileDISCONTINUITY_REASON_SEEKişlemlerini kullanın. ExoPlayer.setHandleWakeLock(boolean)öğesini kaldırın, bunun yerinesetWakeMode(int)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 kayıtları içerir.
Bu sürüm, ExoPlayer 2.18.7 sürümüne karşılık gelir.
Bu sürüm, 1.0.1 sürümünden bu yana aşağıdaki değişiklikleri içerir:
- Çekirdek kitaplık:
Buffer,C.BUFFER_FLAG_LAST_SAMPLEişaretini içeriyorsa bunu belirtenBuffer.isLastSample()ekleyin.- Kare içeren son örnek, "akış sonu" örneği okunmadan sıradan çıkarılırsa son karenin oluşturulmamasına neden olan sorun düzeltildi. (#11079).
- Ayıklayıcılar:
- RTSP ve MP4 ayıklayıcılar tarafından kullanılan ayrıştırma mantığını yeniden kullanarak MPEG-TS dosyalarındaki H.265 SPS ayrıştırma sorunu düzeltildi (#303).
- Metin:
- SSA: Bayt sırası işaretiyle başlayan UTF-16 dosyaları için destek eklendi (#319).
- Oturum:
MediaController, işlemlerini güncelleyen eski birMediaSessionCompatcihazına bağlandığında kullanılabilir komutlarını güncellememesine neden olan sorun düzeltildi.- API 30'da
params.isRecent == trueile sistem kullanıcı arayüzündenCallback.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,MediaController'ninIllegalStateExceptionhatası vermesine neden olabileceği hata düzeltildi.
Sürüm 1.0.1
18 Nisan 2023
androidx.media3:media3-*:1.0.1 yayınlandı. 1.0.1 sürümü bu commit'leri içerir.
Bu sürüm, ExoPlayer 2.18.6 sürümüne karşılık gelir.
- Çekirdek kitaplık:
- Varsayılan konuma sararken hedef canlı yayın geçersiz kılma işlemini sıfırlama (#11051).
- Medyadaki boş örnek akışların oynatmanın takılmasına neden olabileceği hata düzeltildi.
- Oturum:
- Eski bir
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ı sorunu 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 olduğu sorun düzeltildi (#318). - Uygulama amaçlamadığı halde kitaplık tarafından bir medya düğmesi alıcısının tanımlanmasıyla ilgili sorun düzeltildi (#314).
- 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 yeniden deneyin (#11069).
Sürüm 1.0.0
22 Mart 2023
androidx.media3:media3-*:1.0.0 yayınlandı. 1.0.0 sürümü bu commit'leri içerir.
Bu sürüm, ExoPlayer 2.18.5 sürümüne karşılık gelir.
1.0.0-rc02 sürümünden bu yana herhangi bir değişiklik yapılmadı.
Sürüm 1.0.0-rc02
2 Mart 2023
androidx.media3:media3-*:1.0.0-rc02 yayınlandı. 1.0.0-rc02 sürümü şu taahhütleri içerir:
Bu sürüm, ExoPlayer 2.18.4 sürümüne karşılık gelir.
- Çekirdek kitaplık:
- İ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ı performanslı bir şekilde oynatamayabileceğini bildirse bile
MediaCodecSelectortercihlerini koruyacak şekilde ayarlayın. Örneğin, varsayılan seçiciyle, biçimi tam olarak destekleyen yazılım kod çözücü yerine yalnızca işlevsel desteğe sahip donanım kod çözücü tercih edilir (#10604). - Yeni bir ExoPlayer örneği için önceden mevcut bir oynatma iş parçacığı ayarlayan
ExoPlayer.Builder.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 öğesini tek bir pencerede birleştirmeye olanak tanıyan
ConcatenatingMediaSource2eklendi (#247).
- Oluşturucunun kod çözücü sıralama mantığını, bir kod çözücü medyayı performanslı bir şekilde 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
NullPointerExceptionyerineParserExceptionhatası verilir. - fMP4'te doğrudan bir senkronizasyon karesine sararken ö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:
- Altyazı dosyası işaret içermiyorsa
Subtitle.getEventTimeöğesine geçersiz (negatif) bir dizin iletenTextRenderersorununu düzeltin. - SubRip: UTF-16 dosyaları için destek ekleyin (bayt sırası işaretiyle başlıyorlarsa).
- 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 veya klasör türünü belirtmek için
MediaMetadata.mediaTypeekleyin. MediaMetadata.folderTypeyerineMediaMetadata.isBrowsableekleyin. Klasör türü, bir sonraki sürümde kullanımdan kaldırılacak.
- DASH:
- Karo sayıları da dahil olmak üzere görüntü uyarlama setleri için tam ayrıştırma ekleyin (#3752).
- Kullanıcı arayüzü:
- Görünürlük değişikliklerinin kayıtlı dinleyiciye iletilmesini sağlamak için desteği sonlandırılan
PlayerView.setControllerVisibilityListener(PlayerControlView.VisibilityListener)öğesini düzeltin (#229). - Sağdan sola (RTL) düzen kullanılırken
PlayerViewuygulamasındaki orta 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 üzere soyutSimpleBasePlayereklendi. - Platform oturum jetonunu Media3'e dönüştürmek için yardımcı yöntem ekleyin
SessionToken(#171). - Platform medya oturumunun güncellemelerini tetiklemek için
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
MediaItemlistesini, başlangıç dizinini ve oturuma göre konumu değiştirme/ayarlama imkanı sunmak içinonSetMediaItemsgeri çağırma dinleyicisi ekleyin (#156). - Bluetooth dışı medya düğmesi etkinlikleri için iki kez dokunma algılamasını önleme (#233).
- Şüpheli eski oturum durumu olması durumunda
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 veya klasör türünü belirtmek için
MediaMetadata.mediaTypeekleyin. MediaMetadata.folderTypeyerineMediaMetadata.isBrowsableekleyin. Klasör türü, bir sonraki sürümde kullanımdan kaldırılacak.
- Yayınlama uzantısı:
- Cast SDK sürümü 21.2.0'a yükseltildi.
- IMA uzantısı:
- İş parçacığı sorunlarını önlemek için uygulama iş parçacığında
ImaServerSideAdInsertionMediaSourceöğesinin oynatıcı dinleyicisini kaldırın. - TV cihazlarında atla düğmesine odaklanılmasını istemek için
ImaServerSideAdInsertionMediaSource.AdsLoader.Builderöğ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 commit'leri içerir.
Bu sürüm, ExoPlayer 2.18.2 sürümüne karşılık gelir.
- Çekirdek kitaplık:
- Şu anda seçili parçalar için tünel oluşturmanın etkin olup olmadığını kontrol etmek üzere
ExoPlayer.isTunnelingEnabledekleyin (#2518). - Tek bir
MediaSourcesarmalamayı basitleştirmek içinWrappingMediaSourceekleyin (#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ı arama ile oturum izleme sorunu düzeltildi (#180).- Tek öğeli bir oynatma listesinde
seekToNextveyaseekToPreviousçağrılırken eksikonMediaItemTransitiongeri çağırma işlevi gönderiliyordu (#10667). - Videonun oluşturulduğu yüzeyin boyutunu döndüren
Player.getSurfaceSizeekleyin. - Oynatıcı sürümü sırasında dinleyicilerin kaldırılmasının
IllegalStateExceptionhatasına neden olabileceği hata düzeltildi (#10758).
- Şu anda seçili parçalar için tünel oluşturmanın etkin olup olmadığını kontrol etmek üzere
- Oluştur:
- 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 bloğundan kaçının.
- Derleme hatalarını önlemek için minimum
- Kanal 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:
AudioTrackörneklerini yayınlamak içinSingleThreadExecutorkullanın. Böylece birden fazla oynatıcıyı aynı anda yayınlarken OutOfMemory hatalarını önleyebilirsiniz (#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).
- 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) oluşan
setMediaDrmSession failed: session not openedhatası düzeltildi.
- Metin:
- CEA-608: 2. alandaki hizmet anahtarı 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'larından bit eşlem yükleyebilir (#108).MediaControlleröğesinin bir dönemdeki reklamda ileri/geri sarmasını engelleyen onaylama düzeltildi (#122).- Oynatma sona erdiğinde
MediaSessionServiceön planda durdurulur ve en son oynatılan medya öğesinin oynatılmasını yeniden başlatmak için bir bildirim gösterilir (#112). - Duraklatma için beklemede olan intent ile ön plan hizmeti başlatmayın (#167).
DefaultNotificationProvidertarafından oluşturulan bildirimle ilişkili "rozet"i API 26 ve API 27'de manuel olarak gizleyin (rozet, API 28 ve sonraki sürümlerde otomatik olarak gizlenir) (#131).- Eski bir MediaSession'dan Media3 MediaController'a ikinci bir bağlayıcı bağlantısının IllegalStateExceptions'a neden olduğu hata düzeltildi (#49).
- RTSP:
- IMA:
- IMA SDK'nın bir reklamı yüklerken takıldığı durumları ele almak için reklam bilgilerini yükleme zaman aşımı ekleyin (#10510).
- İçeriğin sonuna doğru ilerlerken ara reklamların atlanmasını önleme (#10685).
- Sunucu tarafı reklam eklenmiş canlı yayınlar (ör. IMA DAI) için pencere süresini doğru şekilde hesaplama (#10764).
- FFmpeg uzantısı:
- FFmpeg kitaplıklarını NDK 23.1.7779620 ve sonraki sürümlere bağlamak için yeni gerekli işaretler eklendi (#9933).
- AV1 uzantısı:
- En son Android Studio sürümleriyle uyumsuzlukları önlemek için CMake sürümünü güncelleyin (#9933).
- Yayınlama uzantısı:
MediaControllerile oynatmayı kontrol ederkenCastPlayertanımlayabilmek içingetDeviceInfo()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 verin (#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 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 bulunmayı devre dışı bırakabilir.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ünün algılanması durduruldu. Bu oynatmalarda 4G ağı kullanıldığı 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 ,RequestMetadatakapsamına dahil edildiğindenMediaMetadata.mediaUrlöğesini de kaldırın. - Oyuncuların tek bir öğe ayarlamasına izin vermek için
Player.Command.COMMAND_SET_MEDIA_ITEMekleyin.
- Kanal seçimi:
TrackSelectionOverridessınıfınıTrackSelectionParametersile birleş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 "desteğinin sonlandırılmasının iptal edilmesi" de dahildir ancak farklı parametre türleri kullanılır.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ı biçim üç boyutlu ses (Android 12L+) olarak ayarlanmadığı veya Dolby surround ses biçimi olmadığı sürece çok kanallı ses biçimleri yerine stereo/mono biçimlerini tercih eder. Ayrıca, ses uzamsallaştırmayı destekleyen 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:
DummySurfacedosyasınıPlaceholderSurfaceolarak 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 sorgulayın (API 29+) 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 arama yaparken DRM oturumunun her zaman doğru şekilde güncellendiğinden emin olun (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 ayarlananOnClickListeneretkinliklerinin yayınlanması düzeltildi (#9605). Ayrıca tüm görünüm yapılandırmaları için etkinliklerinOnLongClickListenerhedefine yayınlanmasını düzeltin.PlayerViewsınırlarındanACTION_UPöncesinde çıkan bir dokunma etkinliği dizisinin yanlışlıkla tıklama olarak değerlendirilmesi sorunu düzeltildi (#9861).- Dokunulduğunda kontrolleri gizlemek yerine oynatmayı açıp kapatabilen
PlayerViewerişilebilirlik sorunu düzeltildi (#8627). TrackSelectionViewveTrackSelectionDialogBuilderişlemlerini,ExoPlayeryerinePlayerarayü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 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.setCompositeSequenceableLoaderFactoryhedefine iletilmesine 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.
- Sorunsuz Akış:
nulldeğerininSsMediaSource.Factory.setCompositeSequenceableLoaderFactoryhedefine iletilmesine 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 ekleyin (#47).
- OPUS için RTP okuyucu ekleme (#53).
- Veri kaynakları:
DummyDataSourcedosyasınıPlaceholderDataSourceolarak 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.onSetMediaUriöğelerini kaldırın. Aynı işlevMediaController.setMediaItemveMediaSession.Callback.onAddMediaItemskullanılarak da elde edilebilir.- Eski
MediaControlleraramalarınıonSetMediaUriyerineMediaSession.Callback.onAddMediaItemscihazına yönlendirerek medya oynatın. - Bildirimin özelleştirilebilmesi için
MediaNotification.ProviderveDefaultMediaNotificationProviderekleyin. - Albüm kapak 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çinde NPE'yi düzeltme (#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ı 100 ms'den 200 ms'ye düşürün.
- FFmpeg uzantısı:
- Android Studio'nun Gradle senkronizasyonunun başarısız olmasına neden olan bir CMake hatasını önlemek için CMake sürümünü
3.21.0+olarak güncelleyin (#9933).
- 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.getCurrentTrackSelectionsöğelerini kaldırın. Bunun yerinePlayer.getCurrentTrackskullanın.ExoPlayer.getCurrentTrackGroupsveExoPlayer.getCurrentTrackSelectionsyöntemlerini de kullanmaya devam edebilirsiniz ancak bu yöntemler artık desteklenmemektedir.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ü şu commit'leri içerir:
Bu, ExoPlayer 2.17.1 sürümüne karşılık gelir.
- Ses:
- HLS'de Dolby Atmos (E-AC3-JOC) için ses özelliklerini kontrol etme hatası düzeltildi.
- Ayıklayıcılar:
- FMP4: Hem v0 hem de v1 emsg atomları içeren akışlar için emsg örnek meta verilerinin yanlış sırada çıkış yapmasına neden olan sorun düzeltildi (#9996).
- Metin:
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 başlık alanları
namevegenre,Player.Listener.onMediaMetadataChanged()aracılığıyla uygulamaya ulaşmaları için sırasıylaMediaMetadata.stationveMediaMetadata.genrealanlarına yayılır (#9677). DefaultHttpDataSource#getResponseHeadersöğesinden boş anahtarları kaldırın.MediaCodecörneği oluşturma işlemi başarısız olduğunda bekleyip tekrar deneyin. Bu sayede, bazı cihazlarda bir yüzey güvenli bir codec'ten başka bir codec'e geçirilirken ortaya çıkan sorun (#8696) giderilir.- Kullanıcıların
MediaCodecüzerinden metrik verileri almasına izin vermek iç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#inputBufferCountdosyasınıqueuedInputBufferCountolarak 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.
- Kanal seçimi:
- Parça seçiminde tercih edilen video rolü işaretleri desteklenir (#9402).
- Uyarlama için birden fazla video parçası seçerken tercih edilen MIME türlerini ve rol işaretlerini dikkate alacak şekilde video parçası seçim mantığı güncellendi (#9519).
- Video ve ses parçası seçim mantığı, uyarlanabilir seçimler için yalnızca aynı düzeyde kod çözücü ve donanım desteğine sahip biçimleri seçecek şekilde güncellendi (#9565).
- Birincil, donanım hızlandırmalı kod çözücüler tarafından birden fazla codec destekleniyorsa daha verimli codec'leri tercih etmek için video parça seçim mantığı güncellendi (#4835).
- Ses içeriği tercihlerini (ör. "varsayılan" ses parçası veya sistem yerel ayar diliyle eşleşen bir parça), teknik parça seçimi kısıtlamalarına (ör. tercih edilen MIME türü veya maksimum kanal sayısı) tercih edin.
- Bir parça grubunu geçersiz kılmanın aynı türdeki diğer parça gruplarını devre dışı bırakmadığı parça seçimi sorunu düzeltildi (#9675).
- Boş olmayan ve boş parça geçersiz kılma işlemlerinin karışımının doğru şekilde uygulanmadığı parça seçimi sorunu düzeltildi (#9649).
TrackGroupArrayiçinde yinelenenTrackGroupkullanımını 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ığı değiştirin (#9784).
- Video:
- Dolby Vision için kod çözücü yedek mantığı düzeltilerek gerektiğinde uyumlu bir H264/H265 kod çözücü kullanılması sağlandı.
- Ses:
- Dolby Atmos (E-AC3-JOC) için kod çözücü yedek mantığını, gerekirse uyumlu bir E-AC3 kod çözücü kullanacak şekilde düzeltme
AudioCapabilitiesAPI'lerini,nullyerine açıkçaAudioCapabilities.DEFAULT_AUDIO_CAPABILITIESiletilmesini gerektirecek ş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ı önleyin.
- 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ığında,playbackLooper'ninDrmSessionManager.setPlayer'ye iletilmesi gerekir.
- Reklam oynatma/IMA:
- IMA Dinamik Reklam Ekleme (DAI) için destek eklendi (#8213).
AdPlaybackStatesınıfına, reklam grubunun sıfırlanarak tekrar oynatılabilmesini sağlayan bir yöntem ekleyin (#9615).- Reklam oynatılırken 1.0 oynatma hızını zorunlu kılma (#9018).
- Yüklenemeyen bir reklam grubunun oynatmanın hemen sıfırlanmasına neden olduğu sorun düzeltildi (#9929).
- Kullanıcı arayüzü:
- DASH:
- Ayrıştırılmış temel ve ek özellikleri
Representationöğesine ekleyin (#9579). forced-subtitleparça rolünü destekleyin (#9727).mainkanal 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 destekleyin (#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çalara ayrılmamış hazırlığı kullanın. Yorumlarınız, ana oynatma listesinde beyan edilmeyen çoklanmış altyazı dosyaları içeriyorsa bunları oynatılabilmeleri için ana oynatma listesine eklemeniz veya
HlsMediaSource.Factory.setAllowChunklessPreparation(false)ile parçasız hazırlığı devre dışı bırakmanız gerekir. - HLS'de animasyon karesi hassasiyetinde arama desteği (#2882).
- 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ılacak bir istemci API'si sağlayın (#9606). - Her ikisi de mevcutsa BASIC yerine DIGEST kimlik doğrulama yöntemini tercih etme (#9800).
- RTSP parça zamanlaması kullanılamadığında işleme (#9775).
- Geçersiz RTP-Info üstbilgi değerlerini yoksayma (#9619).
- Herhangi bir sunucu bağlantısı için kullanılan
- Transformer:
- Gerekli minimum API sürümünü 21'e yükseltin.
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 verilir.
- 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ğımlı hale getirildi (#9933).
- Android 12 uyumluluğu:
- Cast uzantısını
com.google.android.gms:play-services-cast-framework:20.1.0'e bağlı olacak şekilde yükseltin.play-services-cast-framework'nin önceki sürümleri Android 12'yi hedefleyen uygulamalarla uyumlu değildir 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.ActionFileveActionFileUpgradeUtilöğelerini 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)yapıcılarını kaldırın. Bunun yerineDefaultRenderersFactory(Context)oluşturucusunu,DefaultRenderersFactory#setExtensionRendererModeveDefaultRenderersFactory#setAllowedVideoJoiningTimeMs'yi kullanın.- Tüm herkese açık
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 commit'leri içerir.
Yeni özellikler
Media3, ExoPlayer dahil olmak üzere medya destek kitaplıklarının yeni adresidir. İlk alfa sürümü, medya kullanım alanlarını uygulamak için kitaplıkların erken ve işlevsel uygulamalarını içerir. Bunlar arasında şunlar yer alır:
- ExoPlayer, Android için özelleştirilmesi ve genişletilmesi kolay, uygulama düzeyinde bir medya oynatıcıdır.
- Oynatma işlemlerini göstermek ve kontrol etmek için medya oturumu işlevi. Bu yeni oturum modülü, ExoPlayer ile aynı
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. Uygulamalara Media3'e geçiş için zaman tanımak amacıyla ExoPlayer GitHub projesini bir süre daha sürdürmeyi ve yayınlamayı planlıyoruz.
Media3, yeni media3-session modülüyle değiştirilen eski media2 ve mediasession uzantıları hariç tüm ExoPlayer modüllerinin yerine kullanılabilir. Bu sayede, bağdaştırıcı/bağlayıcı sınıfı kullanmaya gerek kalmadan oynatıcılar ile medya oturumları arasında doğrudan entegrasyon sağlanır.