Media3
Son Güncelleme | Kararlı sürüm | Sürüm Adayı | Beta Sürümü | Alfa sürümü |
---|---|---|---|---|
2 Temmuz 2025 | 1.7.1 | - | 1.8.0-beta01 | 1.8.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.6.1" // For media playback using ExoPlayer implementation "androidx.media3:media3-exoplayer:$media3_version" // For DASH playback support with ExoPlayer implementation "androidx.media3:media3-exoplayer-dash:$media3_version" // For HLS playback support with ExoPlayer implementation "androidx.media3:media3-exoplayer-hls:$media3_version" // For SmoothStreaming playback support with ExoPlayer implementation "androidx.media3:media3-exoplayer-smoothstreaming:$media3_version" // For RTSP playback support with ExoPlayer implementation "androidx.media3:media3-exoplayer-rtsp:$media3_version" // For MIDI playback support with ExoPlayer (see additional dependency requirements in // https://github.com/androidx/media/blob/release/libraries/decoder_midi/README.md) implementation "androidx.media3:media3-exoplayer-midi:$media3_version" // For ad insertion using the Interactive Media Ads SDK with ExoPlayer implementation "androidx.media3:media3-exoplayer-ima:$media3_version" // For loading data using the Cronet network stack implementation "androidx.media3:media3-datasource-cronet:$media3_version" // For loading data using the OkHttp network stack implementation "androidx.media3:media3-datasource-okhttp:$media3_version" // For loading data using librtmp implementation "androidx.media3:media3-datasource-rtmp:$media3_version" // For building media playback UIs using Compose implementation "androidx.media3:media3-ui-compose:$media3_version" // For building media playback UIs using Views implementation "androidx.media3:media3-ui:$media3_version" // For building media playback UIs using Jetpack Compose implementation "androidx.media3:media3-ui-compose:$media3_version" // For building media playback UIs for Android TV using the Jetpack Leanback library implementation "androidx.media3:media3-ui-leanback:$media3_version" // For exposing and controlling media sessions implementation "androidx.media3:media3-session:$media3_version" // For extracting data from media containers implementation "androidx.media3:media3-extractor:$media3_version" // For 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.6.1" // For media playback using ExoPlayer implementation("androidx.media3:media3-exoplayer:$media3_version") // For DASH playback support with ExoPlayer implementation("androidx.media3:media3-exoplayer-dash:$media3_version") // For HLS playback support with ExoPlayer implementation("androidx.media3:media3-exoplayer-hls:$media3_version") // For SmoothStreaming playback support with ExoPlayer implementation("androidx.media3:media3-exoplayer-smoothstreaming:$media3_version") // For RTSP playback support with ExoPlayer implementation("androidx.media3:media3-exoplayer-rtsp:$media3_version") // For MIDI playback support with ExoPlayer (see additional dependency requirements in // https://github.com/androidx/media/blob/release/libraries/decoder_midi/README.md) implementation("androidx.media3:media3-exoplayer-midi:$media3_version") // For ad insertion using the Interactive Media Ads SDK with ExoPlayer implementation("androidx.media3:media3-exoplayer-ima:$media3_version") // For loading data using the Cronet network stack implementation("androidx.media3:media3-datasource-cronet:$media3_version") // For loading data using the OkHttp network stack implementation("androidx.media3:media3-datasource-okhttp:$media3_version") // For loading data using librtmp implementation("androidx.media3:media3-datasource-rtmp:$media3_version") // For building media playback UIs using Compose implementation("androidx.media3:media3-ui-compose:$media3_version") // For building media playback UIs using Views implementation("androidx.media3:media3-ui:$media3_version") // For building media playback UIs using Jetpack Compose implementation("androidx.media3:media3-ui-compose:$media3_version") // For building media playback UIs for Android TV using the Jetpack Leanback library implementation("androidx.media3:media3-ui-leanback:$media3_version") // For exposing and controlling media sessions implementation("androidx.media3:media3-session:$media3_version") // For extracting data from media containers implementation("androidx.media3:media3-extractor:$media3_version") // For 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. Sorular, bilinen sorunlar ve özellik istekleriyle ilgili yanıtları bulmak ve yeni sorunlar bildirmek için Media3 sorun izleyicisini kullanabilirsiniz.
Sürüm 1.8.0
Sürüm 1.8.0-beta01
2 Temmuz 2025
androidx.media3:media3-*:1.8.0-beta01
iptal edilir.
1.8.0-beta01 sürümü bu commit'leri içerir.
- Ortak kitaplık:
ForwardingSimpleBasePlayer
içinde oyuncu değişikliği yapma desteği eklendi.
- ExoPlayer:
Context
öğesindenExoPlayer.Builder
öğesine iletilen sanal cihaz kimliğinin kullanılması için destek ekleyin.- 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_ONLY
uygulamasını kullanın. - Önceden yükleme iş parçacığından farklı bir oynatma iş parçacığına sahip
ExoPlayer
tarafındanPreloadMediaSource
oynatıldığındaIllegalStateException
oluşturuluyor (#2495). - Varsayılan bir uygulama ile
cloneAndMove
öğesiniShuffleMode
öğesine ekleyin (#2226). Renderer.getMinDurationToProgressUs
işlevinin varsayılan davranışını,render
işlevine çağrı yapılması gerekmiyorsa 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.experimentalSetDynamicSchedulingEnabled
etkinse geçerli olur.
- Transformer:
- Video kodlama ayarlarının yonga setine özgü optimizasyonlarını sağlayan
CodecDbLite
eklendi. - CodecDB Lite ayarlarının optimizasyonunu etkinleştirmek için
setEnableCodecDbLite
işaretiniDefaultEncoderFactory
öğesine ekleyin. Bu işaret varsayılan olarak false değerine ayarlanır.
- Video kodlama ayarlarının yonga setine özgü optimizasyonlarını sağlayan
- Ayıklayıcılar:
- Birden fazla
sidx
atomu içeren parçalanmış MP4'te arama için destek ekleyin. Bu davranış,FLAG_MERGE_FRAGMENTED_SIDX
iş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).
WavExtractor
türündeki bir dosya ayrıştırılırken ses biçimi için başlık uzantısının SubFormat verilerini kullanacak şekildeWavExtractor
öğesini güncelleyin.WAVE_FORMAT_EXTENSIBLE
- MP4: Ham PCM ses parçalarını tanımlayan
ipcm
vefpcm
kutuları için destek ekleyin (64 bit kayan noktalı PCM desteklenmez). - MP4: Videoyu hem döndüren hem de yansıtan
tkhd
dönüşüm matrislerinin döndürme kısmını iş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).
- Birden fazla
- Ses:
ChannelMappingAudioProcessor
veTrimmingAudioProcessor
'da tüm doğrusal PCM örnek biçimleri için destek eklendi.CompositionPlayer
'da ses boşlukları için destek ekleyin.BaseAudioProcessor#reset()
adlı kişidenBaseAudioProcessor#flush()
adlı kişiye yapılan sahte aramayı kaldırın.
- Video:
- Ses örnekleri tam olarak istenen konumda başlamadığında başlangıçta akıcı video karelerinin yayınlanmasını iyileştirir.
- Ayrılmış yüzey geçici çözümünü "realme" cihazlara genişletme (#2059).
- Metin:
- Bir altyazı segmenti ilk başta yüklenemeyip daha sonra başarıyla yüklendiğinde ve ardından birkaç boş altyazı segmenti geldiğinde oynatmanın duraklaması sorunu düzeltildi (#2517).
- Meta veri:
Timeline
veMetadataRetriever
için medya süresini veTimeline
değerini alma desteği eklendi ve bu API, örnek tabanlıAutoCloseable
API'ye taşındı.Builder
kullanarakMediaItem
için bir örnek oluşturun, ardından meta veriler içinListenableFuture
alınacakretrieveTrackGroups()
,retrieveTimeline()
veretrieveDurationUs()
işlevlerini çağırın. Önceki statik yöntemler artık kullanımdan kaldırıldı (#2462).
- Resim:
- Çok büyük (ör. 50 MP) resimleri görüntülemeye çalışırken uygulamanın
BitmapFactoryImageDecoder
içindePlayerView
kaynaklı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ıContext
parametresini alacak şekilde değiştirin.CompositionPlayer
içinde kullanılan maksimum bit eşlem çıkış boyutunu,Transformer
içinde kullanılanla aynı olacak şekilde ayarlayın (yaniCompositionPlayer
,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
- Muxer'lar:
- Parçalanmış MP4'teki ses örnekleri için doğru örnek işaretlerinin ayarlanmamasına neden olan hata düzeltildi.
- Oturum:
- 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
PlaybackException
ekleyin. MediaController
cihazda canlı yayında geri sarmaya çalışırkenIllegalArgumentException
hatasına neden olan hata düzeltildi.- Android Auto kullanıcı arayüzünde (ve platform medya oturumundan bu bilgileri kullanan diğer denetleyicilerde) konum artefaktlarını önlemek için canlı yayınlarda, platform medya denetleyicileri için oynatma konumunun yayınlanmasını ve mevcut öğede arama yapma özelliğini durdurun (#1758).
- Oynatıcı ana iş parçacığından farklı bir uygulama iş parçacığında çalıştırılırken ana iş parçacığından
- Cronet uzantısı:
- Otomatik çerez işleme özelliği eklendi (#5975).
- HLS uzantısı:
- 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).
- Alıntılanmış dize özellik değerlerinde
- DASH uzantısı:
- RTSP uzantısı:
- Bir HTTP 302 yanıtı işlenirken sağlanan konum URI'sinin kullanılması için
RtspClient
düzeltildi ( (#2398).
- Bir HTTP 302 yanıtı işlenirken sağlanan konum URI'sinin kullanılması için
- Kod çözücü uzantıları (FFmpeg, VP9, AV1 vb.):
- Ses kod çözücü uzantıları için
DefaultTrackSelector.setAllowInvalidateSelectionsOnRendererCapabilitiesChange
öğesinin etkili olmaması hatası düzeltildi (#2258).
- Ses kod çözücü uzantıları için
- Yayın uzantısı:
setVolume()
vegetVolume()
için destek eklendi (#2279).- Zaman çizelgesi boşken CastPlayer'ın STATE_BUFFERING durumuna girmesini önleyin.
- Test yardımcı programları:
- Oyuncunun belirtilen bir konuma ulaşması için
advance(player).untilPositionAtLeast
veuntilMediaItemIndex
öğeleriniTestPlayerRunHelper
öğesine ekleyin. Çoğu durumda bu yöntemler, mevcutuntilPosition
veuntilStartOfMediaItem
yöntemlerinden daha güvenilirdir. FakeDownloader
öğesini diğer testlerde yeniden kullanmak içintest-utils-robolectric
modülüne taşıyın.
- Oyuncunun belirtilen bir konuma ulaşması için
Sürüm 1.8.0-alpha01
19 Mayıs 2025
androidx.media3:media3-*:1.8.0-alpha01
iptal edilir.
1.8.0-alpha01 sürümü bu commit'leri içerir.
- ExoPlayer:
ExoPlayer.setScrubbingModeEnabled(boolean)
yöntemini ekleyin. Bu, oynatıcıyı sık sık yapılan arama işlemleri (ör. kullanıcının kaydırma çubuğunu sürüklemesi) için optimize eder. Sarma modunun davranışı,setScrubbingModeParameters(..)
ileExoPlayer
veExoPlayer.Builder
üzerinde özelleştirilebilir.- Sarma modunda kısmi arama toleransının özelleştirilmesine izin verilir.
- Sarma modunda codec'in çalışma hızını artırın.
AdsMediaSource
içeriğindeki hazırlama hatalarının hiçbir zaman bildirilmemesine neden olan hata düzeltildi (#2337).MergingMediaSource
'daki bellek sızıntısı düzeltildi. Örneğin, altyazılar yan yüklenirken bu sızıntı kullanılıyordu (#2338).- Belirli medya öğeleri için CMCD günlük kaydını devre dışı bırakmak üzere
CmcdConfiguration.Factory
'nınnull
döndürmesine izin verin (#2386). - Varsayılan görüntü arabellek boyutunu 128 KB'tan (metin parçalarından kopyalama-yapıştırma hatası) 26 MB'a yükseltin. Bu boyut, 50 MP Ultra HDR görüntüler için yeterlidir (#2417).
- Uygulamaların, belirtilen başlangıç konumu ve süresiyle tek bir medyayı önbelleğe almasına olanak tanıyan
PreCacheHelper
işlevi eklendi.
- Transformer:
- Başlangıçtaki bir boşluğu (
addGap()
ile eklenir) artık sessiz sesle doldurmak içinEditedMediaItemSequence.Builder
içindeexperimentalSetForceAudioTrack(true)
değerinin açıkça ayarlanması gerekir. Boşluk dizinin ortasındaysa bu işaret gerekli değildir. Muxer
arayüzünümedia3-transformer
konumundanmedia3-muxer
konumuna taşıyın.- Medya öğesini resim olarak içe aktarmak için
MediaItem.Builder().setImageDuration(long)
ayarını zorunlu kılın. - Kırpma işlemi sırasında, oyunculara kırpma başlangıç noktasından önceki ana kare ile kırpma başlangıç noktası arasındaki örnekleri yoksaymalarını söylemek için MP4 düzenleme listesi içeren
Transformer.Builder().experimentalSetMp4EditListTrimEnabled(boolean)
öğ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
VideoCompositorSettings
ekleyin.
- Başlangıçtaki bir boşluğu (
- Ayıklayıcılar:
- MP3:
FLAG_ENABLE_CONSTANT_BITRATE_SEEKING(_ALWAYS)
(#2194) nedeniyle sabit bit hızlı arama işlemine geri dönüldüğünde, aranamayan Xing, VBRI ve benzeri değişken bit hızlı meta verilerden elde edilen süre ve veri boyutunu kullanın.
- MP3:
- Ses:
- DefaultAudioMixer'da sabit güç upmixing/downmixing'ine izin verin.
ChannelMappingAudioProcessor
,TrimmingAudioProcessor
veToFloatPcmAudioProcessor
öğ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üzeltme işlemini iyileştirir.
- Bluetooth cihazlarına bağlıyken duraklatmadan devam ettikten sonraki ilk 10 saniyede A/V senkronizasyonunun bozulmasına neden olan hata düzeltildi.
AnalyticsListener.onAudioPositionAdvancing
'nın, sesin ilerlemeye başladığı zamanı değil, ilk ölçümün zamanını bildirmesine neden olan hata düzeltildi.
- Video:
- Yalnızca kod çözme giriş arabellekleri sıraya alınırken
ExoPlayer
işaretini eklemek için deneyselMediaCodec.BUFFER_FLAG_DECODE_ONLY
API'sini ekleyin. Bu işaret, kod çözücüye yalnızca kod çözme arabelleklerini atlama sinyali vererek daha hızlı arama yapılmasını sağlar.DefaultRenderersFactory.experimentalSetEnableMediaCodecBufferDecodeOnlyFlag
ile etkinleştirin. - Yazılım video codec'leri için codec performansı kontrollerini iyileştirir. Bu durum, bazı ek parçaların
EXCEEDS_CAPABILITIES
olarak işaretlenmesine neden olabilir. - Bazı cihazlarda VP9 Widevine oynatma hatalarını düzeltme (#2408).
- Yalnızca kod çözme giriş arabellekleri sıraya alınırken
- Metin:
- 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/SSA
ile SSA altyazıları için destek ekleyin. Daha önceMatroskaExtractor
yalnızca SubStation Alpha altyazılarının "gelişmiş" (v4+) varyantını temsil etmesi amaçlananCodecId = S_TEXT/ASS
biç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).
- 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
Presentation
oluşturanPresentation.createForShortSide(int)
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:
writeSampleData()
API artıkMediaCodec.BufferInfo
yerine muxer'a özelBufferInfo
sınıfını kullanıyor.- Varsayılan olarak yanlış olan
Muxer.Factory#supportsWritingNegativeTimestampsInEditList
değerini 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ıyla ilgili hata düzeltildi.
Pencereden sonraki bir başlangıç zamanına sahip reklam grupları artık
MediaPeriodQueue
sırasına alınmıyor (#2215).
- Oturum:
- Eski bir
MediaBrowserServiceCompat
'ye bağlıMediaBrowser
'üngetLibraryRoot
parametresine null değerinin iletilmesininNullPointerException
oluşturmasına neden olan hata düzeltildi. - Özel işlemler, arama sonucu veya getItem isteği gönderildiğinde eski oturum uygulamasının
ClassNotFoundException
ile kilitlenmesine neden olan hata düzeltildi. MediaItem.LocalConfiguration.uri
öğesinin platform oturumlarınınMediaMetadata
ile paylaşılmasına neden olan hata düzeltildi. Denetleyicilerin medyayı yeniden istemesine izin vermek için URI'yi kasıtlı olarak paylaşmak istiyorsanız bunun yerineMediaItem.RequestMetadata.mediaUri
değerini ayarlayın.
- Eski bir
- UI:
- İlk düğme durumlarını ayarlama ile durum değişikliğini (ö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).
media3-ui-compose
veSeekForwardButtonState
içinmedia3-ui-compose
modülüne durum tutucular ve composable'lar ekleyin.SeekBackButtonState
- ExoPlayer'ın sarma modu için
PlayerControlView
'ya destek ekleyin. Etkinleştirildiğinde, kullanıcı kaydırma çubuğunu sürüklemeye başladığında oynatıcıyı kaydırma moduna geçirir, her hareket için 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 = true
veya Java/Kotlin'desetTimeBarScrubbingEnabled(boolean)
yöntemiyle etkinleştirilebilir. PlayerSurface
, boş değer atanabilir birPlayer
bağımsız değişkenini kabul etsin.
- İndirilenler:
- Kademeli akışlar için kısmi indirme desteği eklendi. Uygulamalar,
DownloadHelper
ile aşamalı bir akış hazırlayabilir ve indirme işleminin kapsaması gereken zamana dayalı medya başlangıç ve bitiş konumlarını belirterek yardımcıdanDownloadRequest
isteyebilir. DöndürülenDownloadRequest
, çözümlenmiş bayt aralığını taşır. Bu aralıklaProgressiveDownloader
oluşturulabilir ve içerik buna göre indirilebilir. - Statik
DownloadHelper.Factory
yöntemlerinin yerine kullanılanDownloadHelper.forMediaItem()
yöntemini ekleyin. SegmentDownloader
uygulamaları içinFactory
ekleyin.- Uyarlanabilir akışlar için kısmi indirme desteği eklendi. Uygulamalar,
DownloadHelper
ile uyarlanabilir bir akış hazırlayabilir ve indirme işleminin kapsaması gereken zamana dayalı medya başlangıç ve bitiş konumlarını belirterek yardımcıdanDownloadRequest
isteyebilir. DöndürülenDownloadRequest
, çözümlenmiş zaman aralığını taşır. Bu aralıkla somut birSegmentDownloader
oluşturulabilir ve içerik buna göre indirilebilir.
- Kademeli akışlar için kısmi indirme desteği eklendi. Uygulamalar,
- HLS uzantısı:
- X-ASSET-LIST ve
HlsInterstitialsAdsLoader
içeren canlı yayınlar desteklenir.
- X-ASSET-LIST ve
- RTSP uzantısı:
- Sondaki boşluk karakterlerini içeren satırların bulunduğu SessionDescription'lar için ayrıştırma desteği eklendi (#2357).
- Yayın uzantısı:
getDeviceVolume()
,setDeviceVolume()
,getDeviceMuted()
vesetDeviceMuted()
için destek eklendi (#2089).
- Test yardımcı programları:
transformer.TestUtil.addAudioDecoders(String...)
,transformer.TestUtil.addAudioEncoders(String...)
vetransformer.TestUtil.addAudioEncoders(ShadowMediaCodec.CodecConfig, String...)
kaldırıldı. Bunun yerine, gölge kodlayıcıları ve kod çözücüleri yapılandırmak içinShadowMediaCodecConfig
kullanın.ShadowMediaCodecConfig
tarafından bildirilen codec adlarında "exotest" öneki "media3" ile değiştirildi.
- Kullanımdan kaldırılan sembolleri kaldırma:
- Kullanımdan kaldırılan
SegmentDownloader
oluşturucusuSegmentDownloader(MediaItem, Parser<M>, CacheDataSource.Factory, Executor)
ve alt sınıflarındaki (DashDownloader
,HlsDownloader
veSsDownloader
) 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. exoplayer
modülünde, kullanımdan kaldırılanBaseAudioProcessor
kaldırıldı.common
modülündeBaseAudioProcessor
özelliğini kullanın.- Desteği sonlandırılan
MediaCodecVideoRenderer
oluş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.7.0
Sürüm 1.7.1
16 Mayıs 2025
Bu sürüm, 1.6.1 sürümüyle aynı koda sahiptir ve yanlışlıkla kararlı olarak etiketlenen bir alfa sürümü olan 1.7.0'dan "daha yeni" bir sürüm olarak görünmesi için yayınlanmaktadır (aşağıya bakın).
Sürüm 1.7.0
16 Mayıs 2025
Bu sürüm 1.7.0-alpha01
olmalıydı ancak maven.google.com'da yanlışlıkla 1.7.0
(yani kararlı) olarak etiketlendi. Lütfen kullanmayın. 1.6.1 sürümünde kalabilir veya 1.7.1 sürümüne (1.6.1 ile aynı koda 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
pitch
değ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 öncePreloadMediaSource
kendigetBufferedDurationUs()
'ünü çağırmaya çalıştığı içinIllegalStateException
hatası vermesi sorunu düzeltildi (#2315).- DASH, HLS ve SmoothStreaming için manifest isteklerinde
CmcdData
gönderme sorunu düzeltildi (#2253). - Reklam grupları kaldırıldıktan sonra
AdPlaybackState.withAdDurationsUs(long[][])
özelliğinin kullanılabildiğinden emin olun. Kullanıcının, kaldırılan reklam grupları için boş veya null olabilen bir süre dizisi iletmesi gerekir (#2267).
- Ayıklayıcılar:
- MP4:
alternate_group
öğesinitkhd
kutusundan ayrıştırın ve her parçanınFormat.metadata
bölümündeMp4AlternateGroupData
giriş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
MediaSession
geri çağırmaları için toplama zaman aşımını 500 milisaniyeden 100 milisaniyeye düşürün ve uygulamaların bu değeri yapılandırmasına olanak tanıyan deneysel bir ayarlayıcı ekleyin. - Kullanıcı tarafından kapatılan bildirimlerin yeniden görünmesine neden olan sorun düzeltildi (#2302).
- Oturumun, sarmalanmış oynatıcı aslında boşken tek öğeli bir zaman çizelgesi döndürmesine neden olan hata düzeltildi. Bu durum, sarmalanmış oynatıcıda
COMMAND_GET_TIMELINE
mevcut değilkenCOMMAND_GET_CURRENT_MEDIA_ITEM
mevcut olduğunda ve sarmalanmış oynatıcı boş olduğunda meydana gelir (#2320). MediaSessionService.setMediaNotificationProvider
çağrısının, hizmetlesetForegroundServiceTimeoutMs
gibi diğer etkileşimlerden sonra sessizce yoksayıldığı hata düzeltildi (#2305).
- Platform
- UI:
PlayerSurface
özelliğininExoPlayer.setVideoEffects
veCompositionPlayer
ile çalışmasını sağlayın.PlayerSurface
öğesinin yeni birPlayer
ile yeniden oluşturulamaması hatası düzeltildi.
- HLS uzantısı:
- HLS medyası için
CmcdData
iç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:
AudioManagerCompat
veAudioFocusRequestCompat
değerlerini ekleyerekandroidx.media
içindeki 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ığını 1.8.1'den 1.9.0'a yükseltin.
Format.toBundle(boolean excludeMetadata)
yöntemini kaldırın, bunun yerineFormat.toBundle()
yöntemini kullanın.SimpleBasePlayer
'daki hatayı düzeltme:null
ilesetPlaylist
'dan sonraState
'da yeni bircurrentMediaItemIndex
ayarlamak meta verileri yeniden değerlendirmez (#1940).MediaMetadata
- Diğer sınıflardaki güncellemelerin daha kolay yönetilmesi için
SimpleBasePlayer.State
erişimini korumalıdan herkese açık olarak değiştirin (#2128).
- ExoPlayer:
MediaExtractorCompat
platformuyla eşdeğer özellikler sunan yeni bir sınıf olanMediaExtractorCompat
'ı ekleyin.MediaExtractor
MediaCodecVideoRenderer
kullanılarak oynatma için deneysel "ExoPlayer" ön ısıtma desteği eklendi.DefaultRenderersFactory
'ıexperimentalSetEnableMediaCodecVideoRendererPrewarming
üzerinden yapılandırarakExoPlayer
'e ikincil birMediaCodecVideoRenderer
sağlayabilirsiniz. EtkinleştirilirseExoPlayer
, medya öğeleri arasındaki geçiş gecikmesini azaltmak için oynatma sırasında art arda gelen medya öğelerinin videolarını önceden işler.DefaultLoadControl
'dekibufferForPlaybackMs
vebufferForPlaybackAfterRebufferMs
için varsayılan değerleri sırasıyla 1.000 ve 2.000 ms olarak azaltın.DeviceInfo
ve cihaz sesini eşzamansız olarak başlatın (setDeviceVolumeControlEnabled
kullanılarak etkinleştirilmişse). Bu değerlerExoPlayer.Builder.build()
sonrasında anında kullanılamaz vePlayer.Listener
, değişikliklerionDeviceInfoChanged
veonDeviceVolumeChanged
aracı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.onAudioSessionIdChanged
simgesini 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çin. Uygunsuz video dili tercihleri
TrackSelectionParameters.Builder.setPreferredVideoLanguage(s)
ile ifade edilebilir. selectedAudioLanguage
parametresiniDefaultTrackSelector.selectVideoTrack()
yöntemine ekleyin.retryCount
parametresiniMediaSourceEventListener.onLoadStarted
ve ilgiliMediaSourceEventListener.EventDispatcher
yöntemlerine ekleyin.- Ç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 birPreloadManagerListener
'ye taşıyın.RenderersFactory.createSecondaryRenderer
, ön ısıtma için ikincil oluşturucular sağlamak üzere uygulanabilir. Ön ısıtma, oynatma sırasında medya öğeleri arasında daha hızlı geçiş yapılmasını sağlar.- DASH, HLS ve SmoothStreaming gibi uyarlanabilir akış biçimlerindeki manifest istekleri için
CmcdData
göndermeyi etkinleştirin (#1951). MediaCodecRenderer.onReadyToInitializeCodec
içinde başlatılacak codec'inMediaCodecInfo
değerini sağlayınMediaCodecRenderer.onReadyToInitializeCodec
(#1963).- Reklam grupları ekleyerek
AdPlaybackStates
'ın büyümesine izin vermek içinAdsMediaSource
seçeneğini değiştirin. Geçersiz değişiklikler algılanır ve istisna oluşturulur. - Ara reklamdan sonra içerik medyasına geçiş yaparken yalnızca kod çözme işleminin yapıldığı ek karelerin hızlı bir şekilde gösterilmesiyle ilgili sorun düzeltildi.
- Uygulamaların varsayılan olarak iki farklı meta veri şeması almasını sağlamak için
DefaultRenderersFactory
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 eklendi.- Ön ısıtma ile arama yapmanın sonraki medya öğesi geçişini engellemesine neden olan hata düzeltildi.
ExoPlayer.isLoading()
,STATE_IDLE
veyaSTATE_ENDED
'ye geçiş yapmasına rağmentrue
olarak kalmasına neden olan hata düzeltildi (#2133).lastRebufferRealtimeMs
öğesiniLoadControl.Parameter
'e ekleme (#2113).
- Transformer:
- Geriye dönük uyumlu alternatif biçimlere transmuksaj için destek eklendi.
- Dolby Vision (profil 8) biçiminin kod dönüştürülmesi ve yeniden kapsama alınması için destek eklendi.
VideoFrameProcessor.registerInputStream
veVideoFrameProcessor.Listener.onInputStreamRegistered
parametreleriniFormat
kullanacak şekilde güncelleyin.DefaultEncoderFactory
kullanılırken HDR statik meta verileri oluşturulur.MediaMetricsManager
kullanarak Android platform teşhisleri desteğini 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
,InAppMp4Muxer
veInAppFragmentedMp4Muxer
olarak bölündü. Parçalanmamış bir MP4 dosyası oluşturmak içinInAppMp4Muxer
, parçalanmış bir MP4 dosyası oluşturmak için iseInAppFragmentedMp4Muxer
kullanılır.Muxer
arayüzünümedia3-muxer
konumundanmedia3-transformer
konumuna taşıyın.- Ekran kaydı için
MediaProjection
kaynağından medya sağlayanMediaProjectionAssetLoader
öğesini ekleyin ve Transformer demo uygulamasına ekran kaydı desteği ekleyin. #getInputFormat()
öğesiniCodec
arayüzüne ekleyin.- Mümkün olduğunda
GlObjectsProvider
cihazının kilidini açma sorumluluğunuDefaultVideoFrameProcessor
veDefaultVideoCompositor
konumundaki 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 bir çerçeveyle başladığında MP4 düzenleme listelerindeki
ArrayIndexOutOfBoundsException
sorununu düzeltir (#2062). - TS akışlarının bazı cihazlarda takılması sorunu düzeltildi (#2069).
- FLAC: 32 bit FLAC dosyaları için destek eklendi. Daha önce bu videolar
IllegalStateException: Playback stuck buffering and not loading
ile oynatılamıyordu (#2197).
- Ses:
- Oynatma devam ettiğinde
onAudioPositionAdvancing
işlevinin çağrılması düzeltildi (daha önce oynatma duraklatıldığında çağrılıyordu). SpeedChangingAudioProcessor
, varsayılan parametrelerle yapılandırıldığındaSonicAudioProcessor
'ı atlamayın.Sonic#getOutputSize()
'daDefaultAudioSink
'nin durmasına neden olabilecek taşma sorunu düzeltildi.MediaCodecAudioRenderer.getDurationToProgressUs()
veDecoderAudioRenderer.getDurationToProgressUs()
öğelerini, arama işlemlerinin sağlanan süreleri doğru şekilde sıfırlayacak şekilde düzeltin.androidx.media3.common.audio.SonicAudioProcessor
numaralı telefonu kalıcı yapın.ChannelMappingAudioProcessor
veTrimmingAudioProcessor
'a kayan nokta PCM desteği ekleyin.
- Oynatma devam ettiğinde
- Video:
- Uygulamaların yer tutucu yüzeylerin kullanımını engellemek için geçersiz kılabilmesi amacıyla
MediaCodecVideoRenderer.shouldUsePlaceholderSurface
değerini protected olarak değiştirin (#1905). - Arama işlemini hızlandırmak için deneysel
ExoPlayer
AV1 örnek bağımlılığı ayrıştırması eklendi. YeniDefaultRenderersFactory.experimentalSetParseAv1SampleDependencies
API ile etkinleştirin. - Bağımlı olmayan geç kod çözücü giriş arabelleklerini bırakmak için deneysel
ExoPlayer
API'si ekleyinMediaCodecVideoRenderer
DefaultRenderersFactory.experimentalSetLateThresholdToDropDecoderInputUs
ile 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.setSubtitleConfigurations
ile yapılandırılmış tüm altyazı dosyalarının önceden yüklenmesi durdurulur ve bunun yerine, parça seçimiyle seçilirse yalnızca bir altyazı dosyası yüklenir (#1721).- TTML:
tts:origin
vetts:extent
öğelerinestyle
kullanılarak referans verilmesi için destek eklendi (#2953). - WebVTT ve SubRip zaman damgalarını tam olarak 3 ondalık basamakla sınırlayın. Daha önce, herhangi bir ondalık basamak sayısını yanlış ayrıştırıyor ancak her zaman değerin milisaniye cinsinden olduğunu varsayıyorduk. Bu 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
IllegalStateException
hatası düzeltildi (başlangıç ve bitiş zamanı eşit) (#2052). - Altyazılar ses ve video ile aynı kapsayıcıya çoklanırken altyazı ayrıştırma hatalarını bastırın (ve günlüğe kaydedin) (#2052).
- CR satır sonları kullanılan WebVTT dosyalarındaki çok baytlı UTF-8 karakterlerinin işlenmesi düzeltildi (#2167).
- DRM:
- API < 27 olan cihazlarda ClearKey içeriği oynatılırken
MediaCodec$CryptoException: Operation not supported in this configuration
hatası düzeltildi (#1732).
- API < 27 olan cihazlarda ClearKey içeriği oynatılırken
- Etki:
OverlaySettings
işleviniStaticOverlaySettings
'e taşıdık.OverlaySettings
, dinamik yer paylaşımı ayarlarına izin vermek için alt sınıflara ayrılabilir.
- Muxer'lar:
- Tam nitelikli adın çok uzun olmasını önlemek için
MuxerException
,Muxer
arayüzünden taşındı. - Hem
Mp4Muxer.Builder
hem deFragmentedMp4Muxer.Builder
içindesetSampleCopyEnabled()
yöntemisetSampleCopyingEnabled()
olarak yeniden adlandırıldı. Mp4Muxer.addTrack()
veFragmentedMp4Muxer.addTrack()
artıkTrackToken
yerineint
parça kimliği döndürüyor.Mp4Muxer
veFragmentedMp4Muxer
artıkMuxer
arayü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
FragmentedMp4Muxer
ile 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ıkonTaskRemoved
geç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
öğesiniMediaButtonReceiver.shouldStartForegroundService
(#1887) öğesine parametre olarak ekleyin.- Eski bir oturuma bağlı
MediaController
üzerindePlayer
yönteminin çağrılması durumunda, bekleyen bir güncellemedeki değişikliklerin bırakılmasına neden olan hata düzeltildi. MediaSession.setSessionActivity(PendingIntent)
değerinin null değerini kabul 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
,ShuffleButtonState
vePlaybackSpeedState
içinmedia3-ui-compose
modülüne durum tutucular ve composable'lar ekleyin.
- İndirilenler:
- Veri kaynağı
IOException
dışında birException
oluşturduğunda veri kaynaklarını açık ve önbellek alanlarını kilitli bırakanCacheWriter
hatası düzeltildi (#9760).
- Veri kaynağı
- HLS uzantısı:
HlsInterstitialsAdsLoader
ile ilgili ilk sürümü ekleyin. Reklam yükleyici, bir HLS medya oynatma listesinin HLS geçiş reklamlarını okur ve bunlarıAdsMediaSource
'ye iletilenAdPlaybackState
ile eşler. Bu ilk sürüm yalnızcaX-ASSET-URI
özelliklerine sahip HLS VOD akışlarını destekler.HlsInterstitialsAdsLoader.AdsMediaSourceFactory
ekleyin. 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-CODECS
etiketini ayrıştırın (#1785). - HLS akışında konumları senkronize etme koşulunu gevşetin (#2209).
- DASH uzantısı:
- DASH için AC-4 Seviye 4 biçim desteği eklendi ( (#1898).
- Çok dönemli canlı yayınlarda reklam ekleme için güncelleme aralığı hesaplanırken oluşan sorun düzeltildi (#1698).
- Dolby Vision biçimlerini algılamak için DASH manifestindeki
scte214:supplementalCodecs
özelliğini ayrıştırın (#1785). - Dönemin, belirtilen dönem süresinin ötesinde medya örnekleri içerdiği canlı yayınlarda dönem geçişlerinin işlenmesi iyileştirildi (#1698).
adaptation-set-switching
ile işaretlenmiş ancak farklı diller veya rol işaretleri içeren uyarlama kümelerinin birleştirilmesi sorunu düzeltildi (#2222).
- Kod çözücü uzantıları (FFmpeg, VP9, AV1 vb.):
- MPEG-H sesin kodunu çözmek için yerleşik MPEG-H kod çözücüyü kullanan MPEG-H kod çözücü modülünü ekleyin (#1826).
- MIDI uzantısı:
- Özel
AudioSink
veAudioRendererEventListener
ö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-framework
kilitlenmesini düzeltmek içinFLAG_MUTABLE
bağı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ğiylePlayerSurface
entegrasyonunu geliştirin.
- Ek düğmelerle
- Kullanımdan kaldırılan sembolleri kaldırma:
- Desteği sonlandırılan
AudioMixer.create()
yöntemini kaldırın. Bunun yerineDefaultAudioMixer.Factory().create()
kullanın. - Aşağıdaki kullanımdan kaldırılan
Transformer.Builder
yöntemleri kaldırın:setTransformationRequest()
, bunun yerinesetAudioMimeType()
,setVideoMimeType()
vesetHdrMode()
kullanın.setAudioProcessors()
, ses işlemcisini birEditedMediaItem.Builder.setEffects()
içine yerleştirin ve bunun yerineTransformer.start()
öğesine iletin.setVideoEffects()
, birEditedMediaItem.Builder.setEffects()
içinde video efekti ayarlayın ve bunuTransformer.start()
öğesine iletin.setRemoveAudio()
,EditedMediaItem
öğesine iletilenTransformer.start()
öğesinden sesi kaldırmak içinEditedMediaItem.Builder.setRemoveAudio()
kullanın.setRemoveVideo()
, videoyuEditedMediaItem
iletilenTransformer.start()
öğesinden kaldırmak içinEditedMediaItem.Builder.setRemoveVideo()
kullanın.setFlattenForSlowMotion()
,Transformer.start()
'a iletilenEditedMediaItem
öğesini düzleştirmek içinEditedMediaItem.Builder.setFlattenForSlowMotion()
işlevini kullanın.setListener()
,addListener()
,removeListener()
veyaremoveAllListeners()
kullanın.
- Aşağıdaki kullanımdan kaldırılan
Transformer.Listener
yöntemleri kaldırın:onTransformationCompleted(MediaItem)
, useonCompleted(Composition, ExportResult)
yerineonCompleted(Composition, ExportResult)
kullanın.onTransformationCompleted(MediaItem, TransformationResult)
, useonCompleted(Composition, ExportResult)
yerineonCompleted(Composition, ExportResult)
kullanın.onTransformationError(MediaItem, Exception)
, useonError(Composition, ExportResult, ExportException)
yerineonError(Composition, ExportResult, ExportException)
kullanın.onTransformationError(MediaItem, TransformationException)
, useonError(Composition, ExportResult, ExportException)
yerineonError(Composition, ExportResult, ExportException)
kullanın.onTransformationError(MediaItem, TransformationResult, TransformationException)
yerineonError(Composition, ExportResult, ExportException)
kullanın.onFallbackApplied(MediaItem, TransformationRequest, TransformationRequest)
yerineonFallbackApplied(Composition, TransformationRequest, TransformationRequest)
kullanın.
- Desteği sonlandırılan
TransformationResult
sınıfını kaldırın. Bunun yerineExportResult
politikasını kullanın. - Desteği sonlandırılan
TransformationException
sınıfını kaldırın. Bunun yerineExportException
politikasını kullanın. - Kullanımdan kaldırılan
Transformer.PROGRESS_STATE_NO_TRANSFORMATION
öğesini kaldırın. Bunun yerineTransformer.PROGRESS_STATE_NOT_STARTED
kullanı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 yerineBaseGlShaderProgram
kullanın. Transformer.flattenForSlowMotion
öğesini kaldırın. Bunun yerineEditedMediaItem.flattenForSlowMotion
kullanın.ExoPlayer.VideoComponent
,ExoPlayer.AudioComponent
,ExoPlayer.TextComponent
veExoPlayer.DeviceComponent
kaldırıldı.androidx.media3.exoplayer.audio.SonicAudioProcessor
kaldırıldı.- Kullanımdan kaldırılan aşağıdaki
DownloadHelper
yö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,RenderersFactory
ileDefaultRendererCapabilitiesList
oluşturularak veDefaultRendererCapabilitiesList.getRendererCapabilities()
çağrılarak elde edilebilir.
- Constructor
PlayerNotificationManager.setMediaSessionToken(MediaSessionCompat)
yöntemi kaldırıldı. Bunun yerinePlayerNotificationManager.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ü bu commit'leri içerir.
- ExoPlayer:
- Bu platform API'siyle ilgili bildirilen codec zaman aşımı sorunlarını önlemek için MediaCodec'te eşzamansız şifre çözme kullanımını devre dışı bırakın (#1641).
- Ayıklayıcılar:
- MP3: Bir
VBRI
çerçevesinin içerik tablosu, bir dosyadaki tüm MP3 verilerini kapsamıyorsa oynatmayı erken durdurmayın (#1904).
- MP3: Bir
- Video:
MediaCodecAdapter
sağlanan piksel en boy oranı değerlerininonOutputFormatChanged
işlenirken kullanılması geri alındı (#1371).
- Metin:
ReplacingCuesResolver.discardCuesBeforeTimeUs
içinde,timeUs
konumunda etkin olan (daha önce başlatılmış ancak henüz sona ermemiş) ipucunun yanlışlıkla silinmesine neden olan hata düzeltildi (#1939).
- Meta veri:
- Vorbis yorumlarındaki disk/parça numaralandırmasını ve türü
MediaMetadata
(#1958) içine ayıklayın.
- 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
ForwardingSimpleBasePlayer
işlevi eklendi (#1183). SimpleBasePlayer.State.playlist
yerinegetPlaylist()
yöntemini kullanın.- Oynatma listesi yapısı oluşturmak yerine doğrudan
Timeline
ve mevcutTracks
ileMetadata
değerini belirtmek içinSimpleBasePlayer.State.Builder.setPlaylist()
öğesine geçersiz kılma ekleyin. minSdk
değerini 21'e (Android Lollipop) yükseltin. Bu, diğer tüm AndroidX kitaplıklarıyla uyumludur.- Common kitaplığı üzerine kurulu Kotlin'e özgü işlevler sağlayan
androidx.media3:media3-common-ktx
yapısını ekleyin. Player.listen
askıya alma uzantısı işlevini,Player.Events
dinlemek için bir ortak yordam döndürmek üzeremedia3-common-ktx
kitaplığı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
@DoNotInline
ek açıklamalarını kaldırın. R8'in son sürümleri, çalışma zamanı hatalarını önlemek için artık bu tür satır dışı çağrıları otomatik olarak satır dışı hale getiriyor (bu nedenle, manuel satır dışı hale getirme artık gerekli değil). Kitaplığın tüm Gradle kullanıcıları,compileSdk = 35
nedeniyle bunu yapan bir R8 sürümünü kullanan Android Gradle eklentisinin bir sürümünü zaten kullanıyor olmalıdır. Gradle dışı derleme sistemlerine sahip kitaplık kullanıcılarının, çalışma zamanı sınıfı doğrulama hatalarını önlemek için R8'e eşdeğer küçültme/karartma adımının benzer bir otomatik satır dışı işlem gerçekleştirdiğinden emin olması gerekir. Bu değişiklik diğer AndroidX kitaplıklarında zaten yapıldı.
- 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 olan için bu işlem yapılmıyordu. Bu özelliği etkinleştirmek içinMediaCodecRenderer.experimentalEnableProcessedStreamChangedAtStart()
simgesini kullanın.- Hata oluştuğunda
PreloadMediaSource.PreloadControl.onPreloadError
uygulamalarının işlem yapmasına izin vermek içinPreloadMediaSource.PreloadControl.onPreloadError
ekleyin.PreloadMediaSource.PreloadControl
- Önceden yükleme etkinliklerini uygulamalara yaymak için
BasePreloadManager.Listener
ekleyin. - 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.flags
kaldı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 çağrısının 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 bildirilenMediaCodec
sorunu düzeltildi.PreloadMediaSource.PreloadControl.onContinueLoadingRequested()
ilebufferedPositionUs
yerinebufferedDurationUs
iletin. Ayrıca,DefaultPreloadManager.Status.STAGE_LOADED_TO_POSITION_MS
değeriniDefaultPreloadManager.Status.STAGE_LOADED_FOR_DURATION_MS
olarak değiştirir. Uygulamaların, konum yerine, karşılık gelen medya kaynağının bu IntDef ile önceden yüklenmesi gereken varsayılan başlangıç konumundan itibaren belirli bir süreyi temsil eden bir değer iletmesi gerekir.- Tüm yöntem çağrılarını başka bir oluşturucuya yönlendiren
ForwardingRenderer
uygulaması ekleyin (1703). - Oynatma listesindeki bir sonraki öğe için oynatma listesi önceden yükleme özelliğini ekleyin. Uygulamalar,
ExoPlayer.setPreloadConfiguration(PreloadConfiguration)
işlevini uygun şekilde çağırarak önceden yüklemeyi etkinleştirebilir. Önceden yükleme varsayılan olarak devre dışıdır. Bu özellik etkinleştirildiğinde ve oynatmayı engellememek iç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()
'ı uygun şekilde uygulayarak (ör.DefaultLoadControl
'da bu yöntemi geçersiz kılarken) bu davranışı değiştirebilir.LoadControl
'ın varsayılan uygulaması, bir uygulamaLoadControl
'ın özel bir uygulamasını kullanıyorsa ön yüklemeyi devre dışı bırakır. - Alt sınıf işleyicilerinin etkinliklerinin çağrılmasına izin vermek için
MediaSourceEventListener.EventDispatcher.dispatchEvent()
yöntemi eklendi (1736). DefaultPreloadManager.Builder
ekleyin. Bu,DefaultPreloadManager
veExoPlayer
örneklerini tutarlı bir şekilde paylaşılan yapılandırmalarla oluşturur.DefaultLoadControl
uygulaması akış türleriniExoTrackSelection[]
öğesinden alabileceğindenRenderer[]
parametresiniLoadControl.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. MediaSourceEventListener
içindeki ikincil kaynaklardanMediaSourceEventListener
etkinliklerini raporlayın.MergingMediaSource
Bu durum, yan yüklenen altyazılar (MediaItem.LocalConfiguration.subtitleConfigurations
ile eklenenler) için yükleme başlatma/hata/iptal edildi/tamamlandı etkinliklerinin bildirilmesine neden olur. Bu etkinlikler,AnalyticsListener
tarafından yayınlanan kopya yükleme etkinlikleri olarak görünebilir.- Altyazı ve meta veri hatalarının oynatmayı tamamen durdurmasını önleme
Bunun yerine, sorunlu parça devre dışı bırakılır ve kalan parçaların oynatılmasına devam edilir (#1722).
- Yeni altyazı işleme sürecinde (çıkarma sırasında), ilişkili ayrıştırma (ör. geçersiz altyazı verileri) ve yükleme hataları (ör. HTTP 404)
onLoadError
geri çağırmaları aracılığıyla yayınlanır. - Eski altyazı işleme yönteminde (oluşturma sırasında) yalnızca ilişkili yükleme hataları
onLoadError
geri çağırmaları aracılığıyla verilirken 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).
- Transformer:
SurfaceAssetLoader
ekleyin. Bu,Surface
aracılığıyla video verilerinin Transformer'a sıraya alınmasını destekler.ImageAssetLoader
,IllegalStateException
oluşturmak yerineAssetLoader.onError
üzerinden desteklenmeyen girişleri bildirir.- Resim dışa aktarma için
MediaItem.Builder.setImageDurationMs
kullanılarak resim süresinin ayarlanmasını zorunlu kılın. - Düzenlenmiş ses öğeleri dizilerindeki boşluklar için dışa aktarma desteği eklendi.
- Parça Seçimi:
DefaultTrackSelector
: Diğer faktörler eşit olduğunda nesne tabanlı sesi kanal tabanlı sese tercih edin.
- Ayıklayıcılar:
Mp4Extractor
veFragmentedMp4Extractor
seçeneklerinin, sonraki örnekler tarafından referans olarak kullanılmayan H264 örneklerini tanımlamasına izin verin.AmrExtractor
'da dizine dayalı arama özelliğini etkinleştirme seçeneği eklendi.- Geçerli kareler arasında 128 kB'den fazla veri içeren MP3 dosyalarını geçersiz yerine kesilmiş olarak değerlendirin. Bu nedenle, sonunda MP3 dışı veriler bulunan ve MP3 baytlarının uzunluğunu belirten başka meta veriler içermeyen 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 sorunu düzeltildi (#1659).
mdhd
kutusundaki medya süresini kullanarak kare hızı hesaplaması iyileştirildiMp4Extractor
veFragmentedMp4Extractor
(#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 artık parça zaman ölçeği kullanılarak doğru şekilde ölçeklendiriliyor (#1792). - MP4'te düzenleme listesiyle
endIndices
hesaplamasında sırası bozuk kareleri işleme (#1797). - MP4 dosyalarının
mdhd
kutusundaki medya süresi ayrıştırma işlemini,-1
değerlerini (#1819) işleyecek şekilde düzeltin. - H.263 video için MP4 dosyalarındaki
h263
kutusunu tanımlama desteği eklendi (#1821). - AC-4 Level-4 ISO temel medya dosyası biçimi desteği eklendi (#1265).
- DataSource:
HttpEngineDataSource
, API düzeyi 34 yerine S extension 7 sürümünden itibaren kullanıma izin verecek şekilde güncellendi (#1262).DataSourceContractTest
:DataSource.getUri()
işlevinin, çözümlenmiş URI'yi (belgelendiği gibi) döndürdüğünü onaylayın. Bu durum, istenen URI'den farklı olduğunda testler yeniDataSourceContractTest.TestResource.Builder.setResolvedUri()
yöntemiyle bunu belirtebilir.DataSourceContractTest
:DataSource.getUri()
vegetResponseHeaders()
,open()
'e yapılan başarısız bir çağrıdan (kaynak bulunamadığı için) sonra ve sonraki birclose()
çağrısından önce "açık" değerini döndürmelidir.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, codec destekliyorsa
MediaCodecAdapter
artıkconfigure
içindenull
alabilir ve daha önce ayarlananSurface
öğesini kaldırmak için yeni birdetachOutputSurface
yöntemine çağrı yapabilir (MediaCodecInfo.detachedSurfaceSupported
).Surface
MediaCodecAdapter
işlenirken sağlanan piksel en boy oranı değerleri varsa bunları kullanınonOutputFormatChanged
(#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
VoiceSpan
ekleyin 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
long
değ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_METADATA
tü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
ExternallyLoadedImageDecoder
ekleyin.
- Glide veya Coil gibi harici resim yükleme kitaplıklarıyla entegrasyonu basitleştirmek için
- DataSource:
FileDescriptorDataSource
işlevini ekleyin. Bu yeniDataSource
,FileDescriptor
öğesinden okumak için kullanılabilir (#3757).
- Etki:
- Küçük
DefaultVideoFrameProcessor
ölçeklendirme içinSurfaceTexture
geçici çözümü eklendi.SurfaceTexture
, kırpılmış bir arabelleğin kenarındaki 1 tekstellik bir sınırı kesen küçük bir ölçeklendirme içerebilir. Bu durum artık çıktının beklenene daha yakın olması için ele alınmaktadır. - Hızlandırma
DefaultVideoFrameProcessor.queueInputBitmap()
. Bu sayede,Transformer
ile resimleri videolara aktarmak daha hızlıdır.
- Küçük
- IMA uzantısı:
- Oynatma listesinin temizlenmesinin
ArrayIndexOutOfBoundsException
içindeImaServerSideAdInsertionMediaSource
simgesine neden olabileceği hata düzeltildi. - Sunucu tarafında eklenen ve ön rulosuz DAI akışlarının, son videonun ortasında gösterilen reklamdan sonra oynatıldığında
ArrayIndexOutOfBoundsException
ile sonuçlanmasına neden olan hata düzeltildi (#1741).
- 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, hizmetiForegroundServiceDidNotStartInTimeException
(#1528) ile kilitlenmeden oynatma durdurulamaz. - Eski bir hizmete bağlanıldığında
MediaBrowser
cihazından gönderilen özel komutların, yönteminMediaBrowserServiceCompat
varyantı yerineMediaSessionCompat.Callback
cihazına gönderilmesine neden olan hata düzeltildi. Bu durum,MediaBrowser
öğesinin eski hizmet tarafından geri gönderilen gerçek dönüş değerini almasını engelliyordu (#1474). - Medya düğmesi amaçları için yayın alıcısı ayarlanırken belirli üreticilerin cihazları tarafından oluşturulan
IllegalArgumentException
işlenir (#1730). - Medya öğeleri için komut düğmeleri ekleyin. Bu,
Custom browse actions
olarak bilinen eski kitaplığaMediaBrowserCompat
ile Media3 API'sini ekler. Medya öğeleri için Media3 komut düğmelerinin hemMediaBrowser
hem deMediaController
için kullanılabildiğini unutmayın. AAOS'un özel göz atma işlemleri 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
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ı
MediaBrowser
cihazının, tarayıcı birparentid
aboneliği oluşturduktan sonra hizmet tarafından gönderilen hatayı almamasına neden olan hata düzeltildi. - Birlikte çalışabilirlik davranışını iyileştirerek eski bir
MediaBrowserService
öğesine bağlı olan bir Media3 tarayıcısının, bir üst öğeye abone olurkenparentId
öğesinin alt öğelerini iki kez istememesini sağlayın.
- 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-AndroidView
geçici çözümünde uzatılmış/kırpılmış video oluşturma özelliği etkinleştirildi.PlayerView
kullanan uygulamalarınAndroidView
etkinleştirmek içinPlayerView.setEnableComposeSurfaceSyncWorkaround
çağrısı yapması gerekir (#1237, #1594). - Tam ekran düğmesinin simgesinin isteğe bağlı olarak (ör. bant dışı ve tıklama etkileşimine tepki vermeden) güncellenmesine izin vermek için
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 Bundle
hatası 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 5.1 ile birlikte uzamsallaştırma ve isteğe bağlı olarak kafa hareketi izleme etkinleştirilmiş şekilde desteklenir ancak şu anda binaural oynatma desteği yoktur.
- 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 yerel olarak oynatmaya devam edebilir.
Context
sağlandığında CastPlayer'ınDeviceInfo
özelliğini doldurun. Bu,MediaSession
öğesininRoutingSession
öğesine bağlanmasını sağlar. Bu, Çıkış Anahtarı'nın entegrasyonu için gereklidir (#1056).
- Test yardımcı programları:
DataSourceContractTest
artık aşağıdakileri doğrulamak için testler içerir:- Giriş akışı
read position
güncellendi. - Çıkış arabelleği
offset
doğru şekilde uygulanır.
- Giriş akışı
- Demo uygulaması
- Kısa biçimli demo uygulamasındaki bellek sızıntılarını düzeltin (#1839).
- Kullanımdan kaldırılan sembolleri kaldırma:
- 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öntemini kaldırın. Bunun yerinePlayer.seekToPreviousMediaItem()
kullanın. - Desteği sonlandırılan
DrmSessionEventListener.onDrmSessionAcquired
yöntemini kaldırın. - Desteği sonlandırılan
DefaultEncoderFactory
oluşturucularını kaldırın. Bunun yerineDefaultEncoderFactory.Builder
kullanı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 bytes
hatası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:fontSize
değerlerinin, yüzdetts:fontSize
değerlerine sahip üst düğümlerden doğru şekilde devralınmasını sağlamak için yüzdetts:fontSize
değerlerinin işlenmesi düzeltildi. - İstenen çıkış başlangıç zamanının
Subtitle
içindeki son etkinlik zamanından büyük veya ona eşit olması durumunun yanlış işlenmesi nedeniyleIndexOutOfBoundsException
içindeLegacySubtitleUtil
dü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_HANDLE
hatasını düzeltme L1 Widevine içeriği oynatılırken Bu hata,MediaDrm.requiresSecureDecoder
yönteminin (#1603) eksik uygulanmasından kaynaklanır.
- API 31 ve sonraki sürümlerdeki cihazlarda
- Etki:
release()
yönteminiGlObjectsProvider
'ye ekleyin.
- Oturum:
KEYCODE_HEADSETHOOK
simgesine iki kez dokunma işlemini, belgelendirildiği gibi "sonrakine git" işlemine dönüştürün (#1493).KEYCODE_HEADSETHOOK
öğesini,ForegroundServiceDidNotStartInTimeException
(#1581) hatasını önlemek için yoksayılıp yoksayılmayacağına karar verirkenMediaButtonReceiver
içinde "oynat" komutu olarak değerlendirin.
- RTSP Uzantısı:
- SDP ayrıştırmasında geçersiz medya açıklamalarını atlayın (#1087).
Sürüm 1.4.0
25 Temmuz 2024
androidx.media3:media3-*:1.4.0
iptal edilir.
1.4.0 sürümü bu commit'leri içerir.
- Ortak kitaplık:
- İşlem yapmayan arama çağrıları 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_UNSET
ile işlemeniz gerekebilir. - Gelişmiş Java 8 desugaring'e (#1312) yönelik derleme bağımlılığını kaldırın.
MediaItem.Builder.setImageDurationMs()
öğesine iletilen sürenin, resim olmayan birMediaItem
için yoksayıldığından (belgelendiği gibi) emin olun.Format
örnekleriyle ilgili uygulama tarafından sağlanan özel bilgileri depolamak içinFormat.customData
ekleyin.
- İşlem yapmayan arama çağrıları olduğu varsayılanları yoksaymak yerine korumalı
- ExoPlayer:
BasePreloadManager
ekleyin. Bu,rankingData
tarafından tanımlanan önceliklere göre birden fazla kaynak için önceden yüklemeyi koordine eder. Bu sınıf genişletilerek özelleştirme yapılabilir. Kaynakların medya örneklerini belleğe önceden yüklemek içinPreloadMediaSource
kullanan ve kullanıcı arayüzündeki bir öğenin dizinini belirten bir tam sayırankingData
kullananDefaultPreloadManager
öğesini ekleyin.PlayerId
,LoadControl
uygulamalarının birden fazla oyuncuyu desteklemesini sağlamak için çoğuLoadControl
yöntemine eklenir.Buffer.isDecodeOnly()
veC.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. ÖzelRenderer
uygulamaları, bir örneğin gösterilip gösterilmeyeceğine karar vermek için arabellek süresinin en azBaseRenderer.getLastResetPositionUs()
olup olmadığını kontrol etmelidir. ÖzelSimpleDecoder
uygulamaları gerekirseisAtLeastOutputStartTimeUs()
işaretini koyabilir veya diğer arabellekleriDecoderOutputBuffer.shouldBeSkipped
ile işaretleyerek atlayabilir.TargetPreloadStatusControl.getTargetPreloadStatus(T)
tarafından boş değer döndürülmesine izin vererekMediaSource
öğesinin, verilenrankingData
ile önceden yüklenmemesi gerektiğini belirtin.remove(MediaSource)
öğesiniBasePreloadManager
listesine 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()
(veBuilder.setPriority()
) ekleyerekPriorityTaskManager
'de kullanılan öncelik değerini ve API 35'ten itibaren MediaCodec önemini tanımlayın.- Son yeniden arabelleğe alma süresinin 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,DefaultPreloadManager
ve özelPreloadMediaSource.PreloadControl
uygulamaları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_RECLAIMED
eklendi. AdsMediaSource
, ilk içerik medyası hazırlığı tamamlanmadan önce videodan önce gösterilen reklamları yükleyebilir (#1358).- Orijinal dönem manifestten kaldırıldıktan sonra çok dönemli bir DASH canlı yayını yeniden hazırlanırken oynatmanın
STATE_ENDED
'e taşınması hatası düzeltildi. onTimelineRefreshed()
öğesinionSourcePrepared()
,onPrepared()
öğesini iseonTracksSelected()
olarak yeniden adlandırın.PreloadMediaSource.PreloadControl
Ayrıca,DefaultPreloadManager.Stage
iç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. BirRenderer
, 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ışsaExoPlayer
, iş görevini planlama süresini hesaplarken bu yöntemi çağırır.MediaCodecAdapter#OnBufferAvailableListener
, giriş ve çıkış arabellekleriMediaCodecRenderer
tarafından kullanılmaya hazır olduğunda uyarı vermek için ekleyin.MediaCodecRenderer
, bu geri çağırmaları aldığındaExoPlayer
sinyalini verir veExoPlayer
,experimentalSetDynamicSchedulingEnabled()
ile ayarlanırsaExoPlayer
, oluşturucular ilerleme kaydedebildiğinden çalışma döngüsünü planlar.- Ayrı parametreler yerine
LoadControl
yöntemleri için veri sınıfını kullanın. ExoPlayer.isReleased()
işlevinin çağrılıp çağrılmadığını kontrol etmek içinExoPlayer.isReleased()
işlevini ekleyin.Exoplayer.release()
ExoPlayer.Builder.setMaxSeekToPreviousPositionMs()
,seekToPrevious()
'nin ö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ı
IndexOutOfBoundsException
sorunları düzeltildi (#1476). Effects
içindekiExoPlayer.setVideoEffect()
, oluşturucu farkı kaldırılmış zaman damgalarını alır (#1098).- Başka bir oynatma listesi öğesi önceden okunurken oluşan oynatıcı hatası işlenirken olası
IllegalArgumentException
düzeltildi (#1483).
- Transformer:
- Çıkış dosyasındaki ilgili parçanın nasıl oluşturulduğunu belirtmek için
audioConversionProcess
vevideoConversionProcess
simgelerini 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.
DefaultAudioMixer
sıfırlanıp yeniden kullanıldıktan sonra doğru miktarda bayt çıkışı vermemesine neden olan sorun düzeltildi.- PCM girişi işlenirken ses kanalı sayısının stereo ile sınırlandırıldığı bir kod çözücü hatası giderildi.
ExoPlayerAssetLoader
bölümünde parça seçerken yalnızca oynatma için geçerli olduklarından ses kanalı sayısı kısıtlamalarını dikkate almayın.androidx.media3.transformer.Muxer
arayüzünüandroidx.media3.muxer.Muxer
ile değiştirin veandroidx.media3.transformer.Muxer
öğesini kaldırın.- HEIC resimlerin içerik URI şemalarından yüklenmesi düzeltildi. (#1373).
- AV senkronizasyonunu iyileştirmek için
AudioGraphInput
bölümünde ses parçası süresini ayarlayın. ExportResult.processedInputs
alanını kaldırın. Bu alanı codec ayrıntıları için kullanıyorsanız bunun yerineDefaultDecoderFactory.listener
kullanın. Codec istisnası durumunda codec ayrıntılarıExportException.codecInfo
bö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: Bir akışın son erişim birimini örnek sırasına ileterek son karenin oluşturulmasını sağlayın (#7909). Yalnızca I-frame HLS akışlarında(#1150) ve H.262 HLS akışlarında (#1126) ortaya çıkan sorunları gidermek için düzeltmeler eklendi.
- MP3: Temel akış tarafından bildirilen boyuta (ör. dosya boyutu veya HTTP
Content-Length
üstbilgisi) kıyaslaInfo
çerçevesindeki veri boyutu tercih edilir. Bu, oynatılamayan fragman verilerinin (ör. albüm resmi) sabit bit hızı arama hesaplamalarından hariç tutulmasına yardımcı olarak aramaları daha doğru hale getirir (#1376). - MP3: Sabit bit hızlı arama için ortalama bit hızını hesaplamak üzere
Info
çerçevesindeki (varsa) çerçeve sayısını ve diğer verileri kullanın.Info
çerçevesinden sonraki çerçevenin bit hızından ekstrapolasyon yapmayın. Bu, yapay olarak küçük olabilir (ör.PCUT
çerçevesi) (#1376). - AVI kapsayıcılarda PCM ses biçimi ayıklama sorununu düzeltir.
- Ses:
- Geçişli oynatma için DTS:X Profile 2 kodlama özelliklerini düzeltme (#1299).
- Yükü boşaltılmış oynatma için,
DefaultAudioSink
içinde akış tamamlama izleme alanınıAudioTrack.stop()
çağrılmadan önce sıfırlayın. BöyleceAudioTrack.StreamEventCallback#onPresentationEnded
, bekleyen tüm verilerin oynatıldığı zamanı doğru şekilde tanımlar. SilenceSkippingAudioProcessor
bölümünde, farklı ses biçimleri (ör. stereo'dan mono'ya) arasındaki geçişlerin işlemcinin istisna oluşturmasına neden olabilmesiyle ilgili hata düzeltildi (#1352).MediaCodecAudioRenderer.getDurationToProgressUs()
işlevini 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üzeyler arasında geçiş yapıldığında
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üzeyler arasında geçiş yapıldığında
- 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, çıkarma sırasında gerçekleşecek şekilde değiştirin (çıkarma 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
SubtitleDecoder
uygulamaları olan uygulamaların,SubtitleDecoder
yerineSubtitleParser
'yi (veSubtitleDecoderFactory
yerineSubtitleParser.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:
rowLock
değerini yoksayın. CEA-708-E S-2023 spesifikasyonu, akışta bulunan değerlerden bağımsız olarak hemrowLock
hem decolumnLock
değerlerinin doğru kabul edilmesi gerektiğini belirtir (columnLock
desteği uygulanmadığından her zaman yanlış olduğu varsayılır).- Bu değişiklik başlangıçta
1.3.0-alpha01
sürüm notlarına dahil edilmişti ancak1.3.0-rc01
sü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)
IllegalArgumentException
LegacySubtitleUtil
sorununu 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
,TSOA
veTSOP
ID3 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.genre
öğesine 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
ImageOutput
değerini temizlemek içinExoPlayer.setImageOutput()
parametresi olaraknull
değerine izin verin.
- DataSource:
android.resource://package/id
ham kaynak URI'leri için destek uygulayın. Buradapackage
, 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ınDataSpec
oluş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 yerineopen()
sırasında bir bayt dizisine çözebilir (#1405).
- DRM:
DefaultDrmSessionManagerProvider
'deLoadErrorHandlingPolicy
ayarlanmasına izin verin (#1271).
- Etki:
SpeedChangeEffect
içinde aynıEditedMediaItem
veyaComposition
içinde birden fazla hız değişikliği desteklenir.- Ultra HDR bit eşlem girişinden HLG ve PQ çıkışı desteği.
- EGL_GL_COLORSPACE_BT2020_HLG_EXT desteği eklendi. Bu destek, ExoPlayer.setVideoEffect ve Transformer'ın DebugSurfaceView'inde HLG yüzey çıkışını iyileştirir.
setOverlayFrameAnchor()
içinde uygulanan x ve y değerlerini ters çevirerek Overlay matris uygulamasını dokümanlarla tutarlı olacak şekilde güncelleyin.OverlaySettings.Builder.setOverlayFrameAnchor()
kullanılıyorsa x ve y değerlerini-1
ile çarparak ters çevirin.TimestampWrapper
'nınExoPlayer#setVideoEffects
ile kullanıldığında kilitlenmesine neden olan hata düzeltildiExoPlayer#setVideoEffects
(#821).- Varsayılan SDR renk çalışma alanını doğrusal renklerden elektriksel BT 709 SDR videosuna değiştirin. Ayrıca, orijinal renk alanını korumak için üçüncü bir seçenek sunun.
- 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.
SeparableConvolution
efektlerinin API 26'dan önce kullanılmasına izin verin.- Yer paylaşımı ve çerçevenin dinamik aralığı eşleşmesi gerektiğinden kullanılmayan
OverlaySettings.useHdr
öğesini kaldırın. TextOverlay
için HDR desteği eklendi. Metin yer paylaşımının parlaklığıOverlaySettings.Builder.setHdrLuminanceMultiplier()
ile ayarlanabilir.
- IMA uzantısı:
- Uygulamaların DAI reklam akışlarını oynatması için gereken Promote API'yi kararlı sürüme yükseltin.
replaceAdTagParameters(Map <String, String>)
öğesine, reklam etiketi parametrelerinin çalışma zamanında değiştirilmesine olanak tanıyanImaServerSideAdInsertionMediaSource.AdLoader
ekleyin.- Reklam oynatma sırasında oynatıcı hatası oluştuğunda
VideoAdPlayer.VideoAdPlayerCallback.onError()
işlevinin çağrılmamasına neden olan hata düzeltildi (#1334). data://
reklam etiketi URI'leri kullanılırkenNullPointerException
hatasını düzeltmek için IMA SDK sürümünü 3.33.0'a yükseltin (#700).
- Oturum:
CommandButton.enabled
varsayılanınıtrue
olarak değiştirin ve ilişkili komut kullanılabilir olsa bile değerin denetleyiciler için yanlış kalmasını sağlayın.- Özel simge kaynakları yerine kullanılması gereken
CommandButton
için simge sabitleri ekleyin. - Uygulamaların, hizmetin
onTaskRemoved()
içinde durdurulması gerekip gerekmediğini sorgulamasına izin vermek içinMediaSessionService.isPlaybackOngoing()
ekleyin (#1219). MediaSessionService.pauseAllPlayersAndStopSelf()
ekleyin. Bu, tüm oturumların oynatılmasını duraklatmaya vestopSelf()
çağrısı yaparakMediaSessionService
'nin yaşam döngüsünü sonlandırmaya olanak tanır.MediaSessionService.onTaskRemoved(Intent)
işlevini geçersiz kılarak güvenli bir varsayılan uygulama sağlayın. Bu uygulama, oynatma devam ediyorsa hizmeti ön planda çalışır durumda tutar, aksi takdirde hizmeti durdurur.- Süreyi platform oturumu meta verilerine ayarlamayarak canlı yayınlar için medya bildiriminde arama çubuğunu gizleyin (#1256).
- Meta veri özelliklerini seçerken media1'dekiyle aynı tercih edilen sırayı ve mantığı kullanmak için
MediaMetadata
dönüşümünüMediaDescriptionCompat
ile hizalayın. MediaSession.sendError()
, önemli olmayan hataların Media3 denetleyicisine gönderilmesine olanak tanır. Bildirim denetleyicisi (bkz.MediaSession.getMediaNotificationControllerInfo()
) kullanılırken özel hata, platform oturumununPlaybackState
değ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. SessionError
ekleyin ve hata hakkında daha fazla bilgi sağlamak için hata kodu yerineSessionResult
veLibraryResult
içinde kullanın. Mümkünse hatanın nasıl çözüleceği hakkında da bilgi verin.- Medya oturumu yayınlayan uygulamalarla etkileşimleri test etmek için kullanılabilecek Media3 denetleyici test uygulamasının kodunu yayınlayın.
- Media3'ün
MediaSession[Builder].setSessionExtras()
öğesine iletilen ekstraları, Media1 denetleyicisininMediaSession[Builder].setSessionExtras()
öğesine yayma.PlaybackStateCompat.getExtras()
- Önemli ve önemsiz hataları platform oturumuna ve platform oturumundan eşleyin. A
PlaybackException
,PlaybackStateCompat
öğesinin kritik hata durumuna eşlenir.MediaSession.sendError(ControllerInfo, SessionError)
ile medya bildirimi denetleyicisine gönderilenSessionError
,PlaybackStateCompat
iç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 kumanda başına ayarlanmasına izin verin. Oturum etkinliği, bağlantı sırasında bir kontrol cihazı için
ConnectionResult
oluşturularakAcceptedResultBuilder.setSessionActivivty(PendingIntent)
ile tanımlanabilir. Bağlantı kurulduktan sonra oturum etkinliğiMediaSession.setSessionActivity(ControllerInfo, PendingIntent)
ile güncellenebilir. MediaLibrarySession.Callback
'a yapılan çağrıların hata tekrarı iyileştirildi. Hata çoğaltma özelliği, hata türünü seçmek içinMediaLibrarySession.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:
ExoPlayer
'e bağlandığındaPlayerView
'ya resim görüntüleme desteği ekleyin (#1144).PlayerControlView
örneği başına farklı çizilebilir öğelere izin vermek için xml özellikleri aracılığıylaPlayerControlView
'deki çeşitli simgelerin özelleştirilmesini ekleyin (genel geçersiz kılmalar yerine) (#1200).PlayerView
- API 34'te Compose
AndroidView
içindeSurfaceView
kullanı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ınIllegalStateException: Too many receivers, total of 1000, registered for pid
ile kilitlenmesine neden olabilir (#1224).
- Cronet Uzantısı:
SocketTimeoutException
ile ilgili sorunuCronetDataSource
iç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
HlsSampleStreamWrapper
içinde yanlış bir ofsetle temsil edilerekIndexOutOfBoundsException
veyaIllegalArgumentException
hatası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 Error
veIllegalArgumentException
ile 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
MediaQueueItem
albüm başlığını sanatçıya dönüştüren hata düzeltildi (#1255).
- Media3 medya öğesindeki
- Test yardımcı programları:
FakeRenderer
içindeonInit()
veonRelease()
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 yeniTestPlayerRunHelper.run(player).ignoringNonFatalErrors().untilXXX()
yöntem zincirini kullanın.
- Demo uygulaması:
- Kısa form demo uygulamasında
DefaultPreloadManager
kullanın. - Komut satırından
Intent
bağımsız değişkenleriyle tekrar modunun ayarlanmasına izin verin (#1266). - Cihaz tarafından desteklendiğinde
HttpEngineDataSource
,HttpDataSource
olarak kullanılabilir.
- Kısa form demo uygulamasında
- Kullanımdan kaldırılan sembolleri kaldırma:
CronetDataSourceFactory
öğesini kaldırın. Bunun yerineCronetDataSource.Factory
politikasını kullanın.- Bazı
DataSpec
oluşturucuları kaldırın. Bunun yerineDataSpec.Builder
politikasını kullanın. setContentTypePredicate(Predicate)
yönteminiDefaultHttpDataSource
,OkHttpDataSource
veCronetDataSource
hesaplarından kaldırın. Bunun yerine herXXXDataSource.Factory
üzerinde eşdeğer yöntemi kullanın.OkHttpDataSource
oluşturucularını veOkHttpDataSourceFactory
'yi kaldırın. Bunun yerineOkHttpDataSource.Factory
politikasını kullanın.PlayerMessage.setHandler(Handler)
öğesini kaldırın. Bunun yerinesetLooper(Looper)
politikasını kullanın.Timeline.Window.isLive
alanını kaldırın. Bunun yerineisLive()
yöntemini kullanın.DefaultHttpDataSource
oluşturucularını kaldırın. Bunun yerineDefaultHttpDataSource.Factory
kullanın.DashMediaSource.DEFAULT_LIVE_PRESENTATION_DELAY_MS
öğesini kaldırın. Bunun yerineDashMediaSource.DEFAULT_FALLBACK_TARGET_LIVE_OFFSET_MS
kullanın.MediaCodecInfo.isSeamlessAdaptationSupported(Format, Format, boolean)
öğesini kaldırın. Bunun yerineMediaCodecInfo.canReuseCodec(Format, Format)
politikasını kullanın.DrmSessionManager.DUMMY
vegetDummyDrmSessionManager()
yöntemini kaldırın. Bunun yerineDrmSessionManager.DRM_UNSUPPORTED
politikasını kullanın.AnalyticsListener.onAudioInputFormatChanged(EventTime, Format)
,AnalyticsListener.onVideoInputFormatChanged(EventTime, Format)
,AudioRendererEventListener.onAudioInputFormatChanged(Format)
,VideoRendererEventListener.onVideoInputFormatChanged(Format)
öğesini kaldırın. Bunun yerineDecoderReuseEvaluation
alanını kullanan aşırı yüklemeleri kullanın.RendererSupport.FormatSupport
IntDef veFORMAT_HANDLED
,FORMAT_EXCEEDS_CAPABILITIES
,FORMAT_UNSUPPORTED_DRM
,FORMAT_UNSUPPORTED_SUBTYPE
,FORMAT_UNSUPPORTED_TYPE
sabitlerini kaldırın. Bunun yerineandroidx.media3.common.C
içindeki eşdeğer IntDef ve sabitleri (ör.C.FORMAT_HANDLED
) kullanın.Bundleable
arayüzünü kaldırın. Buna, tümBundleable.Creator<Foo> CREATOR
sabit alanlarının kaldırılması dahildir. Arayanlar bunun yerine her türdeBundle toBundle()
vestatic Foo fromBundle(Bundle)
yöntemlerini kullanmalıdır.
Sürüm 1.4.0-rc01
10 Temmuz 2024
1.4.0 kararlı sürümünü kullanın.
Sürüm 1.4.0-beta01
26 Haziran 2024
1.4.0 kararlı sürümünü kullanın.
Sürüm 1.4.0-alpha02
7 Haziran 2024
1.4.0 kararlı sürümünü kullanın.
Sürüm 1.4.0-alpha01
17 Nisan 2024
1.4.0 kararlı sürümünü kullanın.
Sürüm 1.3.0
Sürüm 1.3.1
11 Nisan 2024
androidx.media3:media3-*:1.3.1
iptal edilir.
1.3.1 sürümü bu commit'leri içerir.
- Ortak kitaplık:
- Yerelleştirilmiş veya diğer alternatif etiketlere izin vermek için
Format.labels
ekleyin.
- 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
TrackSelectionResult
değ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).
-keepclasseswithmembers
kuralı için proguard'a eksik dönüş türü ekleyinDefaultVideoFrameProcessor.Factory.Builder.build()
(#1187).
- Transformer:
- API 30'dan önce
MediaMuxer
'ın negatif sunum zaman damgalarını desteklememesi nedeniyle oluşan 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ı, hareketli fotoğraflardan çıkarılan MP4'lerdeki "gerçek" video parçasını seçer. Bu MP4'lerde iki HEVC parçası bulunabilir. 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ına neden olan sorun düzeltildi (#1117).
- MP3:
Format.averageBitrate
veVBRI
gibi meta veri çerçevelerindenXING
alanını doldurun. - MPEG-TS: Bir akışın son erişim birimini örnek sırasına ileterek son karenin oluşturulmasını sağlamayı amaçlayan bir değişikliği geri alın (#7909). Bunun nedeni, yalnızca I-frame HLS 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 kurtarmasına izin verin.
- Video:
- Galaxy Tab S7 FE, Google TV'li Chromecast ve Lenovo M10 FHD Plus'ta 60 FPS H265 yayınlarının desteklenmiyor olarak işaretlenmesine neden olan cihaz sorununa geçici çözüm eklendi.
- Cihaz, API'nin gerektirdiği şekilde bunu otomatik olarak yapmasa bile tünel oluşturma sırasında ilk karenin her zaman oluşturulmasını sağlayan geçici çözüm eklendi (#1169). (#966).
- HDR renk bilgisi işleme nedeniyle codec'in yanlış davranışa yol açtığı 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
ResourceBusyException
veyaNotProvisionedException
yerineMediaDrm
çerçevesi tarafından oluşturulabilenNoSuchMethodError
sorununu çö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ı eklemek için yedekleme yapın (#988).
- DASH Uzantısı:
- Manifest dosyasındaki tüm
Label
öğeleriniFormat.labels
ile 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/]name
ham kaynak URI'leri için destek uygulayın. Buradapackage
, 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 harf olacak şekilde normalleştirin.
AdPlaybackState
içinde tek birUri
yerine tam birMediaItem
ile reklam tanımlayın.minSdk
değerini 19'a (Android KitKat) yükseltin. Bu, diğer tüm AndroidX kitaplıklarıyla uyumludur ve AndroidX bağımlılıklarımızın en yeni sürümlerine yükseltmemiz için gereklidir.- En az biri boş olmayan (non-null) olduğunda
MediaMetadata.Builder.populate(MediaMetadata)
içinde hemartworkUri
hem deartworkData
alanlarını doldurun (#964).
- ExoPlayer:
- Uygulamaların, oynatma işleminden önce belirli bir başlangıç konumunda içerik medya kaynağını önceden yüklemesine olanak tanıyan
PreloadMediaSource
vePreloadMediaPeriod
öğelerini ekleyin.PreloadMediaSource
,Timeline
almak için içerik medyası kaynağını hazırlama, belirtilen başlangıç konumunda dönemi hazırlama ve önbelleğe alma, parçaları seçme ve dönem için medya verilerini yükleme işlemlerini yapar. Uygulamalar,PreloadMediaSource.PreloadControl
uygulayarak ön yükleme ilerleme durumunu kontrol eder ve önceden yüklenmiş kaynağı oynatma için oynatıcıya ayarlar. - Uygulamaların
ExoPlayer.setImageOutput
ayarlamasına izin verenImageRenderer.ImageOutput
ekleyin. DefaultRenderersFactory
artık varsayılan olarak oyuncuya boşImageOutput
veImageDecoder.Factory.DEFAULT
ileImageRenderer
sağlıyor.- Sessize alma atlandığında
Player.Listener.onPositionDiscontinuity
etkinliğini yayınlayın (#765). - Ayıklama sırasında altyazı ayrıştırma için deneysel destek eklendi. Bu özelliği
MediaSource.Factory.experimentalParseSubtitlesDuringExtraction()
kullanarak etkinleştirebilirsiniz. PreloadMediaSource
ile uyarlanabilir medya kaynaklarını destekleyin.- HttpEngine API'sini kullanarak
HttpEngineDataSource
,HttpDataSource
uygulayın. - Alt sınıf oluşturmayı önleme
CompositeSequenceableLoader
. Bu bileşen daha önce genişletilebilir hale getirilmiş ancak kitaplıkta hiçbir zaman alt sınıfa ayrılmamıştır. Özelleştirmeler, decorator pattern kullanılarak bir örneğin sarmalanması ve özel birCompositeSequenceableLoaderFactory
uygulanmasıyla yapılabilir. - Aynı saatin tekrar edilmesi durumunda bu öğenin meta verilerinin temizlenmesine neden olan sorun düzeltildi (#1007).
experimentalSetSubtitleParserFactory
yöntemleriniBundledChunkExtractor.Factory
veDefaultHlsExtractorFactory
üzerindesetSubtitleParserFactory
olarak yeniden adlandırın venull
iletmesine izin vermeyin. Ayrıştırma davranışını kontrol etmek için yeniexperimentalParseSubtitlesDuringExtraction(boolean)
yöntemlerini kullanın.- Çıkarma sırasında kullanılan
SubtitleParser.Factory
karakterini özelleştirme desteği eklendi. Bu,MediaSource.Factory.setSubtitleParserFactory()
ile yapılabilir. MergingMediaSource
kaynağından oluşturulan tümFormat.id
alanlarına kaynak öneki ekleyin. Bu, hangi kaynağınFormat
oluşturduğunu belirlemeye yardımcı olur (#883).- Özel Common Media Client Data (CMCD) anahtar adlarını doğrulamak için kullanılan normal ifadeyi yalnızca kısa çizgi kontrolü yapacak şekilde değiştirerek düzeltin (#1028).
- CMCD sorgu parametrelerinin çift kodlanmasını durdurma (#1075).
- Uygulamaların, oynatma işleminden önce belirli bir başlangıç konumunda içerik medya kaynağını önceden yüklemesine olanak tanıyan
- Transformer:
- 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ın.
- Çı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 kesme işlemlerini optimize etme desteği eklendi.
- Bir video karesinin çıkış dosyasında ilk zaman damgasına sahip olmasını sağlamak için destek ekleyin. iOS tabanlı oynatıcılarda siyah kareyle başlayan çıkış dosyaları düzeltildi (#829).
- Parça Seçimi:
- Resim parçası seçimini etkinleştirmek için
DefaultTrackSelector.selectImageTrack
ekleyin. - Hem resim parçası hem de video parçası varsa resim parçasının seçilip seçilmeyeceğini belirlemek için
TrackSelectionParameters.isPrioritizeImageOverVideoEnabled
ekleyin. Varsayılan değ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.colorTransfer
veColorInfo.colorRange
değerlerini almak için MP4 çıkarıcıya ek AV1C ayrıştırma işlemi eklendi (#692).- MP3:
Info
üstbilgisine sahip dosyalar için sabit bit hızı (CBR) arama kullanın (Xing
üstbilgisinin CBR eşdeğeri). Daha ö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.Factory
bağımsız değişkenini alanMediaCodecVideoRenderer
oluşturucuyu değiştirin veVideoSinkProvider
bağımsız değişkenini alan bir oluşturucuyla değiştirin. ÖzelVideoFrameProcessor.Factory
eklemek isteyen uygulamalar, özelVideoFrameProcessor.Factory
kullanan birCompositingVideoSinkProvider
oluş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ırkenTried to marshall a Parcel that contained Binder objects
hatasını çözmek için bit eşlem ipuçlarının serileştirilmesini düzeltin.- CEA-708:
rowLock
değerini yoksayın. CEA-708-E S-2023 spesifikasyonu, akışta bulunan değerlerden bağımsız olarak hemrowLock
hem decolumnLock
değerlerinin doğru kabul edilmesi gerektiğini belirtir (columnLock
desteği uygulanmadığından her zaman yanlış olduğu varsayılır).
- Resim:
- DASH küçük resimleri için destek eklendi. Izgara resimleri kırpılır ve sunum zamanlarına yakın
ImageOutput
iç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 başlangıç" ş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.setPlayClearContentWithoutKey
veyaDefaultDrmSessionManager.Builder.setPlayClearSamplesWithoutKeys
ile devre dışı bırakılabilir.
- DRM içeriğindeki "net başlangıç" ş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,MediaLibraryService
yerine yalnızcaContext
alan bir oluşturucu ekleyin.
- HLS Uzantısı:
HlsMediaPeriod
öğesini paket içi görünürlük olarak ayarlayın. Bu tür, HLS paketi dışından doğrudan kullanılmamalıdır.- Çözüm, bir segmentin başlangıcına daha verimli bir şekilde ulaşmayı amaçlar (#1031).
- Kod Çözücü Uzantıları (FFmpeg, VP9, AV1, MIDI vb.):
- MIDI kod çözücü: SysEx etkinlik mesajlarını yoksayma (#710).
- Test yardımcı programları:
TestPlayerRunHelper.playUntilPosition
uygulamasında oynatmayı duraklatmayın. Test, oynatmayı oynatma durumunda tutar ancak test, onaylamalar ve başka işlemler ekleyene kadar ilerlemeyi askıya alır.
- Demo uygulaması:
PreloadMediaSource
kullanımını kısa içerik kullanım alanıyla birlikte tanıtmak için kısa içerik demo modülü ekleyin.
Sürüm 1.3.0-rc01
22 Şubat 2024
1.3.0 kararlı sürümünü kullanın.
Sürüm 1.3.0-beta01
7 Şubat 2024
1.3.0 kararlı sürümünü kullanın.
Sürüm 1.3.0-alpha01
15 Ocak 2024
1.3.0 kararlı sürümünü kullanın.
Sürüm 1.2.0
Sürüm 1.2.1
9 Ocak 2024
- ExoPlayer:
LiveConfiguration.min/maxOffset
aralığı dışındaki manuel aramalarda, ofsetin tekrarmin/maxOffset
olarak 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ındanbufferedDurationUs
için negatif değerler almasına ve bunun sonucundaIllegalArgumentException
(#888) oluşmasına neden olan sorun düzeltildi.
- Transformer:
- Yüksek çalışma hızı ayarlandığı için kodlayıcının yapılandırma sırasında hata vermesine neden olan sorun giderildi.
- Ayıklayıcılar:
- JPEG hareketli fotoğraflarındaki ikincil (oynatılamayan) HEVC parçalarının, daha yüksek çözünürlükleri nedeniyle oynatma için otomatik olarak seçilmesini önlemek amacıyla bu parçaları
ROLE_FLAG_ALTERNATE
olarak işaretleyin. - TS H264 akışlarında yanlış animasyon karesi algılamayı düzeltme (#864).
- 47.721 saniyeden uzun TS akışlarının süre tahminini düzeltin (#855).
- JPEG hareketli fotoğraflarındaki ikincil (oynatılamayan) HEVC parçalarının, daha yüksek çözünürlükleri nedeniyle oynatma için otomatik olarak seçilmesini önlemek amacıyla bu parçaları
- Ses:
SilenceSkippingAudioProcessor
birden ç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
OutOfMemoryError
hatası oluştuğunda oynatma tamamen başarısız olmak yerine etiket bilgisi olmadan devam edebilir.
- DRM:
- Sahte ClearKey
https://default.url
lisansı URL'si için geçici çözümü API 33 ve sonraki sürümlere genişletme (geçici çözüm daha önce yalnızca API 33'te geçerliydi) (#837). - Oynatıcıya bağlı bir yüzey olmadan şifrelenmiş içerikten şifrelenmemiş içeriğe geçiş yaparken
ERROR_DRM_SESSION_NOT_OPENED
düzeltildi. Hata, açık 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
MediaMetadataCompat
ileMediaMetadata.extras
veMediaMetadata.extras
ileMediaMetadataCompat
arasına yerleştirin (#756, #802). - Eski kontrol cihazları için yayın sorununu
notifyChildrenChanged
düzeltildi (#644). - Bildirimin devre dışı bırakılmış
setWhen
zamanlayıcısı için negatif bir süre ayarlandığında bazı cihazlarda kilitlenmeye neden olan hata düzeltildi (#903). - İlk bildirim güncellemesi istendiğinde medya bildirimi denetleyicisi bağlantı kurmayı tamamlamadığında
IllegalStateException
sorunu dü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
Timeline
oluşturma işlemini temizleyin (#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:
@Nullable Throwable
parametresiniLog.Logger
arayüzündeki yöntemlere ekleyin. Bu yöntemlerdekimessage
parametresi artıkLog.{d,i,w,e}()
yöntemlerine iletilenThrowable
hakkında herhangi bir bilgi içermiyor. Bu nedenle, istenirse uygulamaların bu bilgiyi manuel olarak eklemesi gerekir (muhtemelenLogger.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
TrackSelectorResult
veSimpleDecoder
yö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.shouldShowPlayButton
bölümünde varsayılan kullanıcı arayüzünü ve bildirim davranışını değiştirin. Eski davranış,PlayerView.setShowPlayButtonIfPlaybackIsSuppressed(false)
veyaMediaSession.Builder.setShowPlayButtonIfPlaybackIsSuppressed(false)
kullanılarak korunabilir (#11213). - https://issuetracker.google.com/251172715 adresindeki sorunu düzeltmek için
androidx.annotation:annotation-experimental
sürümünden1.3.1
sürümüne yükseltin. ExoPlayer.setAudioAttributes
öğesiniPlayer
arayüzüne taşıyın.
- ExoPlayer:
- Yalnızca kod çözme örneklerinin doğru şekilde tanımlanmamasından kaynaklanan AC4 akışlarındaki arama sorunları düzeltildi (#11000).
- Bu özellik
ExoPlayer.Builder.setSuppressPlaybackOnUnsuitableOutput
üzerinden etkinleştirildiğinde uygun olmayan ses çıkışı cihazlarında (ör. Wear OS cihazlardaki yerleşik hoparlör) oynatmanın engellenmesi eklendi. Oynatma sırasında uygun ses çıkışı yoksa veya tüm uygun çıkışlar bağlantısı kesilirse oynatma engelleme nedeniPlayer.PLAYBACK_SUPPRESSION_REASON_UNSUITABLE_AUDIO_OUTPUT
olarak güncellenir. Uygun bir çıkış bağlandığında bastırma nedeni kaldırılır. MediaSource.canUpdateMediaItem
veMediaSource.updateMediaItem
ekleyin.MediaItem
güncellemelerini oluşturulduktan sonraPlayer.replaceMediaItem(s)
üzerinden kabul etmek için.- Kitaplık tarafından
Player.replaceMediaItem(s)
üzerinden sağlanan tümMediaSource
sınıfları içinMediaItem
güncellemelerine izin verin (#33, #9978). MimeTypes.TEXT_EXOPLAYER_CUES
öğesiniMimeTypes.APPLICATION_MEDIA3_CUES
olarak yeniden adlandırın.PngExtractor
öğesini ekleyin. Bu öğe, örnek olarakTrackOutput
içine tam bir PNG dosyası gönderir ve okur.SequenceableLoader.continueLoading(long)
yönteminiSequenceableLoader
arayüzündeSequenceableLoader.continueLoading(LoadingInfo loadingInfo)
olarak geliştirin.LoadingInfo
, mevcutplaybackPositionUs
parametresine ek olarakplaybackSpeed
velastRebufferRealtimeMs
gibi ek parametreler içerir.ChunkSource.getNextChunk(long, long, List, ChunkHolder)
yönteminiChunkSource
arayüzündeChunkSource.getNextChunk(LoadingInfo, long, List, ChunkHolder)
olarak geliştirin.- Ortak Medya İstemci Verileri (CMCD) günlüğüne ek alanlar ekleyin: arabellek yetersizliği (
bs
), son tarih (dl
), oynatma hızı (pr
) ve başlatma (su
) (#8699). ColorInfo
öğ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.
ConcurrentModificationException
ile ilgili sorunuExperimentalBandwidthMeter
içinde düzeltin (#612).MediaPeriodId
parametresiniCompositeMediaSource.getMediaTimeForChildMediaTime
öğesine ekleyin.ClippingMediaSource
(ve dönem/pencere zamanı kaymaları olan diğer kaynaklar)ConcatenatingMediaSource2
'da desteklenir (#11226).BaseRenderer.onStreamChanged()
işlevini,MediaPeriodId
bağımsız değişkenini de alacak şekilde değiştirin.
- Transformer:
- Görüntü girişleri için EXIF döndürme verilerini ayrıştırın.
TransformationRequest.HdrMode
açıklama türünü ve ilişkili sabitlerini kaldırın. Bunun yerineComposition.HdrMode
ve ilişkili sabitlerini kullanın.- Döndürme sorunlarını düzeltmek için
OverlaySettings
öğesini basitleştirin. SampleConsumer.queueInputBitmap
öğesininframeRate
vedurationUs
parametreleriTimestampIterator
olarak değiştirildi.
- Parça Seçimi:
- Kesintisiz olmayan uyarlamaya açıkça izin vermek veya izin vermemek için
DefaultTrackSelector.Parameters.allowAudioNonSeamlessAdaptiveness
ekleyin. Varsayılan olaraktrue
davranışı 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 sırasına ileterek son karenin oluşturulduğundan emin olun (#7909).
rotationDegrees
belirlenirken yazım hatası düzeltildi.projectionPosePitch
,projectionPoseRoll
olarak değiştirildi (#461).Extractor
örneklerinin doğrudaninstanceof
ile incelenebileceği varsayımını kaldırın. BirExtractor
uygulamasının uygulama ayrıntılarına çalışma zamanı erişimi istiyorsanız önceExtractor.getUnderlyingInstance
uygulamasını çağırmanız gerekir.BmpExtractor
ekleyin.WebpExtractor
ekleyin.HeifExtractor
ekleyin.Mp4Extractor
'a QuickTime classic desteği ekleyin.
- Ses:
- MP4 ve Matroska'da 24/32 bit büyük endian PCM desteği ekleyin ve MP4'te
lpcm
için PCM kodlamasını ayrıştırın. - MP4'te Vorbis sesini ayıklama desteği eklendi.
AudioSink.getFormatOffloadSupport(Format)
aracılığıyla, sink'in biçim için sağlayabileceği boşaltma desteği düzeyini alanAudioSink.getFormatOffloadSupport(Format)
öğesini ekleyin.DefaultAudioOffloadSupportProvider
isFormatSupported
,isGaplessSupported
veisSpeedChangeSupported
değerlerini içeren yeni birAudioOffloadSupport
döndürür.- Ses alıcısında boşaltma yapılandırmasının
yapılandırıldığı
AudioSink.setOffloadMode()
öğesini ekleyin. Varsayılan değerAudioSink.OFFLOAD_MODE_DISABLED
'dır. - Uygulama kaldırma,
TrackSelectionParameters
iç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_REQUIRED
olarak ayarlanırsaDefaultTrackSelector
yalnı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ı.
enableOffload
parametresiniDefaultRenderersFactory.buildAudioSink
yöntem imzasından kaldırın.DefaultAudioSink.Builder.setOffloadMode
yöntemini kaldırın.- Intdef değerini kaldırın
DefaultAudioSink.OffloadMode.OFFLOAD_MODE_ENABLED_GAPLESS_DISABLED
. - Boşluksuz Opus meta verileri için 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.experimentalSetOffloadSchedulingEnabled
veAudioOffloadListener.onExperimentalOffloadSchedulingEnabledChanged
öğelerini silin.onExperimentalSleepingForOffloadChanged
,onSleepingForOffloadChanged
olarak,onExperimentalOffloadedPlayback
iseonOffloadedPlayback
olarak yeniden adlandırıldı.- Ses boşaltma moduyla ilgili
TrackSelectionParameters
arayüzlerini ve tanımlarınıAudioOffloadPreferences
sınıfına taşıyın. AnalyticsListener
,AudioRendererEventListener
veAudioSink.Listener
içinonAudioTrackInitialized
veonAudioTrackReleased
geri aramalarını ekleyin.- DTS Express'te ses arabelleği yetersizliği 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:
MediaCodecVideoRenderer
uygulamasının özelVideoFrameProcessor.Factory
kullanmasına izin verin.- Ses akışı negatif zaman damgalarıyla başladığında ilk karenin oluşturulamaması hatası düzeltildi (#291).
- Metin:
ExoplayerCuesDecoder
öğesini kaldırın.sampleMimeType = application/x-media3-cues
simgesiyle gösterilen metin parçaları artıkSubtitleDecoder
örneğine gerek kalmadan doğrudanTextRenderer
tarafından işleniyor.
- Meta veri:
- Uygulama yine de null döndürmesi gerektiğinden, "yalnızca kod çözme" örnekleri için
MetadataDecoder.decode
artık çağrılmayacak.
- Uygulama yine de null döndürmesi gerektiğinden, "yalnızca kod çözme" örnekleri için
- 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
öğesininframeRate
vedurationUs
parametreleriTimestampIterator
olarak 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()
işlevini çağırmadan önce StreamManager'ı serbest bırakın.- IMA SDK sürümünü 3.31.0'a yükseltin.
- Oturum:
DefaultMediaNotificationProvider
bölümünde bildirimlerin ön plan hizmeti davranışınıFOREGROUND_SERVICE_IMMEDIATE
olarak ayarlayın (#167).- Samsung cihazlarda kullanımdan kaldırılan API ile ilgili sorunları önlemek için yalnızca
android.media.session.MediaSession.setMediaButtonBroadcastReceiver()
API 31 ve sonraki 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
MediaSessionCompat
'ye bağlandığındaMediaController.getCurrentPosition()
ilerlememesine neden olan hata düzeltildi. - Kolaylık için
MediaLibrarySession.getSubscribedControllers(mediaId)
ekleyin. - Denetleyicinin abone olduğu üst kimliğin kullanılabilirliğini onaylamak için
MediaLibrarySession.Callback.onSubscribe()
öğesini geçersiz kılın. 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 tanıtım modülü ekleyin ve Android Auto için oturum tanıtımını etkinleştirin.
- Medya bildirimi denetleyicisi için
COMMAND_GET_TIMELINE
kullanılamadığında çerçeve oturumunun sırasını ayarlamayın. Android Auto, çerçeve oturumundan okuma yapan istemci denetleyicisi olduğunda Android Auto'nun kullanıcı arayüzündekiqueue
düğmesi gösterilmez (#339). SimpleBitmapLoader
yerine varsayılan olarakDataSourceBitmapLoader
kullanın (#271, #327).- Uygulamaların varsayılan medya düğmesi etkinlik işleme özelliğini geçersiz kılmasına olanak tanıyan
MediaSession.Callback.onMediaButtonEvent(Intent)
eklendi.
- 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.Listener
nedeniyle oynatma bastırmayı işleyen Wear OS cihazları için birPlayer.PLAYBACK_SUPPRESSION_REASON_UNSUITABLE_AUDIO_OUTPUT
uygulaması ekleyin. Dinleyici, yapılandırılabilir bir zaman aşımı içinde (varsayılan olarak 5 dakika) uygun bir cihaz bağlanırsa oynatmayı otomatik olarak devam ettirir.
- 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
DownloadService
için "veri senkronizasyonu" ön plan hizmeti türünü bildirin. Bu hizmeti kullanırken uygulamanın manifest dosyasınadataSync
öğesiniforegroundServiceType
olarak eklemesi veFOREGROUND_SERVICE_DATA_SYNC
iznini (#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
IndexOutOfBoundsException
'ya veya bazı durumlarda oynatmanın askıya alınmasına neden olabilecek bir yarış 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.shouldBeSkipped
ekleyin. Bu yöntem, desteği sonlandırılacak olanC.BUFFER_FLAG_DECODE_ONLY
yö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.setOutputStartTimeUs
veSimpleDecoder.isAtLeastOutputStartTimeUs
ekleyin. Bu, desteği sonlandırılacak olanBuffer.isDecodeOnly
yerine tercih edilmelidir. - MIDI kod çözücü yapıtının Maven deposunda yayınlanmasıyla ilgili hata düzeltildi. Yapılandırma
media3-exoplayer-midi
olarak yeniden adlandırıldı (#734).
- Leanback uzantısı:
- Bir yüzeyin devre dışı bırakılmasının Leanback kodunda
ArithmeticException
'ya neden olabildiği hata düzeltildi (#617).
- Bir yüzeyin devre dışı bırakılmasının Leanback kodunda
- Test yardımcı programları:
TestExoPlayerBuilder
veFakeClock
'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.
- Kullanımdan kaldırılan sembolleri kaldırma:
TransformationRequest.Builder.setEnableRequestSdrToneMapping(boolean)
veTransformationRequest.Builder.experimental_setEnableHdrEditing(boolean)
öğelerini kaldırın.Composition.Builder.setHdrMode(int)
özelliğini kullanın veComposition
değerini bunun yerineTransformer.start(Composition, String)
öğesine iletin.- Desteği sonlandırılan
DownloadNotificationHelper.buildProgressNotification
yöntemini kaldırın. Bunun yerinenotMetRequirements
parametresini alan, desteği sonlandırılmamış bir yöntem kullanın.
Sürüm 1.2.0-rc01
1 Kasım 2023
1.2.0 kararlı sürümünü kullanın.
Sürüm 1.2.0-beta01
19 Ekim 2023
1.2.0 kararlı sürümünü kullanın.
Sürüm 1.2.0-alpha02
29 Eylül 2023
1.2.0 kararlı sürümünü kullanın.
Sürüm 1.2.0-alpha01
17 Ağustos 2023
1.2.0 kararlı sürümünü kullanın.
Sürüm 1.1.0
Sürüm 1.1.1
16 Ağustos 2023
- Ortak kitaplık:
- Yanlışlıkla eklenen
multidex
bağımlılığını tüm modüllerden kaldırın (#499).
- Yanlışlıkla eklenen
- ExoPlayer:
- Oynatma listesi temizlendikten sonra
PlaybackStatsListener
bölümünde sahtePlaybackStats
oluş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_ENDED
simgesine 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 kayması dahil ediliyordu (bu, teknik olarak spesifikasyona göre doğruydu) (#11019).
- IMA uzantısı:
- IMA SDK sürümünü 3.30.3'e yükseltin.
- Oturum:
- Denetleyicinin durumuna özel düzen ekleyin ve erişmek için bir alıcı sağlayın. Özel düzen değiştiğinde
MediaController.Listener.onCustomLayoutChanged
çağrılır. Farklı Media3 denetleyicilerine farklı özel düzenler göndermek isteyen uygulamalar, bağlantı tamamlandığında özel düzenin denetleyici tarafından kullanılabilmesini sağlamak içinMediaSession.Callback.onConnect
içindeAcceptedResultBuilder
kullanarak bunu yapabilir. MediaLibraryServiceLegacyStub
, bunu desteklemeyen birResult
'ye hata gönderdiğindeUnsupportedOperationException
(#78) hatasının oluşmasına neden olan durumlar düzeltildi.PlayerWrapper
'nın hem eski komutlar (COMMAND_ADJUST_DEVICE_VOLUME
veCOMMAND_SET_DEVICE_VOLUME
) hem de yeni komutlar (COMMAND_ADJUST_DEVICE_VOLUME_WITH_FLAGS
veCOMMAND_SET_DEVICE_VOLUME_WITH_FLAGS
) aracılığıylavolumeControlType
'ı belirleyerekVolumeProviderCompat
oluş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)
DeviceInfo
içinBuilder
ekleyin ve mevcut oluşturucuyu kullanımdan kaldırın.- Uzak oynatmalar için yönlendirme denetleyicisi kimliğini belirtmek üzere
DeviceInfo.routingControllerId
ekleyin. - Aynı konumdaki öğeleri eklemek ve kaldırmak için
Player.replaceMediaItem(s)
kısayolunu ekleyin (#8046).
- ExoPlayer:
- Yalnızca açıkça etkinleştirilmişse ExoPlayer'ın cihaz ses yöntemlerini kontrol etmesine izin verilir. Aşağıdakilere erişmek için
ExoPlayer.Builder.setDeviceVolumeControlEnabled
kullanın:getDeviceVolume()
isDeviceMuted()
setDeviceVolume(int)
vesetDeviceVolume(int, int)
increaseDeviceVolume(int)
veincreaseDeviceVolume(int, int)
decreaseDeviceVolume(int)
vedecreaseDeviceVolume(int, int)
FilteringMediaSource
öğesi ekleyin. Bu öğe,MediaSource
içindeki mevcut parça türlerinin filtrelenmesine olanak tanır.- Uyarlanabilir akış biçimleri DASH, HLS ve SmoothStreaming'in giden isteklerine Common Media Client Data (CMCD) ekleme desteği eklendi.
br
,bl
,cid
,rtp
vesid
alanları dahil edildi (#8699). API yapısı ve API yöntemleri:- CMCD günlüğe kaydetme özelliği varsayılan olarak devre dışıdır. Bu özelliği etkinleştirmek için
MediaSource.Factory.setCmcdConfigurationFactory(CmcdConfiguration.Factory cmcdConfigurationFactory)
kullanın. - Tüm anahtarlar varsayılan olarak etkindir. Hangi anahtarların günlüğe kaydedileceğini filtrelemek için
CmcdConfiguration.RequestConfig.isKeyAllowed(String key)
geçersiz kılın. - Özel anahtar günlük kaydını etkinleştirmek için
CmcdConfiguration.RequestConfig.getCustomData()
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.json
dosyasıyla demo uygulamasını başlatmayı kolaylaştırın (#439). - Video oynatma sırasında
Effect
kullanmak içinExoPlayer.setVideoEffects()
ekleyin. sourceId
öğesiniint
yerinelong
olarak depolamak içinSampleQueue
uygulamasını güncelleyin. Bu değişiklik, herkese açık yöntemlerinSampleQueue.sourceId
veSampleQueue.peekSourceId
imzalarını değiştirir.- Bu yöntemlerin ilgili
MediaPeriod
ile ilişkilendirilmesine olanak tanıyanLoadControl
yöntemlerineshouldStartPlayback
veonTracksSelected
parametreleri ekleyin. ServerSideAdInsertionMediaSource.setAdPlaybackStates(Map<Object, AdPlaybackState>)
işlevinin imzasını, haritada anahtar olarak kullanılan UID'leri içeren bir zaman çizelgesi parametresi ekleyerek değiştirin. Bu, çok dönemli canlı yayınlarda eşzamanlılık sorunlarını önlemek için gereklidir.EventDispatcher.withParameters(int windowIndex, @Nullable MediaPeriodId mediaPeriodId, long mediaTimeOffsetMs)
veBaseMediaSource.createEventDispatcher(..., long mediaTimeOffsetMs)
öğelerini kullanımdan kaldırın.mediaTimeOffsetUs
içermeyen yöntem varyantı bunun yerine çağrılabilir. Desteği sonlandırılan varyantlar için bile, gönderici tarafından gönderilenMediaLoadData
nesnelerininstartTimeUs
veendTimeUs
değerlerine artık ofset eklenmediğini unutmayın.ExoTrackSelection.blacklist
öğesiniexcludeTrack
,isBlacklisted
öğesini iseisTrackExcluded
olarak 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
- Transformer:
Transformer.Builder.setMediaSourceFactory(MediaSource.Factory)
öğesini kaldırın. Bunun yerineExoPlayerAssetLoader.Factory(MediaSource.Factory)
veTransformer.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/EncoderForFormat
yardı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.allowInvalidateSelectionsForRendererCapabilitiesChange
varsayılan olarak devre dışıdır. Etkinleştirildiğinde,DefaultTrackSelector
oluş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
AudioProcessors
etkin olduğunda bazı oynatmaların başarısız olmasına neden olan hata düzeltildi. Örneğin, boşluksuz kırpma içinAudioProcessors
etkin olduğunda bu hata oluşuyordu (#10847). - Doğrudan oynatmalarda (yük boşaltma) Opus karelerini Ogg paketleri içinde kapsülleyin.
- Uyku sırasında mevcut konumu, görev dağıtımı planlamasıyla tahmin edin.
- Oyuncunun yaşam döngüsünün sonunda kaynakları yayınlamak için
Renderer.release()
veAudioSink.release()
ekleyin. DefaultAudioSink
'daki ses özellikleriyle ilgili değişiklikleri dinleyin.DefaultAudioSink
oluşturucusuna,DefaultAudioSink
'ninAudioCapabilitiesReceiver
için dinleyici olarak kaydedileceği ve özellik değişikliği hakkında bilgilendirildiğindeaudioCapabilities
özelliğini güncelleyeceği zorunlu bir parametrecontext
ekleyin.onAudioCapabilitiesChanged
arayüzündeki yeni bir etkinlikAudioSink.Listener
veonRendererCapabilitiesChanged
etkinliklerini tetikleyen yeni bir arayüzRendererCapabilities.Listener
aracılığıyla ses özelliklerindeki değişiklikleri yayma.- Ses kanallarına ölçeklendirme/karıştırma uygulamak için
ChannelMixingAudioProcessor
ekleyin. - Ses özellikleri değiştiğinde atlama modu mümkünse ses kod çözücüyü silmek için
DISCARD_REASON_AUDIO_BYPASS_POSSIBLE
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 birVideoSize
raporlasın.Player.Listener.onVideoSizeChanged
,Player.getVideoSize()
değiştiğinde buna göre adlandırılır. Bu değişiklikle birlikte,MediaCodecVideoRenderer
ile ExoPlayer'ın video boyutu,Player.getCurrentTracks
video desteklemediğinde veya desteklenen video parçasının boyutu henüz belirlenmediğinde 0 genişliğe ve yüksekliğe sahip olur.
- 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.getControllerForCurrentRequest
yöntemini çağıran denetleyici hakkında bilgi edinmek için yardımcı yöntemPlayer
ekleyin. - Uygulamaların, örneğin Bluetooth kulaklık tarafından gönderilen medya düğmesi etkinlikleriyle oynatmaya devam etme özelliğini uygulamasını sağlamak için
androidx.media3.session.MediaButtonReceiver
ekleyin (#167). - İstenen
MediaItems
öğesininLocalConfiguration
(ör. URI) varsaPlayer
öğesine iletilmesine izin vermek içinMediaSession.Callback.onAddMediaItems
öğesine varsayılan uygulama ekleyin (#282). - Android 12 ve önceki sürümlerde, kompakt medya bildirimi görünümüne varsayılan olarak "önceki öğeye git" ve "sonraki öğeye git" komut düğmeleri eklendi (#410).
- İstenen
MediaItems
öğesininLocalConfiguration
(ör. URI) varsaPlayer
öğesine iletilmesine izin vermek içinMediaSession.Callback.onAddMediaItems
öğesine varsayılan uygulama ekleyin (#282). - Android 12 ve önceki sürümlerde, kompakt medya bildirimi görünümüne varsayılan olarak "önceki öğeye git" ve "sonraki öğeye git" komut düğmeleri eklendi (#410).
- Şu anda bir
- UI:
- Oynat/duraklat düğmesi içeren özel kullanıcı arayüzü öğeleri yazmak için Util yöntemlerini
shouldShowPlayButton
vehandlePlayPauseButtonAction
ekleyin.
- Oynat/duraklat düğmesi içeren özel kullanıcı arayüzü öğeleri yazmak için Util yöntemlerini
- RTSP Uzantısı:
- DASH Uzantısı:
- Çok dönemli DASH akışları için
MediaLoadData.startTimeMs
veMediaLoadData.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ınTimestampAdjuster
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çinPlaybackException
istisnası oluşturulur. Zaman aşımı varsayılan olarak sıfıra ayarlanır (#323).
-
- Test yardımcı programları:
DataSourceContractTest
içinde URI şeması büyük/küçük harf duyarsızlığını kontrol edin.
- Kullanımdan kaldırılan sembolleri kaldırma:
DefaultAudioSink
oluşturucularını kaldırın, bunun yerineDefaultAudioSink.Builder
kullanın.HlsMasterPlaylist
öğesini kaldırın ve bunun yerineHlsMultivariantPlaylist
öğesini kullanın.Player.stop(boolean)
öğesini kaldırın. Bunun yerinePlayer.stop()
vePlayer.clearMediaItems()
(reset
,true
ise) kullanın.- Desteği sonlandırılan iki
SimpleCache
oluşturucuyu kaldırın. Daha iyi performans için bunun yerineDatabaseProvider
alan, desteği sonlandırılmamış bir oluşturucu kullanın. DefaultBandwidthMeter
oluşturucusunu kaldırın, bunun yerineDefaultBandwidthMeter.Builder
kullanın.DefaultDrmSessionManager
oluşturucularını kaldırın, bunun yerineDefaultDrmSessionManager.Builder
kullanın.- Kullanımdan kaldırılan iki
HttpDataSource.InvalidResponseCodeException
yapı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.forDash
veDownloadHelper.forSmoothStreaming
politikalarını kaldırın, bunun yerineDownloadHelper.forMediaItem
politikasını kullanın.- Desteği sonlandırılan
DownloadService
oluşturucuyu kaldırın.channelDescriptionResourceId
parametresi sağlama seçeneğini içeren, desteği sonlandırılmamış bir oluşturucu kullanın. - Charsets için desteği sonlandırılan String sabitlerini (
ASCII_NAME
,UTF8_NAME
,ISO88591_NAME
,UTF16_NAME
veUTF16LE_NAME
) kaldırın. Bunun yerinekotlin.text
paketindeki Kotlin Charsets'i,java.nio.charset.StandardCharsets
veyacom.google.common.base.Charsets
kullanın. - Desteği sonlandırılan
WorkManagerScheduler
oluşturucuyu kaldırın. Bunun yerine,Context
parametresi sağlama seçeneğini içeren, desteği sonlandırılmamış bir oluşturucu kullanın. Format
sınıfını örneklemek için kullanılan, desteği sonlandırılancreateVideoSampleFormat
,createAudioSampleFormat
,createContainerFormat
vecreateSampleFormat
yöntemlerini kaldırın. Bunun yerineFormat
örnekleri oluşturmak içinFormat.Builder
kullanın.- Kullanımdan kaldırılan
copyWithMaxInputSize
,copyWithSubsampleOffsetUs
,copyWithLabel
,copyWithManifestFormatInfo
,copyWithGaplessInfo
,copyWithFrameRate
,copyWithDrmInitData
,copyWithMetadata
,copyWithBitrate
vecopyWithVideoSize
yö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
DefaultTrackSelector
oluşturucuyu kaldırın, bunun yerineDefaultTrackSelector(Context)
kullanın. - Desteği sonlandırılan
OfflineLicenseHelper
oluşturucusunu kaldırın, bunun yerineOfflineLicenseHelper(DefaultDrmSessionManager, DrmSessionEventListener.EventDispatcher)
kullanın. - Desteği sonlandırılan
DownloadManager
oluşturucuyu kaldırın. Bunun yerineExecutor
alanını alan oluşturucuyu kullanın. - Desteği sonlandırılan
Cue
oluşturucularını kaldırın, bunun yerineCue.Builder
oluşturucularını kullanın. - Desteği sonlandırılan
OfflineLicenseHelper
oluşturucusunu kaldırın, bunun yerineOfflineLicenseHelper(DefaultDrmSessionManager, DrmSessionEventListener.EventDispatcher)
kullanın. - Desteği sonlandırılan dört
AnalyticsListener
yöntemini kaldırın:onDecoderEnabled
, bunun yerineonAudioEnabled
ve/veyaonVideoEnabled
kullanın.onDecoderInitialized
, bunun yerineonAudioDecoderInitialized
ve/veyaonVideoDecoderInitialized
kullanın.onDecoderInputFormatChanged
, bunun yerineonAudioInputFormatChanged
ve/veyaonVideoInputFormatChanged
kullanın.onDecoderDisabled
, bunun yerineonAudioDisabled
ve/veyaonVideoDisabled
kullanın.
- Desteği sonlandırılan
Player.Listener.onSeekProcessed
veAnalyticsListener.onSeekProcessed
işlemlerini kaldırın, bunun yerineonPositionDiscontinuity
ileDISCONTINUITY_REASON_SEEK
işlemlerini kullanın. ExoPlayer.setHandleWakeLock(boolean)
öğesini kaldırın, bunun yerinesetWakeMode(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.playbackProperties
artıkMediaItem.LocalConfiguration
türünde.
Sürüm 1.1.0-rc01
21 Haziran 2023
1.1.0 kararlı sürümünü kullanın.
Sürüm 1.1.0-beta01
7 Haziran 2023
1.1.0 kararlı sürümünü kullanın.
Sürüm 1.1.0-alpha01
10 Mayıs 2023
1.1.0 kararlı sürümünü kullanın.
Sürüm 1.0.0
Sürüm 1.0.2
18 Mayıs 2023
androidx.media3:media3-*:1.0.2
iptal edilir.
1.0.2 sürümü şu commit'leri içerir.
Bu sürüm, ExoPlayer 2.18.7 sürümüne karşılık gelir.
Bu sürüm, 1.0.1 sürümünden bu yana aşağıdaki değişiklikleri içerir:
- Core kitaplığı:
Buffer.isLastSample()
öğesinin işaret içerip içermediğini belirtenBuffer
öğesini ekleyinC.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 ayrıştırmasını 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 birMediaSessionCompat
'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 == true
ile yapılan bir çağrı için null döndürmesini engelleyen hata düzeltildi (#355). MediaSessionService
veyaMediaLibraryService
bellek sızıntısı düzeltildi (#346).Timeline
ve konum güncellemesininMediaSession
içinde birleştirilmesininMediaController
öğesininIllegalStateException
oluşturmasına neden olabileceği hata düzeltildi.
Sürüm 1.0.1
18 Nisan 2023
androidx.media3:media3-*:1.0.1
iptal edilir.
1.0.1 sürümü şu commit'leri içerir.
Bu sürüm, ExoPlayer 2.18.6 sürümüne karşılık gelir.
- Core kitaplığı:
- Varsayılan konuma gitmek 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
MediaSessionCompat
tarafından yayınlanan birden fazla aynı kuyruk öğesininMediaController
içinde istisnaya neden olduğu hata düzeltildi (#290). MediaSession.broadcastCustomCommand
öğesinin eskiMediaControllerCompat.Callback.onSessionEvent
öğesine yönlendirilmesiyle ilgili eksiklik giderildi (#293).MediaSession.setPlayer
işlevinin çağrılmasının, kullanılabilir komutları güncellememesine yol açan hata düzeltildi.TrackSelectionOverride
örnekleri birMediaController
adresinden gönderildiğindeFormat.metadata
ile bir gruba referans veriyorsa yoksayılması sorunu düzeltildi (#296).Player.COMMAND_GET_CURRENT_MEDIA_ITEM
, eskiMediaSessionCompat
üzerinden meta verilere erişmek için kullanılabilir olmalıdır.- Arka plandaki iş parçacığında
MediaSession
örneklerininMediaSessionService
içinde kullanıldığında kilitlenmelere neden olduğu sorun düzeltildi (#318). - Kitaplık tarafından, uygulamanın amaçlamadığı şekilde bir medya düğmesi alıcısının bildirilmesi sorunu düzeltildi (#314).
- 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.
- Core kitaplığı:
- İndirilenler:
- Birleştirilecek iki segmentin başlangıç zamanı arasındaki maksimum farkın
SegmentDownloader
ve alt sınıflarda yapılandırılabilir olması sağlandı (#248).
- Birleştirilecek iki segmentin başlangıç zamanı arasındaki maksimum farkın
- Ses:
- Video:
- HEVC HDR10 biçimini
HEVCProfileMain10
yerineHEVCProfileMain10HDR10
ile eşleyin. - Google TV'li Chromecast ve Lenovo M10 FHD Plus'ta 60 fps AVC akışlarının desteklenmiyor olarak işaretlenmesine neden olan cihaz sorunu için 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_IDLE
sorunu 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)
LOADED
etkinliği alınmadığı için reklamsız 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.
- Core kitaplığı:
- Bir kod çözücü, medyayı performanslı bir şekilde oynatamayacağını bildirse bile
MediaCodecSelector
'nın tercihlerini korumak için oluşturucunun kod çözücü sıralama mantığını ayarlayın. Örneğin, varsayılan seçiciyle, yalnızca işlevsel destek sunan donanım kod çözücü, biçimi tam olarak destekleyen yazılım kod çözücüye tercih edilir (#10604). - Yeni bir ExoPlayer örneği için önceden var olan bir oynatma iş parçacığı ayarlayan
ExoPlayer.Builder.setPlaybackLooper
ekleyin. - İndirme yöneticisi yardımcılarının temizlenmesine izin verilir (#10776).
- Arama için kullanılan komutu da belirtmek üzere
BasePlayer.seekTo
öğesine parametre ekleyin. - API 21 ve sonraki sürümlerde çizilebilir öğeler yüklenirken temayı kullanma (#220).
- Birden fazla medya öğesinin tek bir pencerede birleştirilmesine olanak tanıyan
ConcatenatingMediaSource2
eklendi (#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
NullPointerException
yerineParserException
atın. - fMP4'te doğrudan bir senkronizasyon karesine giderken örnekler doğru şekilde atlanıyor (#10941).
- Trak atomları ayrıştırılırken örnek tablosunda (stbl) gerekli bir örnek açıklaması (stsd) eksikse
- Ses:
- Doğrudan oynatmalarda (geçiş)
AudioTrack
iç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) 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şlukla ayrılmış değeri ayrıştırın.
- Meta verilerle açıklanan içerik türünü veya klasör türünü belirtmek için
MediaMetadata.mediaType
ekleyin. MediaMetadata.isBrowsable
öğesiniMediaMetadata.folderType
yerine ekleyin. Klasör türünün desteği bir sonraki sürümde sonlandırılacak.
- DASH:
- Kutu sayıları da dahil olmak üzere, resim uyarlama kümeleri için tam ayrıştırma eklendi (#3752).
- 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)
düzeltildi (#229). - Sağdan sola (RTL) düzen kullanılırken
PlayerView
simgesindeki orta oynatıcı kontrollerinin sıralaması düzeltildi (#227).
- Görünürlük değişikliklerinin kayıtlı dinleyiciye iletilmesini sağlamak için kullanımdan kaldırılan
- Oturum:
- Özel oynatıcılar için
Player
arayüzünün uygulanmasına yardımcı olması amacıyla soyutSimpleBasePlayer
ekleyin. - 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
onMediaMetadataChanged
kullanın (#219). - Medya oturumunu
getMediaButtons()
öğesinin bağımsız değişkeni olarak ekleyinDefaultMediaNotificationProvider
ve netlik için değişmez listeler kullanın (#216). onSetMediaItems
geri arama işleyicisi ekleyin. Bu işleyici, oynatıcıya ayarlanmadan önce oturuma göreMediaItem
listesini, 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
QueueTimeline
daha 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şlukla ayrılmış değeri ayrıştırın.
- Meta verilerle açıklanan içerik türünü veya klasör türünü belirtmek için
MediaMetadata.mediaType
ekleyin. MediaMetadata.isBrowsable
öğesiniMediaMetadata.folderType
yerine 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ü 21.2.0'a yükseltildi.
- IMA uzantısı:
- İş parçacığı sorunlarını önlemek için uygulama iş parçacığında
ImaServerSideAdInsertionMediaSource
öğesinin oynatıcı 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
öğesine bir yöntemfocusSkipButton()
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 isteğinde bulunma (#10884).
Sürüm 1.0.0-beta03
22 Kasım 2022
androidx.media3:media3-*:1.0.0-beta03
iptal edilir.
1.0.0-beta03 sürümü şu commit'leri içerir.
Bu sürüm, ExoPlayer 2.18.2 sürümüne karşılık gelir.
- Core kitaplığı:
- Tünel oluşturma özelliğinin şu anda seçili parçalarda etkin olup olmadığını kontrol etmek için
ExoPlayer.isTunnelingEnabled
simgesini ekleyin (#2518). - Tek bir
MediaSource
sarmalamayı basitleştirmek içinWrappingMediaSource
eklendi (#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ı arama yaparken oturum izleme sorunu düzeltildi (#180).- Tek öğeli bir oynatma listesinde
seekToNext
veyaseekToPrevious
çağrılırken eksikonMediaItemTransition
geri araması gönderin (#10667). - Videonun oluşturulduğu yüzeyin boyutunu döndüren
Player.getSurfaceSize
öğesini 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
compileSdkVersion
değ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:
- 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ınlarkenSingleThreadExecutor
kullanın (#10057). - AudioTrack'in yük boşaltma durumu için
AudioOffloadListener.onExperimentalOffloadedPlayback
eklenir. (#134). AudioTrackBufferSizeProvider
öğesini herkese açık bir arayüz haline getirin.- Tercih edilen ses çıkışı cihazını ayarlamak için
ExoPlayer.setPreferredAudioDevice
ekleyin (#135). androidx.media3.exoplayer.audio.AudioProcessor
öğesiniandroidx.media3.common.audio.AudioProcessor
olarak yeniden adlandırın.- Tüm Android sürümlerinde 8 kanallı ve 12 kanallı sesleri sırasıyla 7.1 ve 7.1.4 kanallı maskelere eşleme (#10701).
- Aynı anda birden fazla oynatıcı yayınlarken OutOfMemory hatalarını önlemek için
- Meta veri:
MetadataRenderer
artı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 mi olarak çıkışa aktaracağını belirtmek içinMetadataRenderer(MetadataOutput, Looper, MetadataDecoderFactory, boolean)
ile bir örnek oluşturun.
- DRM:
- Android 13 ClearKey uygulamasında boş olmayan ancak geçersiz bir lisans URL'si döndüren bir hatayı düzeltir.
- Oynatma listesinde DRM şemaları (ör. Widevine'dan ClearKey'e) arasında geçiş yaparken karşılaşılan
setMediaDrmSession failed: session not opened
hatası düzeltildi.
- Metin:
- CEA-608: 2. alandaki hizmet anahtarı komutlarının doğru şekilde işlendiğinden emin olun (#10666).
- DASH:
- Manifestlerden
EventStream.presentationTimeOffset
ayrıştırın (#10460).
- Manifestlerden
- UI:
- Oynatıcının mevcut geçersiz kılmalarını
TrackSelectionDialogBuilder
iç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.Builder
oluşturmak içinDefaultMediaNotificationProvider.Builder
ekleyin.DefaultMediaNotificationProvider
Oluşturucu, sağlayıcı tarafından kullanılan bildirim kimliğini, bildirim kanalı kimliğini ve bildirim kanalı adını yapılandırabilir. Ayrıca, bildirimlerin küçük simgesini ayarlamak için methodDefaultMediaNotificationProvider.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
DefaultNotificationProvider
tarafından oluşturulan bildirimle ilişkili "rozet"i manuel olarak gizleyin (rozet, API 28 ve sonraki sürümlerde otomatik olarak gizlenir) ( (#131). - Eski bir MediaSession'dan Media3 MediaController'a ikinci bir bağlayıcı bağlantısının IllegalStateExceptions'a neden olduğu hata düzeltildi (#49).
- RTSP:
- 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()
uygulayarakMediaController
ile oynatmayı kontrol ederkenCastPlayer
öğesini tanımlayabilirsiniz (#142).
- Transformer:
- Çıkış örneği oluşturma işleminin çok yavaş olduğunu algılamak için muxer watchdog zamanlayıcısı eklendi.
- Kullanımdan kaldırılan sembolleri kaldırma:
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.
- Core kitaplığı:
ShuffleOrder
yerineExoPlayer.setShuffleOrder
yazıldığındaPlayer.Listener#onTimelineChanged
'ninreason=Player.TIMELINE_CHANGE_REASON_PLAYLIST_CHANGED
ile aranmasını sağlayın (#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
öğesininDefaultMediaSourceFactory
iç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
içindekiplayWhenReady
değ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.
- Core kitaplığı:
MediaMetricsManager
aracılığıyla Android platform teşhisleri için desteği etkinleştirin. ExoPlayer, oynatma etkinliklerini ve performans verilerini platforma yönlendirir. Bu sayede cihazda sistem performansı ve hata ayıklama bilgileri sağlanır. Bu veriler, cihaz kullanıcısı tarafından kullanım ve teşhis 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.MergingMediaSource
kullanılırken parçaların çok sık sıfırlanmasıyla ilgili hata düzeltildi. Örneğin, altyazılar yan 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 oynatmalar için 4G ağı varsayılır.
null
öğesininMediaSource.Factory.setDrmSessionManagerProvider
veMediaSource.Factory.setLoadErrorHandlingPolicy
'ye aktarılmasına izin verme. GerekirseDefaultDrmSessionManagerProvider
veDefaultLoadErrorHandlingPolicy
örnekleri açıkça iletilebilir.- Tam
LocalConfiguration
bilinmediğinde medyayı oynatmak için gereken meta verileri temsil etmek üzereMediaItem.RequestMetadata
ekleyin.MediaMetadata.mediaUrl
artıkRequestMetadata
'e 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_ITEM
ekleyin.
- Parça seçimi:
TrackSelectionOverrides
sınıfınıTrackSelectionParameters
olarak düzleştirin veTrackSelectionOverride
sınıfını üst düzey bir sınıfa yükseltin.TracksInfo
öğesiniTracks
,TracksInfo.TrackGroupInfo
öğesini iseTracks.Group
olarak yeniden adlandırın.Player.getCurrentTracksInfo
vePlayer.Listener.onTracksInfoChanged
daPlayer.getCurrentTracks
vePlayer.Listener.onTracksChanged
olarak yeniden adlandırıldı. Bu,Player.Listener.onTracksChanged
yöntem adının farklı parametre türleriyle "kullanımdan kaldırılmasını geri alma" işlemini içerir.- Kullanımdan kaldırılan
DefaultTrackSelector.ParametersBuilder
yerineDefaultTrackSelector.buildUponParameters
veDefaultTrackSelector.Parameters.buildUpon
değerlerininDefaultTrackSelector.Parameters.Builder
döndürmesini sağlayın. - Ekleme
DefaultTrackSelector.Parameters.constrainAudioChannelCountToDeviceCapabilities
varsayı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.television
Kullanıcı arayüzü moduna sahip cihazlar bu kısıtlamaların dışında tutulur ve en yüksek kanal sayısına sahip biçim tercih edilir. Bu özelliği etkinleştirmek içinDefaultTrackSelector
örneğininContext
ile oluşturulması gerekir.
- Video:
DummySurface
öğesiniPlaceholderSurface
olarak 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.AudioAttributes
öğesinden yeni birAudioAttributesV21
sarmalayıcı sınıfına 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_7POINT1POINT4
yapılandırın (#10322).
- DRM
- Biçim değişikliğinden hemen sonra arama yapıldığında DRM oturumunun her zaman doğru şekilde güncellendiğinden emin olun (10274).
- Metin:
Player.getCurrentCues()
işlevini,List<Cue>
yerineCueGroup
döndürecek şekilde değiştirin.- SSA:
OutlineColour
stil ayarını destekler (BorderStyle == 3
olduğunda, yaniOutlineColour
ipucunun arka planını ayarlar) (#8435). - CEA-708: Verileri birden fazla hizmet bloğuna ayrıştırın ve şu anda seçili hizmet numarasıyla ilişkili olmayan blokları yoksayın.
- Yalnızca Google içinde kullanılan bir altyazı biçimini işlemek için kullanılan
RawCcExtractor
kaldırıldı.
- Ayıklayıcılar:
- UI:
OnClickListener
cihazlarına etkinlik yayınlanmasıyla ilgili sorunları düzeltin. Bu sorunlar,PlayerView
cihazlarındauseController=false
ayarlanmışsa ortaya çıkar. (#9605). Ayrıca, tüm görünüm yapılandırmaları için etkinliklerinOnLongClickListener
adresine teslim edilmesiyle ilgili sorunları da düzeltin.PlayerView
sınırlarındanACTION_UP
sı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
PlayerView
erişilebilirlik sorunu düzeltildi (#8627). TrackSelectionView
veTrackSelectionDialogBuilder
öğeleriniExoPlayer
yerinePlayer
arayüzüyle çalışacak şekilde yeniden yazın. Bu sayede görünümlerin diğerPlayer
uygulamaları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.PlayerView
parça seçicide zorunlu metin parçalarını göstermeyin ve "Yok" seçiliyse uygun bir zorunlu metin parçasını seçili tutun (#9432).
- DASH:
- DTS
AudioChannelConfiguration
öğelerinden kanal sayısını ayrıştırın. Bu, DTS akışları için ses geçişini yeniden etkinleştirir (#10159). null
öğesininDashMediaSource.Factory.setCompositeSequenceableLoaderFactory
öğesine aktarılmasına izin verme. GerekirseDefaultCompositeSequenceableLoaderFactory
ö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
öğesininHlsMediaSource.Factory.setCompositeSequenceableLoaderFactory
,HlsMediaSource.Factory.setPlaylistParserFactory
veHlsMediaSource.Factory.setPlaylistTrackerFactory
'ye aktarılmasına izin verme. GerekirseDefaultCompositeSequenceableLoaderFactory
,DefaultHlsPlaylistParserFactory
veyaDefaultHlsPlaylistTracker.FACTORY
referansının örnekleri açıkça iletilebilir.
- Sorunsuz akış:
null
öğesininSsMediaSource.Factory.setCompositeSequenceableLoaderFactory
öğesine aktarılmasına izin verme. GerekirseDefaultCompositeSequenceableLoaderFactory
ö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
öğesiniPlaceholderDataSource
olarak yeniden adlandırın.- OkHttp kesme işleme için geçici çözüm.
- Oturum:
- İsteklerin eşzamansız olarak çözümlenmesine izin vermek için
MediaSession.MediaItemFiller
yerineMediaSession.Callback.onAddMediaItems
kullanın. setMediaItems(s)
, eski bir medya oturumuna bağlandığındaMediaController
yöntemlerini destekler.MediaController.setMediaUri
veMediaSession.Callback.onSetMediaUri
öğelerini kaldırın. Aynı işlev,MediaController.setMediaItem
veMediaSession.Callback.onAddMediaItems
kullanılarak da elde edilebilir.- Eski
MediaController
görüşmelerini, medya oynatmak içinonSetMediaUri
yerineMediaSession.Callback.onAddMediaItems
numarasına yönlendirin. - Bildirimi özelleştirmek için
MediaNotification.Provider
veDefaultMediaNotificationProvider
öğelerini ekleyin. - Resim dosyalarını indirmek için
BitmapLoader
veSimpleBitmapLoader
ö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()
özelliğini ekleyin. MediaSession.MediaSessionCallback
öğesiniMediaSession.Callback
,MediaLibrarySession.MediaLibrarySessionCallback
öğesiniMediaLibrarySession.Callback
veMediaSession.Builder.setSessionCallback
öğesinisetCallback
olarak yeniden adlandırın.MediaControllerImplLegacy
içinde NPE düzeltildi (#59).- Zaman çizelgesinde oturum konumu bilgilerini güncelleme değişikliği(#51).
- Denetleyici serbest bırakıldıktan sonra
MediaControllerImplBase
içinde NPE düzeltildi (#74).
- İsteklerin eşzamansız olarak çözümlenmesine izin vermek için
- Reklam oynatma / IMA:
- Reklam yoklama sıklığını, Media Rating Council (MRC) önerileriyle uyumlu hale getirmek için 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ü
- Kullanımdan kaldırılan sembolleri kaldırma:
Player.Listener.onTracksChanged(TrackGroupArray, TrackSelectionArray)
öğesini kaldırın. Bunun yerinePlayer.Listener.onTracksChanged(Tracks)
politikasını kullanın.Player.getCurrentTrackGroups
vePlayer.getCurrentTrackSelections
öğelerini kaldırın. Bunun yerinePlayer.getCurrentTracks
politikasını kullanın. Bu yöntemler kullanımdan kaldırılmış olsa daExoPlayer.getCurrentTrackGroups
veExoPlayer.getCurrentTrackSelections
kullanmaya devam edebilirsiniz.DownloadHelper
DEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_VIEWPORT
veDEFAULT_TRACK_SELECTOR_PARAMETERS
sabitlerini kaldırın. Mümkün olduğundagetDefaultTrackSelectorParameters(Context)
, aksi takdirdeDEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_CONTEXT
kullanın.DefaultTrackSelector(ExoTrackSelection.Factory)
oluşturucusunu kaldırın. Bunun yerineDefaultTrackSelector(Context, ExoTrackSelection.Factory)
politikasını kullanın.Transformer.Builder.setContext
öğesini kaldırın.Context
, bunun yerineTransformer.Builder
oluş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.setTrackId
veMediaItem.SubtitleConfiguration.Builder.setId
etkileşimini,SubtitleConfiguration
alanına öncelik verecek ve ayarlanmamışsaFactory
değerine geri dönecek şekilde düzeltin (#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.
- Core Library:
buildVideoRenderers()
veyabuildAudioRenderers()
'ü geçersiz kılanDefaultRenderersFactory
alt sınıflarının, codec bağdaştırıcı fabrikasına erişip oluşturduklarıMediaCodecRenderer
örneklerine iletebilmesi için protected yöntemiDefaultRenderersFactory.getCodecAdapterFactory()
ekleyin.- ICY üstbilgi alanları
name
vegenre
'yi sırasıylaMediaMetadata.station
veMediaMetadata.genre
'e 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şturma işlemi başarısız olduğunda uyku moduna geçin ve tekrar deneyin. 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 sorunu düzeltildi (#8353).
- Düşük gecikme süresi özellikleri içermeyen veya kullanıcı tarafından hız ayarı yapılmayan canlı yayınlarda otomatik hız ayarlamayı devre dışı bırakın (#9329).
DecoderCounters#inputBufferCount
öğesiniqueuedInputBufferCount
olarak yeniden adlandırın.SimpleExoPlayer.renderers
gizli hale getirin. Oluşturuculara şu yollarla erişilebilir:ExoPlayer.getRenderer
.AnalyticsListener.EventFlags
sabit değerlerinden bazıları,Player.EventFlags
değerleriyle eşleşecek şekilde güncellendi.- Bir uygulamanın ihtiyacı yoksa R8 tarafından kaldırılabilmesi için
AnalyticsCollector
öğesini bir arayüz ve varsayılan uygulama olarak ayırın.
- Parça seçimi:
- Parça seçiminde tercih edilen video rolü işaretleri desteği eklendi (#9402).
- Uyarlama için birden fazla video parçası seçerken tercih edilen MIME türlerini ve rol işaretlerini dikkate almak üzere video parçası seç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çim mantığını daha verimli codec'leri tercih edecek şekilde güncelleyin (#4835).
- Teknik parça seçimi kısıtlamaları (ör. tercih edilen MIME türü veya maksimum kanal sayısı) yerine ses içeriği 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).
TrackGroupArray
içinde yinelenenTrackGroup
'ları yasaklayın.TrackGroup
s can always be made distinguishable by setting anid
in theTrackGroup
constructor. Bu düzeltme, etkin bir parça geçersiz kılma işlemiyle uygulamayı arka plana aldıktan sonra oynatmaya devam ederken yaşanan kilitlenme sorununu giderir (#9718).- Oynatma, canlı yayının sonuna çok yakın olsa bile yeterli ağ bant genişliği olduğunda kalite artışına izin vermek için
AdaptiveTrackSelection
içindeki mantığı değiştirin (#9784).
- Video:
- Gerekirse uyumlu bir H264/H265 kod çözücü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.
AudioCapabilities
API'lerini,null
yerineAudioCapabilities.DEFAULT_AUDIO_CAPABILITIES
'nin açıkça iletilmesini gerektirecek şekilde değiştirin.AudioTrack
arabellek boyutu hesaplamasının özelleştirilmesine izin verin. Bunun içinDefaultAudioSink
öğesineAudioTrackBufferSizeProvider
ekleyin. (#8891).- İstenen arabellek boyutu 1 MB'tan büyükse
AudioTrack
oluşturmayı yeniden deneyin. (#9712).
- Ayıklayıcılar:
- Metin:
- Yapılandırmadan oluşturulan altyazı parçasının
MediaItem.SubtitleConfiguration.id
alanına yayılan birFormat.id
alanı ekleyin (#9673). - Matroska kapsayıcılarında WebVTT altyazıları için temel destek eklendi (#9886).
Cea708Decoder
öğesinin, bir hizmet bloğunun belirtilen boyutundan daha fazla okumasını engelleme.
- Yapılandırmadan oluşturulan altyazı parçasının
- DRM:
playbackLooper
,DrmSessionManager.(pre)acquireSession
hesabından kaldırılsın mı? BirDrmSessionManager
, özel birMediaSource
içindeki bir uygulama tarafından kullanıldığındaplaybackLooper
yerineDrmSessionManager.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 olmasını zorunlu kılma (#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-subtitle
parça rolünü destekleyin (#9727).main
parça rolünüC.SELECTION_FLAG_DEFAULT
olarak yorumlamayı durdurun.- DVB ad alanını bildirmeyen manifest'ler için temel URL hariç tutma mantığını düzeltin (#9856).
- Göreceli
MPD.Location
URL'leri desteklenir (#9939).
- 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 duyarlı 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öntemini tercih edin (#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
- Transformer:
- Gerekli minimum API sürümünü 21'e yükseltin.
TransformationException
artık dönüştürme sırasında oluşan hataları açıklamak için kullanılıyor.- Dönüşüm seçeneklerini belirtmek için
TransformationRequest
ekleyin. - Birden fazla dinleyicinin kaydolmasına izin verin.
- Codec çıkışı kısmen okunduğunda Transformer'ın takılması sorunu düzeltildi.
- Muxer yayınlanırken
Transformer.getProgress
içinde olası NPE'yi düzeltir. - Dönüşümleri uygulamak için bir demo uygulaması ekleyin.
- MediaSession uzantısı:
MediaSessionConnector
, durdurulduğunda varsayılan olarak oynatma listesini temizler. Oynatma listesinin korunmasını isteyen uygulamalar, bağlayıcıdasetClearMediaItemsOnStop(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.0
sürümüne yükseltin.play-services-cast-framework
'nın önceki sürümleri, Android 12'yi hedefleyen uygulamalarla uyumlu değildir vePendingIntent
oluşturulurkenIllegalArgumentException
ile kilitlenir (#9528).
- Yayın uzantısını
- Kullanımdan kaldırılan sembolleri kaldırma:
Player.EventListener
öğesini kaldırın. Bunun yerinePlayer.Listener
politikasını kullanın.MediaSourceFactory#setDrmSessionManager
,MediaSourceFactory#setDrmHttpDataSourceFactory
veMediaSourceFactory#setDrmUserAgent
öğelerini kaldırın. Bunun yerineMediaSourceFactory#setDrmSessionManagerProvider
kullanın.MediaSourceFactory#setStreamKeys
öğesini kaldırın. Bunun yerineMediaItem.Builder#setStreamKeys
kullanın.MediaSourceFactory#createMediaSource(Uri)
öğesini kaldırın. Bunun yerineMediaSourceFactory#createMediaSource(MediaItem)
kullanın.setTag
,DashMediaSource
,HlsMediaSource
veSsMediaSource
cihazlarından kaldırılsın mı? Bunun yerineMediaItem.Builder#setTag
politikasını kullanın.DashMediaSource#setLivePresentationDelayMs(long, boolean)
öğesini kaldırın. Manifest'i geçersiz kılmak içinMediaItem.Builder#setLiveConfiguration
veMediaItem.LiveConfiguration.Builder#setTargetOffsetMs
, yedek değer sağlamak için iseDashMediaSource#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.ActionFile
veActionFileUpgradeUtil
öğelerini kaldırın. Eski işlem dosyalarınıActionFileUpgradeUtil
ile birleştirmek için ExoPlayer 2.16.1 veya önceki bir sürümü kullanın.DefaultDownloadIndex
ProgressiveMediaSource#setExtractorsFactory
öğesini kaldırın. Bunun yerineProgressiveMediaSource.Factory(DataSource.Factory, ExtractorsFactory)
oluşturucusunu kullanın.ProgressiveMediaSource.Factory#setTag
veProgressiveMediaSource.Factory#setCustomCacheKey
araçlarını kaldırın. Bunun yerineMediaItem.Builder#setTag
veMediaItem.Builder#setCustomCacheKey
politikalarını kullanın.DefaultRenderersFactory(Context, @ExtensionRendererMode int)
veDefaultRenderersFactory(Context, @ExtensionRendererMode int, long)
yapılandırıcılarını kaldırın. Bunun yerineDefaultRenderersFactory(Context)
oluşturucusunu,DefaultRenderersFactory#setExtensionRendererMode
veDefaultRenderersFactory#setAllowedVideoJoiningTimeMs
kullanın.- Tüm herkese açık
CronetDataSource
oluşturucuları kaldırın. Bunun yerineCronetDataSource.Factory
kullanın.
- Yalnızca aşağıdaki
IntDefs
değerini@Target(TYPE_USE)
olarak değiştirin. Bu durum, Kotlin'deki kullanımların derlenmesini bozabilir. Bu sorun, türü açıklama eklemek için açıklama ekleme işlevini taşıyarak düzeltilebilir (Int
).@AacAudioObjectType
@Ac3Util.SyncFrameInfo.StreamType
@AdLoadException.Type
@AdtsExtractor.Flags
@AmrExtractor.Flags
@AspectRatioFrameLayout.ResizeMode
@AudioFocusManager.PlayerCommand
@AudioSink.SinkFormatSupport
@BinarySearchSeeker.TimestampSearchResult.Type
@BufferReplacementMode
@C.BufferFlags
@C.ColorRange
@C.ColorSpace
@C.ColorTransfer
@C.CryptoMode
@C.Encoding
@C.PcmEncoding
@C.Projection
@C.SelectionReason
@C.StereoMode
@C.VideoOutputMode
@CacheDataSource.Flags
@CaptionStyleCompat.EdgeType
@DataSpec.Flags
@DataSpec.HttpMethods
@DecoderDiscardReasons
@DecoderReuseResult
@DefaultAudioSink.OutputMode
@DefaultDrmSessionManager.Mode
@DefaultTrackSelector.SelectionEligibility
@DefaultTsPayloadReaderFactory.Flags
@EGLSurfaceTexture.SecureMode
@EbmlProcessor.ElementType
@ExoMediaDrm.KeyRequest.RequestType
@ExtensionRendererMode
@Extractor.ReadResult
@FileTypes.Type
@FlacExtractor.Flags
(com.google.android.exoplayer2.ext.flac
paketinde)@FlacExtractor.Flags
(com.google.android.exoplayer2.extractor.flac
paketinde)@FragmentedMp4Extractor.Flags
@HlsMediaPlaylist.PlaylistType
@HttpDataSourceException.Type
@IllegalClippingException.Reason
@IllegalMergeException.Reason
@LoadErrorHandlingPolicy.FallbackType
@MatroskaExtractor.Flags
@Mp3Extractor.Flags
@Mp4Extractor.Flags
@NotificationUtil.Importance
@PlaybackException.FieldNumber
@PlayerNotificationManager.Priority
@PlayerNotificationManager.Visibility
@PlayerView.ShowBuffering
@Renderer.State
@RendererCapabilities.AdaptiveSupport
@RendererCapabilities.Capabilities
@RendererCapabilities.DecoderSupport
@RendererCapabilities.FormatSupport
@RendererCapabilities.HardwareAccelerationSupport
@RendererCapabilities.TunnelingSupport
@SampleStream.ReadDataResult
@SampleStream.ReadFlags
@StyledPlayerView.ShowBuffering
@SubtitleView.ViewType
@TextAnnotation.Position
@TextEmphasisSpan.MarkFill
@TextEmphasisSpan.MarkShape
@Track.Transformation
@TrackOutput.SampleDataPart
@Transformer.ProgressState
@TsExtractor.Mode
@TsPayloadReader.Flags
@WebvttCssStyle.FontSizeUnit
Sürüm 1.0.0-alpha01
27 Ekim 2021
androidx.media3:media3-*:1.0.0-alpha01
iptal edilir.
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ı
Player
arayüzünü kullanır. - Medya oynatma kullanıcı arayüzleri oluşturmaya yönelik kullanıcı arayüzü bileşenleri.
- ExoPlayer ile kullanılmak üzere diğer kitaplıklardaki işlevleri sarmalayan modüller (ör. IMA SDK aracılığıyla reklam ekleme).
Daha fazla bilgi için Media3 GitHub projesine 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 sürdürmeyi ve yayınlamayı planlıyoruz. Media3, yeni media3-session
modülüyle değiştirilen eski media2 ve mediasession uzantıları hariç tüm ExoPlayer modüllerinin yerine kullanılabilir. Bu, 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.