Media3
| Son Güncelleme | Kararlı sürüm | Sürüm Adayı | Beta Sürümü | Alfa sürümü | 
|---|---|---|---|---|
| 22 Ekim 2025 | 1.8.0 | - | - | 1.9.0-alpha01 | 
Bağımlılıkları bildirme
Media3'e bağımlılık eklemek için Google Maven deposunu projenize eklemeniz gerekir. Daha fazla bilgi için Google'ın Maven deposunu okuyun.
Uygulamanız veya modülünüz için build.gradle dosyasına ihtiyacınız olan yapılarla ilgili bağımlılıkları ekleyin:
Eski
dependencies { def media3_version = "1.8.0" // 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 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 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.8.0" // 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 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 muxing media files implementation("androidx.media3:media3-muxer:$media3_version") // Utilities for testing media components (including ExoPlayer components) implementation("androidx.media3:media3-test-utils:$media3_version") // Utilities for testing media components (including ExoPlayer components) via Robolectric implementation("androidx.media3:media3-test-utils-robolectric:$media3_version") // Common functionality for reading and writing media containers implementation("androidx.media3:media3-container:$media3_version") // Common functionality for media database components implementation("androidx.media3:media3-database:$media3_version") // Common functionality for media decoders implementation("androidx.media3:media3-decoder:$media3_version") // Common functionality for loading data implementation("androidx.media3:media3-datasource:$media3_version") // Common functionality used across multiple media libraries implementation("androidx.media3:media3-common:$media3_version") // Common Kotlin-specific functionality implementation("androidx.media3:media3-common-ktx:$media3_version") }
Bağımlılıklar hakkında daha fazla bilgi için Derleme Bağımlılıkları Ekleme başlıklı makaleyi inceleyin.
Geri bildirim
Geri bildiriminiz Jetpack'in iyileştirilmesine yardımcı olur. Sorulara, bilinen sorunlara ve özellik isteklerine yanıt bulmak, ayrıca yeni sorunlar bildirmek için Media3 sorun izleyicisini kullanabilirsiniz.
Sürüm 1.9.0
Sürüm 1.9.0-alpha01
22 Ekim 2025
androidx.media3:media3-*:1.9.0-alpha01 iptal edilir.
1.9.0-alpha01 sürümü bu commit'leri içerir.
- Ortak kitaplık:
- Diğer AndroidX kitaplıklarıyla uyumlu olması için minSdksürümünü23olarak güncelleyin.
- Oynatma durumunun Playerörnekleri arasında aktarılmasını kolaylaştıranPlayerTransferStateişlevi eklendi.
- void mute()ve- void unmute()yöntemlerini, Player'ın sesini sıfıra ayarlamadan önce ve sonra koruyup geri yükleyen Player'a ekleyin.
- Daha önce ExoPlayertarafından dahili olarak kullanılanWakeLockManager,WifiLockManager,AudioFocusManager,AudioBecomingNoisyManagerveStuckPlayerDetectoryardımcı sınıflarını yayınlayarak diğer oyuncular tarafından yeniden kullanılmalarını sağlayın (#1893).
- Temel temsilci oynatıcı, dinleyici örneklerini karşılaştırmak için referans eşitliğini kullandığında ForwardingPlayerdinleyici işleme sorununu düzeltin (#2675).
- Üzerinde işlem yapılması gereken belirli Player.Eventsöğesini belirtenPlayer.listenToaskıya alma uzantısı işlevi ekleyin.media3-common-ktx
- Bildirilen arabelleğe alınmış konum, bildirilen süreden çok daha uzun olduğunda BasePlayer.getBufferedPercentageiçinde tamsayı taşmasından kaynaklanan kilitlenme sorunu düzeltildi (#2750).
 
- Diğer AndroidX kitaplıklarıyla uyumlu olması için 
- ExoPlayer:
- Oynatıcının takılıp kaldığı algılandığında StuckPlayerExceptionoynatıcı hatasını tetikleyen bir algılama özelliği eklendi. Bu durum aşağıdaki durumlarda meydana gelir. Gerekirse her varsayılan zaman aşımıExoPlayer.Builderbölümünde yapılandırılabilir:- Oynatmaya çalışırken 10 dakika boyunca STATE_BUFFERINGsimgesi gösteriliyor ve arabelleğe alma işlemi ilerlemiyor.
- Oynatmaya çalışırken 10 saniye boyunca STATE_READYsimgesi gösteriliyor ve oynatma ilerlemiyor.
- Öğenin sonuna ulaşılmadan, belirtilen sürenin 1 dakika aşılması durumunda STATE_READY.
- Oynatma sırasında 10 dakika boyunca oynatma engelleme nedeni gösterildikten sonra.
 
- Oynatmaya çalışırken 10 dakika boyunca 
- Arka planda oynatma sırasında arabelleğe alma ile ilgili sorunları düzeltmek için uyandırma kilidi işlemeyi varsayılan olarak etkinleştirin. Bu, ExoPlayer.Builder.setWakeModeöğesiniC.WAKE_MODE_LOCALolarak ayarlamaya eşdeğerdir.
- Başlangıçta Contextöğesine iletilenExoPlayer.Builderöğesinde bir değişiklik bildirildiğinde sanal cihaz kimliğini otomatik olarak güncelleyecek dinleme mantığı ekleyin.
- ExoPlayer.setVirtualDeviceId,- ExoPlayer.Builder'ye aktarılan- Context'den alınan sanal cihaz kimliğini manuel olarak güncellemek için ekleyin.
- Oluşturucuların, geçerli öğenin bitiminden 10 saniye önce sonraki oynatma listesi öğesinden veri tüketmediğinden emin olun.
- İnşaat tamamlandıktan sonra bu ayarları güncellemek için setSeekBackIncrementMs,setSeekForwardIncrementMsvesetMaxSeekToPreviousPositionMsöğeleriniExoPlayer'e ekleyin (#2736).
- DefaultPreloadManager'e önbelleğe alma işlevi ekleyin. Uygulamalar artık bir medya öğesinin önbelleğe alınması gerektiğini belirtmek için- DefaultPreloadManager.PreloadStatus.specifiedRangeCached(startPositionMs, durationMs)veya- DefaultPreloadManager.PreloadStatus.specifiedRangeCached(durationMs)değerini- TargetPreloadStatusControl.getTargetPreloadStatus(T rankingData)üzerinden döndürebilir.
- Kısa video demo uygulamasında DefaultPreloadManager'nın önbelleğ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 ayarlamanın oynatıcıyı STATE_READYveyaSTATE_BUFFERINGdurumunda bırakabildiği hata düzeltildi.
- Ön yükleme yöneticisi API'lerini geliştirin:
- Medya öğelerini veya medya kaynaklarını toplu olarak ekleyen ve ardından invalidate()işlevini otomatik olarak çağıranaddMediaItems(List<MediaItem>, List<T>)veaddMediaSources(List<MediaSource>, List<T>)işlevlerini ekleyin.
- Medya öğelerini veya medya kaynaklarını toplu olarak kaldıran removeMediaItems((List<MediaItem>)veremoveMediaSources(List<MediaSource>)ekleyin. Ayrıca, önceden yükleme yöneticisinin, kaldırılan öğeleri önceden yüklemeye başlamadığından veya önceden yüklemeye devam etmediğinden emin olun.
- DefaultPreloadManager.setCurrentPlayingIndex(int)cihazının kendini otomatik olarak geçersiz kılmasına izin verin. Uygulamaların, mevcut oynatma dizinini güncelledikten sonra artık- invalidate()işlevini açıkça çağırması gerekmez.
 
- Medya öğelerini veya medya kaynaklarını toplu olarak ekleyen ve ardından 
- Fırçalama modundayken aynı resim grubunda ileri sarma işlemlerinde animasyon karesi sıfırlamayı atlama özelliği eklendi.
- Belirtilen playerNameile bir oynatıcı için hedef arabellek baytlarının değerini ayarlamak üzere uygulamalaraDefaultLoadControl.Builder.setPlayerTargetBufferBytes(String, int)ekleyin.DefaultLoadControlartık her oyuncunun kararlarını, ayrılan bayt ve hedef arabellek baytlarına göre ayrı ayrı verebilir.
- Reklam grubundaki her reklam için atlama bilgilerini taşımak üzere SkipInfoöğesiniAdPlaybackState.AdGroupöğesine ekleyin.
- Bir yayın sonrası reklam oynatılırken removeMediaItems(List)'ı aramanın kilitlenmeye neden olduğu hata düzeltildi (#2746).
- Oynatma listesi oynatılırken karelerin yanlışlıkla her zaman son örnek olarak ayarlanıp oluşturulması nedeniyle yaşanan takılma sorunu düzeltildi.
- Oynatıcı ses oturumu kimliği oluşturamazsa yeniden deneme yolunu etkinleştirme (#2382, #2678).
- Ön yükleme için toplam arabellek baytlarının rastgele büyümesini önlemek amacıyla, DefaultPreloadManageriçindeki kaynaklar için toplam arabellek baytlarını kontrol etme desteği ekleyin. Varsayılan kontrol mantığını kullanmak için uygulamalar,DefaultLoadControl.Builder.setPlayerTargetBufferBytes(String, int)aracılığıyla önceden yükleme için hedef arabellek baytlarınıPlayerId.Preload.nameplayerName'si ("preload") olarak ayarlayabilir ve oluşturulanDefaultLoadControl'yiDefaultPreloadManager.Builder.setLoadControl(LoadControl)aracılığıyla yerleştirebilir.
 
- Oynatıcının takılıp kaldığı algılandığında 
- CompositionPlayer:
- Deneme için kullanıma sunulduğunu ancak geliştirme aşamasında olduğunu belirtmek üzere CompositionPlayer, yeni bir@ExperimentalApiek açıklaması altında yayınlayın. Bazı API'lerin gelecekteki sürümlerde önemli ölçüde değişmesi muhtemeldir. Ayrıca bazı kullanım alanlarıyla ilgili bilinen sorunlar ve sınırlamalar (bazıları belgelenmemiştir) vardır.
- CompositionPlayer'da- COMMAND_SET_AUDIO_ATTRIBUTESve ses odağı işleme desteği eklendi.
- CompositionPlayer'daki ikincil sıralarda hız değiştirme desteği eklendi.
 
- Deneme için kullanıma sunulduğunu ancak geliştirme aşamasında olduğunu belirtmek üzere 
- Dönüştürücü:
- Varsayılan muxer olarak InAppMp4Muxerkullanın.
- EditedMediaItem.Builder#setSpeed()eklendi ve- Effects#createExperimentalSpeedChangingEffects()desteği sonlandırıldı.
- forceAudioTrackve- forceVideoTracköğelerini- trackTypesile değiştirin.- EditedMediaItemSequence
 
- 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.
- preferredVideoLabels,- preferredAudioLabelsve- preferredTextLabelsöğelerini- TrackSelectionParametersiçine ekleyerek belirli bir etikete sahip parçalarla ilgili tercihi (ör. HLS NAME etiketlerinden okunanlar) belirtebilirsiniz (#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 üstbilgilerin bulunma olasılığını azaltmak için üstbilgi algılamayı sıkılaştırın. Bu, kod çözme hatalarına neden olur (#558).
- MP3: MP3 dosyalarının başında ID3 etiketleri arasında (ve öncesinde) boşluklara izin verin (#811,#5718).
- MP4: Ayıklayıcıdan bir parça biçimi yayınlamadan önce ilk örneğin katman değerine göz atarak audio/mpeg(MP3),audio/mpeg-L1veaudio/mpeg-L2MIME türleri arasında ayrım yapın (#2683).
- MP4: 1 MB'tan büyük bir stblkutusunun, dosyanın parçalanmamış olması gerektiği anlamına geldiğini varsayarak çok büyük dosyaların koklama verimliliğini artırın (#2650).
- Matroska: DTS-HD algılama desteği eklendi (#6225).
- MatroskaExtractor'da, birden fazla parça içeren dosyalarda arama işleminin yanlış olmasına neden olan sorun düzeltildi. İşaret noktaları artık ilgili parçalarıyla doğru şekilde ilişkilendiriliyor. Bu sayede daha hassas bir şekilde arama yapılabiliyor.
- MP4: ©mvn(hareket adı) ve©mvi(hareket dizini) meta verileri için destek eklendi. Bu meta veriler artıkMVNMveMVINkimlikleriyleFormat.metadataiçindeTextInformationFramenesneleri olarak yayınlanıyor (#2754).
- MPEG-TS: Zaman damgası olmayan PES paketlerinin neden olduğu IllegalArgumentExceptionileReorderingBufferQueuearasındakiIllegalArgumentExceptiondüzeltildi (#2764).
- MP4: Eksik stsdkutusu olan parçaları yok sayın (dosyanın tamamını ayrıştırmayı başaramamak yerine).
- HEIC hareketli fotoğrafları ayıklama desteği eklendi. HeifExtractorartık yerleştirilmiş video ve ses kanalları içeren HEIC dosyalarını ayrıştırabilir.
- MP3: FLAG_ENABLE_INDEX_SEEKINGdeğerini, mevcut olduğunda meta veri üstbilgilerinden (Xing ve VBRI gibi) bilgi aramayı tercih edecek şekilde değiştirin. Başka arama bilgisi yoksa dizine dayalı aramaya geri dönülür. Bu, arama meta verileri içeren dosyaların performansını artırır (#2839).
 
- İnceleyici:
- Medya inceleme yardımcı programları için özel bir ana sayfa görevi görecek yeni bir :media3-inspectormodülü kullanıma sunuldu. Bu modülde artık yeni birandroidx.media3.inspector.MetadataRetrieverbulunuyor. Buandroidx.media3.inspector.MetadataRetriever, hem meta veri hem de çerçeve çıkarma için birleşik bir API sağlayacak. Mevcutandroidx.media3.exoplayer.MetadataRetriever, bu yeni sürüm lehine kullanımdan kaldırıldı.
- Kare çıkarma 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çinBuilderaracılığıyla oluşturulmalıdır.
- FrameExtractor: Belirli bir zaman damgası gerektirmeden bir medya dosyasından temsili bir küçük resim karesi çıkarmak için getThumbnail()ekleyin.
 
- Medya inceleme yardımcı programları için özel bir ana sayfa görevi görecek yeni bir 
- Ses:
- AudioProcessorörneklerinin arama işleminden haberdar olmasını sağlayın.
- Özel ses çıkışı yollarını desteklemek için yeni AudioOutputProviderarayüzününDefaultAudioSink.Builderiçine yerleştirilmesine izin verin. Varsayılan değerAudioTrackAudioOutputProvider'dır.
- GainProcessoruygulamasında arama çubuğuyla arama yapma
- Parça biçimindeki AC-4 kod çözücü profilini ve düzey özelliklerini kullanma destek değerlendirmesi (#2580).
- Oynatma başlangıcında yönlendirme değişikliği geri aramalarının işlenmesinden kaynaklanan olası gecikmeleri önleyin (#2646).
- EAC3, EAC3-JOC ve AC-4 biçimleri için codec'in yeniden kullanılmasına izin verin (#1346).
- Sonic'da kayan nokta PCM örnekleri için destek ekleyin.
- ToFloatPcmAudioProcessor'da 16 bit PCM örnekleri için destek eklendi.
 
- Video:
- Farklı profillere sahip Dolby Vision içerikleri için codec'in yeniden kullanılmasını devre dışı bırakın.
 
- Metin:
- Dolby Vision içeriklerinde CEA-6/708 altyazılarının ayrıştırılması düzeltildi (#2775).
 
- Resim:
- DASH küçük resim parçası üzerinde kaydırma yapılırken oynatıcının takılmasına neden olan ScrubbingMode sorunu düzeltildi (#2815).
 
- DRM:
- Ek isteğe bağlı bilgilerin döndürülmesine izin vermek için MediaDrmCallbackyöntemlerinin dönüş türünübyte[]'den yeni birMediaDrmCallback.Responsetürüne değiştirin. Bu, kaynağı bozan bir değişikliktir ancak öncekibyte[]dönüş değerini döndürmeden öncenew Responseile sarmalayarak bozulmalar kolayca çözülebilir.
- URL ve gecikme gibi önemli istek bilgilerini
AnalyticsListener.onDrmKeysLoaded(#1001) numaralı hata koduna ekleyin.
- Temel hazırlık isteği verilerini URL parametresinden POST gövdesine taşıyın.
 
- Ek isteğe bağlı bilgilerin döndürülmesine izin vermek için 
- Muxer'lar:
- MediaMuxerCompat(framework- MediaMuxeriçin doğrudan değiştirme) eklendi.
- Hareketli fotoğraf oluşturmaya izin vermek için MuxerUtil.createMotionPhotoFromJpegImageAndBmffVideo()ekleyin.
- WebmMuxer,- OPUS,- VORBIS,- VP8ve- VP9medya akışlarının- webmdosya biçiminde çoklanmasına izin vermek için- WebmMuxerseçeneğini ekleyin.
 
- IMA uzantısı:
- Özel ProGuard kurallarının kaldırılması. Böylece uygulamalar, bunun yerine IMA Android arşivinde yayınlananları kullanabilir.
- IMA SDK'nın reklam tanımlayıcılarını Google Ad Manager ayarlarında belirtildiği şekilde işlemesi için Google Ad Manager ağ kodunu ayarlamaya yönelik yeni bir API olan ImaServerSideAdInsertionUriBuilder.setNetworkCode'yı ekleyin. Ağ kodları isteğe bağlıdır ancak tam hizmet akışı istekleri için önerilir. Ağ kodunu bulmak için bu makaleyi inceleyin.
- IMA bağımlılığını 3.37.0 sürümüne yükseltin. Bu sürümde temel kitaplıkta desugaring'in etkinleştirilmesi gerekir. Bu, bağımlı uygulamalar tarafından da etkinleştirilmelidir. IMA'nın yapılandırma notlarına bakın.
- SSAI URI oluşturucuda IMA DAI özel kullanıcı arayüzü seçenekleri desteklenir. Sunucu taraflı reklam ekleme için özel kullanıcı arayüzü seçenekleri arasında "Atlanabilir" ve "Bu Reklam Hakkında" oluşturma desteği yer alır. Bu özellik şu anda izin verilenler listesindeki belirli yayıncılar tarafından kullanılabilir. Bu değişiklik, özel kullanıcı arayüzü seçenekleri API'sine erişmek için IMA SDK sürümünü 3.38.0'a (sürüm notları) da yükseltir.
 
- Oturum:
- Aramanın yalnızca bilgi toplamak için mi yoksa oynatmayı başlatmak için mi yapıldığını belirtmek üzere MediaSession.Callback.onPlaybackResumptionparametresine yeni parametre eklendi (#1764).
- MediaSession.ControllerInfo.isTrusted, kendi uygulamasındaki denetleyicileri de güvenilir olarak bildirecek şekilde güncellendi (#2542).
- Bildirim güncellemesini manuel olarak tetiklemek için MediaSessionService.triggerNotificationUpdatesimgesini ekleyin (#1833).
- Özel komut yöntemlerine ProgressListenerekleyin.
- MediaLibrarySession.Builder.setLibraryErrorReplicationModeiçin varsayılan değeri ölümcül olmayan olarak değiştirin.
- Contextparametresini- MediaButtonReceiver.onForegroundServiceStartNotAllowedExceptionöğesine ekleyin- MediaButtonReceiver.onForegroundServiceStartNotAllowedException(#2625).
- Cilt aracılığıyla getirmek yerine PlaybackInfoplatformundan ses kontrolü kimliğini okuyun. Bu, oynatma türü ve ses kontrolü kimliğinin atomik olarak okunmasını ve birbirleriyle eşleşmesini sağlar.
- ACTION_UPönemli etkinliklerinin, özel işleme için geri çağırma işlevine iletilmeden önce filtrelendiği hata düzeltildi. Bu, media1'in yaptığı ve platformun yaptığı işlemlerle eşitlik sağlar (#2637).
- Komut kullanılamadığında bile getCurrentTimeline()işlevininPlayerWrappertarafından çağrılması hatası düzeltildi (#2665).
- Bir mesajın ana döngüleyicinin mesaj kuyruğunda bırakılması nedeniyle hizmet sonlandırıldıktan sonra bellek sızıntısına neden olan hata düzeltildi (#2692).
- MediaBrowserile eski bir oturum uygulamasına bağlandığında, özel komutlar yalnızca özel işlem, eski oturumun- PlaybackStateCompatbölümünde özel işlem olarak tanıtılıyorsa oturuma gönderilir. Diğer tüm özel işlemler hizmete gönderilir.
- Oturum tarafından bir ses oturumu kimliği ayarlandığında medya denetleyicilerini bilgilendirmek için onAudioSessionIdChangeduygulandı (#244).
- KEYCODE_HEADSETHOOKve- onStartCommand()'ye medya tuşu etkinliği- Intentgeldiğinde oynatıcının başlatılamamasına neden olan hata düzeltildi. Bu sorun, "KEYCODE_HEADSETHOOK" öğesini- KEYCODE_MEDIA_PLAY_PAUSEgibi işleyerek düzeltildi (#2816).
- Oturum ile denetleyici arasında yüzey boyutunun iletilmemesi nedeniyle demo oturumunda video efektlerinin uygulanamamasına neden olan hata düzeltildi. Kumanda kullanıyorsanız ve oynatıcınız setVideoSurfaceHolderçağrısını işleyemiyorsa bu değişiklik, oynatıcınızın çalışmasını engelleyebilir.
- String- CharSequenceolmayan meta veri değerlerinin (ör. span stilinde dizeler) yayılmasını düzeltin (#2853).
 
- Aramanın yalnızca bilgi toplamak için mi yoksa oynatmayı başlatmak için mi yapıldığını belirtmek üzere 
- UI:
- ProgressStateWithTickIntervalsınıfını ve ilgili- rememberProgressStateWithTickIntervalComposable'ı- media3-ui-composemodülüne ekleyin. Bu durum tutucu,- demo-composeiçinde mevcut konumu ve süreyi metin biçiminde göstermek için kullanılır.
- Playersesinin kapatılmasını sağlayan- ui-composeöğesine- MuteButtonStateekleyin. Bu durum tutucu,- demo-composeiçinde sessize alma/sesi açma açma/kapatma düğmesini göstermek için kullanılır.
- ProgressStateWithTickCountsınıflarını ve bunlara karşılık gelen- rememberProgressStateWithTickCountComposable'ı- media3-ui-composemodülüne ekleyin. Bu durum tutucu,- demo-composeiçinde ilerlemeyi yatay, salt okunur bir ilerleme çubuğu olarak göstermek için kullanılır.
- ContentFrameComposable'ı,- PlayerSurfaceyönetimini en boy oranı yeniden boyutlandırma ve örtü ile birleştiren- media3-ui-compose'ye ekleyin.
- API 34 platformunda, Compose AndroidViewiçindeSurfaceViewkullanılırken videoların gerilmesine/kırpılmasına neden olan ve dolayısıylaSURFACE_TYPE_SURFACE_VIEWileContentFramevePlayerSurfacecomposable'larını etkileyen bilinen bir hatayı geçici olarak düzeltin (#1237, #2811).
- Yeni bir media3-ui-compose-material3modülü oluşturun ve bu modüle Material3 temalı Composables'ı (PlayPauseButton, NextButton, PreviousButton, SeekBackButton, SeekForwardButton, RepeatButton, ShuffleButton, MuteButton) ekleyin.
- PlayerViewkonumuna medya rotası düğmesi yerleştirme desteği eklendi.
 
- HLS uzantısı:
- HLS geçiş reklamı atlama özelliklerini ayrıştırın.
- HLS oynatma listesindeki ve öğe listesi dokümanındaki atlama kontrolü özelliklerini, herkese açık erişim için 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 düşmesine neden olan hata düzeltildi (#2760).
- Oynatma listesindeki belirli bir konumun segment dizinini bulmak için ikili arama kullanma (#2826).
 
- DASH uzantısı:
- Hiyerarşik olmayan data:URI manifestiyle DASH akışları oynatılırkenUnsupportedOperationExceptionsorununu düzeltin (#2688).
- LiveConfiguration, yayınlandığında ve medya öğesi kullanıcı tarafından güncellendiğinde- DashMediaSource'nin- MediaItemtarafından sağlanan değere sıfırlanır (#2606).
- Geçersiz manifest güncellemelerinin neden olduğu ve oynatıcı hatası olarak bildirilmeyen kilitlenmeleri önleyin (#2805).
 
- Hiyerarşik olmayan 
- RTSP uzantısı:
- H264 ve H265 için parçalanmış NAL birimleri işlenirken eksik RTP paketlerinin hatasını işleme (#2613).
 
- Kod çözücü uzantıları (FFmpeg, VP9, AV1 vb.):
- AV1 Uzantısı: AV1 yazılım kod çözücüsü artık yüksek performanslı dav1dkitaplığını kullanıyor. Bu kitaplık, kod çözme hızını artırmak için öncekilibgav1uygulamasının yerini alıyor.
 
- AV1 Uzantısı: AV1 yazılım kod çözücüsü artık yüksek performanslı 
- Yayın uzantısı:
- CastPlayer.Builderekleyin. Bu,- CastPlayercihazının hem yerel hem de Cast oynatma yapmasını sağlar. Yalnızca Cast oynatmayı destekleyen eski- CastPlayerdavranışını korumak için- RemoteCastPlayerkullanabilirsiniz. Önceden var olan- CastPlayeroluşturucular eski davranışlarını korur ancak bunun yerine- CastPlayerveya- RemoteCastPlayeroluşturucuların kullanılması önerilir.
- DefaultMediaItemConverteriçinde boş olmayan bir MIME türünün zorunlu kılınmasını durdurun.
- Kullanılabiliyorsa DefaultCastOptionsProvider#toMediaQueueItemiçinde kullanılacak Cast MEDIA_TYPE'ı belirlemek içinMediaItem.mediaMetadata.mediaTypeöğesini kullanın.
- DefaultCastOptionsProvideruygulamasında uzaktan yerel aktarımları etkinleştirin.
- Oturum demosunda Cast desteği eklendi.
- Composable kullanıcı arayüzünde medya rotası düğmesinin gösterilmesi için destek ekleyin.
- İşlem çubuğu menüsünde medya rotası düğmesi görüntüleme desteği eklendi.
- Medya rotası düğmesinin View kullanıcı arayüzü olarak gösterilmesi için destek eklendi.
 
- Test yardımcı programları:
- FakeClocköğesinin otomatik ilerleme davranışı için maksimum zaman farkı ekleyin. Varsayılan olarak 1 saniyedir ancak- FakeClock.Builderaracılığıyla yapılandırılabilir.
- RobolectricUtil.runMainLooperUntil(ve- runLooperUntil) için iletiler 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.
- CapturingRenderersFactorytutarındaki bütçe,- test-utilskampanyasından- test-utils-robolectrickampanyasına aktarılacak.
 
- Desteği sonlandırılan sembolleri kaldırın:
- Desteği sonlandırılan DefaultPreloadManageroluşturucusunu kaldırın. Bunun yerineDefaultPreloadManager.Builderkullanın.
- Kullanımdan kaldırılan EditedMediaItemSequenceoluşturucuları kaldırıldı. Bunun yerineEditedMediaItemSequence.Builderkullanın.
 
- Desteği sonlandırılan 
Sürüm 1.8.0
Sürüm 1.8.0
30 Temmuz 2025
1.8.0 sürümü bu commit'leri içerir.
- Ortak kitaplık:
- ForwardingSimpleBasePlayeriçinde oyuncu değişikliği yapma desteği eklendi.
 
- ExoPlayer:
- Karışık çalma modu için ExoPlayerarayüzüne alıcı ekleyin (#2522).
- DefaultAudioSinköğesine birden fazla iş parçacığından erişilirse daha net bir şekilde istisna oluşturulur. Bu durum, oynatıcı dışında- RendererCapabilities.getFormatSupportçağrısından kaynaklanı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ılan örnekten farklı bir örnek kullandığınızdan emin olun (#1191).
- TV'lerdeki stereo olmayan ses biçimlerinin DefaultTrackSelectortarafından desteklenmiyor olarak işaretlenmesi hatası 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.
- Contextöğesinden- ExoPlayer.Builderöğesine iletilen sanal cihaz kimliğinin kullanılması için destek eklendi.
- Sarma modunda dinamik planlamayı varsayılan olarak etkinleştirin.
- Bir öğenin sonuna gitmeye çalışırken kaynağın gereksiz yere yeniden yüklenmesini önleyin.
- Sarma modunda varsayılan olarak MediaCodec.BUFFER_FLAG_DECODE_ONLYuygulamasını kullanın.
- Önceden yükleme iş parçacığından farklı bir oynatma iş parçacığına sahip bir ExoPlayertarafındanPreloadMediaSourceoynatıldığındaIllegalStateExceptionoluşturulur (#2495).
- Varsayılan uygulama ile cloneAndMoveöğesiniShuffleModeöğesine ekleyin (#2226).
- renderçağrısı gerekmiyorsa- Renderer.getMinDurationToProgressUs'nın varsayılan davranışını daha büyük bir değer döndürecek şekilde değiştirin.
- Durdurulmuş durumdayken son kareye gitme işlemi yapıldığında dahili planlamanın son kareyi geciktirmesine neden olan hata düzeltildi. Şimdilik hata düzeltmesi yalnızca ExoPlayer.Builder.experimentalSetDynamicSchedulingEnabledetkinse geçerli olur.
- ExoPlayer.setScrubbingModeEnabled(boolean)yöntemini ekleyin. Bu, oynatıcıyı sık sık yapılan arama işlemleri (ör. kullanıcının kaydırma çubuğunu sürüklemesi) için optimize eder. Sarma modunun davranışı,- ExoPlayerve- ExoPlayer.Builderüzerinde- setScrubbingModeParameters(..)ile özelleştirilebilir.
- Sarma modunda kısmi arama toleransının özelleştirilmesine izin verilir.
- Sarma modunda codec'in çalışma hızını artırın.
- AdsMediaSourceiçeriğindeki hazırlama hatalarının hiçbir zaman bildirilmemesine neden olan hata düzeltildi (#2337).
- MergingMediaSource'daki bellek sızıntısı düzeltildi. Örneğin, altyazılar yan yüklenirken bu sızıntı oluşuyordu (#2338).
- Belirli medya öğeleri için CMCD günlük kaydını devre dışı bırakmak üzere CmcdConfiguration.Factory'nınnulldöndürmesine izin verin (#2386).
- Varsayılan görüntü arabellek boyutunu 128 KB'tan (metin parçalarından kopyalama-yapıştırma hatası) 26 MB'a yükseltin. Bu boyut, 50 MP Ultra HDR görüntüler için yeterlidir (#2417).
- Uygulamaların, belirtilen başlangıç konumu ve süresiyle tek bir medyayı önceden önbelleğe almasına olanak tanıyan PreCacheHelperişlevi eklendi.
- DefaultPreloadManageriçinde belirtilen konumdan önceden yükleme desteği eklendi.
 
- Karışık çalma modu için 
- Dönüştürücü:
- Video kodlama ayarlarının yonga setine özgü optimizasyonlarını sağlayan CodecDbLiteeklendi.
- CodecDB Lite ayarlarının optimizasyonunu etkinleştirmek için setEnableCodecDbLiteişaretiniDefaultEncoderFactoryöğesine ekleyin. Bu işaret varsayılan olarak false değerine ayarlanır.
- Başlangıçtaki bir boşluğu (addGap()ile eklenir) artık sessiz sesle doldurmak içinEditedMediaItemSequence.BuilderiçindeexperimentalSetForceAudioTrack(true)değerinin açıkça ayarlanması gerekir. Boşluk dizinin ortasındaysa bu işaret gerekli değildir.
- Muxerarayüzünü- media3-transformerkonumundan- media3-muxerkonumuna taşıyın.
- Medya öğesini resim olarak içe aktarmak için MediaItem.Builder().setImageDuration(long)ayarını zorunlu kılın.
- Kırpma işlemi sırasında, oyunculara kırpma başlangıç noktasından önceki ana kare ile kırpma başlangıç noktası arasındaki örnekleri yoksaymalarını söylemek için MP4 düzenleme listesi içeren Transformer.Builder().experimentalSetMp4EditListTrimEnabled(boolean)öğesini ekleyin.
- Composition Demo uygulamasını Kotlin ve Jetpack Compose kullanacak şekilde güncelleyin ve dizileri 2x2 veya PiP düzeninde yerleştirmek için özel bir VideoCompositorSettingsekleyin.
 
- Video kodlama ayarlarının yonga setine özgü optimizasyonlarını sağlayan 
- Ayıklayıcılar:
- Parçalanmış MP4 dosyalarından meta verileri ayrıştırma (#2084).
- JPEG: Başında Exif segmenti olmayan hareketli fotoğrafları destekler (#2552).
- Birden fazla sidxatomu içeren parçalanmış MP4'te arama için destek ekleyin. Bu davranış,FLAG_MERGE_FRAGMENTED_SIDXişaretininFragmentedMp4Extractorüzerinde kullanılmasıyla 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 aramasına geri dönme (#2327).
- H.265 SEI birimlerinin ayrıştırılmasıyla ilgili sorunu düzelterek tanınmayan SEI türlerinin tamamen atlanmasını sağladık (#2456).
- WavExtractortüründeki bir dosya ayrıştırılırken ses biçimi için üstbilgi uzantısının SubFormat verilerini kullanacak şekilde- WavExtractoröğesini güncelleyin.- WAVE_FORMAT_EXTENSIBLE
- 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şler. Bu sayede, iPhone'un ön kamerasıyla çekilen yansıtılmış videoların doğru şekilde yukarı bakması sağlanır ancak y ekseninde yanlış şekilde yansıtılır (#2012).
- MP3: FLAG_ENABLE_CONSTANT_BITRATE_SEEKING(_ALWAYS)nedeniyle sabit bit hızlı arama işlemine geri dönüldüğünde, aranamayan Xing, VBRI ve benzeri değişken bit hızlı meta verilerden elde edilen süre ve veri boyutunu kullanın (#2194).
 
- Ses:
- Ses oynatma, medyanın sonuna çok yakın bir noktada başlatıldığında AnalyticsListener.onAudioPositionAdvancingişlevinin çağrılmamasına neden olan hata düzeltildi.
- ChannelMappingAudioProcessorve- TrimmingAudioProcessor'da tüm doğrusal PCM örnek biçimleri için destek ekleyin.
- CompositionPlayeriçinde ses boşlukları için destek ekleyin.
- BaseAudioProcessor#reset()adlı kişiden- BaseAudioProcessor#flush()adlı kişiye yapılan sahte aramayı kaldırın.
- DefaultAudioMixer'da sabit güç upmixing/downmixing'ine izin verin.
- ChannelMappingAudioProcessor,- TrimmingAudioProcessorve- ToFloatPcmAudioProcessoröğelerini herkese açık hale getirin (#2339).
- En iyi çaba tahmini yerine DefaultAudioSink'deki yetersizlikleri tespit etmek içinAudioTrackPositionTracker'teAudioTrack#getUnderrunCount()kullanın.
- Ses çıkış cihazından beklenmedik konum kayması durumunda ses zaman damgası düzeltmesini iyileştirir.
- Bluetooth cihazlarına bağlandıktan sonra duraklatmadan devam ettirildiğinde ilk 10 saniye boyunca A/V senkronizasyonunun bozulmasına neden olan hata düzeltildi.
- AnalyticsListener.onAudioPositionAdvancingöğesinin, sesin ilerlemeye başladığı zamanı değil, ilk ölçümün zamanını bildirmesine neden olan hata düzeltildi.
- Bazı cihazlarda stereo sese geri dönüş yapıldıktan sonra çok kanallı sese geri dönme sorunu düzeltildi (#2258).
 
- Ses oynatma, medyanın sonuna çok yakın bir noktada başlatıldığında 
- Video:
- Ayrılmış yüzey geçici çözümünü "lenovo" ve "motorola" cihazlara genişletme (#2059).
- Ses örnekleri tam olarak istenen konumda başlamadığında başlangıçta video karelerinin sorunsuz şekilde yayınlanması iyileştirildi.
- Ayrılmış yüzey geçici çözümünü "realme" cihazlara genişletme (#2059).
- Yalnızca kod çözme giriş arabelleklerini sıraya alırken ExoPlayerişaretini eklemek için deneyselMediaCodec.BUFFER_FLAG_DECODE_ONLYAPI'si eklendi. Bu işaret, kod çözücüye yalnızca kod çözme arabelleklerini atlama sinyali vererek daha hızlı arama yapılmasını sağlar.DefaultRenderersFactory.experimentalSetEnableMediaCodecBufferDecodeOnlyFlagile etkinleştirin.
- Yazılım video codec'leri için codec performansı kontrollerini iyileştirir. Bu durum, bazı ek parçaların EXCEEDS_CAPABILITIESolarak işaretlenmesine neden olabilir.
- Bazı cihazlarda VP9 Widevine oynatma hatalarını düzeltme (#2408).
 
- Metin:
- MP4 dosyalarında VobSub parçaları için destek eklendi (#2510).
- Bir altyazı segmenti ilk başta yüklenemediğinde ve daha sonra başarıyla yüklendiğinde, ardından birkaç boş altyazı segmenti geldiğinde yaşanan oynatma duraklamasını düzeltin (#2517).
- Altyazılar etkinleştirildiğinde devam eden bir ipucunun gösterilmesi için SSA ve SubRip'i düzeltin (#2309).
- Altyazı hatası içeren bir akıştan boş altyazı parçası içeren bir canlı yayına geçiş yaparken oynatmanın takılması sorunu düzeltildi (#2328).
- B kareleri içeren H.262 akışları oynatılırken bozuk çıkan CEA-608 altyazıları düzeltildi (#2372).
- Matroska dosyalarında CodecId = S_TEXT/SSAile SSA altyazıları için destek ekleyin. Daha önceMatroskaExtractoryalnızca SubStation Alpha altyazılarının "gelişmiş" (v4+) varyantını temsil etmesi amaçlananCodecId = S_TEXT/ASSbiçimini destekliyordu (ancak ExoPlayer'ın ayrıştırma mantığı her iki varyant için de aynıdır) (#2384).
- SubStation Alpha (SSA) altyazı dosyalarında layerözelliğine destek ekleyin. Bu özellik, ekranda aynı anda birden fazla ipucu gösterildiğinde ipuçlarının z sırasını tanımlamak için kullanılır (#2124).
 
- Meta veri:
- Timeline'dan medya süresini ve- Timeline'yı alma desteği eklendi ve bu API, örnek tabanlı- AutoCloseableAPI'ye taşındı.- MetadataRetriever- Builderkullanarak- MediaItemiçin bir örnek oluşturun, ardından meta veriler için- ListenableFuture'leri almak üzere- retrieveTrackGroups(),- retrieveTimeline()ve- retrieveDurationUs()'i çağırın. Önceki statik yöntemler kullanımdan kaldırıldı (#2462).
 
- Resim:
- Çok büyük (ör. 50 MP) resimleri görüntülemeye çalışırken uygulamanın BitmapFactoryImageDecoderiçindePlayerViewkaynaklıCanvas: trying to draw too large bitmap.ile kilitlenmesini önlemek için çözümlenmiş bit eşlemleri ekran boyutuyla sınırlayın.
- DefaultRenderersFactory.getImageDecoderFactory()işlevinin imzasını- Contextparametresini alacak şekilde değiştirin.
- CompositionPlayeriçinde kullanılan maksimum bit eşlem çıkış boyutunu,- Transformeriçinde kullanılanla aynı olacak şekilde ayarlayın (yani- CompositionPlayer,- ExoPlayer'nin aksine bit eşlemleri çözerken ekran boyutunu dikkate almaz).
 
- Çok büyük (ör. 50 MP) resimleri görüntülemeye çalışırken uygulamanın 
- DRM:
- HTTP istek üstbilgilerinin doğru şekilde uygulanabilmesi için OfflineLicenseHelper.newWidevineInstanceişlevineMediaItem.DrmConfigurationkabul eden yeni bir aşırı yükleme ekleyin (#2169).
 
- HTTP istek üstbilgilerinin doğru şekilde uygulanabilmesi için 
- Etki:
- Giriş yönünden bağımsız olarak en kısa kenarın her zaman verilen değere karşılık gelmesini sağlayan PresentationoluşturanPresentation.createForShortSide(int)işlevini ekleyin.
 
- Giriş yönünden bağımsız olarak en kısa kenarın her zaman verilen değere karşılık gelmesini sağlayan 
- Muxer'lar:
- Parçalanmış MP4'teki ses örnekleri için doğru örnek işaretlerinin ayarlanmamasına neden olan hata düzeltildi.
- writeSampleData()API artık- MediaCodec.BufferInfoyerine muxer'a özel- BufferInfosınıfını kullanıyor.
- Varsayılan olarak false değerine sahip Muxer.Factory#supportsWritingNegativeTimestampsInEditListözelliğini ekleyin.
 
- IMA uzantısı:
- Bir reklamdaki yükleme hatasının yanlışlıkla başka bir reklam grubunu geçersiz kılmasına neden olan hata düzeltildi.
- VOD penceresinin sonundaki reklam gruplarının oynatmayı duraklatmasına neden olan hata düzeltildi.
Başlangıç zamanı pencereden sonra olan reklam grupları artık MediaPeriodQueuesırasına alınmıyor (#2215).
 
- Oturum:
- Ayrıcalıklı olmayan üçüncü taraf Media3 denetleyicilerinden gelen bağlantıların yoksayıldığı hata düzeltildi.
- Eski bir MediaBrowserServiceCompatcihazına özel komutlar gönderirken kullanılabilir komutlar için işareti kaldırın. Bu, eski bir uygulamaya bağlandığında eski kumandaların/tarayıcıların davranışıyla aynıdır.
- Oynatıcının ilk oynatma hatasının yanlışlıkla kalıcı özel 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 IllegalStateExceptionsneden olabildiği hata düzeltildi.
- Oturum tarafından işlenmeyen denetleyici işlemlerinin, denetleyiciyi geçersiz bir durumda bırakmasına neden olan hata düzeltildi.
- StrictMode güvenli olmayan başlatma ihlali uyarısını düzeltin (#2330).
- Oynatıcı ana iş parçacığından farklı bir uygulama iş parçacığında çalıştırılırken ana iş parçacığından setSessionExtrasçağrıldığındaIllegalStateException'ye (#2265) neden olan hata düzeltildi.
- Bir oynatıcı, medya öğeleri hazırlanmadan veya oynatılmadan ayarlanırsa otomatik olarak bildirim göstermeyin
(#2423https://github.com/androidx/media/issues/2423). Bu davranış, MediaSessionService.setShowNotificationForIdlePlayerüzerinden yapılandırılabilir.
- Tüm veya seçili denetleyiciler için özel PlaybackExceptionekleyin.
- MediaControllercihazda canlı yayında geri sarmanın- IllegalArgumentExceptionneden olabildiği hata düzeltildi.
- Android Auto kullanıcı arayüzünde (ve platform medya oturumundan bu bilgileri kullanan diğer denetleyicilerde) konum artefaktlarını önlemek için canlı yayınlarda, platform medya denetleyicileri için oynatma konumunun yayınlanmasını ve mevcut öğede arama yapma özelliğini durdurun (#1758).
- Eski bir MediaBrowserServiceCompatcihazına bağlıMediaBrowsercihazınıngetLibraryRootbölümüne null değerinin iletilmesininNullPointerExceptionoluşturması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öğesinin platform oturumlarının- MediaMetadataile paylaşılmasına neden olan hata düzeltildi. Denetleyicilerin medyayı yeniden istemesine izin vermek için URI'yi kasıtlı olarak paylaşmak istiyorsanız bunun yerine- MediaItem.RequestMetadata.mediaUrideğerini ayarlayın.
 
- UI:
- Yeniden kullanılabilir bileşenlerdeki PlayerSurfaceöğesinin düzgün çalışmaması hatası düzeltildi (#2493).LazyColumn
- İlk düğme durumlarını ayarlama ile durumdaki değişikliği (ör. simge şekilleri veya etkinleştirme) gözlemleme arasında boşluk oluşmasına neden olan bir Compose hatası düzeltildi. Gözlem dönemi dışında oynatıcıda yapılan değişiklikler artık algılanıyor (#2313).
- SeekBackButtonStateve- SeekForwardButtonStateiçin- media3-ui-composemodülüne durum tutucular ve composable'lar ekleyin.
- ExoPlayer'ın sarma modu için PlayerControlViewdesteği eklendi. Etkinleştirildiğinde, kullanıcı kaydırma çubuğunu sürüklemeye başladığında oynatıcıyı kaydırma moduna geçirir, her hareket için birplayer.seekToçağrısı yapar ve dokunma işlemi ekrandan kaldırıldığında kaydırma modundan çıkar. Bu entegrasyon, XML'detime_bar_scrubbing_enabled = trueveya Java/Kotlin'desetTimeBarScrubbingEnabled(boolean)yöntemiyle etkinleştirilebilir.
- PlayerSurface, boş değer atanabilir bir- Playerbağımsız değişkenini kabul etsin.
 
- Yeniden kullanılabilir bileşenlerdeki 
- İndirilenler:
- Aşamalı akışlar için kısmi indirme desteği eklendi. Uygulamalar, DownloadHelperile aşamalı bir akış hazırlayabilir ve indirme işleminin kapsaması gereken zamana dayalı medya başlangıç ve bitiş konumlarını belirterek yardımcıdanDownloadRequestisteyebilir. DöndürülenDownloadRequest, çözümlenmiş bayt aralığını taşır. Bu aralıklaProgressiveDownloaderoluşturulabilir ve içerik buna göre indirilebilir.
- Statik DownloadHelper.forMediaItem()yöntemlerinin yerine kullanılanDownloadHelper.Factoryeklendi.
- SegmentDownloaderuygulamaları için- Factoryekleyin.
- Uyarlanabilir akışlar için kısmi indirme desteği eklendi. Uygulamalar, DownloadHelperile uyarlanabilir bir akış hazırlayabilir ve indirme işleminin kapsayacağı zamana dayalı medya başlangıç ve bitiş konumlarını belirterek yardımcıdanDownloadRequestisteyebilir. DöndürülenDownloadRequest, çözümlenmiş 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 eklendi. Uygulamalar, 
- Cronet uzantısı:
- Otomatik çerez işleme özelliği eklendi (#5975).
 
- HLS uzantısı:
- Arabellekte kullanılabilir parça olmadığında HlsSampleStreamWrapperarabelleğin içinde 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ı sorunu düzeltildi (#2299).
- CAN-BLOCK-RELOAD=YESsunucu tarafından karşılanmadığında hedef sürenin yarısı kadar bekleyerek aşırı yeniden yüklemeleri önleme (#2317).
- Bir ara rulo reklamdan önce geçiş reklamı yayını başlatıldığında oynatmanın duraklatılması ve yanlış reklam için öğe listesi çözünürlüğünün denenmesiyle ilgili hata düzeltildi (#2558).
- Alıntılanmış dize özellik değerlerinde \f(form feed) kabul etmek için oynatma listesi ayrıştırma işlemi düzeltildi (#2420).
- Aynı kimliğe sahip geçiş reklamlarının güncellenmesi desteklenir (#2427).
- Canlı yayında yüklenecek segment kalmadığında oynatma listesi yükleme hatalarının bazen yayılmamasına neden olan hata düzeltildi (#2401https://github.com/androidx/media/issues/2401).
- Altyazı yorumlarını, ses yorumlarının gruplandırılmasına benzer şekilde NAME etiketiyle gruplandırın (#1666).
- X-ASSET-LIST ve HlsInterstitialsAdsLoaderile canlı yayınları destekleyin.
 
- Arabellekte kullanılabilir parça olmadığında 
- DASH uzantısı:
- Hızlı oynatma uyarlama grubunun, ana uyarlama grubuyla birleştirilerek geçersiz bir TrackGroupoluşturması sorunu düzeltildi (#2148).
- Yeni sürenin ötesindeki örnekler oluşturma işlem hattı tarafından okunmuşsa DASH dönemi süresinin kısaltılmasının istisna oluşturmasına neden olan hata düzeltildi (#2440).
- CMCD sorgu parametreleri kullanılırken yönlendirmenin takip edilmemesine neden olan hata düzeltildi (#2475).
 
- Hızlı oynatma uyarlama grubunun, ana uyarlama grubuyla birleştirilerek geçersiz bir 
- RTSP uzantısı:
- RFC 7798#4.4.2 uyarınca H265 için RTP Toplama Paketi desteği eklendi (#2413).
- Bir HTTP 302 yanıtı işlenirken sağlanan konum URI'sinin kullanılması için RtspClientdüzeltildi (#2398).
- Sondaki boşluk karakterleri içeren satırların bulunduğu 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.setAllowInvalidateSelectionsOnRendererCapabilitiesChangeişleminin etkili olmaması hatası düzeltildi (#2258).
 
- Ses kod çözücü uzantıları için 
- Yayın uzantısı:
- Test yardımcı programları:
- Oyuncunun belirtilen bir konuma ulaşması için advance(player).untilPositionAtLeastveuntilMediaItemIndexöğeleriniTestPlayerRunHelperöğesine ekleyin. Çoğu durumda bu yöntemler, mevcutuntilPositionveuntilStartOfMediaItemyöntemlerinden daha güvenilirdir.
- FakeDownloaderöğesini diğer testlerde yeniden kullanmak için- test-utils-robolectricmodülüne taşıyın.
- transformer.TestUtil.addAudioDecoders(String...),- transformer.TestUtil.addAudioEncoders(String...)ve- transformer.TestUtil.addAudioEncoders(ShadowMediaCodec.CodecConfig, String...)kaldırıldı. Bunun yerine, gölge kodlayıcıları ve kod çözücüleri yapılandırmak için- ShadowMediaCodecConfigkullanın.
- ShadowMediaCodecConfigtarafından bildirilen codec adlarında "exotest" öneki "media3" ile değiştirildi.
 
- Oyuncunun belirtilen bir konuma ulaşması için 
- Desteği sonlandırılan sembolleri kaldırın:
- Kullanımdan kaldırılan SegmentDownloaderoluşturucusuSegmentDownloader(MediaItem, Parser<M>, CacheDataSource.Factory, Executor)ve alt sınıflarındaki (DashDownloader,HlsDownloaderveSsDownloader) ilgili oluşturucular kaldı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()politikasını 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ılan- BaseAudioProcessorkaldırıldı.- commonmodülünde- BaseAudioProcessorözelliğini 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 sürümüyle aynı koda sahiptir ve yanlışlıkla kararlı olarak etiketlenen bir alfa sürümü olan 1.7.0'dan "daha yeni" bir sürüm olarak görünmesi için yayınlanmaktadır (aşağıya bakın).
Sürüm 1.7.0
16 Mayıs 2025
Bu sürüm 1.7.0-alpha01 olmalıydı ancak maven.google.com'da yanlışlıkla 1.7.0 (ör. kararlı) olarak etiketlendi. Lütfen kullanmayın. 1.6.1 sürümünde kalabilir veya 1.7.1 sürümüne (1.6.1 ile aynı koda sahip) yükseltebilirsiniz.
Sürüm 1.6.0
1.6.1
14 Nisan 2025
androidx.media3:media3-*:1.6.1 iptal edilir.
1.6.1 sürümü bu commit'leri içerir.
- Ortak kitaplık:
- Yeni bir pitchdeğeriylePlaybackParameters.withPitch(float)kolayca kopyalamak içinPlaybackParameters.withPitch(float)yöntemi eklendi (#2257).PlaybackParameters
 
- Yeni bir 
- ExoPlayer:
- Bir sonraki medya öğesinin başlatılması sırasında kurtarılabilir oluşturucu hatası nedeniyle medya öğesi geçişinin başarısız olmasına neden olan sorun düzeltildi (#2229).
- ProgressiveMediaPeriod, hazırlanmadan önce- PreloadMediaSourcekendi- getBufferedDurationUs()'ünü çağırmaya çalıştığı için- IllegalStateExceptionhatası vermesi sorunu 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[][])özelliğinin kullanılabildiğinden emin olun. Kullanıcının, kaldırılan reklam grupları için boş veya null olabilen bir süre dizisi iletmesi gerekir (#2267).
 
- Ayıklayıcılar:
- MP4: alternate_groupöğesinitkhdkutusundan ayrıştırın ve her parçanınFormat.metadatabölümündeMp4AlternateGroupDatagirişi olarak gösterin (#2242).
 
- MP4: 
- Ses:
- Kısa içeriklerden oluşan bir oynatma listesi oynatılırken konumun takılabildiği boşaltma sorunu düzeltildi (#1920).
 
- Oturum:
- Platform MediaSessiongeri çağırmaları için toplama zaman aşımını 500 milisaniyeden 100 milisaniyeye düşürün ve uygulamaların bu değeri yapılandırmasına olanak tanıyan deneysel bir ayarlayıcı ekleyin.
- Kullanıcı tarafından kapatılan bildirimlerin yeniden görünmesine neden olan sorun düzeltildi (#2302).
- Oturumun, sarmalanmış oynatıcı aslında boşken tek öğeli bir zaman çizelgesi döndürmesine neden olan hata düzeltildi. Bu durum, sarmalanmış oynatıcıda COMMAND_GET_CURRENT_MEDIA_ITEMkullanılabilirkenCOMMAND_GET_TIMELINEkullanılamadığında ve sarmalanmış oynatıcı boş olduğunda meydana gelir (#2320).
- MediaSessionService.setMediaNotificationProviderişlevinin, hizmetle- setForegroundServiceTimeoutMsgibi başka etkileşimler gerçekleştirdikten sonra sessizce yoksayılmasına neden olan hata düzeltildi (#2305).
 
- Platform 
- UI:
- PlayerSurfaceözelliğinin- ExoPlayer.setVideoEffectsve- CompositionPlayerile çalışmasını sağlayın.
- PlayerSurfaceöğesinin yeni bir- Playerile yeniden oluşturulamaması hatası düzeltildi.
 
- HLS uzantısı:
- HLS medyası için CmcdDataiçinde parça süresinin ayarlanmaması nedeniyle şifrelenmiş medya segmentleri işlenirken onaylama hatasına neden olan sorun düzeltildi (#2312).
 
- HLS medyası için 
- RTSP uzantısı:
- RTSP oturumunu TCP kullanacak şekilde yapılandırmak için RTSPT şemalı URI desteği eklendi (#1484).
 
- Yayın uzantısı:
- Oynatma listesi meta verileri için destek eklendi (#2235).
 
1.6.0
26 Mart 2025
androidx.media3:media3-*:1.6.0 iptal edilir.
1.6.0 sürümü bu commit'leri içerir.
- Ortak kitaplık:
- AudioManagerCompatve- AudioFocusRequestCompatdeğerlerini ekleyerek- androidx.media'deki eşdeğer sınıfları değiştirin.
- Kotlin'i 1.9.20'den 2.0.20'ye yükseltin ve Compose Compiler Gradle eklentisini kullanın. KotlinX Coroutines kitaplığı 1.8.1 sürümünden 1.9.0 sürümüne yükseltildi.
- Format.toBundle(boolean excludeMetadata)yöntemini kaldırın, bunun yerine- Format.toBundle()yöntemini kullanın.
- SimpleBasePlayer'daki hatayı düzeltme:- nullile- setPlaylist'dan sonra- State'da yeni bir- currentMediaItemIndexayarlamak meta verileri yeniden değerlendirmez (#1940).- MediaMetadata
- Diğer sınıflardaki güncellemeleri yönetmeyi kolaylaştırmak için SimpleBasePlayer.Stateerişimini korumalıdan herkese açık olarak değiştirin (#2128).
 
- ExoPlayer:
- MediaExtractorCompatplatformuyla eşdeğer özellikler sağlayan yeni bir sınıf olan- MediaExtractor'ı ekleyin.
- MediaCodecVideoRendererkullanılarak oynatma için deneysel "ExoPlayer" ön ısıtma desteği eklendi.- DefaultRenderersFactory'ı- experimentalSetEnableMediaCodecVideoRendererPrewarmingüzerinden yapılandırarak- ExoPlayer'e ikincil bir- MediaCodecVideoRenderersağlayabilirsiniz. Etkinleştirilirse- ExoPlayer, medya öğesi geçiş gecikmesini azaltmak için oynatma sırasında ardışık medya öğelerinin videosunu önceden işler.
- DefaultLoadControl'deki- bufferForPlaybackMsve- bufferForPlaybackAfterRebufferMsiçin varsayılan değerleri sırasıyla 1.000 ve 2.000 ms olarak azaltın.
- DeviceInfove cihaz sesini eşzamansız olarak başlatın (- setDeviceVolumeControlEnabledkullanılarak etkinleştirilmişse). Bu değerler- ExoPlayer.Builder.build()sonrasında anında kullanılamaz ve- Player.Listener, değişiklikleri- onDeviceInfoChangedve- onDeviceVolumeChangedaracılığıyla bildirir.
- İlk ses oturumu kimliği, oynatıcı oluşturulduktan sonra artık hemen kullanılamaz. Gerekirse ilk güncellemeyi dinlemek için AnalyticsListener.onAudioSessionIdChangedsimgesini kullanabilirsiniz.
- Video parçası seçerken dili göz önünde bulundurun. Varsayılan olarak, varsa seçilen ses parçasının diliyle eşleşen bir "ana" video parçası seçilir. Uygunsuz video dili tercihleri TrackSelectionParameters.Builder.setPreferredVideoLanguage(s)ile ifade edilebilir.
- DefaultTrackSelector.selectVideoTrack()yöntemine- selectedAudioLanguageparametresi eklendi.
- MediaSourceEventListener.onLoadStartedve ilgili- MediaSourceEventListener.EventDispatcheryöntemlerine- retryCountparametresi eklendi.
- Çok dönemli DASH akışlarındaki oynatma listesi öğelerinin veya dönemlerin, gerçek içerikle eşleşmeyen süreleri nedeniyle öğenin sonunda karelerin donmasına neden olabilmesiyle ilgili hata düzeltildi (#1698).
- BasePreloadManager.Listeneröğesini üst düzey bir- PreloadManagerListener'ye taşıyın.
- RenderersFactory.createSecondaryRenderer, ön ısıtma için ikincil oluşturucular sağlamak üzere uygulanabilir. Ön ısıtma, oynatma sırasında medya öğeleri arasında daha hızlı geçiş yapılmasını sağlar.
- DASH, HLS ve SmoothStreaming gibi uyarlanabilir akış biçimlerindeki manifest istekleri için CmcdDatagönderimini etkinleştirin (#1951).
- MediaCodecRenderer.onReadyToInitializeCodeciçinde başlatılacak codec'in- MediaCodecInfodeğerini sağlayın- MediaCodecRenderer.onReadyToInitializeCodec(#1963).
- Reklam grupları ekleyerek AdPlaybackStates'ın büyümesine izin vermek içinAdsMediaSourceseçeneğini değiştirin. Geçersiz değişiklikler algılanır ve istisna oluşturulur.
- Ara reklamdan sonra içerik medyasına geçiş yaparken yalnızca kod çözme işleminin yapıldığı ek karelerin hızlı bir şekilde gösterilmesiyle ilgili sorun düzeltildi.
- Uygulamaların varsayılan olarak iki farklı meta veri şeması almasını sağlamak için DefaultRenderersFactory, ikiMetadataRendererörneği ekleyin.
- Oynatma duraklatıldığında devam eden bir parçanın yüklenmesinin iptal edilip edilmeyeceğini yeniden değerlendirin (#1785).
- ClippingMediaSource'ya, sarılamayan medyada kırpmaya izin verme seçeneği ekleyin.
- Ön ısıtma ile arama yapmanın sonraki medya öğesi geçişini engellemesine neden olan hata düzeltildi.
- ExoPlayer.isLoading(),- STATE_IDLEveya- STATE_ENDED'ye geçiş yapmasına rağmen- trueolarak kalmasına neden olan hata düzeltildi (#2133).
- lastRebufferRealtimeMsöğesini- LoadControl.Parameter'ye ekleme (#2113).
 
- Dönüştürücü:
- Geriye dönük uyumlu alternatif biçimlere transmuks etme desteği eklendi.
- Dolby Vision (profil 8) biçiminin kod dönüştürülmesi ve yeniden kapsama alınması için destek eklendi.
- VideoFrameProcessor.registerInputStreamve- VideoFrameProcessor.Listener.onInputStreamRegisteredparametrelerini- Formatkullanacak şekilde güncelleyin.
- DefaultEncoderFactorykullanılırken HDR statik meta verileri oluşturun.
- MediaMetricsManagerkullanarak Android platformu teşhisleri için desteği etkinleştirin. Dönüştürücü, düzenleme etkinliklerini ve performans verilerini platforma iletir. Bu sayede, cihazda sistem performansı ve hata ayıklama bilgileri sağlanır. Bu veriler, cihaz kullanıcısı tarafından kullanım ve teşhis verilerinin paylaşımı etkinleştirildiyse 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,- InAppMp4Muxerve- InAppFragmentedMp4Muxerolarak bölündü. Parçalanmamış bir MP4 dosyası oluşturmak için- InAppMp4Muxer, parçalanmış bir MP4 dosyası oluşturmak için ise- InAppFragmentedMp4Muxerkullanılır.
- Muxerarayüzünü- media3-muxerkonumundan- media3-transformerkonumuna taşıyın.
- Ekran kaydı için MediaProjectionkaynağından medya sağlayanMediaProjectionAssetLoaderöğesini ekleyin ve Transformer demo uygulamasına ekran kaydı desteği ekleyin.
- #getInputFormat()öğesini- Codecarayüzüne ekleyin.
- Mümkün olduğunda GlObjectsProvidercihazının kilidini açma sorumluluğunuDefaultVideoFrameProcessorveDefaultVideoCompositorkonumundaki arayana devredin.
 
- Ayıklayıcılar:
- AVI: Akış başlığının parça sayısı yerine bayt sayısını depoladığı, sabit bit hızlı sıkıştırılmış ses içeren dosyaların işlenmesi düzeltildi.
- Uzunlukları 1 veya 2 bayt (4 bayt yerine) olarak ifade edilen NAL birimlerinin işlenmesiyle ilgili sorun düzeltildi.
- Düzenleme listesi, senkronizasyon çerçevesi olmayan ve öncesinde senkronizasyon çerçevesi bulunmayan bir çerçeveyle başladığında MP4 düzenleme listelerindeki ArrayIndexOutOfBoundsExceptionsimgesini düzeltir (#2062).
- TS akışlarının bazı cihazlarda takılması sorunu düzeltildi (#2069).
- FLAC: 32 bit FLAC dosyaları için destek eklendi. Daha önce bu videolar IllegalStateException: Playback stuck buffering and not loadingile oynatılamıyordu (#2197).
 
- Ses:
- Oynatma devam ettiğinde onAudioPositionAdvancingişlevinin çağrılması düzeltildi (daha önce oynatma duraklatıldığında çağrılıyordu).
- SpeedChangingAudioProcessor, varsayılan parametrelerle yapılandırıldığında- SonicAudioProcessor'ı atlamayın.
- Sonic#getOutputSize()içinde,- DefaultAudioSink'nin durmasına neden olabilecek taşma sorunu düzeltildi.
- Arama işlemlerinin sağlanan süreleri doğru şekilde sıfırlaması için MediaCodecAudioRenderer.getDurationToProgressUs()veDecoderAudioRenderer.getDurationToProgressUs()sorunlarını düzeltin.
- androidx.media3.common.audio.SonicAudioProcessornumaralı telefonu kalıcı yapın.
- ChannelMappingAudioProcessorve- TrimmingAudioProcessor'a kayan nokta PCM desteği eklendi.
 
- Oynatma devam ettiğinde 
- Video:
- Uygulamaların yer tutucu yüzeylerin kullanımını engellemek için geçersiz kılabilmesi amacıyla MediaCodecVideoRenderer.shouldUsePlaceholderSurfacedeğerini protected olarak değiştirin (#1905).
- Arama işlemini hızlandırmak için deneysel ExoPlayerAV1 örnek bağımlılık ayrıştırması eklendi. YeniDefaultRenderersFactory.experimentalSetParseAv1SampleDependenciesAPI ile etkinleştirin.
- Deneysel ExoPlayerAPI'sini, geç bırakılanMediaCodecVideoRendererbağımlı olmayan kod çözücü giriş arabelleklerini bırakmak için ekleyin.DefaultRenderersFactory.experimentalSetLateThresholdToDropDecoderInputUsile etkinleştirin.
- Yüzeyi olmayan bir oynatıcının hemen hazır olması ve bekleyen karelerin çok yavaş çözümlenmesiyle ilgili sorun düzeltildi (#1973).
- Ekranın titremesini önlemek için Xiaomi ve OPPO cihazları ayrılmış yüzey modunun dışında tutun (#2059).
 
- Uygulamaların yer tutucu yüzeylerin kullanımını engellemek için geçersiz kılabilmesi amacıyla 
- Metin:
- VobSub altyazıları için destek eklendi (#8260).
- MediaItem.Builder.setSubtitleConfigurationsile yapılandırılmış tüm altyazı dosyalarının önceden yüklenmesini durdurun ve bunun yerine, parça seçimiyle seçilirse yalnızca bir altyazı dosyasını yükleyin (#1721).
- TTML: tts:originvetts:extentöğelerinestylekullanılarak referans verilmesi için destek eklendi (#2953).
- WebVTT ve SubRip zaman damgalarını tam olarak 3 ondalık basamakla sınırlayın. Daha önce, herhangi bir ondalık basamak sayısını yanlış ayrıştırıyor ancak her zaman değerin milisaniye cinsinden olduğunu varsayıyorduk. Bu durum, yanlış zaman damgalarına yol açıyordu (#1997).
- Oynatma listesinde CEA-608 veya CEA-708 altyazılı kırpılmış öğeler olduğunda oynatmanın takılması sorunu düzeltildi.
- Bir SSA dosyasında süresi sıfır olan bir ipucu olduğunda IllegalStateExceptionhatası düzeltildi (başlangıç ve bitiş zamanı eşit) (#2052).
- Altyazılar ses ve video ile aynı kapsayıcıya yerleştirildiğinde altyazı ayrıştırma hatalarını bastırın (ve günlüğe kaydedin) (#2052).
- CR satır sonları kullanılan WebVTT dosyalarındaki çok baytlı UTF-8 karakterlerinin işlenmesi düzeltildi (#2167).
 
- DRM:
- API < 27 olan cihazlarda ClearKey içeriği oynatılırken MediaCodec$CryptoException: Operation not supported in this configurationhatası düzeltildi (#1732).
 
- API < 27 olan cihazlarda ClearKey içeriği oynatılırken 
- Etki:
- OverlaySettingsişlevini- StaticOverlaySettings'ye taşıdık.- OverlaySettings, dinamik yer paylaşımı ayarlarına izin vermek için alt sınıflara ayrılabilir.
 
- Muxer'lar:
- Tam nitelikli adın çok uzun olmasını önlemek için MuxerException,Muxerarayüzünden taşındı.
- setSampleCopyEnabled()yöntemi, hem- Mp4Muxer.Builderhem de- FragmentedMp4Muxer.Builderiçinde- setSampleCopyingEnabled()olarak yeniden adlandırıldı.
- Mp4Muxer.addTrack()ve- FragmentedMp4Muxer.addTrack()artık- TrackTokenyerine- intparça kimliği döndürüyor.
- Mp4Muxerve- FragmentedMp4Muxerartık- Muxerarayüzünü uygulamıyor.
- Varsayılan olarak Mp4Muxerörnek gruplandırma ve kopyalama işlemlerini devre dışı bırakın.
- Yalnızca ses parçası yazıldığında çok sayıda parça oluşturan FragmentedMp4Muxerile ilgili bir hata düzeltildi.
 
- Tam nitelikli adın çok uzun olmasını önlemek için 
- Oturum:
- Oynatma duraklatıldığında, durdurulduğunda veya başarısız olduğunda ön plan hizmeti durumunu 10 dakika daha korur. Bu sayede kullanıcılar, çeşitli cihazlarda ön plan hizmeti kısıtlamaları riski olmadan bu zaman aşımı içinde oynatmaya devam edebilir. player.pause()'ı aramanın artıkonTaskRemovedgeçersiz kılınırken ön plan hizmetinistopSelf()'tan önce durdurmak için kullanılamayacağını unutmayın. Bunun yerineMediaSessionService.pauseAllPlayersAndStopSelf()'ı kullanın.
- Oynatma hata durumuna girdiğinde veya durdurulduğunda bildirimi görünür tutun. Bildirim yalnızca oynatma listesi temizlendiğinde veya oyuncu serbest bırakıldığında kaldırılır.
- Android platformundaki MediaSession işlemleri ACTION_PLAY ve ACTION_PAUSE'un işlenmesini iyileştirerek yalnızca kullanılabilir komutlara göre birini ayarlayın ve yalnızca biri ayarlanmışsa da kabul edin.
- Contextöğesini- MediaButtonReceiver.shouldStartForegroundServiceöğesine parametre olarak ekleyin- MediaButtonReceiver.shouldStartForegroundService(#1887).
- Eski bir oturuma bağlı MediaControllerüzerindePlayeryönteminin çağrılmasıyla bekleyen güncellemedeki değişikliklerin bırakılmasına neden olan hata düzeltildi.
- MediaSession.setSessionActivity(PendingIntent)değerinin null değerini kabul etmesi sağlandı (#2109).
- Oynatma listesi temizlendiğinde eski bir bildirimin görünür kalmasına neden olan hata düzeltildi (#2211).
 
- Oynatma duraklatıldığında, durdurulduğunda veya başarısız olduğunda ön plan hizmeti durumunu 10 dakika daha korur. Bu sayede kullanıcılar, çeşitli cihazlarda ön plan hizmeti kısıtlamaları riski olmadan bu zaman aşımı içinde oynatmaya devam edebilir. 
- UI:
- PlayerSurface,- PresentationState,- PlayPauseButtonState,- NextButtonState,- PreviousButtonState,- RepeatButtonState,- ShuffleButtonStateve- PlaybackSpeedStateiçin- media3-ui-composemodülüne durum tutucular ve composable'lar ekleyin.
 
- İndirilenler:
- Veri kaynağı IOExceptiondışında birExceptionoluşturduğunda veri kaynaklarını açık ve önbellek alanlarını kilitli bırakanCacheWriterhatası düzeltildi (#9760).
 
- Veri kaynağı 
- HLS uzantısı:
- HlsInterstitialsAdsLoaderile ilgili ilk sürümü ekleyin. Reklam yükleyici, bir HLS medya oynatma listesinin HLS geçiş reklamlarını okur ve bunları- AdsMediaSource'ye iletilen- AdPlaybackStateile eşler. Bu ilk sürüm yalnızca- X-ASSET-URIözelliklerine sahip HLS VOD akışlarını destekler.
- HlsInterstitialsAdsLoader.AdsMediaSourceFactoryekleyin. Uygulamalar,- AdsMediaSourceörnekleri oluşturmak için bunu kullanabilir. Bu örnekler,- HlsInterstitialsAdsLoader'yi kolay ve güvenli bir şekilde kullanır.
- Dolby Vision biçimlerini algılamak için HLS oynatma listesinden SUPPLEMENTAL-CODECSetiketini ayrıştırın (#1785).
- HLS yayınında konum senkronizasyonu için arama koşulunu gevşetin (#2209).
 
- DASH uzantısı:
- DASH için AC-4 Seviye 4 biçim desteği eklendi ( (#1898).
- Çok dönemli canlı yayınlarda reklam ekleme için güncelleme aralığı hesaplanırken oluşan sorun düzeltildi (#1698).
- Dolby Vision biçimlerini algılamak için DASH manifestindeki scte214:supplementalCodecsözelliğini ayrıştırın (#1785).
- Dönemin, belirtilen dönem süresinin ötesinde medya örnekleri içerdiği canlı yayınlarda dönem geçişlerinin işlenmesi iyileştirildi (#1698).
- adaptation-set-switchingile işaretlenmiş ancak farklı diller veya rol işaretleri içeren uyarlama kümelerinin birlikte birleştirilmesi sorunu düzeltildi (#2222).
 
- Kod çözücü uzantıları (FFmpeg, VP9, AV1 vb.):
- MPEG-H sesin kodunu çözmek için yerleşik MPEG-H kod çözücüyü kullanan MPEG-H kod çözücü modülünü ekleyin (#1826).
 
- MIDI uzantısı:
- Özel AudioSinkveAudioRendererEventListenerörnekleriniMidiRenderer'ye bağlayın.
 
- Özel 
- Yayın uzantısı:
- Google Play Hizmetleri'nin yüklü ancak devre dışı olduğu cihazlarda API 34 ve sonraki sürümleri hedefleyen uygulamalarda play-services-cast-frameworkkilitlenmesini düzeltmek içinFLAG_MUTABLEbağımlılığını 21.5.0'a yükseltin (#2178).
 
- Google Play Hizmetleri'nin yüklü ancak devre dışı olduğu cihazlarda API 34 ve sonraki sürümleri hedefleyen uygulamalarda 
- Demo uygulaması:
- Ek düğmelerle demo-compose'ı genişletin ve ölçeklendirme ile deklanşör desteğiylePlayerSurfaceentegrasyonunu geliştirin.
 
- Ek düğmelerle 
- Desteği sonlandırılan sembolleri kaldırın:
- Desteği sonlandırılan AudioMixer.create()yöntemi kaldırıldı. Bunun yerineDefaultAudioMixer.Factory().create()kullanın.
- Aşağıdaki desteği sonlandırılan Transformer.Builderyöntemleri kaldırın:- setTransformationRequest(), bunun yerine- setAudioMimeType(),- setVideoMimeType()ve- setHdrMode()kullanın.
- setAudioProcessors(), ses işlemcisini bir- EditedMediaItem.Builder.setEffects()içine yerleştirin ve bunun yerine- Transformer.start()öğesine iletin.
- setVideoEffects(), bir- EditedMediaItem.Builder.setEffects()içinde video efekti ayarlayın ve bunu- Transformer.start()öğesine iletin.
- setRemoveAudio(), bunun yerine- EditedMediaItemöğesinden- Transformer.start()öğesine iletilen sesi kaldırmak için- EditedMediaItem.Builder.setRemoveAudio()öğesini kullanın.
- setRemoveVideo(), videoyu- EditedMediaItemiletilen- Transformer.start()öğesinden kaldırmak için- EditedMediaItem.Builder.setRemoveVideo()kullanın.
- setFlattenForSlowMotion(),- Transformer.start()'a iletilen- EditedMediaItem'yi düzleştirmek için- EditedMediaItem.Builder.setFlattenForSlowMotion()'yi kullanın.
- setListener(),- addListener(),- removeListener()veya- removeAllListeners()kullanın.
 
- Aşağıdaki desteği sonlandırılan Transformer.Listeneryöntemleri kaldırın:- onTransformationCompleted(MediaItem), use- onCompleted(Composition, ExportResult)instead.
- onTransformationCompleted(MediaItem, TransformationResult), use- onCompleted(Composition, ExportResult)instead.
- onTransformationError(MediaItem, Exception), use- onError(Composition, ExportResult, ExportException)instead.
- onTransformationError(MediaItem, TransformationException), use- onError(Composition, ExportResult, ExportException)instead.
- onTransformationError(MediaItem, TransformationResult, TransformationException)yerine- onError(Composition, ExportResult, ExportException)kullanın.
- onFallbackApplied(MediaItem, TransformationRequest, TransformationRequest)yerine- onFallbackApplied(Composition, TransformationRequest, TransformationRequest)kullanın.
 
- Desteği sonlandırılan TransformationResultsınıfını kaldırın. Bunun yerineExportResultpolitikasını kullanın.
- Desteği sonlandırılan TransformationExceptionsınıfını kaldırın. Bunun yerineExportExceptionpolitikasını kullanın.
- Kullanımdan kaldırılan Transformer.PROGRESS_STATE_NO_TRANSFORMATIONöğesini kaldırın. Bunun yerineTransformer.PROGRESS_STATE_NOT_STARTEDkullanın.
- Kullanımdan kaldırılan Transformer.setListener()öğesini kaldırın. Bunun yerineTransformer.addListener(),Transformer.removeListener()veyaTransformer.removeAllListeners()kullanın.
- Kullanımdan kaldırılan Transformer.startTransformation()öğesini kaldırın. Bunun yerineTransformer.start(MediaItem, String)kullanın.
- Kullanımdan kaldırılan SingleFrameGlShaderProgramöğesini kaldırın. Bunun yerineBaseGlShaderProgramkullanın.
- Transformer.flattenForSlowMotionöğesini kaldırın. Bunun yerine- EditedMediaItem.flattenForSlowMotionkullanın.
- ExoPlayer.VideoComponent,- ExoPlayer.AudioComponent,- ExoPlayer.TextComponentve- ExoPlayer.DeviceComponentkaldırıldı.
- androidx.media3.exoplayer.audio.SonicAudioProcessorkaldırıldı.
- Aşağıdaki desteği sonlandırılan DownloadHelperyöntemleri kaldırıldı:- Constructor DownloadHelper(MediaItem, @Nullable MediaSource, TrackSelectionParameters, RendererCapabilities[]), useDownloadHelper(MediaItem, @Nullable MediaSource, TrackSelectionParameters, RendererCapabilitiesList)instead.
- getRendererCapabilities(RenderersFactory), eşdeğer işlevsellik- RenderersFactoryile- DefaultRendererCapabilitiesListoluşturularak ve- DefaultRendererCapabilitiesList.getRendererCapabilities()çağrılarak elde edilebilir.
 
- Constructor 
- PlayerNotificationManager.setMediaSessionToken(MediaSessionCompat)yöntemi kaldırıldı. Bunun yerine- PlayerNotificationManager.setMediaSessionToken(MediaSession.Token)kullanın ve- (MediaSession.Token) compatToken.getToken()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 iptal edilir.
1.5.1 sürümü şu commit'leri içerir.
- ExoPlayer:
- Bu platform API'siyle ilgili bildirilen codec zaman aşımı sorunlarını önlemek için MediaCodec'te eşzamansız şifre çözme kullanımını devre dışı bırakın (#1641).
 
- Ayıklayıcılar:
- MP3: Bir VBRIçerçevesinin içerik tablosu, bir dosyadaki tüm MP3 verilerini kapsamıyorsa oynatmayı erken durdurmayın (#1904).
 
- MP3: Bir 
- Video:
- MediaCodecAdaptersağlanan piksel en boy oranı değerlerinin,- onOutputFormatChangedişlenirken sağlandığında kullanılmasının geri alınması (#1371).
 
- Metin:
- ReplacingCuesResolver.discardCuesBeforeTimeUs'da,- timeUskonumunda etkin olan (daha önce başlatılmış ancak henüz sona ermemiş) ipucunun yanlışlıkla silinmesine neden olan hata düzeltildi (#1939).
 
- Meta veri:
- Vorbis yorumlarındaki disk/parça numaralandırmasını ve türü MediaMetadata(#1958) içine ayıklayın.
 
- 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 iptal edilir.
1.5.0 sürümü bu commit'leri içerir.
- Ortak kitaplık:
- Tam tutarlılık ve dinleyici işleme sağlarken küçük ayarlamalarla başka bir oynatıcıya yönlendirmeye olanak tanıyan ForwardingSimpleBasePlayerişlevi eklendi (#1183).
- SimpleBasePlayer.State.playlistyerine- getPlaylist()yöntemini kullanın.
- Oynatma listesi yapısı oluşturmak yerine doğrudan Timelineve mevcutTracksileMetadatadeğerini belirtmek içinSimpleBasePlayer.State.Builder.setPlaylist()öğesine geçersiz kılma ekleyin.
- minSdkdeğerini 21'e (Android Lollipop) yükseltin. Bu, diğer tüm AndroidX kitaplıklarıyla uyumludur.
- Common kitaplığının üzerine kurulu Kotlin'e özgü işlevler sağlayan androidx.media3:media3-common-ktxyapısını ekleyin.
- Player.listenaskıya alma uzantısı işlevini,- Player.Eventsdinlemek için bir ortak yordam döndürmek üzere- media3-common-ktxkitaplığına ekleyin.
- Çalışma zamanı sınıfı doğrulama hatalarını önlemek için tasarlanmış, manuel olarak satır dışı bırakılmış iç sınıflardan @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 satır dışı çağrıları otomatik olarak satır dışı hale getiriyor (bu nedenle, manuel satır dışı hale getirme artık gerekli değil). Kitaplığın tüm Gradle kullanıcıları,compileSdk = 35nedeniyle bunu yapan bir R8 sürümünü kullanan Android Gradle eklentisinin bir sürümünü zaten kullanıyor olmalıdır. Gradle dışı derleme sistemlerine sahip kitaplık kullanıcılarının, çalışma zamanı sınıfı doğrulama hatalarını önlemek için R8'e eşdeğer küçültme/karartma adımının benzer bir otomatik satır dışı işlem gerçekleştirdiğinden emin olması gerekir. Bu değişiklik diğer AndroidX kitaplıklarında zaten yapıldı.
 
- Tam tutarlılık ve dinleyici işleme sağlarken küçük ayarlamalarla başka bir oynatıcıya yönlendirmeye olanak tanıyan 
- ExoPlayer:
- MediaCodecRenderer.onProcessedStreamChange()artık her medya öğesi için aranabilir. Daha önce ilk için bu işlem gerekmiyordu. Bu özelliği etkinleştirmek için- MediaCodecRenderer.experimentalEnableProcessedStreamChangedAtStart()kısayolunu kullanın.
- Hata oluştuğunda PreloadMediaSource.PreloadControl.onPreloadErroruygulamalarının işlem yapmasına izin vermek içinPreloadMediaSource.PreloadControlekleyin.
- Önceden yükleme etkinliklerini uygulamalara yaymak için BasePreloadManager.Listenerekleyin.
- Zaman aşımında SNTP istemci zaman aşımının değiştirilmesine ve alternatif adreslerin yeniden denenmesine izin verin (#1540).
- Alan her zaman sıfır olduğu için MediaCodecAdapter.Configuration.flagskaldırıldı.
- Kullanıcının, Wear OS 35 ve sonraki sürümlerde (cihazın bu desteği duyurduğu yerlerde) oynatma için yerleşik hoparlörü seçmesine izin verin.
- Ses odağı işleme etkinleştirilene kadar Context.getSystemService(Context.AUDIO_SERVICE)numarasına yapılan engelleme çağrısını erteleyin. Bu, ses odak işleme etkinleştirilmemişse engelleme işleminin yapılmamasını sağlar (#1616).
- Yükleme başarısız olduğunda arabelleğe alınan süreye bakılmaksızın oynatmaya izin verilir (#1571).
- Tek tek oluşturucular oynatmaya hazır olduğunda AnalyticsListener.onRendererReadyChanged()simgesini ekleyin.
- MediaCodec.CryptoException, eşzamansız modda (API 31 ve sonraki sürümlerdeki varsayılan davranış) çalıştırıldığında bazen "beklenmeyen çalışma zamanı hatası" olarak bildirilen- MediaCodecsorunu düzeltildi.
- PreloadMediaSource.PreloadControl.onContinueLoadingRequested()ile- bufferedPositionUsyerine- bufferedDurationUskart geçişi. Ayrıca,- DefaultPreloadManager.Status.STAGE_LOADED_TO_POSITION_MSdeğerini- DefaultPreloadManager.Status.STAGE_LOADED_FOR_DURATION_MSolarak değiştirir. Uygulamaların, konum yerine, karşılık gelen medya kaynağının bu IntDef ile önceden yüklenmesi gereken varsayılan başlangıç konumundan itibaren belirli bir süreyi temsil eden bir değer iletmesi gerekir.
- Tüm yöntem çağrılarını başka bir oluşturucuya yönlendiren ForwardingRendereruygulaması ekleyin (1703).
- Oynatma listesindeki bir sonraki öğe için oynatma listesi önceden yükleme özelliğini ekleyin. Uygulamalar, ExoPlayer.setPreloadConfiguration(PreloadConfiguration)işlevini uygun şekilde çağırarak önceden yüklemeyi etkinleştirebilir. Önceden yükleme varsayılan olarak devre dışıdır. Bu özellik etkinleştirildiğinde ve oynatmayı engellememek içinDefaultLoadControl, ön yüklemeyi yalnızca oynatıcı oynatma için yüklenmediğinde başlatıp devam ettirecek şekilde kısıtlar. Uygulamalar,LoadControl.shouldContinuePreloading()yöntemini uygun şekilde uygulayarak (ör.DefaultLoadControliçinde bu yöntemi geçersiz kılarken) bu davranışı değiştirebilir.LoadControlyönteminin varsayılan uygulaması, bir uygulamaLoadControlyönteminin özel bir uygulamasını kullanıyorsa ön yüklemeyi devre dışı bırakır.
- Alt sınıf işleyicilerinin etkinliklerinin çağrılmasına izin vermek için MediaSourceEventListener.EventDispatcher.dispatchEvent()yöntemi eklendi (1736).
- DefaultPreloadManager.Builderekleyin. Bu, tutarlı bir şekilde paylaşılan yapılandırmalarla- DefaultPreloadManagerve- ExoPlayerörneklerini oluşturur.
- DefaultLoadControluygulaması, akış türlerini- ExoTrackSelection[]öğesinden alabileceğinden- Renderer[]parametresini- LoadControl.onTracksSelected()öğesinden kaldırın.
- Kullanımdan kaldırılan DefaultLoadControl.calculateTargetBufferBytes(Renderer[], ExoTrackSelection[])ve geçersiz kılmayı önlemek için yöntem nihai olarak işaretlendi. Bunun yerine yeniDefaultLoadControl.calculateTargetBufferBytes(ExoTrackSelection[])kullanılmalıdır.
- MediaSourceEventListeneriçindeki ikincil kaynaklardan- MediaSourceEventListeneretkinliklerini raporlayın.- MergingMediaSourceBu durum, 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ına devam edilir (#1722).
- Yeni altyazı işleme sürecinde (çıkarma sırasında), ilişkili ayrıştırma (ör. geçersiz altyazı verileri) ve yükleme hataları (ör. HTTP 404) onLoadErrorgeri çağırmaları aracılığıyla yayınlanır.
- Eski altyazı işleme yönteminde (oluşturma sırasında) yalnızca ilişkili yükleme hataları onLoadErrorgeri çağırmaları aracılığıyla yayınlanırken ayrıştırma hataları sessizce yoksayılır (bu, önceden var olan bir davranıştır).
 
- Yeni altyazı işleme sürecinde (çıkarma sırasında), ilişkili ayrıştırma (ör. geçersiz altyazı verileri) ve yükleme hataları (ör. HTTP 404) 
- Çok dönemli DASH akışlarındaki oynatma listesi öğelerinin veya dönemlerin, gerçek içerikle eşleşmeyen süreleri nedeniyle öğenin sonunda karelerin donmasına neden olabilmesiyle ilgili hata düzeltildi (#1698).
- Müşterinin yeniden başlatılacağı son güncellemeden bu yana geçen maksimum süreyi ayarlamak için SntpClientöğesine bir ayarlayıcı ekleyin (#1794).
 
- Dönüştürücü:
- SurfaceAssetLoaderekleyin. Bu,- Surfacearacılığıyla video verilerinin Transformer'a sıraya alınmasını destekler.
- ImageAssetLoader,- IllegalStateExceptionoluşturmak yerine- AssetLoader.onErrorüzerinden desteklenmeyen girişleri bildirir.
- Resim dışa aktarma için MediaItem.Builder.setImageDurationMskullanılarak resim süresinin ayarlanmasını zorunlu kılın.
- Ses EditedMediaItem'larının sıralarındaki boşluklar için dışa aktarma desteği eklendi.
 
- Parça Seçimi:
- DefaultTrackSelector: Diğer faktörler eşit olduğunda nesne tabanlı sesi kanal tabanlı sese tercih edin.
 
- Ayıklayıcılar:
- Mp4Extractorve- FragmentedMp4Extractorseçeneklerinin, sonraki örnekler tarafından referans olarak kullanılmayan H264 örneklerini tanımlamasına izin verin.
- AmrExtractoriçinde dizine dayalı arama özelliğini etkinleştirme seçeneği eklendi.
- Geçerli kareler arasında 128 kB'tan fazla alan bulunan MP3 dosyaları, geçersiz yerine kısaltılmış olarak kabul edilir. Bu nedenle, sonunda MP3 dışı veriler bulunan ve MP3 baytlarının uzunluğunu belirten başka meta verisi olmayan dosyalar artık ParserException: Searched too many bytes.{contentIsMalformed=true, dataType=1}(#1563) hatasıyla başarısız olmak yerine MP3 verilerinin sonunda oynatmayı durduruyor.
- MP4 dosyalarındaki düzenleme listeleri işlenirken anahtar kare olmayan medya başlangıç konumları için ön rulo örneği işleme düzeltildi (#1659).
- mdhdkutusundaki medya süresini kullanarak kare hızı hesaplaması iyileştirildi- Mp4Extractorve- FragmentedMp4Extractor(#1531).
- MP4 düzenleme listelerinde media_timeöğesinin yanlış ölçeklendirilmesi düzeltildi.segment_duration, film zaman ölçeği kullanılarak zaten doğru şekilde ölçeklendirilmişkenmedia_time, MP4 biçim standardında belirtildiği gibi parça zaman ölçeği kullanılarak artık düzgün şekilde ölçeklendiriliyor (#1792).
- MP4'te düzenleme listesiyle endIndiceshesaplamasında sırası bozuk kareleri işleme (#1797).
- MP4 dosyalarının mdhdkutusundaki medya süresi ayrıştırma işlemini,-1değerlerini işleyecek şekilde düzeltin (#1819).
- H.263 video için MP4 dosyalarında h263kutusunu tanımlama desteği eklendi ( (#1821)).
- AC-4 Level-4 ISO temel medya dosyası biçimi desteği eklendi (#1265).
 
- DataSource:
- HttpEngineDataSource, API düzeyi 34 yerine S extension 7 sürümünden itibaren kullanıma izin verecek şekilde güncellendi (#1262).
- DataSourceContractTest:- DataSource.getUri()işlevinin, çözümlenmiş URI'yi (belgelendiği gibi) döndürdüğünü onaylayın. Bu durum, istenen URI'den farklı olduğunda testler yeni- DataSourceContractTest.TestResource.Builder.setResolvedUri()yöntemiyle bunu belirtebilir.
- DataSourceContractTest:- DataSource.getUri()ve- getResponseHeaders(),- open()için başarısız bir çağrıdan (kaynak bulunamadığı için) sonra ve sonraki bir- close()çağrısından önce "açık" değerini döndürür.- DataSourceContractTest.getNotFoundResources()'ı geçersiz kılmak, test alt sınıflarının birden fazla "bulunamadı" kaynağı ve beklenen başlıkları sağlamasına olanak tanır. Bu sayede HTTP 404 (başlıklarla) ile "sunucu bulunamadı" (başlık yok) arasında ayrım yapılabilir.
 
 
- Ses:
- Medya içeriğinde varsa codec'te CTA-2075 ses yüksekliği meta verilerini otomatik olarak yapılandırın.
- Arama sırasında sesin sorunsuz bir şekilde azaltılmasını sağlar.
- Arama sırasında oluşabilecek patlama seslerini düzeltir.
- Sonic'in zamanı uzatma/perde değiştirme algoritması için kesme hatası birikimini düzeltin.
- SpeedChangingAudioProcessor'da çıkış karelerinin düşmesine neden olan hata düzeltildi.
 
- Video:
- MediaCodecVideoRenderer, ne oluşturulan ne de diğer örnekler tarafından referans olarak kullanılan örneklerin kodunu çözmekten kaçınır.
- API 35 ve sonraki sürümlerde, MediaCodecAdapterartıkconfigureiçindenullalabilir ve codec destekliyorsa daha önce ayarlananSurfaceöğesini kaldırmak için yeni birdetachOutputSurfaceyöntemine çağrı yapabilir (MediaCodecInfo.detachedSurfaceSupported).Surface
- MediaCodecAdapterişlenirken sağlanan piksel en boy oranı değerleri varsa bunları kullanın- onOutputFormatChanged(#1371).
- Galaxy Tab S7 FE'de, 60 fps'lik güvenli H264 akışlarının desteklenmiyor olarak işaretlenmesine neden olan cihaz sorunu için geçici çözüm eklendi (#1619).
- Son örnekten sonra akış sonu sinyali döndürmeden takılan codec'ler için geçici çözüm eklendi.
 
- Metin:
- Özel bir VoiceSpanekleyin ve WebVTT ses aralıkları için doldurun (#1632).
- HLS'de çok büyük altyazı zaman damgaları içeren WebVTT'nin (mikrosaniye olarak gösterilip MPEG zaman tabanıyla çarpıldığında 64 bitlik longdeğeri aşan) gösterildiğinden emin olun (#1763).90,000
- Dolby Vision içeriklerinde CEA-608 altyazılarını destekleme (#1820).
- CEA-608 altyazıları etkinleştirildiğinde DASH çok dönemli akışlarda oynatmanın takılması sorunu düzeltildi (#1863).
 
- Özel bir 
- Meta veri:
- icy veya vnd.dvb.ait içerik barındıran parçalara C.TRACK_TYPE_METADATAtürünü atayın.
 
- icy veya vnd.dvb.ait içerik barındıran parçalara 
- Resim:
- Glide veya Coil gibi harici resim yükleme kitaplıklarıyla entegrasyonu basitleştirmek için ExternallyLoadedImageDecoderekleyin.
 
- Glide veya Coil gibi harici resim yükleme kitaplıklarıyla entegrasyonu basitleştirmek için 
- DataSource:
- FileDescriptorDataSourceişlevini ekleyin. Bu yeni- DataSource,- FileDescriptoröğesinden okumak için kullanılabilir (#3757).
 
- Etki:
- Küçük DefaultVideoFrameProcessorölçeklendirme içinSurfaceTexturegeçici çözümü eklendi.SurfaceTexture, kırpılmış bir arabelleğin kenarındaki 1 teksel sınırını kesen küçük bir ölçeklendirme içerebilir. Bu durum artık çıktının beklenene daha yakın olması için ele alınmaktadır.
- Hızlandırma DefaultVideoFrameProcessor.queueInputBitmap(). Sonuç olarak,Transformerile görüntüleri videolara aktarma işlemi daha hızlıdır.
 
- Küçük 
- IMA uzantısı:
- Oynatma listesinin temizlenmesinin ArrayIndexOutOfBoundsExceptioniçindeImaServerSideAdInsertionMediaSourcesimgesine neden olabileceği hata düzeltildi.
- Sunucu tarafında eklenen ve ön rulosuz DAI akışlarının, son videonun ortasında gösterilen reklamdan sonra oynatıldığında ArrayIndexOutOfBoundsExceptionhatasına neden olabildiği hata düzeltildi (#1741).
 
- Oynatma listesinin temizlenmesinin 
- Oturum:
- Uygulamaların, bu yöntemi geçersiz kılarak oynatmaya devam etme için gelen oynatma komutunu bastırmasına izin vermek üzere MediaButtonReceiver.shouldStartForegroundService(Intent)ekleyin. Hizmet varsayılan olarak her zaman başlatılır ve sistem, hizmetiForegroundServiceDidNotStartInTimeExceptionile kilitlenmeden oynatma durdurulamaz (#1528).
- Eski bir hizmete bağlanıldığında MediaBrowsercihazından gönderilen özel komutların, yönteminMediaBrowserServiceCompatvaryantı yerineMediaSessionCompat.Callbackcihazına gönderilmesine neden olan hata düzeltildi. Bu durum,MediaBrowseröğesinin eski hizmet tarafından geri gönderilen gerçek dönüş değerini almasını engelliyordu (#1474).
- Medya düğmesi amaçları için yayın alıcısı ayarlanırken belirli üreticilerin cihazları tarafından oluşturulan IllegalArgumentExceptionişleniyor (#1730).
- Medya öğeleri için komut düğmeleri ekleyin. Bu, Custom browse actionsolarak bilinenler için Media3 API'yiMediaBrowserCompatile eski kitaplıkla birlikte ekler. Medya öğeleri için Media3 komut düğmelerinin hemMediaBrowserhem deMediaControlleriçin kullanılabildiğini unutmayın. Özel göz atma işlemlerini uygulama başlıklı makaleyi inceleyin.
- Media3 denetleyicisinin bazen bir oturum uygulamasının play()isteğinde bulunduktan sonra ön plan hizmeti başlatmasına izin verememesine neden olan hata düzeltildi.
- CommandButton.Builder.setIconUri'yı yalnızca içerik URI'lerini kabul edecek şekilde kısıtlayın.
- Eski bir MediaBrowserCompatöğesine bağlanırken Media3 tarayıcısının bağlantı ipuçlarını ilkMediaBrowserCompatöğesine iletin. Hizmet,onGetRoot()için yapılan ilk çağrıyla kök ipuçları olarak iletilen bağlantı ipuçlarını alabilir.
- Eski bir tarayıcı hizmetine bağlı MediaBrowsersunucusunun, tarayıcı birparentidaboneliği oluşturduktan sonra hizmet tarafından gönderilen hatayı almamasına neden olan hata düzeltildi.
- Böylece, eski bir MediaBrowserServiceöğesine bağlı olan bir Media3 tarayıcısı, bir üst öğeye abone olurkenparentIdöğesinin alt öğelerini iki kez istemez.
 
- Uygulamaların, bu yöntemi geçersiz kılarak oynatmaya devam etme için gelen oynatma komutunu bastırmasına izin vermek üzere 
- UI:
- XML tabanlı paylaşılan geçişlerle ilgili sorunlar nedeniyle, PlayerView-in-Compose-AndroidViewgeçici çözümünde uzatılmış/kırpılmış video oluşturma özelliği etkinleştirildi.PlayerViewkullanan uygulamalarınAndroidViewetkinleş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 setFullscreenButtonState,PlayerView'ye eklendi (#1590, #184).
- Uygulama tarafından tanımlanan metin parçası seçimi tercihleri varsa metin seçiminde "Yok" seçeneğinin çalışmaması hatası düzeltildi.
 
- 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.):
- Ses sentezlemek için libiamf yerel kitaplığını kullanarak IAMF parçaları içeren MP4 dosyalarının oynatılmasını destekleyen IAMF kod çözücü modülünü ekleyin.
- Oynatma, stereo düzenin yanı sıra isteğe bağlı kafa hareketi izleme özelliği etkinleştirilmiş olarak uzamsallaştırma ile 5.1 şeklinde de etkinleştirilir ancak şu anda binaural oynatma desteği sunulmamaktadır.
 
- Android 15'te kod çözücü uzantıları için 16 KB sayfa desteği eklendi (#1685).
 
- Ses sentezlemek için libiamf yerel kitaplığını kullanarak IAMF parçaları içeren MP4 dosyalarının oynatılmasını destekleyen IAMF kod çözücü modülünü ekleyin.
- Cast Uzantısı:
- CastSession bağlantısı kesildikten sonra zaman çizelgesini temizlemeyi durdurur. Bu sayede gönderen uygulama, bağlantı kesildikten sonra oynatmaya yerel olarak devam edebilir.
- Contextsağlandığında CastPlayer'ın- DeviceInfoözelliğini doldurun. Bu,- MediaSessionöğesinin- RoutingSessionöğesine bağlanmasını sağlar. Bu, Çıkış Anahtarı'nın entegrasyonu için gereklidir (#1056).
 
- Test yardımcı programları:
- DataSourceContractTestartık aşağıdakileri doğrulamak için testler içerir:- Giriş akışı read positiongüncellendi.
- Çıkış arabelleği offsetdoğru şekilde uygulanır.
 
- Giriş akışı 
 
- Demo uygulaması
- Kısa biçimli demo uygulamasındaki bellek sızıntılarını düzeltin (#1839).
 
- Desteği sonlandırılan sembolleri kaldırın:
- Kullanımdan kaldırılan Player.hasPrevious,Player.hasPreviousWindow()öğelerini kaldırın. Bunun yerinePlayer.hasPreviousMediaItem()politikasını kullanın.
- Desteği sonlandırılan Player.previous()yöntemi kaldırıldı. Bunun yerinePlayer.seekToPreviousMediaItem()kullanın.
- Desteği sonlandırılan DrmSessionEventListener.onDrmSessionAcquiredyöntemi kaldırıldı.
- Desteği sonlandırılan DefaultEncoderFactoryoluşturucularını 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 iptal edilir.
1.4.1 sürümü bu commit'leri içerir.
- ExoPlayer:
- Ayıklayıcılar:
- MP3: Searched too many byteshatasını,Infoçerçevesindeki uzunluk alanına göre sondaki MP3 dışı verileri doğru şekilde yoksayarak düzeltin (#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 yüzdetts:fontSizedeğerlerinin işlenmesi düzeltildi.
- İstenen çıkış başlangıç zamanının Subtitle'daki son etkinlik zamanından büyük veya ona eşit olması durumunun yanlış işlenmesi nedeniyleLegacySubtitleUtiliçindeIndexOutOfBoundsExceptiondüzeltildi (#1516).
 
- TTML: Yüzde 
- DRM:
- API 31 ve sonraki sürümlerdeki cihazlarda android.media.MediaCodec$CryptoException: Operation not supported in this configuration: ERROR_DRM_CANNOT_HANDLEhatasını düzeltme L1 Widevine içeriği oynatılırken. Bu hata,MediaDrm.requiresSecureDecoderyönteminin (#1603) eksik uygulanmasından kaynaklanır.
 
- API 31 ve sonraki sürümlerdeki cihazlarda 
- Etki:
- GlObjectsProvideröğesine- release()yöntemi ekleyin.
 
- Oturum:
- KEYCODE_HEADSETHOOKsimgesine iki kez dokunma işlemini, belgelendirildiği gibi "sonrakine git" işlemine dönüştürün (#1493).
- KEYCODE_HEADSETHOOKöğesini,- ForegroundServiceDidNotStartInTimeException(#1581) hatasını önlemek için yoksayılıp yoksayılmayacağına karar verirken- MediaButtonReceiveriçinde "oynat" komutu olarak değerlendirin.
 
- RTSP Uzantısı:
- SDP ayrıştırmasında geçersiz medya açıklamalarını atlayın (#1087).
 
Sürüm 1.4.0
25 Temmuz 2024
androidx.media3:media3-*:1.4.0 iptal edilir.
1.4.0 sürümü bu commit'leri içerir.
- Ortak kitaplık:
- İşlem yapmayan arama çağrıları olduğu varsayılanları 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'e yönelik derleme bağımlılığını kaldırın (#1312).
- MediaItem.Builder.setImageDurationMs()öğesine iletilen sürenin, resim olmayan bir- MediaItemiçin yoksayıldığından (belgelendiği gibi) emin olun.
- Formatörnekleriyle ilgili uygulama tarafından sağlanan özel bilgileri depolamak için- Format.customDataekleyin.
 
- İşlem yapmayan arama çağrıları olduğu varsayılanları yoksaymak yerine korumalı 
- ExoPlayer:
- BasePreloadManagerekleyin. Bu,- rankingDatatarafından tanımlanan önceliklere göre birden fazla kaynak için önceden yüklemeyi koordine eder. Bu sınıf genişletilerek özelleştirme yapılabilir. Kaynakların medya örneklerini belleğe önceden yüklemek için- PreloadMediaSourcekullanan ve kullanıcı arayüzündeki bir öğenin dizinini belirten bir tam sayı- rankingDatakullanan- DefaultPreloadManageröğesini ekleyin.
- PlayerId,- LoadControluygulamalarının birden fazla oyuncuyu desteklemesini sağlamak için çoğu- LoadControlyöntemine eklenir.
- Buffer.isDecodeOnly()ve- C.BUFFER_FLAG_DECODE_ONLYöğelerini kaldırın. Bu işaretin ayarlanmasına gerek yoktur. Oluşturucular ve kod çözücüler, zaman damgasına göre arabellekleri atlamaya karar verir. Özel- Rendereruygulamaları, bir örneğin gösterilip gösterilmeyeceğine karar vermek için arabellek süresinin en az- BaseRenderer.getLastResetPositionUs()olup olmadığını kontrol etmelidir. Özel- SimpleDecoderuygulamaları gerekirse- isAtLeastOutputStartTimeUs()işaretini koyabilir veya diğer arabellekleri- DecoderOutputBuffer.shouldBeSkippedile işaretleyerek atlayabilir.
- TargetPreloadStatusControl.getTargetPreloadStatus(T)tarafından boş değer döndürülmesine izin vererek- MediaSourceöğesinin, verilen- rankingDataile önceden yüklenmemesi gerektiğini belirtin.
- remove(MediaSource)adlı kişiyi- BasePreloadManagerlistesine ekleyin.
- Önceden yükleme yöneticisi örneğini korurken tüm bekletme kaynaklarını serbest bırakmak için reset()öğesiniBasePreloadManageröğesine ekleyin.
- ExoPlayer.setPriority()(ve- Builder.setPriority()) ekleyerek- PriorityTaskManageriçinde kullanılan öncelik değerini ve API 35'ten itibaren MediaCodec önemini tanımlayın.
- Son yeniden arabelleğe alma zamanının güncellenmesiyle ilgili sorun düzeltildi. Bu sorun, CMCD'de yanlış bs(arabellek yetersizliği) anahtarına neden oluyordu (#1124).
- Kaynağın sonuna kadar yüklendiğini belirtmek için
PreloadMediaSource.PreloadControl.onLoadedToTheEndOfSource(PreloadMediaSource)ekleyin. Bu,DefaultPreloadManagerve özelPreloadMediaSource.PreloadControluygulamalarının bir sonraki kaynağı önceden yüklemesine veya başka işlemler yapmasına olanak tanır.
- Öğelerin sonundaki sessizliği atlamanın oynatma istisnasına neden olabilmesi hatası düzeltildi.
- Önceden yükleme dönemini iptal etmek için clearöğesiniPreloadMediaSourceöğesine ekleyin.
- Codec kaynakları daha yüksek öncelikli görevler için geri kazanıldığında kullanılan yeni hata kodu
PlaybackException.ERROR_CODE_DECODING_RESOURCES_RECLAIMEDeklendi.
- AdsMediaSource, ilk içerik medyası hazırlığı tamamlanmadan önce videodan önce gösterilen reklamları yükleyebilir (#1358).
- Orijinal dönem manifestten kaldırıldıktan sonra çok dönemli bir DASH canlı yayını yeniden hazırlanırken oynatmanın STATE_ENDED'e geçmesine neden olan hata düzeltildi.
- onTimelineRefreshed()öğesini- onSourcePrepared(),- onPrepared()öğesini ise- onTracksSelected()olarak yeniden adlandırın.- PreloadMediaSource.PreloadControlAyrıca,- DefaultPreloadManager.Stageiçindeki IntDefs'leri de uygun şekilde yeniden adlandırın.
- Çalışmayı CPU uyandırma döngüleriyle daha iyi uyumlu hale getirmek ve oluşturucular ilerleyebilene kadar uyandırmayı geciktirmek için deneysel dinamik planlama desteği eklendi.
ExoPlayer örneğinizi oluştururken experimentalSetDynamicSchedulingEnabled()kullanarak bu özelliği etkinleştirebilirsiniz.
- Renderer.getDurationToProgressUs()ekleyin. Bir- Renderer, oynatıcının ilerlemesi için oynatmanın ilerlemesi gereken süreyi ExoPlayer'a döndürmek üzere bu yöntemi uygulayabilir.- ExoPlayer,- experimentalSetDynamicSchedulingEnabled()ile ayarlanmışsa- ExoPlayer, iş görevini planlama süresini hesaplarken bu yöntemi çağırır.
- MediaCodecAdapter#OnBufferAvailableListenergiriş ve çıkış arabellekleri- MediaCodecRenderertarafından kullanılmaya hazır olduğunda uyarı vermek için- MediaCodecAdapter#OnBufferAvailableListenerekleyin.- MediaCodecRenderer, bu geri çağırmaları aldığında- ExoPlayersinyalini verir ve- ExoPlayer,- experimentalSetDynamicSchedulingEnabled()ile ayarlanırsa- ExoPlayer, oluşturucular ilerleme kaydedebildiğinden çalışma döngüsünü planlar.
- Ayrı parametreler yerine LoadControlyöntemleri için veri sınıfını kullanın.
- ExoPlayer.isReleased()işlevinin çağrılıp çağrılmadığını kontrol etmek için- Exoplayer.release()işlevini ekleyin.
- ExoPlayer.Builder.setMaxSeekToPreviousPositionMs(),- seekToPrevious()öğesinin önceki öğeyi aradığı maksimum konumu yapılandırmak için eklenir (#1425).
- Bazı ses odağı tutarsızlıklarını düzeltme (ör. oynatıcı duraklatıldığında tam veya geçici odak kaybının bildirilmemesi) (#1436).
- Ayıklayıcıların ilk hazırlık adımından sonra ek parçalar bildirmesinden kaynaklanan olası IndexOutOfBoundsExceptionsorunları düzeltildi (#1476).
- Effectsiçindeki- ExoPlayer.setVideoEffect(), oluşturucu farkı kaldırılmış zaman damgalarını alır (#1098).
- Başka bir oynatma listesi öğesi önceden okunurken oluşan oynatıcı hatası işlenirken olası IllegalArgumentExceptiondüzeltildi (#1483).
 
- Dönüştürücü:
- Çıkış dosyasındaki ilgili parçanın nasıl oluşturulduğunu belirtmek için audioConversionProcessvevideoConversionProcesssimgelerini ekleyin.ExportResult
- H.264 seviyesi kontrollerinde kırpma optimizasyonunu gevşetin.
- Bir dizide SDR ve HDR giriş medyası arasında geçiş yapma desteği eklendi.
- Kompozisyon düzeyinde ses efektleri için destek eklendi.
- Ultra HDR görüntülerin HDR videolara dönüştürülmesi için destek eklendi.
- DefaultAudioMixersıfırlanıp yeniden kullanıldıktan sonra doğru miktarda bayt çıkışı vermemesine neden olan sorun düzeltildi.
- PCM girişi işlenirken ses kanalı sayısının stereo ile sınırlandırıldığı bir kod çözücü hatası giderildi.
- ExoPlayerAssetLoaderbölümünde parça seçerken yalnızca oynatma için geçerli olduklarından ses kanalı sayısı kısıtlamalarını dikkate almayın.
- androidx.media3.transformer.Muxerarayüzünü- androidx.media3.muxer.Muxerile değiştirin ve- androidx.media3.transformer.Muxeröğesini kaldırın.
- İçerik URI şemalarından HEIC resim yükleme sorunu düzeltildi. (#1373).
- AV senkronizasyonunu iyileştirmek için AudioGraphInputbölümünde ses parçası süresini ayarlayın.
- ExportResult.processedInputsalanını kaldırın. Bu alanı codec ayrıntıları için kullanıyorsanız bunun yerine- DefaultDecoderFactory.listenerkullanın. Codec istisnası durumunda codec ayrıntıları- ExportException.codecInfobölümünde yer alır.
 
- Çıkış dosyasındaki ilgili parçanın nasıl oluşturulduğunu belirtmek için 
- Ayıklayıcılar:
- MPEG-TS: Değişikliği, son erişim birimini örnek sırasına ileterek son karenin oluşturulmasını sağlayacak şekilde ileriye taşıyın (#7909). Yalnızca I-frame HLS akışlarında(#1150) ve H.262 HLS akışlarında (#1126) ortaya çıkan sorunları gidermek için düzeltmeler eklendi.
- MP3: Temel akış tarafından bildirilen boyuta (ör. dosya boyutu veya HTTP Content-Lengthbaşlığı) kıyaslaInfoçerçevesindeki veri boyutu tercih edilir. Bu, oynatılamayan fragman verilerinin (ör. albüm kapakları) sabit bit hızı arama hesaplamalarından hariç tutulmasına yardımcı olarak aramaları daha doğru hale getirir (#1376).
- MP3: Sabit bit hızlı arama için ortalama bir bit hızı hesaplamak üzere Infoçerçevesindeki (varsa) çerçeve sayısını ve diğer verileri kullanın.Infoçerçevesinden sonraki çerçevenin bit hızından ekstrapolasyon yapmayın. Bu, yapay olarak küçük olabilir (ör.PCUTçerçevesi (#1376)).
- AVI kapsayıcılarda PCM ses biçimi ayıklama sorununu düzeltir.
 
- Ses:
- DTS:X Profile 2 kodlama özelliklerini, geçişli oynatma için düzeltin (#1299).
- Boşaltılmış oynatma için, AudioTrack.stop()çağrılmadan önceDefaultAudioSinkiçinde akış tamamlama için izleme alanını sıfırlayın. BöyleceAudioTrack.StreamEventCallback#onPresentationEnded, bekleyen tüm verilerin oynatıldığı zamanı doğru şekilde tanımlar.
- Farklı ses biçimleri (ör. stereo'dan mono'ya) arasındaki geçişlerin işlemcinin istisna oluşturmasına neden olabildiği SilenceSkippingAudioProcessor'daki hata düzeltildi (#1352).
- MediaCodecAudioRenderer.getDurationToProgressUs()uygulayın. Böylece ExoPlayer, ana iş döngüsünü MediaCodecAudioRenderer'ın ilerleme kaydedebileceği zamana göre dinamik olarak planlar.
 
- Video:
- Oynatma sırasında yüzey değiştirildiğinde Listener.onRenderedFirstFrame()simgesinin çok erken gelmesi sorunu düzeltildi.
- Gerekirse uyumlu bir AV1 kod çözücü kullanmak için Dolby Vision'daki kod çözücü yedek mantığını düzeltin (#1389).
- Video oluşturucunun oynatma sırasında etkinleştirilmesinden kaynaklanabilecek codec istisnası düzeltildi.
 
- Oynatma sırasında yüzey değiştirildiğinde 
- Metin:
- Arama konumundan önce başlayan altyazıların atlanmasına neden olan sorun düzeltildi. Bu sorun yalnızca Media3 1.4.0-alpha01 sürümünde ortaya çıkmıştır.
- Varsayılan altyazı ayrıştırma davranışını, oluşturma sırasında değil, ayıklama sırasında gerçekleşecek şekilde değiştirin (Ayıklama ve oluşturma arasındaki fark için ExoPlayer'ın mimari şeması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 bağlayacağınızla ilgili özelleştirme belgelerine bakın. Bu yöntemler (ve eski altyazı kod çözme desteği) gelecekteki bir sürümde kaldırılacaktır.
- Özel SubtitleDecoderuygulamaları olan uygulamaların,SubtitleDecoderyerineSubtitleParser'yi (veSubtitleDecoderFactoryyerineSubtitleParser.Factory) uygulamak için güncellenmesi gerekir.
 
- Bu değişiklik, hem
- PGS: 0öğesini sabit renk değeri (#1367) yerine renk dizini olarak çözmek için uzunluk kod çözme sorununu düzeltin.
- CEA-708: rowLockdeğerini yoksayın. CEA-708-E S-2023 spesifikasyonu, akışta bulunan değerlerden bağımsız olarak hemrowLockhem decolumnLockdeğerlerinin doğru kabul edilmesi gerektiğini belirtir (columnLockdesteği uygulanmadığından her zaman yanlış olduğu varsayılır).- 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ınmıştı. Bu sorun düzeltildi ve değişiklik tekrar gösteriliyor.
 
- Bu değişiklik başlangıçta 
- CEA-708: ExoPlayer'ın "kalem konumunu ayarla" komutunu basit bir şekilde işlemesi nedeniyle eklenen yinelenen yeni satırları önleyin (#1315).
- Bir WebVTT altyazı örneği ipucu içermediğinde (ör. DASH akışının bir parçası olarak) IllegalArgumentExceptionLegacySubtitleUtilsorununu düzeltin (#1516).
 
- Meta veri:
- 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,TSO2,TSOAveTSOPID3 etiketleriyle yanlış şekilde eşleniyordu (#1302).
- Değer birden fazla bayt uzunluğunda olduğunda MP4 (/iTunes) sayısal gnre(tür) vetmpo(tempo) etiketlerinin okunmasıyla ilgili sorun düzeltildi.
- ID3 TCONçerçevesiniMediaMetadata.genrekonumuna yayınlayın (#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ümlerde AVIF desteği eklendi.
- Daha önce ayarlanmış bir ImageOutputdeğerini temizlemek içinExoPlayer.setImageOutput()parametresi olaraknulldeğerine izin verin.
 
- DataSource:
- android.resource://package/idham kaynak URI'leri için destek uygulayın. Burada- package, mevcut uygulamanın paketinden farklıdır. Bu yöntem daha önce çalışır şekilde belgelenmemişti ancak başka bir paketteki kaynaklara ada göre erişmekten daha verimli bir yöntemdir.
- url'nın- DataSpecoluşturucularında null olmayan bir değer olup olmadığını kontrol edin. Bu parametre zaten null olmayan olarak açıklama eklenmiş.
- ByteArrayDataSource, bir URI'yi oluşturma sırasında sabit kodlanmak yerine- open()sırasında bir bayt dizisine çözebilir (#1405).
 
- DRM:
- DefaultDrmSessionManagerProviderüzerinde- LoadErrorHandlingPolicyayarlanmasına izin verin- DefaultDrmSessionManagerProvider(#1271).
 
- Etki:
- SpeedChangeEffectiçinde aynı- EditedMediaItemveya- Compositioniçinde birden fazla hız değişikliği desteği.
- Ultra HDR bit eşlem girişinden HLG ve PQ çıkışı desteği.
- ExoPlayer.setVideoEffect ve Transformer'ın DebugSurfaceView'inde HLG yüzey çıkışını iyileştiren EGL_GL_COLORSPACE_BT2020_HLG_EXT desteği eklendi.
- setOverlayFrameAnchor()içinde uygulanan x ve y değerlerini ters çevirerek yer paylaşımı matrisi uygulamasını dokümanlarla tutarlı olacak şekilde güncelleyin.- OverlaySettings.Builder.setOverlayFrameAnchor()kullanılıyorsa x ve y değerlerini- -1ile çarparak ters çevirin.
- TimestampWrapperile kullanıldığında- ExoPlayer#setVideoEffectskilitlenmesine neden olan hata düzeltildi- ExoPlayer#setVideoEffects(#821).
- Varsayılan SDR renk çalışma alanını doğrusal renklerden elektriksel BT 709 SDR videosuna değiştirin. Ayrıca, orijinal renk uzayını korumak için üçüncü bir seçenek sunun.
- EditedMediaItemSequences'ın belirsiz z-sırasının tanımlanmasına izin verin (#1055).
- Farklı HDR içeriklerinde tutarlı bir parlaklık aralığı korur (HLG aralığını kullanır).
- HDR içeriklerde Ultra HDR (bitmap) katmanları için destek eklendi.
- SeparableConvolutionefektlerinin API 26'dan önce kullanılmasına izin verin.
- Yer paylaşımı ve çerçevenin dinamik aralığı eşleşmelidir. Bu nedenle, kullanılmayan OverlaySettings.useHdröğesini kaldırın.
- TextOverlayiçin HDR desteği eklendi. Metin yer paylaşımının parlaklığı- OverlaySettings.Builder.setHdrLuminanceMultiplier()ile ayarlanabilir.
 
- IMA uzantısı:
- Uygulamaların DAI reklam akışlarını oynatması için gereken Promote API'yi kararlı sürüme yükseltin.
- replaceAdTagParameters(Map <String, String>)öğesine, reklam etiketi parametrelerinin çalışma zamanında değiştirilmesine olanak tanıyan- ImaServerSideAdInsertionMediaSource.AdLoadereklendi.
- 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- NullPointerExceptionhatasını düzeltmek için IMA SDK sürümünü 3.33.0'a yükseltin (#700).
 
- Oturum:
- CommandButton.enabledvarsayılanını- trueolarak değiştirin ve ilişkili komut kullanılabilir olsa bile değerin denetleyiciler için yanlış kalmasını sağlayın.
- Özel simge kaynakları yerine kullanılması gereken CommandButtoniçin simge sabitleri ekleyin.
- Uygulamaların, hizmetin onTaskRemoved()içinde durdurulması gerekip gerekmediğini sorgulamasına izin vermek içinMediaSessionService.isPlaybackOngoing()ekleyin (#1219).
- Tüm oturumların oynatılmasını kolayca duraklatmaya olanak tanıyan MediaSessionService.pauseAllPlayersAndStopSelf()işlevini ekleyin veMediaSessionServiceyaşam döngüsünü sonlandırmak içinstopSelf()işlevini çağırın.
- MediaSessionService.onTaskRemoved(Intent)işlevini geçersiz kılarak güvenli bir varsayılan uygulama sağlayın. Bu uygulama, oynatma devam ediyorsa hizmeti ön planda çalışır durumda tutar, aksi takdirde hizmeti durdurur.
- Süreyi platform oturumu meta verilerine ayarlamayarak canlı yayınlar için medya bildiriminde arama çubuğunu gizleyin (#1256).
- Meta veri özelliklerini seçerken media1'dekiyle aynı tercih edilen sırayı ve mantığı kullanmak için MediaMetadatadönüşümünüMediaDescriptionCompatile hizalayın.
- MediaSession.sendError()ekleyin. Bu, önemli olmayan hataların Media3 denetleyicisine gönderilmesine olanak tanır. Bildirim denetleyicisi (bkz.- MediaSession.getMediaNotificationControllerInfo()) kullanılırken özel hata, platform oturumunun- PlaybackStatedeğerini verilen hata bilgileriyle birlikte hata durumuna güncellemek için kullanılır ( #543).
- Belirli bir kumandadan gelen bir dizi oynatıcı etkileşimi sona erdiğinde oturumları bilgilendirmek için MediaSession.Callback.onPlayerInteractionFinished()ekleyin.
- SessionErrorekleyin ve hata hakkında daha fazla bilgi sağlamak için hata kodu yerine- SessionResultve- LibraryResultiçinde kullanın. Mümkünse hatanın nasıl çözüleceği hakkında da bilgi verin.
- Medya oturumu yayınlayan uygulamalarla etkileşimleri test etmek için kullanılabilecek media3 denetleyici test uygulamasının kodunu yayınlayın.
- Media3'ün MediaSession[Builder].setSessionExtras()işlevine iletilen ekstraları, Media1 denetleyicisininMediaSession[Builder].setSessionExtras()işlevine yayma.PlaybackStateCompat.getExtras()
- Önemli ve önemsiz hataları platform oturumuyla eşleyin. PlaybackException,PlaybackStateCompatöğesinin kritik hata durumuna eşlenir.MediaSession.sendError(ControllerInfo, SessionError)ile medya bildirimi denetleyicisine gönderilenSessionError,PlaybackStateCompatiçinde ölümcül olmayan bir hatayla eşlenir. Bu, hata kodu ve mesajının ayarlandığı ancak platform oturumunun durumununSTATE_ERROR'den farklı kaldığı anlamına gelir.
- Genel oturum etkinliğini geçersiz kılmak için oturum etkinliğinin kontrol cihazı başına ayarlanmasına izin verin. Oturum etkinliği, bağlantı sırasında ConnectionResultoluşturularak bir denetleyici için tanımlanabilir.AcceptedResultBuilder.setSessionActivivty(PendingIntent)Bağlantı kurulduktan sonra oturum etkinliğiMediaSession.setSessionActivity(ControllerInfo, PendingIntent)ile güncellenebilir.
- MediaLibrarySession.Callback'a yapılan çağrıların hata tekrarını iyileştirin. Hata çoğaltma özelliği, hata türünü seçmek için- MediaLibrarySession.Builder.setLibraryErrorReplicationMode()kullanılarak yapılandırılabilir veya varsayılan olarak etkin olan hata çoğaltma özelliği devre dışı bırakılabilir.
 
- UI:
- ExoPlayercihazına bağlandığında- PlayerViewcihazına görüntüleme desteği ekleyin (#1144).
- PlayerControlViewörneği başına farklı çizilebilir öğelere izin vermek için xml özellikleri aracılığıyla- PlayerControlView'deki çeşitli simgelerin özelleştirilmesini ekleyin (genel geçersiz kılmalar yerine) (#1200).- PlayerView
- API 34'te Compose AndroidViewiçindeSurfaceViewkullanılırken videonun uzamasına/kırpılmasına neden olan platform hatası düzeltildi (#1237).
 
- İndirilenler:
- DownloadHelper'nın yayınlanmamış- Rendererörneklerini sızdırmadığından emin olun. Bu durum, uygulamanın- IllegalStateException: Too many receivers, total of 1000, registered for pidile kilitlenmesine neden olabilir (#1224).
 
- Cronet Uzantısı:
- SocketTimeoutExceptionile ilgili sorunu- CronetDataSourceiçinde düzeltin. Cronet'in bazı sürümlerinde geri çağırma tarafından sağlanan istek her zaman aynı değildir. Bu durum, geri aramanın tamamlanmamasına ve isteğin zaman aşımına uğramasına neden olur (https://issuetracker.google.com/328442628).
 
- HLS Uzantısı:
- Beklemede olan EMSG örneklerinin süreksizlik beklenirken HlsSampleStreamWrapperiçinde yanlış bir ofsetle temsil edilerekIndexOutOfBoundsExceptionveyaIllegalArgumentExceptionhatasına neden olduğu hata düzeltildi (#1002).
- LL-HLS yayınlarında birincil olmayan oynatma listelerinin sürekli yeniden yüklenmesine neden olan hata düzeltildi (#1240).
- Başlatma segmentleriyle HLS için CMCD'nin etkinleştirilmesinin Source ErrorveIllegalArgumentExceptionile sonuçlandığı hata düzeltildi.
- Birincil oynatma listesi olmayan oynatma listelerinin canlı oynatma sırasında yenilenmemesi hatası düzeltildi (#1240).
- HLS canlı yayınlarında CMCD'nin etkinleştirilmesinin neden olduğu hatayı düzeltildi
ArrayIndexOutOfBoundsException(#1395).
 
- Beklemede olan EMSG örneklerinin süreksizlik beklenirken 
- DASH Uzantısı:
- Cast Uzantısı:
- Media3 medya öğesindeki MediaQueueItemalbüm başlığını sanatçıya dönüştüren hata düzeltildi (#1255).
 
- Media3 medya öğesindeki 
- Test yardımcı programları:
- FakeRendereriçinde- onInit()ve- onRelease()işaretlemelerini uygulayın.
- TestPlayerRunHelper.runUntil()/playUntil()yöntemlerini, önemli olmayan hatalarda (ör.- AnalyticsListener.onVideoCodecError()'a bildirilenler) başarısız olacak şekilde değiştirin. Bu davranışı devre dışı bırakmak için yeni- TestPlayerRunHelper.run(player).ignoringNonFatalErrors().untilXXX()yöntem zincirini kullanın.
 
- Demo uygulaması:
- Kısa form demo uygulamasında DefaultPreloadManagerkullanın.
- Komut satırından Intentbağımsız değişkenleriyle tekrar modunun ayarlanmasına izin verin (#1266).
- Cihaz tarafından desteklendiğinde HttpEngineDataSourceolarakHttpDataSourcekullanın.
 
- Kısa form demo uygulamasında 
- Desteği sonlandırılan sembolleri kaldırın:
- CronetDataSourceFactoryöğesini kaldırın. Bunun yerine- CronetDataSource.Factorypolitikasını kullanın.
- Bazı DataSpecoluşturucuları kaldırın. Bunun yerineDataSpec.Builderpolitikasını kullanın.
- setContentTypePredicate(Predicate)yöntemi,- DefaultHttpDataSource,- OkHttpDataSourceve- CronetDataSourceöğelerinden kaldırıldı. Bunun yerine her- XXXDataSource.Factoryiçin eşdeğer yöntemi kullanın.
- OkHttpDataSourceoluşturucularını ve- OkHttpDataSourceFactory'yi kaldırın. Bunun yerine- OkHttpDataSource.Factorypolitikasını kullanın.
- PlayerMessage.setHandler(Handler)öğesini kaldırın. Bunun yerine- setLooper(Looper)politikasını kullanın.
- Timeline.Window.isLivealanını kaldırın. Bunun yerine- isLive()yöntemini kullanın.
- DefaultHttpDataSourceyapılandırıcılarını kaldırın. Bunun yerine- DefaultHttpDataSource.Factorykullanın.
- DashMediaSource.DEFAULT_LIVE_PRESENTATION_DELAY_MSöğesini kaldırın. Bunun yerine- DashMediaSource.DEFAULT_FALLBACK_TARGET_LIVE_OFFSET_MSkullanın.
- MediaCodecInfo.isSeamlessAdaptationSupported(Format, Format, boolean)öğesini kaldırın. Bunun yerine- MediaCodecInfo.canReuseCodec(Format, Format)politikasını kullanın.
- DrmSessionManager.DUMMYve- getDummyDrmSessionManager()yöntemini kaldırın. Bunun yerine- DrmSessionManager.DRM_UNSUPPORTEDpolitikasını kullanın.
- AnalyticsListener.onAudioInputFormatChanged(EventTime, Format),- AnalyticsListener.onVideoInputFormatChanged(EventTime, Format),- AudioRendererEventListener.onAudioInputFormatChanged(Format),- VideoRendererEventListener.onVideoInputFormatChanged(Format)öğelerini kaldırın. Bunun yerine- DecoderReuseEvaluationalanını alan aşırı yüklemeleri kullanın.
- RendererSupport.FormatSupportIntDef ve- FORMAT_HANDLED,- FORMAT_EXCEEDS_CAPABILITIES,- FORMAT_UNSUPPORTED_DRM,- FORMAT_UNSUPPORTED_SUBTYPE,- FORMAT_UNSUPPORTED_TYPEsabitlerini kaldırın. Bunun yerine- androidx.media3.common.Ciçindeki eşdeğer IntDef ve sabitleri (ör.- C.FORMAT_HANDLED) kullanın.
- Bundleablearayüzünü kaldırın. Buna, tüm- Bundleable.Creator<Foo> CREATORsabit alanlarının kaldırılması dahildir. Arayanlar bunun yerine her türde- Bundle toBundle()ve- static Foo fromBundle(Bundle)yöntemlerini kullanmalıdır.
 
Sürüm 1.4.0-rc01
10 Temmuz 2024
1.4.0 kararlı sürümünü kullanın.
Sürüm 1.4.0-beta01
26 Haziran 2024
1.4.0 kararlı sürümünü kullanın.
Sürüm 1.4.0-alpha02
7 Haziran 2024
1.4.0 kararlı sürümünü kullanın.
Sürüm 1.4.0-alpha01
17 Nisan 2024
1.4.0 kararlı sürümünü kullanın.
Sürüm 1.3.0
Sürüm 1.3.1
11 Nisan 2024
androidx.media3:media3-*:1.3.1 iptal edilir.
1.3.1 sürümü şu 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:
- PreloadMediaPeriod'nın önceden yüklenmesi durumunda akışları koruyamaması sorunu düzeltildi.
- Parça yeniden seçilirken doğru TrackSelectionResultdeğerini oynatma süresine uygulayın.
- Medya öğeleri arasında geçiş yaparken oynatma süresini ilerlettikten sonra erken etkinleştirilmiş oluşturucuları başlatın (#1017).
- Proguard -keepclasseswithmemberskuralına eksik dönüş türü eklendiDefaultVideoFrameProcessor.Factory.Builder.build()(#1187).
 
- Dönüştürücü:
- API 30'dan önce MediaMuxernegatif sunum zaman damgalarını desteklemediği için oluşturulan istisna için geçici çözüm eklendi.
 
- API 30'dan önce 
- Parça Seçimi:
- DefaultTrackSelector: Daha düşük veya ayarlanmamış kare hızına sahip video parçaları yerine "makul" bir kare hızına (>=10 fps) sahip video parçalarını tercih edin. Bu sayede oynatıcı, iki HEVC parçası içerebilen hareketli fotoğraflardan çıkarılan MP4'lerde "gerçek" video parçasını seçer. Bu parçalardan birinin çözünürlüğü daha yüksek ancak kare sayısı çok düşüktür (#1051).
 
- Ayıklayıcılar:
- WAV dosyalarından tek boyutlu parçalar okunurken dolgunun atlanmaması sorunu düzeltildi (#1117).
- MP3: Format.averageBitrateveVBRIgibi meta veri çerçevelerindenXINGalanını doldurun.
- MPEG-TS: Bir akışın son erişim birimini örnek sırasına ileterek son karenin oluşturulmasını sağlamayı amaçlayan bir değişikliği geri alın (#7909). Bunun nedeni, yalnızca I-frame HLS yayınlarında (#1150) ve H.262 HLS yayınlarında (#1126) yeni sorunlara yol açan değişikliktir.
 
- Ses:
- Ses parçası, yükü boşaltma modunda başlatılamazsa yükü boşaltmayı devre dışı bırakarak oluşturucu kurtarmaya izin verin.
 
- Video:
- Galaxy Tab S7 FE, Google TV'li Chromecast ve Lenovo M10 FHD Plus'ta 60 fps H265 yayınlarının desteklenmiyor olarak işaretlenmesine neden olan cihaz sorununa yönelik geçici çözüm eklendi.
- Cihaz, API'nin gerektirdiği şekilde bunu otomatik olarak yapmasa bile tünel oluşturma sırasında ilk karenin her zaman oluşturulmasını sağlayan geçici çözüm eklendi (#1169). (#966).
- HDR renk bilgisi işleme özelliğinin codec'in yanlış ç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 ipuçlarının CuesWithTimingöğesinden sahte ekWebvttParser.parseörnekleri oluşturmasını önleyin (#1177).
 
- WebVTT: Doğrudan ardışık ipuçlarının 
- DRM:
- Bazı Android 14 cihazlarda ResourceBusyExceptionveyaNotProvisionedExceptionyerineMediaDrmçerçevesi tarafından oluşturulabilenNoSuchMethodErrorsorununu çözün (#1145).
 
- Bazı Android 14 cihazlarda 
- Etki:
- Renk alanları dönüştürülerek PQ'dan SDR'ye ton eşleme iyileştirildi.
 
- Oturum:
- UI:
- Locale, görünen adı tanımlayamıyorsa ses parçası dilinin adını ekleyin (#988).
 
- DASH Uzantısı:
- Manifest dosyasındaki tüm LabelöğeleriniFormat.labelsile doldurun (#1054).
 
- Manifest dosyasındaki tüm 
- RTSP Uzantısı:
- SDP ayrıştırmasında boş oturum bilgisi değerlerini (i-etiketleri) atlayın (#1087).
 
- Kod Çözücü Uzantıları (FFmpeg, VP9, AV1, MIDI vb.):
- MIDI uzantısı, ek bir Maven deposunun yapılandırılmasını gerektirdiğinden varsayılan olarak yerel bağımlılık şeklinde devre dışı bırakılır. Yerel bağımlılıktan bu modüle ihtiyacı olan kullanıcılar modülü yeniden etkinleştirebilir.
 
Sürüm 1.3.0
6 Mart 2024
androidx.media3:media3-*:1.3.0 iptal edilir.
1.3.0 sürümü bu commit'leri içerir.
- Ortak kitaplık:
- android.resource://package/[type/]nameham kaynak URI'leri için destek uygulayın. Burada- package, mevcut uygulamanın paketinden farklıdır. Bu özellik her zaman çalışacak şekilde belgelenmiş olsa da şimdiye kadar doğru şekilde uygulanmamıştı.
- Uygulama kodu tarafından ayarlanan veya medyadan okunan MIME türlerini tamamen küçük harfli olacak şekilde normalleştirin.
- AdPlaybackStateiçinde tek bir- Uriyerine tam bir- MediaItemile reklam 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ş olmayan değer içerdiğinde artworkUriveartworkDatadeğerleriniMediaMetadata.Builder.populate(MediaMetadata)içinde doldurun (#964).
 
- ExoPlayer:
- Uygulamaların, oynatma işleminden önce belirli bir başlangıç konumunda içerik medya kaynağını önceden yüklemesine olanak tanıyan PreloadMediaSourcevePreloadMediaPeriodöğelerini ekleyin.PreloadMediaSource,Timelinealmak için içerik medya kaynağını hazırlama, dönemi verilen başlangıç konumunda hazırlayıp önbelleğe alma, parçaları seçme ve döneme ait medya verilerini yükleme işlemlerini yapar. Uygulamalar,PreloadMediaSource.PreloadControluygulayarak önceden yükleme ilerleme durumunu kontrol eder ve önceden yüklenen kaynağı oynatma için oynatıcıya ayarlar.
- Uygulamaların ExoPlayer.setImageOutputayarlamasına izin verenImageRenderer.ImageOutputekleyin.
- DefaultRenderersFactoryartık varsayılan olarak oyuncuya boş- ImageOutputve- ImageDecoder.Factory.DEFAULTile- ImageRenderersağlıyor.
- Sessize alma atlandığında Player.Listener.onPositionDiscontinuityetkinliğini yayınlayın (#765).
- Ayıklama sırasında altyazı ayrıştırma için deneysel destek eklendi. Bu özelliği MediaSource.Factory.experimentalParseSubtitlesDuringExtraction()kullanarak etkinleştirebilirsiniz.
- PreloadMediaSourceile uyarlanabilir medya kaynaklarını destekleyin.
- HttpEngine API'sini kullanarak HttpEngineDataSourceHttpDataSourceuygulayın.
- Alt sınıfları önleme CompositeSequenceableLoader. Bu bileşen daha önce genişletilebilir hale getirilmiş ancak kitaplıkta hiçbir zaman alt sınıfa ayrılmamıştır. Özelleştirmeler, decorator pattern kullanılarak bir örneğin sarmalanması ve özel birCompositeSequenceableLoaderFactoryuygulanmasıyla yapılabilir.
- Aynı saatin tekrar edilmesi durumunda bu öğenin meta verilerinin temizlenmesine neden olan sorun düzeltildi (#1007).
- experimentalSetSubtitleParserFactoryyöntemlerini- BundledChunkExtractor.Factoryve- DefaultHlsExtractorFactoryüzerinde- setSubtitleParserFactoryolarak yeniden adlandırın ve- nulliletilmesine izin vermeyin. Ayrıştırma davranışını kontrol etmek için yeni- experimentalParseSubtitlesDuringExtraction(boolean)yöntemlerini kullanın.
- Ayıklama sırasında kullanılan SubtitleParser.Factorykarakterini özelleştirme desteği eklendi. Bu,MediaSource.Factory.setSubtitleParserFactory()ile yapılabilir.
- MergingMediaSourcekaynağından oluşturulan tüm- Format.idalanlarına kaynak öneki ekleyin. Bu, hangi kaynağın- Formatoluşturduğunu belirlemeye yardımcı olur (#883).
- Özel Common Media Client Data (CMCD) anahtar adlarını doğrulamak için kullanılan normal ifadeyi yalnızca kısa çizgi kontrolü yapacak şekilde değiştirerek düzeltin (#1028).
- CMCD sorgu parametrelerinin çift kodlanmasını durdurma (#1075).
 
- Uygulamaların, oynatma işleminden önce belirli bir başlangıç konumunda içerik medya kaynağını önceden yüklemesine olanak tanıyan 
- Dönüştürücü:
- H.265/HEVC SEF yavaş çekim videolarının düzleştirilmesi için destek eklendi.
- Özellikle "videoyu kaldırma" düzenlemelerinde transmuks hızını artırır.
- Çıkış dosyasının bir video karesinde başlamasını sağlamak için API ekleyin. Bu, kırpma işlemlerinin çıkışını, ilk video karesini sunum zaman damgasına (#829) kadar göstermeyen oynatıcı uygulamalarıyla daha uyumlu hale getirebilir.
- Tek öğeli MP4 kırpma işlemlerini optimize etme desteği eklendi.
- Bir video karesinin çıkış dosyasında ilk zaman damgasına sahip olmasını sağlamak için destek ekleyin. iOS tabanlı oynatıcılarda siyah kareyle başlayan çıkış dosyaları düzeltildi (#829).
 
- Parça Seçimi:
- Resim parçası seçimini etkinleştirmek için DefaultTrackSelector.selectImageTrackekleyin.
- Hem resim parçası hem de video parçası varsa resim parçasının seçilip seçilmeyeceğini belirlemek için TrackSelectionParameters.isPrioritizeImageOverVideoEnabledekleyin. Varsayılan değerfalse'dır. Bu değer, 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.colorTransferve- ColorInfo.colorRangedeğerlerini almak için MP4 çıkarıcıya ek AV1C ayrıştırma işlemi eklendi (#692).
- MP3: Infoüstbilgisine sahip dosyalar için sabit bit hızı (CBR) arama kullanın (Xingüstbilgisinin CBR eşdeğeri). Daha önceInfoüstbilgisindeki seek table'ı kullanıyorduk ancak bu, seek table'ı yok sayıp dosyanın CBR olduğunu varsaydığımızda elde ettiğimizden daha az hassas bir arama sağlıyordu.
- MPEG2-TS: DTS, DTS-LBR ve DTS:X Profile2 desteği eklendi (#275).
- TS tanımlayıcılarından ses türlerini ayıklayıp rol işaretleriyle eşleyerek kullanıcıların daha bilinçli ses parçası seçimleri yapmasına olanak tanır (#973).
 
- Ses:
- Video:
- VideoFrameProcessor.Factorybağımsız değişkenini alan- MediaCodecVideoRendereroluşturucusunu,- VideoSinkProviderbağımsız değişkenini alan bir oluşturucuyla değiştirin. Özel- VideoFrameProcessor.Factoryeklemek isteyen uygulamalar, özel- CompositingVideoSinkProviderkullanan bir- VideoFrameProcessor.Factoryoluşturabilir ve video sink sağlayıcıyı- MediaCodecVideoRendereröğesine iletebilir.
 
- Metin:
- DefaultExtractorsFactory.setTextTrackTranscodingEnabled- Tried to marshall a Parcel that contained Binder objects(#836) kullanırken- Tried to marshall a Parcel that contained Binder objectshatasını çözmek için bit eşlem ipuçlarının serileştirilmesini düzeltin.
- CEA-708: rowLockdeğerini yoksayın. CEA-708-E S-2023 spesifikasyonu, akışta bulunan değerlerden bağımsız olarak hemrowLockhem decolumnLockdeğerlerinin doğru kabul edilmesi gerektiğini belirtir (columnLockdesteği uygulanmadığından her zaman yanlış olduğu varsayılır).
 
- Resim:
- DASH küçük resimleri için destek eklendi. Izgara resimleri kırpılır ve sunum zamanlarına yakın ImageOutputiçin ayrı küçük resimler sağlanır.
 
- DASH küçük resimleri için destek eklendi. Izgara resimleri kırpılır ve sunum zamanlarına yakın 
- DRM:
- DRM içeriğindeki "net lider" şifrelenmemiş örnekleri, sonraki şifrelenmiş örneklerin anahtarları henüz hazır olmasa bile varsayılan olarak hemen oynatın. Oynatma konumu şifrelenmiş örneklere ulaştığında anahtarlar hâlâ hazır değilse bu durum, oynatma sırasında duraklamalara neden olabilir (ancak daha önce oynatma bu noktada hiç başlamazdı). Bu davranış, MediaItem.DrmConfiguration.Builder.setPlayClearContentWithoutKeyveyaDefaultDrmSessionManager.Builder.setPlayClearSamplesWithoutKeysile devre dışı bırakılabilir.
 
- DRM içeriğindeki "net lider" şifrelenmemiş örnekleri, sonraki şifrelenmiş örneklerin anahtarları henüz hazır olmasa bile varsayılan olarak hemen oynatın. Oynatma konumu şifrelenmiş örneklere ulaştığında anahtarlar hâlâ hazır değilse bu durum, oynatma sırasında duraklamalara neden olabilir (ancak daha önce oynatma bu noktada hiç başlamazdı). Bu davranış, 
- IMA uzantısı:
- Uygun dosya uzantısına sahip olmayan DASH ve HLS reklamlarının oynatılamaması sorunu düzeltildi.
 
- Oturum:
- TV uygulamalarında çift tıklama algılamayı devre dışı bırakma (#962).
- Yalnızca boş olmayan ekstralar içeren MediaItem.RequestMetadataöğesinin medya denetleyicileri ve oturumlar arasında iletilmemesi sorunu düzeltildi.
- MediaLibrarySession.Builderöğesine- MediaLibraryServiceyerine yalnızca- Contextalan bir oluşturucu ekleyin.
 
- HLS Uzantısı:
- HlsMediaPeriodöğesini paket içi görünürlüğe düşürün. Bu tür, HLS paketi dışından doğrudan kullanılmamalıdır.
- Çözüm, bir segmentin başlangıcını daha verimli bir şekilde bulmaya çalışır (#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ı duraklatmayın. Test, oynatmayı oynatma durumunda tutar ancak test, onaylamalar ve başka işlemler ekleyene kadar ilerlemeyi askıya alır.
 
- Demo uygulaması:
- PreloadMediaSourcekullanımını kısa formatlı içerik kullanım alanıyla birlikte tanıtmak için kısa formatlı bir demo modülü ekleyin.
 
Sürüm 1.3.0-rc01
22 Şubat 2024
1.3.0 kararlı sürümünü kullanın.
Sürüm 1.3.0-beta01
7 Şubat 2024
1.3.0 kararlı sürümünü kullanın.
Sürüm 1.3.0-alpha01
15 Ocak 2024
1.3.0 kararlı sürümünü kullanın.
Sürüm 1.2.0
Sürüm 1.2.1
9 Ocak 2024
- ExoPlayer:
- LiveConfiguration.min/maxOffsetaralığı dışındaki manuel aramalarda, ofsetin tekrar- min/maxOffsetolarak ayarlanmaya devam etmesi sorunu düzeltildi.
- OPUS ve VORBIS kanal düzenlerinin 3, 5, 6, 7 ve 8 kanalda yanlış olmasına neden olan sorun düzeltildi (#8396).
- Canlı yayında sıfıra gitme işleminden sonra parça seçimlerinin, yayının varsayılan konumdan başlamasına yanlışlıkla izin vermesi sorunu düzeltildi (#9347).
- CmcdData.Factoryöğesinin yeni örneklerinin, parça kaynaklarından- bufferedDurationUsiçin negatif değerler alarak- IllegalArgumentExceptionhatasına (#888) neden olduğu sorun düzeltildi.
 
- Dönüştürücü:
- Yüksek çalışma hızı ayarlandığı için kodlayıcının yapılandırma sırasında hata vermesine neden olan sorun giderildi.
 
- Ayıklayıcılar:
- Daha yüksek çözünürlükleri nedeniyle oynatma için otomatik olarak seçilmelerini önlemek amacıyla, JPEG hareketli fotoğraflarındaki ikincil (oynatılamayan) HEVC parçalarını ROLE_FLAG_ALTERNATEolarak işaretleyin.
- TS H264 akışlarında yanlış animasyon karesi algılamayı düzeltin (#864).
- 47.721 saniyeden uzun TS akışlarının süre tahminini düzeltme (#855).
 
- Daha yüksek çözünürlükleri nedeniyle oynatma için otomatik olarak seçilmelerini önlemek amacıyla, JPEG hareketli fotoğraflarındaki ikincil (oynatılamayan) HEVC parçalarını 
- Ses:
- SilenceSkippingAudioProcessorbirden çok kez çağrıldığında EOS'un işlenmesiyle ilgili sorun düzeltildi (#712).
 
- Video:
- Galaxy Tab S7 FE, Google TV'li Chromecast ve Lenovo M10 FHD Plus'ta 60 fps AVC akışlarının desteklenmiyor olarak işaretlenmesine neden olan cihaz sorununa yönelik geçici çözüm eklendi (#693).
 
- Meta veri:
- MediaMetadataöğesinin yalnızca büyük harfli anahtarlara sahip Vorbis yorumlarından doldurulduğu hata düzeltildi (#876).
- Çok büyük ID3 çerçeveleri ayrıştırılırken OutOfMemoryErrorhatası oluştuğunda oynatma tamamen başarısız olmak yerine etiket bilgisi olmadan devam edebilir.
 
- DRM:
- Sahte ClearKey https://default.urllisansı URL'si için geçici çözümü API 33 ve sonraki sürümlere genişletme (geçici çözüm daha önce yalnızca API 33'te geçerliydi) (#837).
- Oynatıcıya bağlı yüzey olmadan şifrelenmiş içerikten şifrelenmemiş içeriğe geçiş yaparken ERROR_DRM_SESSION_NOT_OPENEDdüzeltildi. Hata, şifrelenmemiş içeriği oynatmak için güvenli kod çözücünün yanlış kullanılmasından kaynaklanıyordu.
 
- Sahte ClearKey 
- Oturum:
- Özel anahtarları ve değerleri MediaMetadataCompatileMediaMetadata.extrasveMediaMetadata.extrasileMediaMetadataCompatarasına yerleştirin (#756, #802).
- Eski kontrol cihazları için yayın sorununu notifyChildrenChangeddü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 denetleyicisi bağlantı kurmayı tamamlamadığında IllegalStateExceptiondüzeltildi (#917).
 
- Özel anahtarları ve değerleri 
- UI:
- DASH Uzantısı:
- DASH manifestinde Dolby için "f800"ü 5 kanal sayısı olarak ayrıştırın (#688).
 
- Kod Çözücü Uzantıları (FFmpeg, VP9, AV1, MIDI vb.):
- Cast Uzantısı:
- Yayın cihazında medya yükleme işlemi başarısız olduğunda uygulamanın kilitlenmemesi için Timelineoluşturma işlemi temizlendi (#708).
 
- Yayın cihazında medya yükleme işlemi 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öntemlerdeki- messageparametresi artık- Log.{d,i,w,e}()yöntemlerine iletilen- Throwablehakkında herhangi bir bilgi içermiyor. Bu nedenle, istenirse uygulamaların bu bilgiyi manuel olarak eklemesi gerekir (muhtemelen- Logger.appendThrowableString(String, Throwable)kullanılarak).
- Boş değer atanabilir genel tür parametrelerinin ve boş değer atanabilir dizi öğesi türlerinin boş değer atanabilir olarak algılanmadığı Kotlin uyumluluğu sorunu düzeltildi. Örnekler arasında TrackSelectorResultveSimpleDecoderyöntemi parametreleri yer alır (#6792).
- Oynatma geçici olarak bastırılırken (ör. geçici ses odağı kaybı nedeniyle) "oynat" düğmesini göstermek için Util.shouldShowPlayButtonbölümünde varsayılan kullanıcı arayüzü ve bildirim davranışını değiştirin. Eski davranış,PlayerView.setShowPlayButtonIfPlaybackIsSuppressed(false)veyaMediaSession.Builder.setShowPlayButtonIfPlaybackIsSuppressed(false)kullanılarak korunabilir (#11213).
- https://issuetracker.google.com/251172715 adresindeki sorunu düzeltmek için androidx.annotation:annotation-experimentalsürümünü1.3.1sürümüne yükseltin.
- ExoPlayer.setAudioAttributesöğesini- Playerarayüzüne taşıyın.
 
- ExoPlayer:
- Yalnızca kod çözme örneklerinin doğru şekilde tanımlanmamasından kaynaklanan AC4 akışlarındaki arama sorunları düzeltildi (#11000).
- Bu özellik ExoPlayer.Builder.setSuppressPlaybackOnUnsuitableOutputüzerinden etkinleştirildiğinde uygun olmayan ses çıkışı cihazlarında (ör. Wear OS cihazlardaki yerleşik hoparlör) oynatmanın engellenmesi eklendi. Oynatma sırasında uygun ses çıkışı yoksa veya tüm uygun çıkışlar bağlantısı kesilmişse oynatma engelleme nedeniPlayer.PLAYBACK_SUPPRESSION_REASON_UNSUITABLE_AUDIO_OUTPUTolarak güncellenir. Uygun bir çıkış bağlandığında bastırma nedeni kaldırılır.
- MediaSource.canUpdateMediaItemve- MediaSource.updateMediaItemöğelerini ekleyerek- MediaItemgüncellemelerini oluşturulduktan sonra- Player.replaceMediaItem(s)üzerinden kabul edin.
- Player.replaceMediaItem(s)üzerinden kitaplık tarafından sağlanan tüm- MediaSourcesınıfları için- MediaItemgüncellemelerine izin verin (#33, #9978).
- MimeTypes.TEXT_EXOPLAYER_CUESöğesini- MimeTypes.APPLICATION_MEDIA3_CUESolarak yeniden adlandırın.
- PngExtractoröğesini ekleyin. Bu öğe, örnek olarak- TrackOutputiçine tam bir PNG dosyası gönderir ve okur.
- SequenceableLoaderarayüzündeki- SequenceableLoader.continueLoading(long)yöntemi- SequenceableLoader.continueLoading(LoadingInfo loadingInfo)olarak geliştirildi.- LoadingInfo, mevcut- playbackPositionUs'e ek olarak- playbackSpeedve- lastRebufferRealtimeMsgibi ek parametreler içerir.
- ChunkSourcearayüzündeki- ChunkSource.getNextChunk(long, long, List, ChunkHolder)yöntemi- ChunkSource.getNextChunk(LoadingInfo, long, List, ChunkHolder)olarak geliştirildi.
- Ortak Medya İstemcisi Verileri (CMCD) günlüğüne ek alanlar ekleyin: arabellek yetersizliği (bs), son tarih (dl), oynatma hızı (pr) ve başlatma (su) (#8699).
- ColorInfoöğesine parlaklık ve renk bit derinliği eklendi (#491).
- Ortak Medya İstemci Verileri (CMCD) günlüğüne ek alanlar ekleyin: sonraki nesne isteği (nor) ve sonraki aralık isteği (nrr) (#8699).
- Sorgu parametrelerini (#553) kullanarak Common Media Client Data (CMCD) verilerini iletme işlevi ekleyin.
- ConcurrentModificationExceptionile ilgili sorunu- ExperimentalBandwidthMeteriçinde düzeltin (#612).
- MediaPeriodIdparametresini- CompositeMediaSource.getMediaTimeForChildMediaTimeöğesine ekleyin.
- ClippingMediaSource(ve dönem/pencere zamanı kaymaları olan diğer kaynaklar)- ConcatenatingMediaSource2'da desteklenir (#11226).
- BaseRenderer.onStreamChanged()işlevini,- MediaPeriodIdbağımsız değişkenini de alacak şekilde değiştirin.
 
- Dönüştürücü:
- Görüntü girişleri için EXIF döndürme verilerini ayrıştırın.
- TransformationRequest.HdrModeaçıklama türünü ve ilişkili sabitlerini kaldırın. Bunun yerine- Composition.HdrModeve ilişkili sabitlerini kullanın.
- Döndürme sorunlarını düzeltmek için OverlaySettingsöğesini basitleştirin.
- SampleConsumer.queueInputBitmapöğesinin- frameRateve- durationUsparametreleri- TimestampIteratorolarak değiştirildi.
 
- Parça Seçimi:
- Kesintisiz olmayan uyarlamaya açıkça izin vermek veya izin vermemek için DefaultTrackSelector.Parameters.allowAudioNonSeamlessAdaptivenessekleyin. Varsayılan olaraktruedavranışı geçerli olmaya devam eder.
 
- Kesintisiz olmayan uyarlamaya açıkça izin vermek veya izin vermemek için 
- Ayıklayıcılar:
- MPEG-TS: Bir akışın son erişim birimini örnek kuyruğuna ileterek son karenin oluşturulduğundan emin olun (#7909).
- rotationDegreesbelirlenirken yazım hatasını düzeltin.- projectionPosePitch,- projectionPoseRollolarak değiştirildi (#461).
- Extractorörneklerinin doğrudan- instanceofile incelenebileceği varsayımını kaldırın. Bir- Extractoruygulamasının uygulama ayrıntılarına çalışma zamanı erişimi istiyorsanız önce- Extractor.getUnderlyingInstanceuygulamasını çağırmanız gerekir.
- BmpExtractorekleyin.
- WebpExtractorekleyin.
- HeifExtractorekleyin.
- Mp4Extractor'ye QuickTime Classic desteği eklendi.
 
- Ses:
- MP4 ve Matroska'da 24/32 bit büyük endian PCM desteği ekleyin ve MP4'te lpcmiçin PCM kodlamasını ayrıştırın.
- MP4'te Vorbis sesinin çıkarılması için destek eklendi.
- AudioSink.getFormatOffloadSupport(Format)aracılığıyla biçim için alıcının sağlayabileceği boşaltma desteği düzeyini alan- AudioSink.getFormatOffloadSupport(Format)işlevini ekleyin.- DefaultAudioOffloadSupportProvider- isFormatSupported,- isGaplessSupportedve- isSpeedChangeSupportediçeren yeni- AudioOffloadSupportdeğerini döndürür.
- Ses alıcısındaki boşaltma yapılandırmasının yapılandırıldığı AudioSink.setOffloadMode()öğesini ekleyin. Varsayılan değer:AudioSink.OFFLOAD_MODE_DISABLED.
- Uygulama kaldırma, TrackSelectionParametersiçindekisetAudioOffloadPreferenceüzerinden etkinleştirilebilir. Tercih etkinleştirme yönündeyse, cihaz biçim için boşaltmayı destekliyorsa ve parça seçimi tek bir ses parçasıysa ses boşaltma etkinleştirilir.
- audioOffloadModePreference,- AUDIO_OFFLOAD_MODE_PREFERENCE_REQUIREDolarak ayarlanırsa- DefaultTrackSelectoryalnızca bir ses parçası seçer ve bu yalnızca parçanın biçimi boşaltma işleminde destekleniyorsa geçerlidir. Boşaltma işleminde ses parçası desteklenmiyorsa parça seçilmez.
- Parça geçişinden sonra oynatma konumu sorunu nedeniyle API düzeyi 33'ten önceki sürümlerde boşluksuz oynatma desteği devre dışı bırakıldı.
- enableOffloadparametresini- DefaultRenderersFactory.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şluksuz Opus meta verileri için boşaltma oynatma sırasında destek ekleyin.
- İlk yazma işleminde başarısız olunursa boşaltma devre dışı bırakılarak oluşturucu kurtarmaya izin verilir (#627).
- Yalnızca sesli indirilen içeriklerin oynatılması için varsayılan olarak indirme planlamayı etkinleştirin.
- ExoPlayer.experimentalSetOffloadSchedulingEnabledve- AudioOffloadListener.onExperimentalOffloadSchedulingEnabledChangedöğelerini silin.
- onExperimentalSleepingForOffloadChanged,- onSleepingForOffloadChangedolarak,- onExperimentalOffloadedPlaybackise- onOffloadedPlaybackolarak yeniden adlandırıldı.
- Ses boşaltma moduyla ilgili TrackSelectionParametersarayüzlerini ve tanımlarınıAudioOffloadPreferencessınıfına taşıyın.
- AnalyticsListener,- AudioRendererEventListenerve- AudioSink.Listeneröğelerine- onAudioTrackInitializedve- onAudioTrackReleasedgeri çağırmalarını ekleyin.
- DTS Express'teki ses arabelleği taşması sorununu düzeltme (#650).
- E-AC3-JOC için özellik kontrolünün IllegalArgumentException(#677) hatası vermesine neden olan hata düzeltildi.
 
- MP4 ve Matroska'da 24/32 bit büyük endian PCM desteği ekleyin ve MP4'te 
- Video:
- MediaCodecVideoRendereruygulamasının özel bir- VideoFrameProcessor.Factorykullanmasına izin verin.
- Ses akışı negatif zaman damgalarıyla başladığında ilk karenin oluşturulamaması hatası düzeltildi (#291).
 
- Metin:
- ExoplayerCuesDecoderöğesini kaldırın.- sampleMimeType = application/x-media3-cuessimgesiyle gösterilen metin parçaları artık- SubtitleDecoderörneğine gerek kalmadan doğrudan- TextRenderertarafından işleniyor.
 
- Meta veri:
- Uygulama yine de null döndürmesi gerektiğinden, MetadataDecoder.decodeartık "yalnızca kod çözme" örnekleri için çağrılmayacak.
 
- Uygulama yine de null döndürmesi gerektiğinden, 
- Etki:
- Zaman damgasına göre VideoFrameProcessor.queueInputBitmap(Bitmap, Iterator<Long>)sıraya alma bit eşlem girişi ekleyin.
- VideoFrameProcessor.registerInputStream()değerini engellemeyen olarak değiştirin. Uygulamalar- VideoFrameProcessor.Listener#onInputStreamRegistered()özelliğini uygulamalıdır.
- VideoFrameProcessor.queueInputBitmapöğesinin- frameRateve- durationUsparametreleri- TimestampIteratorolarak değiştirildi.
 
- Zaman damgasına göre 
- 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()numarası aranmadan önce StreamManager'ı serbest bırakın.
- IMA SDK sürümünü 3.31.0'a yükseltin.
 
- Oturum:
- DefaultMediaNotificationProviderbölümünde bildirimlerin ön plan hizmeti davranışını- FOREGROUND_SERVICE_IMMEDIATEolarak ayarlayın (#167).
- Samsung cihazlarda kullanımdan kaldırılan API ile ilgili sorunları önlemek için yalnızca
android.media.session.MediaSession.setMediaButtonBroadcastReceiver()API 31 ve üzeri sürümleri 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.
- Medya düğmesi etkinliklerini, platform oturumuna yönlendirmek ve tekrar Media3'e yönlendirmek yerine MediaSessionService.onStartCommand()içinde Media3 tarafından alınan etkinliklere 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()öğesinin ilerlememesine neden olan hata düzeltildi.
- Kolaylık için MediaLibrarySession.getSubscribedControllers(mediaId)ekleyin.
- Denetleyicinin abone olduğu üst kimliğin kullanılabilirliğini onaylamak için MediaLibrarySession.Callback.onSubscribe()değerini geçersiz kılın. Başarılı olursa abonelik kabul edilir ve tarayıcıyı bilgilendirmek için hemennotifyChildrenChanged()çağrılır (#561).
- Otomotiv OS için oturum demosu modülü ekleyin ve Android Auto için oturum demosunu etkinleştirin.
- Medya bildirimi denetleyicisi için COMMAND_GET_TIMELINEkullanılamadığında çerçeve oturumunun sırasını ayarlamayın. Android Auto, çerçeve oturumundan okuma yapan istemci denetleyicisi olduğunda Android Auto'nun kullanıcı arayüzündekiqueuedüğmesi gösterilmez (#339).
- SimpleBitmapLoaderyerine varsayılan olarak- DataSourceBitmapLoaderkullanın (#271, #327).
- Uygulamaların varsayılan medya düğmesi etkinlik işleme özelliğini geçersiz kılmasına olanak tanıyan MediaSession.Callback.onMediaButtonEvent(Intent)eklendi.
 
- UI:
- Kullanıcının uygun bir ses çıkışı (ör. Bluetooth kulaklık) bağlamasına izin vermek için bir sistem iletişim kutusu başlatarak Player.Listenernedeniyle oynatma bastırmayı işleyen Wear OS cihazları için birPlayer.PLAYBACK_SUPPRESSION_REASON_UNSUITABLE_AUDIO_OUTPUTuygulaması ekleyin. Dinleyici, yapılandırılabilir bir zaman aşımı içinde (varsayılan olarak 5 dakika) uygun bir cihaz bağlanırsa oynatmayı otomatik olarak devam ettirir.
 
- Kullanıcının uygun bir ses çıkışı (ör. Bluetooth kulaklık) bağlamasına izin vermek için bir sistem iletişim kutusu başlatarak 
- İndirilenler:
- Android 14 ile uyumluluk için DownloadServiceiçin "veri senkronizasyonu" ön plan hizmeti türünü bildirin. Bu hizmeti kullanırken uygulamanın manifest dosyasınadataSyncöğesiniforegroundServiceTypeolarak eklemesi veFOREGROUND_SERVICE_DATA_SYNCiznini (#11239) eklemesi de gerekir.
 
- Android 14 ile uyumluluk 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ının birden fazla kez kullanılmasına izin verilir.
- Ayıklama sırasında altyazı ayrıştırma için deneysel destek eklendi. Bu sürüm, altyazı segmentleri arasında geçiş yaparken titremeyi giderme de dahil olmak üzere, çakışan altyazıları birleştirme konusunda daha iyi destek sunar. Bu özelliği DashMediaSource.Factory.experimentalParseSubtitlesDuringExtraction()(#288) kullanarak etkinleştirebilirsiniz.
 
- RTSP Uzantısı:
- TCP'ye geri dönüldüğünde IndexOutOfBoundsExceptionhatasına veya bazı durumlarda oynatmanın askıya alınmasına neden olabilecek yarışma durumu düzeltildi.
- RtspMediaPeriod(#577) yükleme durumu döndürülürken RTSP kurulumundaki durumu kontrol edin.
- Seçenekler yanıtı genel üst bilgisinde özel Rtsp istek yöntemlerini yoksayma (#613).
- RTSP Setup Response zaman aşımı değerini, etkin tutma RTSP Options isteklerinin gönderilme zaman aralığında kullanın (#662).
 
- TCP'ye geri dönüldüğünde 
- Kod Çözücü Uzantıları (FFmpeg, VP9, AV1, MIDI vb.):
- Ses sentezlemek için Jsyn kitaplığını kullanarak standart MIDI dosyalarının oynatılmasını destekleyen MIDI kod çözücü modülünü yayınlayın.
- Gösterilmesi gerekmeyen çıkış arabelleklerini doğrudan işaretlemek için DecoderOutputBuffer.shouldBeSkippedekleyin. Bu yöntem, desteği sonlandırılacak olanC.BUFFER_FLAG_DECODE_ONLYyöntemine göre 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ıtının Maven deposunda yayınlanmasıyla ilgili hata düzeltildi. Yapılandırma media3-exoplayer-midiolarak yeniden adlandırıldı (#734).
 
- Leanback uzantısı:
- Bir yüzeyin devre dışı bırakılmasının Leanback kodunda ArithmeticException'ya neden olabildiği hata düzeltildi (#617).
 
- Bir yüzeyin devre dışı bırakılmasının Leanback kodunda 
- Test yardımcı programları:
- TestExoPlayerBuilderve- FakeClock'yi Espresso kullanıcı arayüzü testleri ve Compose kullanıcı arayüzü testleriyle uyumlu hale getirin. Bu düzeltme, Espresso veya Compose görünümü etkileşimleri sırasında oynatmanın nondeterministik olarak ilerlemesine neden olan hatayı düzeltir.
 
- Desteği sonlandırılan sembolleri kaldırın:
- TransformationRequest.Builder.setEnableRequestSdrToneMapping(boolean)ve- TransformationRequest.Builder.experimental_setEnableHdrEditing(boolean)öğelerini kaldırın.- Composition.Builder.setHdrMode(int)özelliğini kullanın ve- Compositiondeğerini bunun yerine- Transformer.start(Composition, String)öğesine iletin.
- Desteği sonlandırılan DownloadNotificationHelper.buildProgressNotificationyöntemini kaldırın. Bunun yerinenotMetRequirementsparametresini 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ığını tüm modüllerden kaldırın (#499).
 
- Yanlışlıkla eklenen 
- ExoPlayer:
- Oynatma listesi temizlendikten sonra PlaybackStatsListenerbölümünde sahtePlaybackStatsoluşturulması sorunu düzeltildi.
- Common Media Client Data (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()simgesinin hiçbir zamanSTATE_ENDEDsimgesine geçmemesine neden olan hata düzeltildi (#538).
 
- Çok kısa dosyalar oynatılırken 
- Ses Yükünü Kaldırma:
- RFC 7845 uyarınca, Ogg kimliği üstbilgisi ve yorum üstbilgisi sayfalarını, Opus'un yükü kaldırılmış oynatılması için bit akışına ekleyin.
 
- Video:
- H.265/HEVC: SPS kısa ve uzun vadeli referans resim bilgilerinin ayrıştırılmasıyla ilgili sorun düzeltildi.
 
- Metin:
- CEA-608: İpucu kesme mantığını yalnızca görünür metni dikkate alacak şekilde değiştirin. Daha önce, ipucu uzunluğu 32 karakterle sınırlandırılırken girinti ve sekme uzaklığı dahil ediliyordu (bu, teknik olarak spesifikasyona göre doğruydu) (#11019).
 
- IMA uzantısı:
- IMA SDK sürümünü 3.30.3'e yükseltin.
 
- Oturum:
- Denetleyicinin durumuna özel düzen ekleyin ve erişmek için bir alıcı sağlayın. Özel düzen değiştiğinde MediaController.Listener.onCustomLayoutChangedçağrılır. Farklı Media3 denetleyicilerine farklı özel düzenler göndermek isteyen uygulamalar, bağlantı tamamlandığında özel düzenin denetleyiciye sunulmasını sağlamak içinMediaSession.Callback.onConnectiçindeAcceptedResultBuilderkullanarak bunu yapabilir.
- MediaLibraryServiceLegacyStub, bunu desteklemeyen bir- Resultöğesine hata gönderdiğinde- UnsupportedOperationException(#78) oluşturulmasına neden olan durumlar düzeltildi.
- PlayerWrapper'nın hem eski komutlar (- COMMAND_ADJUST_DEVICE_VOLUMEve- COMMAND_SET_DEVICE_VOLUME) hem de yeni komutlar (- COMMAND_ADJUST_DEVICE_VOLUME_WITH_FLAGSve- COMMAND_SET_DEVICE_VOLUME_WITH_FLAGS) aracılığıyla- volumeControlType'ı belirleyerek- VolumeProviderCompatoluşturma şeklini düzeltin (#554).
 
- Denetleyicinin durumuna özel düzen ekleyin ve 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 bastırma nedeni ekleyin ve hazır olduğunda oynatın. Çok uzun süre bastırılanlar için nedeni değiştirin. (#15).
- Oynatıcı'ya komut ekleme:
- COMMAND_GET_METADATA
- COMMAND_SET_PLAYLIST_METADATA
- COMMAND_SET_DEVICE_VOLUME_WITH_FLAGS
- COMMAND_ADJUST_DEVICE_VOLUME_WITH_FLAGS
 
- Kullanıcıların ses düzeyi işaretlerini belirtmesine olanak tanıyan, aşırı yüklenmiş yöntemleri Player'a ekleyin:
- void setDeviceVolume(int, int)
- void increaseDeviceVolume(int)
- void decreaseDeviceVolume(int)
- void setDeviceMuted(boolean, int)
 
- DeviceInfoiçin- Builderekleyin ve mevcut oluşturucuyu kullanımdan kaldırın.
- Uzak oynatmalar için yönlendirme denetleyicisi kimliğini belirtmek üzere DeviceInfo.routingControllerIdekleyin.
- Aynı konumdaki öğeleri eklemek ve kaldırmak için Player.replaceMediaItem(s)kısayolunu ekleyin (#8046).
 
- ExoPlayer:
- Yalnızca açıkça etkinleştirilmişse ExoPlayer'ın cihaz ses yöntemlerini kontrol etmesine izin verilir. Aşağıdakilere erişmek için ExoPlayer.Builder.setDeviceVolumeControlEnabledkullanın:- getDeviceVolume()
- isDeviceMuted()
- setDeviceVolume(int)ve- setDeviceVolume(int, int)
- increaseDeviceVolume(int)ve- increaseDeviceVolume(int, int)
- decreaseDeviceVolume(int)ve- decreaseDeviceVolume(int, int)
 
- FilteringMediaSourceöğesi ekleyin. Bu öğe,- MediaSourceiçindeki mevcut parça türlerini filtrelemenizi sağlar.
- Uyarlanabilir akış biçimleri DASH, HLS ve SmoothStreaming'in giden isteklerine Common Media Client Data (CMCD) ekleme desteği eklendi. br,bl,cid,rtpvesidalanları dahil edildi (#8699). API yapısı ve API yöntemleri:- CMCD günlüğe kaydetme özelliği varsayılan olarak devre dışıdır. Bu özelliği etkinleştirmek için MediaSource.Factory.setCmcdConfigurationFactory(CmcdConfiguration.Factory cmcdConfigurationFactory)kullanın.
- Tüm anahtarlar varsayılan olarak etkindir. Hangi anahtarların günlüğe kaydedileceğini filtrelemek için CmcdConfiguration.RequestConfig.isKeyAllowed(String key)geçersiz kılın.
- Özel anahtar günlük kaydını etkinleştirmek için CmcdConfiguration.RequestConfig.getCustomData()değerini geçersiz kılın.
 
- CMCD günlüğe kaydetme özelliği varsayılan olarak devre dışıdır. Bu özelliği etkinleştirmek için 
- Ana demoya ait manifest dosyasına ek işlem ekleyerek özel bir *.exolist.jsondosyasıyla demo uygulamasını başlatmayı kolaylaştırın (#439).
- Video oynatma sırasında Effectkullanmak içinExoPlayer.setVideoEffects()ekleyin.
- sourceIddosyasını- intyerine- longolarak depolamak için- SampleQueueuygulamasını güncelleyin. Bu işlem,- SampleQueue.sourceIdve- SampleQueue.peekSourceIdherkese açık yöntemlerinin imzalarını değiştirir.
- LoadControlyöntemlerine- shouldStartPlaybackve- onTracksSelectedparametreleri ekleyin. Bu parametreler, söz konusu yöntemlerin ilgili- MediaPeriodile ilişkilendirilmesine olanak tanır.
- ServerSideAdInsertionMediaSource.setAdPlaybackStates(Map<Object, AdPlaybackState>)işlevinin imzasını, haritada anahtar olarak kullanılan UID'leri içeren dönemleri içeren bir zaman çizelgesi parametresi ekleyerek değiştirin. Bu, çok dönemli canlı yayınlarda eşzamanlılık sorunlarını önlemek için gereklidir.
- EventDispatcher.withParameters(int windowIndex, @Nullable MediaPeriodId mediaPeriodId, long mediaTimeOffsetMs)ve- BaseMediaSource.createEventDispatcher(..., long mediaTimeOffsetMs)öğelerini kullanımdan kaldırın.- mediaTimeOffsetUsiçermeyen yöntem varyantı bunun yerine çağrılabilir. Desteği sonlandırılan varyantlar için bile, gönderici tarafından gönderilen- MediaLoadDatanesnelerinin- startTimeUsve- endTimeUsdeğerlerine artık ofset eklenmediğini unutmayın.
- ExoTrackSelection.blacklistöğesini- excludeTrack,- isBlacklistedöğesini ise- isTrackExcludedolarak yeniden adlandırın.
- Boş bir oynatma listesinde çağrıldığında ExoPlayer.setMediaItem(s)veaddMediaItem(s)arasındaki tutarsız davranış düzeltildi.
 
- Yalnızca açıkça etkinleştirilmişse ExoPlayer'ın cihaz ses yöntemlerini kontrol etmesine izin verilir. Aşağıdakilere erişmek için 
- Dönüştürücü:
- Transformer.Builder.setMediaSourceFactory(MediaSource.Factory)öğesini kaldırın. Bunun yerine- ExoPlayerAssetLoader.Factory(MediaSource.Factory)ve- Transformer.Builder.setAssetLoaderFactory(AssetLoader.Factory)politikalarını kullanın.
- Transformer.startTransformation(MediaItem, ParcelFileDescriptor)öğesini kaldırın.
- Giriş karesinin işlenmesi beklenirken video akışının sonu işaretlendiğinde dönüşümün takılmasına (çoklayıcı zaman aşımına neden olan) 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 DefaultEncoderFactory'da B çerçevesi yapılandırmasını kaldırın.
 
- Parça seçimi:
- Ekleme
DefaultTrackSelector.Parameters.allowInvalidateSelectionsForRendererCapabilitiesChangevarsayılan olarak devre dışıdır. Etkinleştirildiğinde,DefaultTrackSelectoroluşturucu özellikleri değiştiğinde yeni bir parça seçimi tetiklenir.
 
- Ekleme
- Ayıklayıcılar:
- Ses:
- Tünel oluşturma etkinleştirildiğinde ve AudioProcessorsetkin olduğunda bazı oynatmaların başarısız olmasına neden olan hata düzeltildi. Örneğin, boşluksuz kırpma içinAudioProcessorsetkin olduğunda oynatma başarısız oluyordu (#10847).
- Doğrudan oynatmalarda (yük boşaltma) Opus karelerini Ogg paketleri içinde kapsar.
- Uyku sırasında mevcut konumu, boşaltma planlamasıyla tahmin edin.
- Kaynakları oyuncunun yaşam döngüsünün sonunda serbest bırakmak için Renderer.release()veAudioSink.release()ekleyin.
- DefaultAudioSink'daki ses özellikleriyle ilgili değişiklikleri dinleyin.- DefaultAudioSinkoluşturucusuna,- DefaultAudioSink'ın- AudioCapabilitiesReceiveriçin dinleyici olarak kaydedileceği ve özellik değişikliği hakkında bilgilendirildiğinde- audioCapabilitiesözelliğini güncelleyeceği zorunlu bir parametre- contextekleyin.
- onAudioCapabilitiesChangedarayüzündeki yeni bir etkinlik- AudioSink.Listenerve- onRendererCapabilitiesChangedetkinliklerini tetikleyen yeni bir arayüz- RendererCapabilities.Listeneraracılığıyla ses özelliklerindeki değişiklikleri yayma.
- Ses kanallarına ölçeklendirme/karıştırma uygulamak için ChannelMixingAudioProcessorekleyin.
- Ses özellikleri değiştiğinde atlama modu mümkünse ses kod çözücüyü atmak için DISCARD_REASON_AUDIO_BYPASS_POSSIBLEyeni int değeriniDecoderDiscardReasonsöğesine ekleyin.
- 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ışı olduğunda MediaCodecVideoRenderer, genişliği ve yüksekliği 0 olan birVideoSizeraporlasın.Player.Listener.onVideoSizeChanged,Player.getVideoSize()değiştiğinde buna göre adlandırılır. Bu değişiklikle birlikte,MediaCodecVideoRendererile ExoPlayer'ın video boyutu,Player.getCurrentTracksvideo desteklemediğinde veya desteklenen video parçasının boyutu henüz belirlenmediğinde 0 genişliğe ve yüksekliğe sahip olur.
 
- Oluşturucu devre dışı olduğunda 
- DRM:
- DRM paketinin dışından çağrılması beklenmeyen DefaultDrmSessionüzerindeki yalnızca dahili kullanıma yönelik çeşitli yöntemlerin görünürlüğünü azaltın:- void onMediaDrmEvent(int)
- void provision()
- void onProvisionCompleted()
- onProvisionError(Exception, boolean)
 
 
- DRM paketinin dışından çağrılması beklenmeyen 
- Muxer:
- MP4 kapsayıcı dosyası oluşturmak için kullanılabilecek yeni bir muxer kitaplığı eklendi.
 
- IMA uzantısı:
- DAI için çok dönemli canlı DASH yayınlarını etkinleştirin. Mevcut uygulamanın canlı yayınlarda arama özelliğini henüz desteklemediğini lütfen unutmayın (#10912).
- Ardışık zaman çizelgelerindeki hesaplanmış içerik konumu biraz farklılık gösterdiğinden canlı yayınlara yeni bir reklam grubunun eklenmesine neden olan hata düzeltildi.
 
- Oturum:
- Şu anda bir MediaSession.getControllerForCurrentRequestyöntemini çağıran denetleyici hakkında bilgi edinmek için yardımcı yöntemPlayerekleyin.
- Uygulamaların, örneğin Bluetooth kulaklık tarafından gönderilen medya düğmesi etkinlikleriyle oynatmaya devam etme özelliğini uygulamasına olanak tanımak için androidx.media3.session.MediaButtonReceiverekleyin (#167).
- İstenen MediaItemsöğesininLocalConfiguration(ör. URI) varsaMediaSession.Callback.onAddMediaItemsöğesine varsayılan uygulama ekleyerekPlayeröğesine iletilmesine izin verin (#282).
- Android 12 ve önceki sürümlerde, kompakt medya bildirimi görünümüne varsayılan olarak "önceki öğeye git" ve "sonraki öğeye git" komut düğmeleri eklendi (#410).
- İstenen MediaItemsöğesininLocalConfiguration(ör. URI) varsaMediaSession.Callback.onAddMediaItemsöğesine varsayılan uygulama ekleyerekPlayeröğesine iletilmesine izin verin (#282).
- Android 12 ve önceki sürümlerde, kompakt medya bildirimi görünümüne varsayılan olarak "önceki öğeye git" ve "sonraki öğeye git" komut düğmeleri eklendi (#410).
 
- Şu anda bir 
- UI:
- Oynat/duraklat düğmesi içeren özel kullanıcı arayüzü öğeleri yazmak için Util yöntemleri shouldShowPlayButtonvehandlePlayPauseButtonAction'yi ekleyin.
 
- Oynat/duraklat düğmesi içeren özel kullanıcı arayüzü öğeleri yazmak için Util yöntemleri 
- 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 bir canlı Dash medya kaynağının yeniden hazırlanmasının IndexOutOfBoundsException(#10838) hatasına neden olduğu sorun düzeltildi.
 
- Çok dönemli DASH akışları için 
- HLS Uzantısı:
- 
HlsMediaSource.Factory.setTimestampAdjusterInitializationTimeoutMs(long)yükleme iş parçacığının,TimestampAdjusteröğesinin başlatılmasını beklemesi için bir zaman aşımı ayarlamak üzere ekleyin. Başlatma işlemi zaman aşımı süresi dolmadan tamamlanmazsa oynatmanın sonsuza kadar duraklatılmasını önlemek içinPlaybackExceptionistisnası oluşturulur. Zaman aşımı varsayılan olarak sıfıra ayarlanır (#323).
 
- 
- Test yardımcı programları:
- DataSourceContractTestiçinde URI şeması büyük/küçük harf duyarsızlığını kontrol edin.
 
- Desteği sonlandırılan sembolleri kaldırın:
- DefaultAudioSinkoluşturucularını kaldırın, bunun yerine- DefaultAudioSink.Builderkullanın.
- HlsMasterPlaylistöğesini kaldırın ve bunun yerine- HlsMultivariantPlaylistöğesini kullanın.
- Player.stop(boolean)öğesini kaldırın. Bunun yerine- Player.stop()ve- Player.clearMediaItems()(- reset,- trueise) kullanın.
- Desteği sonlandırılan iki SimpleCacheoluşturucuyu kaldırın. Daha iyi performans için bunun yerineDatabaseProvideralan, desteği sonlandırılmamış bir oluşturucu kullanın.
- DefaultBandwidthMeteroluşturucusunu kaldırın, bunun yerine- DefaultBandwidthMeter.Builderkullanın.
- DefaultDrmSessionManageroluşturucularını kaldırın, bunun yerine- DefaultDrmSessionManager.Builderkullanın.
- Kullanımdan kaldırılan iki HttpDataSource.InvalidResponseCodeExceptionyapılandırıcıyı kaldırın, hata günlüğünü iyileştirmek için ek alanları(cause,responseBody) kabul eden, kullanılmayan bir yapılandırıcı kullanın.
- DownloadHelper.forProgressive,- DownloadHelper.forHls,- DownloadHelper.forDashve- DownloadHelper.forSmoothStreamingözelliklerini kaldırıp bunun yerine- DownloadHelper.forMediaItemözelliğini kullanın.
- Desteği sonlandırılan DownloadServiceoluşturucuyu kaldırın,channelDescriptionResourceIdparametresi sağlama seçeneğini içeren, desteği sonlandırılmamış bir oluşturucu kullanın.
- Karakter kümeleri için desteği sonlandırılan String sabitlerini (ASCII_NAME,UTF8_NAME,ISO88591_NAME,UTF16_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şturucuyu kaldırın. Bunun yerine,Contextparametresi sağlama seçeneğini içeren, desteği sonlandırılmamış bir oluşturucu kullanın.
- Formatsınıfını örneklemek için kullanılan, desteği sonlandırılan- createVideoSampleFormat,- createAudioSampleFormat,- createContainerFormatve- createSampleFormatyöntemleri kaldırıldı. Bunun yerine- Formatörnekleri oluşturmak için- Format.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()işlevini kaldırın, bunun yerineprepare()işlevini 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şturucuyu kaldırın. Bunun yerineExecutoralanını alan oluşturucuyu kullanın.
- Desteği sonlandırılan Cueoluşturucularını kaldırın ve bunun yerineCue.Builderoluşturucularını kullanı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 yerine- onAudioEnabledve/veya- onVideoEnabledkullanın.
- onDecoderInitialized, bunun yerine- onAudioDecoderInitializedve/veya- onVideoDecoderInitializedkullanın.
- onDecoderInputFormatChanged, bunun yerine- onAudioInputFormatChangedve/veya- onVideoInputFormatChangedkullanın.
- onDecoderDisabled, bunun yerine- onAudioDisabledve/veya- onVideoDisabledkullanı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 yerine- setWakeMode(int)öğesini kullanın.
- Desteği sonlandırılan DefaultLoadControl.Builder.createDefaultLoadControl()öğesini kaldırın, bunun yerinebuild()öğesini kullanın.
- Desteği sonlandırılan MediaItem.PlaybackPropertiesöğesini kaldırın, bunun yerineMediaItem.LocalConfigurationöğesini kullanın. Kullanımdan kaldırılan alanMediaItem.playbackPropertiesartı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 iptal edilir.
1.0.2 sürümü şu commit'leri içerir.
Bu sürüm, ExoPlayer 2.18.7 sürümüne karşılık gelir.
Bu sürüm, 1.0.1 sürümünden bu yana aşağıdaki değişiklikleri içerir:
- Temel kitaplık:
- Bufferöğesinin işaret içerip içermediğini belirten- Buffer.isLastSample()öğesini ekleyin- C.BUFFER_FLAG_LAST_SAMPLE.
- Kare içeren son örnek, "akışın sonu" örneği okunmadan kuyruktan çıkarılırsa son karenin oluşturulamamasına neden olan sorun düzeltildi. (#11079).
 
- Ayıklayıcılar:
- RTSP ve MP4 çıkarıcılar tarafından kullanılan ayrıştırma mantığını yeniden kullanarak MPEG-TS dosyalarındaki H.265 SPS'nin ayrıştırılmasıyla ilgili sorunu düzeltin (#303).
 
- Metin:
- SSA: Bayt sırası işaretiyle başlayan UTF-16 dosyaları için destek eklendi (#319).
 
- Oturum:
- MediaController, işlemlerini güncelleyen eski bir- MediaSessionCompat'ye bağlandığında kullanılabilir komutlarını güncellememesi sorunu düzeltildi.
- API 30'da MediaLibraryServiceöğesinin, Sistem Kullanıcı Arayüzü'ndenCallback.onGetLibraryRootöğesineparams.isRecent == trueile yapılan bir çağrı için null döndürmesini engelleyen hata düzeltildi (#355).
- MediaSessionServiceveya- MediaLibraryServicebellek sızıntısı düzeltildi (#346).
- Timelineve konum güncellemesinin- MediaSessioniçinde birleştirilmesinin- MediaControlleröğesinin- IllegalStateExceptionoluşturmasına neden olabileceği hata düzeltildi.
 
Sürüm 1.0.1
18 Nisan 2023
androidx.media3:media3-*:1.0.1 iptal edilir.
1.0.1 sürümü şu commit'leri içerir.
Bu sürüm, ExoPlayer 2.18.6 sürümüne karşılık gelir.
- Temel kitaplık:
- Varsayılan konuma gitmek için arama yaparken hedef canlı yayın geçersiz kılmasını sıfırlayın (#11051).
- Medyadaki boş örnek yayınların oynatmanın takılmasına neden olabildiği hata düzeltildi.
 
- Oturum:
- Eski bir MediaSessionCompattarafından yayınlanan birden fazla aynı kuyruk öğesininMediaControlleriçinde istisnaya neden olduğu hata düzeltildi (#290).
- MediaSession.broadcastCustomCommandöğesinin eski- MediaControllerCompat.Callback.onSessionEventöğesine yönlendirilmesiyle ilgili eksiklik giderildi (#293).
- MediaSession.setPlayerişlevinin çağrılmasının, kullanılabilir komutları güncellememesine yol açan hata düzeltildi.
- TrackSelectionOverrideörnekleri bir- MediaControlleradresinden gönderildiğinde- Format.metadataiçeren bir gruba referans veriyorsa yoksayılması sorunu düzeltildi (#296).
- Player.COMMAND_GET_CURRENT_MEDIA_ITEM, eski- MediaSessionCompatüzerinden meta verilere erişmek için kullanılabilir olmalıdır.
- Arka plandaki bir iş parçacığında MediaSessionörneklerininMediaSessionServiceiçinde kullanıldığında kilitlenmelere neden olduğu sorun düzeltildi (#318).
- Kitaplık tarafından, uygulamanın amaçlamadığı şekilde bir medya düğmesi alıcısının bildirilmesi sorunu düzeltildi (#314).
 
- Eski bir 
- DASH:
- Boş segment zaman çizelgelerinin işlenmesi düzeltildi (#11014).
 
- RTSP:
- UDP ile RTSP kurulumu, RTSP Error 461 UnsupportedTransport (#11069) ile başarısız olursa TCP ile yeniden deneyin.
 
Sürüm 1.0.0
22 Mart 2023
androidx.media3:media3-*:1.0.0 iptal edilir.
1.0.0 sürümü şu commit'leri içerir.
Bu sürüm, ExoPlayer 2.18.5 sürümüne karşılık gelir.
1.0.0-rc02 sürümünden bu yana herhangi bir değişiklik yapılmadı.
Sürüm 1.0.0-rc02
2 Mart 2023
androidx.media3:media3-*:1.0.0-rc02 iptal edilir.
1.0.0-rc02 sürümü şu commit'leri içerir.
Bu sürüm, ExoPlayer 2.18.4 sürümüne karşılık gelir.
- Temel kitaplık:
- İndirilenler:
- Birleştirilecek iki segmentin başlangıç zamanı arasındaki maksimum farkın SegmentDownloaderve alt sınıflarda yapılandırılabilir olması sağlandı (#248).
 
- Birleştirilecek iki segmentin başlangıç zamanı arasındaki maksimum farkın 
- Ses:
- Video:
- HEVC HDR10 biçimini HEVCProfileMain10yerineHEVCProfileMain10HDR10ile eşleyin.
- Google TV'li Chromecast ve Lenovo M10 FHD Plus'ta 60 fps AVC akışlarının desteklenmiyor olarak işaretlenmesine neden olan cihaz sorununa yönelik geçici çözüm eklendi (#10898).
- Ekran yenileme hızından çok daha yüksek bir kare hızına sahip medyaları oynatırken kare yayınlama performansıyla ilgili sorunları düzeltir.
 
- HEVC HDR10 biçimini 
- Yayınlama:
- Medya öğeleri arasında geçiş yaparken oluşan geçici STATE_IDLEsorunu düzeltildi ( #245).
 
- Medya öğeleri arasında geçiş yaparken oluşan geçici 
- RTSP:
- Geçersiz RTSP Describe yanıt mesajlarının ayrıştırılmasında oluşturulan IllegalArgumentException'ı yakalayın (#10971).
 
- Oturum:
- Bildirimdeki oynatma/duraklatma düğmesinin oynatıcı durumuyla güncellenmemesine neden olan hata düzeltildi (#192).
 
- IMA uzantısı:
- İlk (ve reklamsız durumda tek) LOADEDetkinliği alınmadığı için reklam içermeyen DAI akışlarının başlatılmasını engelleyen 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 iptal edilir.
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.
- Temel kitaplık:
- Bir kod çözücü, medyayı performanslı bir şekilde oynatamayacağını bildirse bile MediaCodecSelector'nın tercihlerini korumak için oluşturucunun kod çözücü sıralama mantığını ayarlayın. Örneğin, varsayılan seçiciyle, yalnızca işlevsel destek sunan donanım kod çözücü, biçimi tam olarak destekleyen yazılım kod çözücüye tercih edilir (#10604).
- Yeni bir ExoPlayer örneği için önceden var olan bir oynatma iş parçacığı ayarlayan ExoPlayer.Builder.setPlaybackLooperekleyin.
- İndirme yöneticisi yardımcılarının temizlenmesine izin verilir (#10776).
- Arama için kullanılan komutu da belirtmek üzere BasePlayer.seekToöğesine parametre ekleyin.
- API 21 ve sonraki sürümlerde çizilebilir öğeler yüklenirken tema kullanma (#220).
- Birden fazla medya öğesinin tek bir pencerede birleştirilmesine olanak tanıyan ConcatenatingMediaSource2eklendi (#247).
 
- Bir kod çözücü, medyayı performanslı bir şekilde oynatamayacağını bildirse bile 
- Ayıklayıcılar:
- Trak atomları ayrıştırılırken örnek tablosunda (stbl) gerekli bir örnek açıklaması (stsd) eksikse NullPointerExceptionyerineParserExceptionatın.
- fMP4'te doğrudan bir senkronizasyon karesine giderken örnekleri doğru şekilde atlayın (#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çiminin bit hızını kullanın.
 
- Doğrudan oynatmalarda (geçiş) 
- Metin:
- Altyazı dosyasında ipucu yoksa TextRendereröğesininSubtitle.getEventTimeöğesine geçersiz (negatif) bir dizin iletmesi düzeltildi.
- SubRip: Bayt sırası işaretiyle başlayan UTF-16 dosyaları için destek eklendi.
 
- Altyazı dosyasında ipucu yoksa 
- Meta veri:
- ID3 v2.4'ün izin verdiği şekilde, ID3 çerçevelerinden birden fazla boş değerle ayrılmış değeri ayrıştırın.
- Meta verilerle açıklanan içerik türünü veya klasör türünü belirtmek için MediaMetadata.mediaTypesimgesini ekleyin.
- MediaMetadata.isBrowsableöğesini- MediaMetadata.folderTypeyerine ekleyin. Klasör türünün desteği bir sonraki sürümde sonlandırılacak.
 
- DASH:
- Kutu sayıları da dahil olmak üzere, resim uyarlama kümeleri için tam ayrıştırma eklendi (#3752).
 
- UI:
- Görünürlük değişikliklerinin kayıtlı dinleyiciye iletilmesini sağlamak için kullanımdan kaldırılan PlayerView.setControllerVisibilityListener(PlayerControlView.VisibilityListener)#229) düzeltin.
- Sağdan sola (RTL) düzen kullanılırken PlayerViewsimgesindeki ortadaki oynatıcı kontrollerinin sıralaması düzeltildi (#227).
 
- Görünürlük değişikliklerinin kayıtlı dinleyiciye iletilmesini sağlamak için kullanımdan kaldırılan 
- Oturum:
- Özel oynatıcılar için Playerarayüzünün uygulanmasına yardımcı olmak üzere soyutSimpleBasePlayerekleyin.
- Platform oturumu 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 getMediaButtons()öğesinin bağımsız değişkeni olarak ekleyinDefaultMediaNotificationProviderve netlik için değişmez listeler kullanın (#216).
- onSetMediaItemsgeri çağırma işleyicisi ekleyin. Bu işleyici, oynatıcıya ayarlanmadan önce oturuma göre- MediaItemlistesini, başlangıç dizinini ve konumunu değiştirme/ayarlama olanağı sağlar (#156).
- Bluetooth olmayan medya düğmesi etkinliklerinde çift dokunma algılamasını önleme (#233).
- Şüpheli bir eski oturum durumu olması durumunda QueueTimelinedaha sağlam hale getirildi (#241).
 
- Özel oynatıcılar için 
- Meta veri:
- ID3 v2.4'ün izin verdiği şekilde, ID3 çerçevelerinden birden fazla boş değerle ayrılmış değeri ayrıştırın.
- Meta verilerle açıklanan içerik türünü veya klasör türünü belirtmek için MediaMetadata.mediaTypesimgesini ekleyin.
- MediaMetadata.isBrowsableöğesini- MediaMetadata.folderTypeyerine ekleyin. Klasör türünün desteği bir sonraki sürümde sonlandırılacak.
 
- Yayın uzantısı:
- Cast SDK sürümünü 21.2.0'a yükseltti.
 
- IMA uzantısı:
- İş parçacığı sorunlarını önlemek için uygulama iş parçacığında ImaServerSideAdInsertionMediaSourceöğesinin oynatıcı işleyicisini kaldırın.
- TV cihazlarında atla düğmesine odaklanılmasını istemek ve bunu varsayılan olarak doğru olacak şekilde ayarlamak için focusSkipButtonWhenAvailableözelliğiniImaServerSideAdInsertionMediaSource.AdsLoader.Builderöğesine ekleyin.
- Programatik olarak atla düğmesine odaklanma isteğinde bulunmak için ImaServerSideAdInsertionMediaSource.AdsLoaderöğesinefocusSkipButton()yöntemi ekleyin.
- IMA SDK sürümünü 3.29.0'a yükseltin.
 
- İş parçacığı sorunlarını önlemek için uygulama iş parçacığında 
- Demo uygulaması:
- Çalışma zamanında indirme bildirimleri için bildirim izni isteyin (#10884).
 
Sürüm 1.0.0-beta03
22 Kasım 2022
androidx.media3:media3-*:1.0.0-beta03 iptal edilir.
Version 1.0.0-beta03 contains these commits.
Bu sürüm, ExoPlayer 2.18.2 sürümüne karşılık gelir.
- Temel kitaplık:
- Tünel oluşturma özelliğinin şu anda seçili parçalarda etkin olup olmadığını kontrol etmek için ExoPlayer.isTunnelingEnabledsimgesini ekleyin (#2518).
- Tek bir MediaSourcesarmalamayı basitleştirmek içinWrappingMediaSourceeklendi (#7279).
- Yeterli bellek olmadığından oynatma takılmadan önce arka arabelleği silin.
- Offload etkinleştirildiğinde "doSomeWork" izleme bloğunu kapatın.
- PlaybackStatsListener'da hızlı ileri sarma ile ilgili oturum izleme sorunu düzeltildi (#180).
- Tek öğeli bir oynatma listesinde seekToNextveyaseekToPreviousçağrılırken eksikonMediaItemTransitiongeri arama işlevini gönderin (#10667).
- Videonun oluşturulduğu yüzeyin boyutunu döndüren Player.getSurfaceSizeişlevini ekleyin.
- Oyuncu yayınlanırken dinleyicilerin kaldırılmasının IllegalStateException(#10758) hatasına neden olabildiği hata düzeltildi.
 
- Tünel oluşturma özelliğinin şu anda seçili parçalarda etkin olup olmadığını kontrol etmek için 
- Derleme:
- Derleme hatalarını önlemek için minimum compileSdkVersiondeğerini zorunlu kılın (#10684).
- Başka bir Gradle derlemesine dahil edildiğinde yayınlamayı engelleme
 
- Derleme hatalarını önlemek için minimum 
- Parça seçimi:
- Ekran Dolby Vision'ı desteklemiyorsa Dolby Vision yerine diğer parçalar tercih edilir. (#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şturmayı önlemek için paralel indirme kaldırma işlemlerini 1 ile sınırlayın (#10458).
 
- Aynı 
- Video:
- Ekran Dolby Vision'ı desteklemiyorsa Dolby Vision için alternatif bir kod çözücü deneyin. (#9794).
 
- Ses:
- Aynı anda birden fazla oynatıcı yayınlarken OutOfMemory hatalarını önlemek için AudioTrackörneklerini yayınlarkenSingleThreadExecutorkullanın (#10057).
- AudioTrack'in yük boşaltma durumu için AudioOffloadListener.onExperimentalOffloadedPlaybackeklenir. (#134).
- AudioTrackBufferSizeProvideröğesini herkese açık bir arayüz haline getirin.
- Tercih edilen ses çıkışı cihazını ayarlamak için ExoPlayer.setPreferredAudioDeviceekleyin (#135).
- androidx.media3.exoplayer.audio.AudioProcessoröğesini- androidx.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 kanallı maskelere eşleyin (#10701).
 
- Aynı anda birden fazla oynatıcı yayınlarken OutOfMemory hatalarını önlemek için 
- Meta veri:
- MetadataRendererartık meta veriler kullanılabilir hale gelir gelmez oluşturacak şekilde yapılandırılabilir. Oluşturucu, meta verileri erken mi yoksa oynatıcı konumuyla senkronize olarak mı çıkışa vereceğini belirtmek için- MetadataRenderer(MetadataOutput, Looper, MetadataDecoderFactory, boolean)ile bir örnek oluşturun.
 
- DRM:
- Android 13 ClearKey uygulamasında boş olmayan ancak geçersiz bir lisans URL'si döndüren bir hatayı geçici olarak çözün.
- Oynatma listesinde DRM şemaları (ör. Widevine'dan ClearKey'e) arasında geçiş yaparken karşılaşılan setMediaDrmSession failed: session not 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 
- UI:
- Oynatıcının mevcut geçersiz kılmalarını TrackSelectionDialogBuilderiçinde ön ayar olarak kullanınTrackSelectionDialogBuilder(#10429).
 
- Oynatıcının mevcut geçersiz kılmalarını 
- Oturum:
- Bazıları eşzamansız çözümleme gerektirse bile komutların her zaman doğru sırada yürütüldüğünden emin olun (#85).
- DefaultMediaNotificationProvider.Builderoluşturmak için- DefaultMediaNotificationProvider.Builderekleyin.- DefaultMediaNotificationProviderOluşturucu, sağlayıcı tarafından kullanılan bildirim kimliğini, bildirim kanalı kimliğini ve bildirim kanalı adını yapılandırabilir. Ayrıca, bildirimlerin küçük simgesini ayarlamak için method- DefaultMediaNotificationProvider.setSmallIcon(int)öğesini ekleyin. (#104).
- MediaController.release()tarihinden önce gönderilen komutların bırakılmadığından emin olun (#99).
- SimpleBitmapLoader,- file://URI'lerinden bit eşlem yükleyebilir (#108).
- MediaController'nın bir dönemdeki reklamda arama yapmasını engelleyen onaylamayı düzeltin (#122).
- Oynatma sona erdiğinde MediaSessionServiceön planda durdurulur ve son oynatılan medya öğesinin oynatılmasını yeniden başlatmak için bir bildirim gösterilir (#112).
- Duraklatma için bekleyen bir amaçla ön plan hizmeti başlatmayın (#167).
- API 26 ve API 27'de DefaultNotificationProvidertarafından oluşturulan bildirimle ilişkili "rozet"i manuel olarak gizleyin (rozet, API 28 ve sonraki sürümlerde otomatik olarak gizlenir) ( (#131).
- Eski bir MediaSession'dan Media3 MediaController'a yapılan ikinci bağlayıcı bağlantısının IllegalStateExceptions'a neden olduğu hata düzeltildi (#49).
 
- RTSP:
- IMA:
- IMA SDK'nın reklam yüklerken takıldığı durumları ele almak için reklam bilgilerinin yüklenmesiyle ilgili zaman aşımı eklendi (#10510).
- İçeriğin sonuna gidilirken videonun ortasında gösterilen reklamların atlanmasını önleme (#10685).
- Sunucu tarafında eklenen reklamların bulunduğu canlı yayınlarda aralık süresini doğru şekilde hesaplayın (ör. IMA DAI) (#10764).
 
- FFmpeg uzantısı:
- FFmpeg kitaplıklarını NDK 23.1.7779620 ve sonraki sürümlerle bağlamak için yeni zorunlu işaretleri ekleyin (#9933).
 
- AV1 uzantısı:
- En yeni Android Studio sürümleriyle uyumsuzlukları önlemek için CMake sürümünü güncelleyin (#9933).
 
- Yayın uzantısı:
- getDeviceInfo()uygulayarak- MediaControllerile oynatmayı kontrol ederken- CastPlayeröğesini tanımlayabilirsiniz (#142).
 
- Dönüştürücü:
- Çıkış örneği oluşturma işleminin çok yavaş olduğunu algılamak için muxer watchdog zamanlayıcısı eklendi.
 
- Desteği sonlandırılan sembolleri kaldırın:
- Transformer.Builder.setOutputMimeType(String)öğesini kaldırın. Bu özellik kaldırıldı. Varsayılan muxer kullanıldığında MIME türü her zaman MP4 olur.
 
Sürüm 1.0.0-beta02
21 Temmuz 2022
androidx.media3:media3-*:1.0.0-beta02 iptal edilir.
1.0.0-beta02 sürümü şu commit'leri içerir.
Bu sürüm, ExoPlayer 2.18.1 sürümüne karşılık gelir.
- Temel kitaplık:
- ShuffleOrderyerine- ExoPlayer.setShuffleOrderyazıldığında- Player.Listener#onTimelineChanged'nin- reason=Player.TIMELINE_CHANGE_REASON_PLAYLIST_CHANGEDile aranacağından emin olun (#9889).
- Aşamalı medya için yalnızca arabelleğe alınmış konumdaki seçili parçaları ekleyin (#10361).
- Tüm ExoPlayer günlük çıkışı için özel günlükçüye izin verin (#9752).
- Bazı durumlarda işlevsel olmayan setDataSourceFactoryöğesininDefaultMediaSourceFactoryiçinde uygulanması düzeltildi (#116).
 
- Ayıklayıcılar:
- DASH:
- Manifestlerden ClearKey lisans URL'sini ayrıştırma (#10246).
 
- UI:
- TalkBack'in, oynatma kontrolleri menüsünde etkin olan hız seçeneğini duyurduğundan emin olun (#10298).
 
- RTSP:
- VP8 parçalanmış paket işleme özelliği eklendi (#110).
 
- Leanback uzantısı:
- LeanbackAdapter'teki- playWhenReadydeğişikliklerini dinleyin (10420).
 
- Yayınlama:
Sürüm 1.0.0-beta01
16 Haziran 2022
androidx.media3:media3-*:1.0.0-beta01 iptal edilir.
1.0.0-beta01 sürümü şu commit'leri içerir.
Bu, ExoPlayer 2.18.0 sürümüne karşılık gelir.
- Temel kitaplık:
- MediaMetricsManagerüzerinden Android platform teşhisleri desteğini etkinleştirin. ExoPlayer, oynatma etkinliklerini ve performans verilerini platforma yönlendirir. Bu sayede cihazda sistem performansı ve hata ayıklama bilgileri sağlanır. Bu veriler, cihaz kullanıcısı tarafından kullanım ve teşhis verilerinin paylaşımı etkinleştirildiyse Google tarafından da toplanabilir. Uygulamalar,- ExoPlayer.Builder.setUsePlatformDiagnostics(false)ile ExoPlayer için platform teşhislerine 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 taraftan yüklenirken ve oynatma sırasında seçili altyazı değiştirilirken bu hata oluşuyordu (#10248).
- API 29 ve 30'da 5G-NSA ağ türünün algılanması durduruldu. Bu oynatmalarda 4G ağı varsayılır.
- nullöğesinin- MediaSource.Factory.setDrmSessionManagerProviderve- MediaSource.Factory.setLoadErrorHandlingPolicy'ye aktarılmasına izin verme. Gerekirse- DefaultDrmSessionManagerProviderve- DefaultLoadErrorHandlingPolicyörnekleri açıkça iletilebilir.
- Tam LocalConfigurationbilinmediğinde medyayı oynatmak için gereken meta verileri temsil etmek üzereMediaItem.RequestMetadataekleyin.MediaMetadata.mediaUrlartıkRequestMetadata'ye dahil edildiğinden bu alanı da kaldırın.
- Oyuncuların tek bir öğe ayarlamasına izin vermek için Player.Command.COMMAND_SET_MEDIA_ITEMekleyin.
 
- Parça seçimi:
- TrackSelectionOverridessınıfını- TrackSelectionParameterssınıfına düzleştirin ve- TrackSelectionOverridesınıfını üst düzey bir sınıfa yükseltin.
- TracksInfoöğesini- Tracks,- TracksInfo.TrackGroupInfoöğesini ise- Tracks.Groupolarak yeniden adlandırın.- Player.getCurrentTracksInfove- Player.Listener.onTracksInfoChangedda- Player.getCurrentTracksve- Player.Listener.onTracksChangedolarak yeniden adlandırıldı. Bu,- Player.Listener.onTracksChangedyöntem adının farklı parametre türleriyle "kullanımdan kaldırılmasını geri alma" işlemini içerir.
- Kullanımdan kaldırılan DefaultTrackSelector.ParametersBuilderyerineDefaultTrackSelector.buildUponParametersveDefaultTrackSelector.Parameters.buildUpondeğerlerininDefaultTrackSelector.Parameters.Builderdöndürmesi için değişiklik yapıldı.
- Ekleme
DefaultTrackSelector.Parameters.constrainAudioChannelCountToDeviceCapabilitiesvarsayılan olarak etkindir. EtkinleştirildiğindeDefaultTrackSelector, kanal sayısı cihazın çıkış özelliklerini aşmayan ses parçalarını tercih eder. Elde taşınabilir cihazlarda, çok kanallı biçim uzamsallaştırılabilir (Android 12L+) veya Dolby surround ses biçimi olmadığı süreceDefaultTrackSelector, çok kanallı ses biçimleri yerine stereo/mono biçimini tercih eder. Ayrıca, ses uzamsallaştırmayı destekleyen cihazlardaDefaultTrackSelector, uzamsallaştırıcı özelliklerindeki değişiklikleri izler ve bu değişiklikler üzerine yeni bir parça seçimi tetikler.televisionKullanıcı arayüzü moduna sahip cihazlar bu kısıtlamaların dışında tutulur ve en yüksek kanal sayısına sahip biçim tercih edilir. Bu özelliği etkinleştirmek içinDefaultTrackSelectorörneğiContextile oluşturulmalıdır.
 
- Video:
- DummySurfaceöğesini- PlaceholderSurfaceolarak yeniden adlandırın.
- MediaCodecVideoRenderer.getCodecMaxInputSize'ya AV1 desteği ekleyin.
 
- Ses:
- Standart olmayan MIME türü reklamı yapan LG AC3 ses kod çözücüsünü kullanın.
- API < 21'de yavaş ART doğrulamayı önlemek için AudioAttributes.getAudioAttributesV21()öğesinin 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 platformu sorgulayın (API 29+) veya ses geçişi için ses kodlama kanalı sayısının varsayıldığını kabul edin. Bu durum, HLS parçasız hazırlama ile oluşur (10204).
- Kod çözücü 12 kanallı PCM ses çıkışı veriyorsa AudioTracköğesini kanal maskesiyleAudioFormat.CHANNEL_OUT_7POINT1POINT4yapılandırın (#10322.
 
- DRM
- Biçim değişikliğinden hemen sonra arama yapıldığında DRM oturumunun her zaman doğru şekilde güncellendiğinden emin olun (10274).
 
- Metin:
- Player.getCurrentCues()işlevini,- List<Cue>yerine- CueGroupdöndürecek şekilde değiştirin.
- SSA: OutlineColourstil ayarını destekler (BorderStyle == 3olduğunda, yaniOutlineColouripucunun arka planını ayarlar) (#8435).
- CEA-708: Verileri birden fazla hizmet bloğuna ayrıştırın ve şu anda seçili hizmet numarasıyla ilişkili olmayan blokları yoksayın.
- Yalnızca Google içinde kullanılan bir altyazı biçimini işlemek için kullanılan RawCcExtractorkaldırıldı.
 
- Ayıklayıcılar:
- UI:
- OnClickListener'a etkinlik yayınlama sorununu düzeltin. Bu sorun,- useController=falsedurumunda- PlayerViewüzerinde ayarlanan- OnClickListener'a etkinlik yayınlama sorununu düzeltir. (#9605). Ayrıca, tüm görünüm yapılandırmaları için- OnLongClickListener'ya etkinlik teslimiyle ilgili sorunları düzeltin.
- PlayerViewsınırlarından- ACTION_UPsınırlarına giren dokunma etkinlikleri dizisinin yanlışlıkla tıklama olarak değerlendirilmesi sorunu düzeltildi (#9861).
- Dokunulduğunda kontrolleri gizlemek yerine oynatmayı açıp kapatmaya neden olan PlayerViewerişilebilirlik sorunu düzeltildi (#8627).
- TrackSelectionViewve- TrackSelectionDialogBuilderöğelerini- ExoPlayeryerine- Playerarayüzüyle çalışacak şekilde yeniden yazın. Bu sayede görünümlerin diğer- Playeruygulamalarıyla kullanılması sağlanır ve kullanıcı arayüzü modülünün ExoPlayer modülüne olan bağımlılığı kaldırılır. Bu, önemli bir değişikliktir.
- PlayerViewparça seçicide zorunlu metin parçalarını göstermeyin ve "Yok" seçiliyse uygun bir zorunlu metin parçasını seçili tutun (#9432).
 
- DASH:
- DTS AudioChannelConfigurationöğelerinden kanal sayısını ayrıştırın. Bu, DTS akışları için ses geçişini yeniden etkinleştirir (#10159).
- nullöğesinin- DashMediaSource.Factory.setCompositeSequenceableLoaderFactoryöğesine aktarılmasına izin verme. Gerekirse- DefaultCompositeSequenceableLoaderFactoryörnekleri açıkça iletilebilir.
 
- DTS 
- HLS:
- Oynatma listesinin CODECS özelliğinde ses codec'i yoksa parçalı hazırlamaya geri dönülür (#10065).
- nullöğesinin- HlsMediaSource.Factory.setCompositeSequenceableLoaderFactory,- HlsMediaSource.Factory.setPlaylistParserFactoryve- HlsMediaSource.Factory.setPlaylistTrackerFactoryöğelerine aktarılmasına izin vermeyin. Gerekirse- DefaultCompositeSequenceableLoaderFactory,- DefaultHlsPlaylistParserFactoryörnekleri veya- DefaultHlsPlaylistTracker.FACTORYreferansı açıkça iletilebilir.
 
- Sorunsuz akış:
- nullöğesinin- SsMediaSource.Factory.setCompositeSequenceableLoaderFactoryöğesine aktarılmasına izin verme. Gerekirse- DefaultCompositeSequenceableLoaderFactoryörnekleri açıkça iletilebilir.
 
- RTSP:
- H263 için RTP okuyucu ekleyin (#63).
- MPEG4 için RTP okuyucu ekleyin (#35).
- HEVC için RTP okuyucu eklendi (#36).
- AMR için RTP okuyucu ekleyin. Şu anda yalnızca tek kanallı, araya girilmemiş AMR akışları desteklenmektedir. Bileşik AMR RTP yükü desteklenmez. (#46)
- VP8 için RTP okuyucu eklendi (#47).
- WAV için RTP okuyucu ekleyin (#56).
- RTSP temel yetkilendirme üstbilgisini düzeltin. (#9544).
- ExoPlayer'ın zorunlu SDP alanlarına ihtiyacı olmadığından bu alanların kontrolü durduruldu (#10049).
- RTSP zamanlaması ayrıştırılırken kontrol edilen istisnayı atma (#10165).
- VP9 için RTP okuyucu ekleyin (#47).
- OPUS için RTP okuyucu eklendi (#53).
 
- Veri kaynakları:
- DummyDataSourceöğesini- PlaceholderDataSourceolarak yeniden adlandırın.
- OkHttp kesme işleme için geçici çözüm.
 
- Oturum:
- İsteklerin eşzamansız olarak çözümlenmesine izin vermek için MediaSession.MediaItemFilleryerineMediaSession.Callback.onAddMediaItemskullanın.
- setMediaItems(s), eski bir medya oturumuna bağlandığında- MediaControlleryöntemlerini destekler.
- MediaController.setMediaUrive- MediaSession.Callback.onSetMediaUriöğelerini kaldırın. Aynı işlev,- MediaController.setMediaItemve- MediaSession.Callback.onAddMediaItemskullanılarak da elde edilebilir.
- Eski MediaControllergörüşmelerini, medya oynatmak içinonSetMediaUriyerineMediaSession.Callback.onAddMediaItemsnumarasına yönlendirin.
- Bildirimi özelleştirmek için MediaNotification.ProviderveDefaultMediaNotificationProviderekleyin.
- Albüm kapaklarını indirmek için BitmapLoaderveSimpleBitmapLoaderözelliklerini ekleyin.
- Eski oturumla geriye dönük uyumluluk sağlamak için MediaSession.setCustomLayout()ekleyin.
- Eski oturumla özellik eşliği sağlamak için MediaSession.setSessionExtras()ekleyin.
- MediaSession.MediaSessionCallbacköğesini- MediaSession.Callback,- MediaLibrarySession.MediaLibrarySessionCallbacköğesini- MediaLibrarySession.Callbackve- MediaSession.Builder.setSessionCallbacköğesini- setCallbackolarak yeniden adlandırın.
- MediaControllerImplLegacyiçinde NPE düzeltildi (#59).
- Zaman çizelgesinde oturum konumu bilgilerini güncelleme değişikliği(#51).
- Denetleyici serbest bırakıldıktan sonra MediaControllerImplBaseiçinde NPE düzeltildi (#74).
 
- İsteklerin eşzamansız olarak çözümlenmesine izin vermek için 
- Reklam oynatma / IMA:
- Medya Derecelendirme Konseyi'nin (MRC) önerileriyle uyumlu hale getirmek için reklam yoklama sıklığını her 100 ms'den her 200 ms'ye düşürün.
 
- FFmpeg uzantısı:
- Android Studio'nun Gradle senkronizasyonunun başarısız olmasına neden olan bir CMake hatasını önlemek için CMake sürümünü 3.21.0+olarak güncelleyin (#9933).
 
- 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 sembolleri kaldırın:
- Player.Listener.onTracksChanged(TrackGroupArray, TrackSelectionArray)öğesini kaldırın. Bunun yerine- Player.Listener.onTracksChanged(Tracks)politikasını kullanın.
- Player.getCurrentTrackGroupsve- Player.getCurrentTrackSelectionsöğelerini kaldırın. Bunun yerine- Player.getCurrentTrackspolitikasını kullanın. Bu yöntemler desteği sonlandırılmış olsa da- ExoPlayer.getCurrentTrackGroupsve- ExoPlayer.getCurrentTrackSelectionskullanmaya devam edebilirsiniz.
- DownloadHelper- DEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_VIEWPORTve- DEFAULT_TRACK_SELECTOR_PARAMETERSsabitlerini kaldırın. Mümkün olduğunda- getDefaultTrackSelectorParameters(Context), aksi takdirde- DEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_CONTEXTpolitikasını kullanın.
- DefaultTrackSelector(ExoTrackSelection.Factory)oluşturucusunu kaldırın. Bunun yerine- DefaultTrackSelector(Context, ExoTrackSelection.Factory)politikasını kullanın.
- Transformer.Builder.setContextöğesini kaldırın.- Context, bunun yerine- Transformer.Builderoluşturucusuna iletilmelidir.
 
Sürüm 1.0.0-alpha03
14 Mart 2022
androidx.media3:media3-*:1.0.0-alpha03 iptal edilir.
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 özelliklerinin kontrolüyle ilgili hatayı düzeltir.
 
- Ayıklayıcılar:
- FMP4: Hem v0 hem de v1 emsg atomları içeren akışlarda emsg örnek meta verilerinin yanlış sırada çıkış yapılması sorunu düzeltildi (#9996).
 
- Metin:
- SingleSampleMediaSource.Factory.setTrackIdve- MediaItem.SubtitleConfiguration.Builder.setIdetkileşimini düzeltip- SubtitleConfigurationalanına öncelik verin ve ayarlanmamışsa- Factorydeğerine geri dönün (#10016).
 
- Reklam oynatma:
- HLS SSAI canlı yayınlarında reklam dönemleri arasındaki ses yetersizliklerini düzeltir.
 
Sürüm 1.0.0-alpha02
2 Mart 2022
androidx.media3:media3-*:1.0.0-alpha02 iptal edilir.
1.0.0-alpha02 sürümü şu commit'leri içerir.
Bu, ExoPlayer 2.17.0 sürümüne karşılık gelir.
- Çekirdek Kitaplık:
- buildVideoRenderers()veya- buildAudioRenderers()'ü geçersiz kılan- DefaultRenderersFactoryalt sınıflarının, codec bağdaştırıcı fabrikasına erişip oluşturdukları- MediaCodecRendererörneklerine iletebilmesi için protected yöntemi- DefaultRenderersFactory.getCodecAdapterFactory()ekleyin.
- ICY üstbilgi alanları namevegenre'yi sırasıylaMediaMetadata.stationveMediaMetadata.genre'ye yayınlayın. Böylece bu alanlarPlayer.Listener.onMediaMetadataChanged()üzerinden uygulamaya ulaşır (#9677).
- DefaultHttpDataSource#getResponseHeadersöğesinden boş anahtarları kaldırın.
- MediaCodecörneği oluşturulurken hata oluştuğunda uyku moduna geçip tekrar deneme Bu, bazı cihazlarda bir yüzey güvenli bir codec'ten başka bir codec'e geçirilirken oluşan bir sorunu (#8696) çözmek için kullanılır.
- Kullanıcıların MediaCodec'den metrik verileri almasına izin vermek içinMediaCodecAdapter.getMetrics()ekleyin. (#9766).
- Maven bağımlılığı çözümleme sorununu düzeltin (#8353).
- Düşük gecikme süresi özellikleri içermeyen veya kullanıcı isteğiyle hız ayarı yapılmayan canlı yayınlarda otomatik hız ayarlamayı devre dışı bırakın (#9329).
- DecoderCounters#inputBufferCountöğesini- queuedInputBufferCountolarak yeniden adlandırın.
- SimpleExoPlayer.renderersgizli hale getirin. Oluşturuculara şu yollarla erişilebilir:- ExoPlayer.getRenderer.
- AnalyticsListener.EventFlagssabit değerlerinden bazıları,- Player.EventFlagsdeğerleriyle eşleşecek şekilde güncellendi.
- AnalyticsCollector, bir arayüz ve varsayılan uygulama olarak bölünerek bir uygulamanın ihtiyacı yoksa R8 tarafından kaldırılmasına izin verilir.
 
- Parça 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 almak üzere video parçası seçme mantığını güncelleyin (#9519).
- Video ve ses parçası seçim mantığını, yalnızca aynı düzeyde kod çözücü ve donanım desteğine sahip uyarlanabilir seçimler için biçimleri seçecek şekilde güncelleyin (#9565).
- Birincil, donanım hızlandırmalı kod çözücüler tarafından birden fazla codec destekleniyorsa video parçası seçme mantığını daha verimli codec'leri tercih edecek şekilde güncelleyin (#4835).
- Teknik parça seçim kısıtlamaları (ör. tercih edilen MIME türü veya maksimum kanal sayısı) yerine ses içeriği tercihlerine (ör. "varsayılan" ses parçası veya sistem yerel ayar diline uygun bir parça) öncelik verin.
- Bir parça grubunu geçersiz kılmanın aynı türdeki diğer parça gruplarını devre dışı bırakmamasına neden olan parça seçimi sorunu düzeltildi (#9675).
- Boş olmayan ve boş parça geçersiz kılmalarının karışımının doğru şekilde uygulanmadığı parça seçimi sorunu düzeltildi (#9649).
- TrackGroupArrayiçinde yinelenen- TrackGroup'ları yasaklayın.- TrackGroups can always be made distinguishable by setting an- idin the- TrackGroupconstructor. Bu düzeltme, etkin bir parça geçersiz kılma işlemiyle uygulama arka plana alındıktan sonra oynatmaya devam edildiğinde yaşanan kilitlenme sorununu giderir (#9718).
- Oynatma, canlı yayının sonuna çok yakın olsa bile yeterli ağ bant genişliği olduğunda kalite artışına izin vermek için AdaptiveTrackSelectioniçindeki mantığı değiştirin (#9784).
 
- Video:
- Gerekirse uyumlu bir H264/H265 kod çözücüyü kullanmak için Dolby Vision'ın kod çözücü yedekleme mantığını düzeltin.
 
- Ses:
- Gerekirse uyumlu bir E-AC3 kod çözücü kullanmak için Dolby Atmos (E-AC3-JOC) kod çözücü yedek mantığını düzeltin.
- AudioCapabilitiesAPI'lerini,- nullyerine- AudioCapabilities.DEFAULT_AUDIO_CAPABILITIES'nin açıkça iletilmesini gerektirecek şekilde değiştirin.
- DefaultAudioSinköğesine- AudioTrackBufferSizeProviderekleyerek- AudioTrackarabellek boyutu hesaplamasının özelleştirilmesine izin verin. (#8891).
- İstenen arabellek boyutu 1 MB'tan büyükse AudioTrackoluşturmayı yeniden deneyin. (#9712).
 
- Ayıklayıcılar:
- Metin:
- Yapılandırmadan oluşturulan altyazı parçasının MediaItem.SubtitleConfiguration.idalanına yayılan birFormat.idalanı ekleyin (#9673).
- Matroska kapsayıcılarında WebVTT altyazıları için temel destek eklendi (#9886).
- Cea708Decoderöğesinin, bir hizmet bloğunun belirtilen boyutundan daha fazla okumasını engelleme.
 
- Yapılandırmadan oluşturulan altyazı parçasının 
- DRM:
- playbackLooper,- DrmSessionManager.(pre)acquireSessionhesabından kaldırılsın mı? Bir- DrmSessionManager, özel bir- MediaSourceiçindeki bir uygulama tarafından kullanıldığında- playbackLooperyerine- DrmSessionManager.setPlayer'ye iletilmesi gerekir.
 
- Reklam oynatma / IMA:
- IMA Dinamik Reklam Ekleme (DAI) desteği eklendi (#8213).
- AdPlaybackStateöğesine, reklam grubunun sıfırlanmasına izin veren bir yöntem ekleyin. Böylece reklam grubu tekrar oynatılabilir (#9615).
- Reklam oynatılırken oynatma hızının 1,0 olarak ayarlanması zorunlu kılınır (#9018).
- Yüklenemeyen bir reklam grubunun anında oynatma sıfırlamasına neden olması sorunu düzeltildi (#9929).
 
- UI:
- DASH:
- Ayrıştırılan temel ve ek özellikleri Representationöğesine ekleyin (#9579).
- forced-subtitleparça rolünü destekleyin (#9727).
- mainparça rolünü- C.SELECTION_FLAG_DEFAULTolarak yorumlamayı durdurun.
- DVB ad alanını bildirmeyen manifestler için temel URL hariç tutma mantığını düzeltin (#9856).
- Göreceli MPD.LocationURL'leri desteklenir (#9939).
 
- Ayrıştırılan temel ve ek özellikleri 
- HLS:
- Yalnızca ses içeren HLS yayınları için Format.labelöğesini doğru şekilde doldurun (#9608).
- Başlatma süresini iyileştirmek için varsayılan olarak parçasız hazırlamayı kullanın. Oluşturduğunuz sürümlerde, ana oynatma listesinde bildirilmeyen çoklu dosyalı altyazı parçaları varsa bunların oynatılabilmesi için ana oynatma listesine eklenmesi veya HlsMediaSource.Factory.setAllowChunklessPreparation(false)ile parçasız hazırlamanın devre dışı bırakılması gerekir.
- HLS'de anahtar kareye göre doğru arama desteği eklendi ( (#2882).
 
- Yalnızca ses içeren HLS yayınları için 
- RTSP:
- Herhangi bir sunucu bağlantısı için kullanılan SocketFactory'yı geçersiz kılmak üzere bir istemci API'si sağlayın (#9606).
- Her ikisi de mevcutsa BASIC yerine DIGEST kimlik doğrulama yöntemi tercih edilir (#9800).
- RTSP parçası 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 
- Dönüştürücü:
- Gerekli minimum API sürümünü 21'e yükseltin.
- TransformationExceptionartık dönüştürme sırasında oluşan hataları açıklamak için kullanılıyor.
- Dönüşüm seçeneklerini belirtmek için TransformationRequestekleyin.
- Birden fazla dinleyicinin kaydedilmesine izin verin.
- Codec çıkışı kısmen okunduğunda Transformer'ın takılması sorunu düzeltildi.
- Muxer yayınlanırken Transformer.getProgressiçinde olası NPE'yi düzeltir.
- Dönüşümleri uygulamak için bir demo uygulaması ekleyin.
 
- MediaSession uzantısı:
- MediaSessionConnector, durdurulduğunda oynatma listesini varsayılan olarak temizler. Oynatma listesinin korunmasını isteyen uygulamalar, bağlayıcıda- setClearMediaItemsOnStop(false)işlevini çağırabilir.
 
- Yayın uzantısı:
- FFmpeg uzantısı:
- build_ffmpeg.sh'nın GNU yerine LLVM'nin bin utils'ine bağlı olmasını sağlayın (#9933).
 
- Android 12 uyumluluğu:
- Yayın uzantısını com.google.android.gms:play-services-cast-framework:20.1.0sürümüne yükseltin.play-services-cast-framework'nın önceki sürümleri, Android 12'yi hedefleyen uygulamalarla uyumlu değildir vePendingIntentoluşturulurkenIllegalArgumentExceptionile kilitlenir (#9528).
 
- Yayın uzantısını 
- Desteği sonlandırılan sembolleri kaldırın:
- Player.EventListeneröğesini kaldırın. Bunun yerine- Player.Listenerpolitikasını kullanın.
- MediaSourceFactory#setDrmSessionManager,- MediaSourceFactory#setDrmHttpDataSourceFactoryve- MediaSourceFactory#setDrmUserAgentöğelerini kaldırın. Bunun yerine- MediaSourceFactory#setDrmSessionManagerProviderkullanın.
- MediaSourceFactory#setStreamKeysöğesini kaldırın. Bunun yerine- MediaItem.Builder#setStreamKeyskullanın.
- MediaSourceFactory#createMediaSource(Uri)öğesini kaldırın. Bunun yerine- MediaSourceFactory#createMediaSource(MediaItem)kullanın.
- setTag,- DashMediaSource,- HlsMediaSourceve- SsMediaSourcecihazlarından kaldırılsın mı? Bunun yerine- MediaItem.Builder#setTagpolitikasını kullanın.
- DashMediaSource#setLivePresentationDelayMs(long, boolean)öğesini kaldırın. Manifesti geçersiz kılmak için- MediaItem.Builder#setLiveConfigurationve- MediaItem.LiveConfiguration.Builder#setTargetOffsetMs, yedek değer sağlamak için- DashMediaSource#setFallbackTargetLiveOffsetMsöğesini kullanın.
- (Simple)ExoPlayer.setThrowsWhenUsingWrongThreadöğesini kaldırın. İleti dizisi zorunluluğunu devre dışı bırakmak artık mümkün değildir.
- ActionFileve- ActionFileUpgradeUtilöğelerini kaldırın. Eski işlem dosyalarını- ActionFileUpgradeUtilile birleştirmek için ExoPlayer 2.16.1 veya önceki bir sürümü kullanın.- DefaultDownloadIndex
- ProgressiveMediaSource#setExtractorsFactoryöğesini kaldırın. Bunun yerine- ProgressiveMediaSource.Factory(DataSource.Factory, ExtractorsFactory)oluşturucusunu kullanın.
- ProgressiveMediaSource.Factory#setTagve- ProgressiveMediaSource.Factory#setCustomCacheKeyaraçlarını kaldırın. Bunun yerine- MediaItem.Builder#setTagve- MediaItem.Builder#setCustomCacheKeypolitikalarını kullanın.
- DefaultRenderersFactory(Context, @ExtensionRendererMode int)ve- DefaultRenderersFactory(Context, @ExtensionRendererMode int, long)yapılandırıcılarını kaldırın. Bunun yerine- DefaultRenderersFactory(Context)oluşturucusunu,- DefaultRenderersFactory#setExtensionRendererModeve- DefaultRenderersFactory#setAllowedVideoJoiningTimeMskullanın.
- Tüm herkese açık CronetDataSourceoluşturucuları kaldırın. Bunun yerineCronetDataSource.Factorykullanın.
 
- Yalnızca aşağıdaki IntDefsdeğerini@Target(TYPE_USE)olarak değiştirin. Bu durum, Kotlin'deki kullanımların derlenmesini bozabilir. Bu sorun, türü açıklama eklemek için açıklama ekleme işlevini taşıyarak (Int) düzeltilebilir.- @AacAudioObjectType
- @Ac3Util.SyncFrameInfo.StreamType
- @AdLoadException.Type
- @AdtsExtractor.Flags
- @AmrExtractor.Flags
- @AspectRatioFrameLayout.ResizeMode
- @AudioFocusManager.PlayerCommand
- @AudioSink.SinkFormatSupport
- @BinarySearchSeeker.TimestampSearchResult.Type
- @BufferReplacementMode
- @C.BufferFlags
- @C.ColorRange
- @C.ColorSpace
- @C.ColorTransfer
- @C.CryptoMode
- @C.Encoding
- @C.PcmEncoding
- @C.Projection
- @C.SelectionReason
- @C.StereoMode
- @C.VideoOutputMode
- @CacheDataSource.Flags
- @CaptionStyleCompat.EdgeType
- @DataSpec.Flags
- @DataSpec.HttpMethods
- @DecoderDiscardReasons
- @DecoderReuseResult
- @DefaultAudioSink.OutputMode
- @DefaultDrmSessionManager.Mode
- @DefaultTrackSelector.SelectionEligibility
- @DefaultTsPayloadReaderFactory.Flags
- @EGLSurfaceTexture.SecureMode
- @EbmlProcessor.ElementType
- @ExoMediaDrm.KeyRequest.RequestType
- @ExtensionRendererMode
- @Extractor.ReadResult
- @FileTypes.Type
- @FlacExtractor.Flags(- com.google.android.exoplayer2.ext.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 iptal edilir.
1.0.0-alpha01 sürümü şu commit'leri içerir.
Yeni özellikler
Media3, ExoPlayer da dahil olmak üzere medya destek kitaplıklarının yeni adresidir. İlk alfa sürümünde, aşağıdakiler de dahil olmak üzere medya kullanım alanlarını uygulamaya yönelik kitaplıkların erken ve işlevsel uygulamaları yer almaktadır:
- ExoPlayer, Android için uygulama düzeyinde bir medya oynatıcıdır. Özelleştirilmesi ve genişletilmesi kolaydır.
- Oynatmaları göstermek ve kontrol etmek için medya oturumu işlevselliği. Bu yeni oturum modülü, ExoPlayer ile aynı Playerarayüzünü kullanır.
- Medya oynatma kullanıcı arayüzleri oluşturmaya yönelik kullanıcı arayüzü bileşenleri.
- ExoPlayer ile kullanılmak üzere diğer kitaplıklardaki işlevleri sarmalayan modüller (ör. IMA SDK aracılığıyla reklam ekleme).
Daha fazla bilgi için Media3 GitHub projesine göz atın.
ExoPlayer daha önce ayrı bir ExoPlayer GitHub projesinde barındırılıyordu. Media3'teki paket adı androidx.media3.exoplayer'dır. Uygulamalara Media3'e geçiş için zaman tanımak amacıyla ExoPlayer GitHub projesini bir süre daha desteklemeye ve yayınlamaya devam etmeyi planlıyoruz. Media3, yeni media3-session modülüyle değiştirilen eski media2 ve mediasession uzantıları hariç olmak üzere tüm ExoPlayer modüllerinin yerine kullanılabilir. Bu, bir bağdaştırıcı/bağlayıcı sınıfı kullanmaya gerek kalmadan oynatıcılar ve medya oturumları arasında doğrudan entegrasyon sağlar.
