Medya3
Son Güncelleme | Kararlı Sürüm | Yayın Adayı | Beta Sürümü | Alfa Sürümü |
---|---|---|---|---|
10 Temmuz 2024 | 1.3.1 | 1.4.0-rc01 | 1.4.0-beta01 | 1.4.0-alfa02 |
Bağımlılıkları bildirme
Media3'e bağımlılık eklemek için projenize Google Maven deposunu eklemeniz gerekir. Daha fazla bilgi için Google'ın Maven deposunu okuyun.
Uygulamanız veya modülünün build.gradle
dosyasına ihtiyaç duyduğunuz yapılar için bağımlılıkları ekleyin:
Eski
dependencies { def media3_version = "1.4.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 implementation "androidx.media3:media3-ui:$media3_version" // For building media playback UIs for Android TV using the Jetpack Leanback library implementation "androidx.media3:media3-ui-leanback:$media3_version" // For exposing and controlling media sessions implementation "androidx.media3:media3-session:$media3_version" // For extracting data from media containers implementation "androidx.media3:media3-extractor:$media3_version" // For 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.4.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 implementation("androidx.media3:media3-ui:$media3_version") // For building media playback UIs for Android TV using the Jetpack Leanback library implementation("androidx.media3:media3-ui-leanback:$media3_version") // For exposing and controlling media sessions implementation("androidx.media3:media3-session:$media3_version") // For extracting data from media containers implementation("androidx.media3:media3-extractor:$media3_version") // For 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 bölümüne bakın.
Geri bildirim
Geri bildiriminiz Jetpack'i iyileştirmemize yardımcı olacaktır. Sorulara, bilinen sorunlara ve özellik isteklerine yanıt bulmak ve yeni sorunları bildirmek için Media3 sorun izleyicisini kullanabilirsiniz.
Sürüm 1.4.0
Sürüm 1.4.0-rc01
10 Temmuz 2024
androidx.media3:media3-*:1.4.0-rc01
yayınlandı.
Sürüm 1.4.0-rc01 bu kayıtları içerir.
- Ortak Kitaplık:
Format
örnekleri hakkında uygulama tarafından sağlanan özel bilgileri depolamak içinFormat.customData
ekleyin.
- ExoPlayer:
- Bazı ses odağı tutarsızlıklarını düzeltin (örneğin, oynatıcı duraklatılmış durumdayken tam veya geçici odak kaybının raporlanmaması) (#1436).
- Ayıklayıcıların ilk hazırlık adımından sonra ek kanalları bildirmesinden kaynaklanan olası
IndexOutOfBoundsException
sorununu düzeltin (#1476). ExoPlayer.setVideoEffect()
içindekiEffects
, oluşturucu ofseti kaldırılmış olarak zaman damgalarını alır (#1098).- Başka bir oynatma listesi öğesine devam ederken meydana gelen oynatıcı hatasını ele alırken olası
IllegalArgumentException
sorununu düzeltin (#1483).
- Kısa mesaj:
- Bir WebVTT altyazı örneği işaret içermediğinde (ör. DASH akışının parçası olarak)
LegacySubtitleUtil
üzerinden gelenIllegalArgumentException
hatasını düzeltin (#1516).
- Bir WebVTT altyazı örneği işaret içermediğinde (ör. DASH akışının parçası olarak)
- Oturum:
- Genel oturum etkinliğini geçersiz kılmak için oturum etkinliğinin denetleyici başına ayarlanmasına izin verin.
AcceptedResultBuilder.setSessionActivivty(PendingIntent)
ile birConnectionResult
oluşturarak bağlantı zamanında bir denetleyici için oturum etkinliği tanımlanabilir. Bağlantı kurulduktan sonra oturum etkinliğiMediaSession.setSessionActivity(ControllerInfo, PendingIntent)
ile güncellenebilir. - Aramaların
MediaLibrarySession.Callback
işlevine kopyalanma hatasını iyileştirin. Artık hata çoğaltmayı, hata türünü seçmek veya varsayılan olarak açık olan hata replikasını devre dışı bırakmak içinMediaLibrarySession.Builder.setLibraryErrorReplicationMode()
kullanarak yapılandırabilirsiniz.
- Genel oturum etkinliğini geçersiz kılmak için oturum etkinliğinin denetleyici başına ayarlanmasına izin verin.
- Kullanıcı arayüzü:
- API 34'te Compose
AndroidView
içindeSurfaceView
kullanılırken videonun uzatılmasına/kırpılmasına neden olan bir platform hatasını giderme (#1237).
- API 34'te Compose
- Demo uygulama:
- Cihaz tarafından desteklendiğinde
HttpDataSource
olarakHttpEngineDataSource
kullanın.
- Cihaz tarafından desteklendiğinde
Sürüm 1.4.0-beta01
26 Haziran 2024
androidx.media3:media3-*:1.4.0-beta01
yayınlandı.
Sürüm 1.4.0-beta01 bu taahhütleri içerir.
- ExoPlayer:
Exoplayer.release()
adlı cihazın çağrılıp çağrılmadığını kontrol etmek içinExoPlayer.isReleased()
ekleyin.seekToPrevious()
öğesinin önceki öğeye arama yapacağı maksimum konumu yapılandırmak içinExoPlayer.Builder.setMaxSeekToPreviousPositionMs
değerini ekleyin (#1425).
- Dönüştürücü:
ExportResult.processedInputs
alanını kaldır. Bu alanı codec ayrıntıları için kullanıyorsanız bunun yerineDefaultDecoderFactory.listener
değerini kullanın. Bir codec istisnası olması durumunda codec ayrıntılarıExportException.codecInfo
içinde yer alır.
- Ayıklayıcılar:
- AVI kapsayıcılarında PCM ses biçimi ayıklama sorunu düzeltildi.
- Resim:
- Daha önce ayarlanmış bir
ImageOutput
öğesini temizlemek içinExoPlayer.setImageOutput
içinnull
parametresine izin verin.
- Daha önce ayarlanmış bir
- Sonuç:
- Yer paylaşımının dinamik aralığı ve karenin eşleşmesi gerektiğinden kullanılmayan
OverlaySettings.useHdr
öğesini kaldırın. TextOverlay
için HDR desteği ekleyin. Metin yer paylaşımının parlaklığıOverlaySettings.setHdrLuminanceMultiplier
ile ayarlanabilir.
- Yer paylaşımının dinamik aralığı ve karenin eşleşmesi gerektiğinden kullanılmayan
- Oturum:
- Belirli bir kumandadan gelen bir dizi oyuncu etkileşimi bittiğinde oturumları bilgilendirmek için
MediaSession.Callback.onPlayerInteractionFinished
ekleyin. - Hata hakkında daha fazla bilgi sağlamak ve mümkünse hatanın nasıl çözüleceğini sağlamak için
SessionError
ekleyip hata kodu yerineSessionResult
veLibraryResult
içinde kullanın. - Medya oturumu yayınlayan uygulamalarla olan etkileşimleri test etmek için kullanılabilecek media3 denetleyici test uygulamasının kodunu yayınlayın.
- media3'ün
MediaSession[Builder].setSessionExtras()
öğesine aktarılan ekstraları bir medya1 denetleyicisininPlaybackStateCompat.getExtras()
öğesine uygulayın. - Platform oturumu ile önemli ve önemsiz hataları eşleştirin. Bir
PlaybackException
,PlaybackStateCompat
için önemli bir hata durumuyla eşlendi. Medya bildirim denetleyicisineMediaSession.sendError(ControllerInfo, SessionError)
ile gönderilen birSessionError
,PlaybackStateCompat
ürününde önemli olmayan bir hatayla eşlenir. Bu, hata kodu ve mesajın ayarlandığı ancak platform oturumunun durumununSTATE_ERROR
ile farklı kaldığı anlamına gelir.
- Belirli bir kumandadan gelen bir dizi oyuncu etkileşimi bittiğinde oturumları bilgilendirmek için
- Kullanıcı arayüzü:
- HLS Uzantısı:
- Birincil olmayan oynatma listelerinin canlı oynatma sırasında yenilenmemesine neden olan hatayı düzeltin (#1240).
- Kullanımdan kaldırılan simgeleri kaldırın:
Bundleable
arayüzünü kaldır. Bu işlem,Bundleable.Creator<Foo> CREATOR
sabit değer alanlarının tümünün kaldırılmasını içerir. Arayanlar bunun yerine her tür içinBundle toBundle()
vestatic Foo fromBundle(Bundle)
yöntemlerini kullanmalıdır.
Sürüm 1.4.0-alpha02
7 Haziran 2024
androidx.media3:media3-*:1.4.0-alpha02
yayınlandı.
Sürüm 1.4.0-alpha02 bu kaydetmeleri içerir.
- Ortak Kitaplık:
- İşlem dışı olduğu varsayılan arama çağrılarını yoksaymak yerine korunan
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ştirilmiş Java 8 kod çözme işlemine yönelik derleme bağımlılığını kaldırın (#1312).
MediaItem.Builder.setImageDurationMs
öğesine iletilen sürenin, resim olmayan birMediaItem
için (belirtildiği gibi) yoksayıldığından emin olun.
- İşlem dışı olduğu varsayılan arama çağrılarını yoksaymak yerine korunan
- ExoPlayer:
- Önceden yükleme yöneticisi örneğini korurken tüm bekletme kaynaklarını serbest bırakmak için
BasePreloadManager
öğesinereset
ekleyin. PriorityTaskManager
'de kullanılan öncelik değerini ve API 35'ten MediaCodec önemini tanımlamak içinExoPlayer.setPriority
(veBuilder.setPriority
) ekleyin.- CMCD'de (#1124)
bs
(arabellek eksikliği) anahtarının yanlış şekilde gösterilmesine neden olan son yeniden arabellek zamanının güncellenmesiyle ilgili sorunu düzeltin. - 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 sessiz atlama işleminin oynatma istisnasını tetikleyebileceği hatayı düzeltin.
- Önceden yükleme süresini silmek için
PreloadMediaSource
alanınaclear
ekleyin. - Daha yüksek öncelikli görevler için codec kaynakları geri çekildiğinde kullanılan yeni hata kodunu (
PlaybackException.ERROR_CODE_DECODING_RESOURCES_RECLAIMED
) ekleyin. - İlk içerik medyası hazırlığı tamamlanmadan önce
AdsMediaSource
ürününün videodan önce gösterilen reklamları yüklemesine izin verin (#1358). - Orijinal dönemin manifest'ten kaldırıldıktan sonra çok dönemli DASH canlı yayını yeniden hazırlanırken oynatmanın
STATE_ENDED
bölümüne taşındığı hatayı düzeltin. PreloadMediaSource.PreloadControl
grubundaonTimelineRefreshed
adlı kullanıcının adınıonSourcePrepared
veonPrepared
adlı kullanıcının adınıonTracksSelected
olarak değiştirin. Ayrıca,DefaultPreloadManager.Stage
içindeki IntDef'leri de uygun şekilde yeniden adlandırın.- İşleri CPU uyanık kalma döngüleriyle daha iyi hizalamak ve oluşturucuların ilerlemeye devam edebileceği zamanları geciktirmek için dinamik planlama için deneysel destek ekleyin.
Bunu, ExoPlayer örneğinizi ayarlarken
experimentalSetDynamicSchedulingEnabled
kullanarak etkinleştirebilirsiniz. Renderer.getDurationToProgressMs
ekleyin.Renderer
, oluşturucunun ilerlemesi için oynatmanın ilerlemesi gereken süreyi ExoPlayer'a döndürmek amacıyla bu yöntemi uygulayabilir.ExoPlayer
,experimentalSetDynamicSchedulingEnabled
ile ayarlanırsaExoPlayer
, iş görevini planlamak için gereken süreyi hesaplarken bu yöntemi çağırır.- Giriş ve çıkış arabellekleri
MediaCodecRenderer
tarafından kullanılabilir olduğunda uyarı vermek içinMediaCodecAdapter#OnBufferAvailableListener
ekleyin.MediaCodecRenderer
, bu geri çağırmaları alırkenExoPlayer
sinyalini verir.ExoPlayer
,experimentalSetDynamicSchedulingEnabled
olarak ayarlanırsaExoPlayer
, oluşturucular ilerleme kaydedildikçe iş döngüsünü planlar. LoadControl
yöntemleri için ayrı parametreler yerine veri sınıfını kullanın.
- Önceden yükleme yöneticisi örneğini korurken tüm bekletme kaynaklarını serbest bırakmak için
- Dönüştürücü:
- PCM girişi işlenirken ses kanalı sayısının stereo olarak sınırlandırıldığı kod çözücü hatasını gidermeye çalışın.
ExoPlayerAssetLoader
içinde parçaları seçerken, yalnızca oynatma için geçerli oldukları için ses kanalı sayısı kısıtlamalarını yoksayın.androidx.media3.transformer.Muxer
arayüzünüandroidx.media3.muxer.Muxer
ile değiştirin veandroidx.media3.transformer.Muxer
öğesini kaldırın.- İçerik URI şemalarından HEIC resim yükleme sorunu düzeltildi. (#1373).
- AV senkronizasyonunu iyileştirmek için ses parçası süresini
AudioGraphInput
uygulamasında ayarlayın.
- Ayıklayıcılar:
- MPEG-TS: Bir akışın son erişim birimini örnek sırasına geçirerek son karenin oluşturulmasını sağlayacak şekilde değişikliği ileri alın (#7909). Yalnızca I-Frame HLS akışlarında(#1150) ve H.262 HLS akışlarında (#1126) ortaya çıkan sorunları çözmek için düzeltmeler uygulama.
- MP3: Temel akışın bildirdiği boyut yerine
Info
karesindeki veri boyutunu tercih edin (ör. dosya boyutu veya HTTPContent-Length
üst bilgisi). Bu, oynatılamayan fragman verilerinin (ör. albüm posteri) sabit bit hızı arama hesaplamalarından hariç tutulmasına yardımcı olarak arama sonuçlarının daha doğru olmasını sağlar (#1376). - MP3: Yapay olarak küçük olabilen
Info
kareden (ör.PCUT
kare (#1376)) sonra karenin bit hızından ayıklama yapmak yerine, sabit bit hızı sarma için ortalama bir bit hızı hesaplamak üzereInfo
karesindeki kare sayısını ve diğer verileri (varsa) kullanın. (#1376).
- Ses:
- Geçiş oynatma için DTS:X Profile 2 kodlama özelliklerini düzeltin (#1299).
- Kaldırılan oynatma için, bekleyen tüm verilerin oynatıldığı zamanı
AudioTrack.StreamEventCallback#onPresentationEnded
doğru şekilde tanımlaması amacıyla,AudioTrack.stop()
çağrısından önceDefaultAudioSink
içindeki akış tamamlama izleme alanını sıfırlayın. SilenceSkippingAudioProcessor
sürümünde, farklı ses biçimleri arasındaki geçişlerin (örneğin, stereodan monoya) işlemcinin istisna yapmasına neden olabileceği hatayı düzeltin (#1352).- ExoPlayer'ın, ana iş döngüsünü MediaCodecAudioRenderer'ın ilerleme kaydedebileceği zamana dinamik olarak planlaması için
MediaCodecAudioRenderer.getDurationToProgressUs
uygulayın.
- Video:
- Gerekirse Dolby Vision'ın uyumlu bir AV1 kod çözücü kullanması için kod çözücü yedek mantığını düzeltin (#1389).
- Kısa mesaj:
- Konumu atlamadan önce başlayan altyazıların atlanmasıyla ilgili sorun düzeltildi. Bu sorun yalnızca Media3 1.4.0-alpha01 sürümünde kullanıma sunulmuştur.
- Varsayılan altyazı ayrıştırma davranışını, oluşturma işlemi yerine ayıklama sırasında gerçekleşecek şekilde değiştirin (ayıklama ve oluşturma arasındaki fark için ExoPlayer'ın mimari şemasına bakın).
- Bu değişiklik, her ikisi de
MediaSource.Factory.experimentalParseSubtitlesDuringExtraction(false)
veTextRenderer.experimentalSetLegacyDecodingEnabled(true)
çağrısı yapılarak geçersiz kılınabilir. Bu bileşenleri birExoPlayer
örneğine nasıl yerleştireceğinizi öğrenmek için özelleştirme belgelerine bakın. Bu yöntemler (ve eski altyazı kodunu çözme için tüm destek) gelecekteki bir sürümde kaldırılacaktır. - Özel
SubtitleDecoder
uygulamaları olan uygulamaların, bunun yerineSubtitleParser
(veSubtitleDecoderFactory
yerineSubtitleParser.Factory
) uygulamasını kullanacak şekilde bunları güncellemesi gerekir.
- Bu değişiklik, her ikisi de
- PGS: Değişmez renk değeri yerine
0
öğesini renk dizini olarak çözümlemek için çalışma uzunluğu kod çözmeyi düzeltin (#1367). - CEA-708:
rowLock
değerini yoksayın. CEA-708-E S-2023 spesifikasyonunda, akışta bulunan değerler ne olursa olsunrowLock
vecolumnLock
değerlerinin doğru olarak kabul edilmesi gerektiği belirtilmektedir (columnLock
desteği uygulanmadığından etkin bir şekilde her zaman yanlış olduğu varsayılır).- Bu değişiklik, başlangıçta
1.3.0-alpha01
sürüm notlarında yer alıyordu, ancak değişiklik yanlışlıkla1.3.0-rc01
sürümünden önce geri alındı. Bu sorun giderilmiştir ve değişiklik yeniden uygulanır.
- Bu değişiklik, başlangıçta
- CEA-708: ExoPlayer'ın "kalem konumunu ayarla" komutunu yetkisiz bir şekilde işlemesi tarafından yinelenen yeni satırlar eklenmesini önleyin (#1315).
- Üst veri:
- MP4 ile ID3 sıralama etiketlerinin eşlenmesi düzeltildi. Daha önce, "albüm sıralaması" (
soal
), "sanatçı sıralama" (soar
) ve "albüm sanatçısı sıralama" (soaa
) MP4 etiketleri,TSO2
,TSOA
veTSOP
ID3 etiketleriyle (#1302) yanlış bir şekilde eşleniyordu. - Değer bir bayttan uzun olduğunda MP4 (/iTunes) sayısal
gnre
(tür) vetmpo
(tempo) etiketlerinin okunması düzeltildi. - ID3
TCON
karesiniMediaMetadata.genre
öğesine uygulayın (#1305).
- MP4 ile ID3 sıralama etiketlerinin eşlenmesi düzeltildi. Daha önce, "albüm sıralaması" (
- Resim:
- Kare olmayan DASH küçük resim ızgaraları için destek ekleyin (#1300).
- API 34 ve sonraki sürümler için AVIF desteği ekleyin.
- Veri Kaynağı:
- Yapım sırasında sabit kodlanmak yerine,
ByteArrayDataSource
ürünününopen()
sırasında bir bayt dizisine URI çözümlemesine izin verin (#1405).
- Yapım sırasında sabit kodlanmak yerine,
- DRM:
DefaultDrmSessionManagerProvider
üzerindeLoadErrorHandlingPolicy
ayarlamaya izin ver (#1271).
- Sonuç:
ExoPlayer#setVideoEffects
ile kullanıldığındaTimestampWrapper
öğesinin kilitlendiği hatayı düzeltin (#821).- Varsayılan SDR renk çalışma alanını doğrusal renklerden elektrikli BT 709 SDR videoya dönüştürün. Ayrıca orijinal renk alanını korumak için üçüncü seçeneği de sağlayın.
- EditedMediaItemSequences'ın belirsiz z sırasını tanımlamaya izin ver (#1055).
- Farklı HDR içerik parçalarında tutarlı bir parlaklık aralığı koruyun (HLG aralığını kullanır).
- HDR içeriklerde Ultra HDR (bit eşlem) yer paylaşımları için destek eklendi.
SeparableConvolution
efektlerinin API 26'dan önce kullanılmasına izin ver.
- IMA uzantısı:
- Uygulamaların DAI reklam akışlarını oynatarak kararlı bir şekilde çalışması için gerekli olan API'yi tanıtın.
- Çalışma zamanında reklam etiketi parametrelerinin değiştirilmesini sağlayan
replaceAdTagParameters(Map <String, String>)
öğesiniImaServerSideAdInsertionMediaSource.AdLoader
içine ekleyin. - Reklam oynatma sırasında oynatıcı hatası oluştuğunda
VideoAdPlayer.VideoAdPlayerCallback.onError
çağrılmadığı hata düzeltildi (#1334). data://
reklam etiketi URI'leri kullanırkenNullPointerException
sorununu düzeltmek için IMA SDK sürümünü 3.33.0'a yükseltin (#700).
- Oturum:
- Süreyi platform oturumu meta verilerine ayarlamayarak canlı yayınların medya bildirimlerinde sarma çubuğunu gizleyin (#1256).
- Meta veri özelliklerini seçerken media1'deki ile aynı tercih edilen sıra ve mantığı kullanmak için
MediaMetadata
dönüşümünüMediaDescriptionCompat
değerine hizalayın. - Önemli olmayan hataların Media3 denetleyicisine gönderilmesine izin veren
MediaSession.sendError()
ekleyin. Bildirim denetleyici kullanılırken (bkz.MediaSession.getMediaNotificationControllerInfo()
) özel hata, platform oturumununPlaybackState
değerini verilen hata bilgileriyle birlikte bir hata durumuna güncellemek için kullanılır (#543).
- Cronet Uzantısı:
CronetDataSource
içinSocketTimeoutException
hatasını düzeltin. Cronet'in bazı sürümlerinde, geri arama tarafından sağlanan istek her zaman aynı olmaz. Bu durum, geri arama işleminin tamamlanmamasına ve isteğin zaman aşımına uğramasına neden olur (https://ISSUEtracker.google.com/328442628).
- HLS Uzantısı:
- Süreksizlik bekleyen bekleyen EMSG örneklerinin
HlsSampleStreamWrapper
içinde yanlış ofsetle (IndexOutOfBoundsException
veyaIllegalArgumentException
) neden olduğu hata düzeltildi (#1002). - Birincil olmayan oynatma listelerinin LL-HLS akışları için yeniden yüklenmeye devam etmesiyle ilgili hatayı düzeltin (#1240).
- Başlatma segmentleriyle CMCD'yi etkinleştirmenin
Source Error
veIllegalArgumentException
ile sonuçlandığı hatayı düzeltin.
- Süreksizlik bekleyen bekleyen EMSG örneklerinin
- DASH Uzantısı:
- Cast Uzantısı:
MediaQueueItem
öğesinin albüm başlığını Media3 medya öğesindeki sanatçıya dönüştüren hatayı düzeltin (#1255).
- Demo uygulama:
- Komut satırından
Intent
bağımsız değişkenle tekrarlama modunu ayarlamaya izin ver (#1266).
- Komut satırından
- Kullanımdan kaldırılan simgeleri kaldırın:
setContentTypePredicate(Predicate)
yönteminiDefaultHttpDataSource
,OkHttpDataSource
veCronetDataSource
adlı uygulamalardan kaldırın. Bunun yerine herXXXDataSource.Factory
için eşdeğer yöntemi kullanın.OkHttpDataSource
oluşturucuyu veOkHttpDataSourceFactory
öğesini kaldırın. Bunun yerineOkHttpDataSource.Factory
politikasını kullanın.PlayerMessage.setHandler(Handler)
öğesini kaldır Bunun yerinesetLooper(Looper)
politikasını kullanın.Timeline.Window.isLive
alanını kaldır. Bunun yerineisLive()
yöntemini kullanın.DefaultHttpDataSource
oluşturucuyu kaldırın. Bunun yerineDefaultHttpDataSource.Factory
kullanın.DashMediaSource.DEFAULT_LIVE_PRESENTATION_DELAY_MS
öğesini kaldır Bunun yerineDashMediaSource.DEFAULT_FALLBACK_TARGET_LIVE_OFFSET_MS
kullanın.MediaCodecInfo.isSeamlessAdaptationSupported(Format, Format, boolean)
öğesini kaldır 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.- Kaldır:
AnalyticsListener.onAudioInputFormatChanged(EventTime, Format)
,AnalyticsListener.onVideoInputFormatChanged(EventTime, Format)
,AudioRendererEventListener.onAudioInputFormatChanged(Format)
,VideoRendererEventListener.onVideoInputFormatChanged(Format)
. Bunun yerineDecoderReuseEvaluation
alan aşırı yüklemeleri kullanın. RendererSupport.FormatSupport
IntDef veFORMAT_HANDLED
,FORMAT_EXCEEDS_CAPABILITIES
,FORMAT_UNSUPPORTED_DRM
,FORMAT_UNSUPPORTED_SUBTYPE
,FORMAT_UNSUPPORTED_TYPE
sabit değerlerini kaldırın. Bunun yerine,androidx.media3.common.C
içinde eşdeğer IntDef ve sabit değerleri kullanın (ör.C.FORMAT_HANDLED
).
Sürüm 1.4.0-alpha01
17 Nisan 2024
androidx.media3:media3-*:1.4.0-alpha01
yayınlandı.
Sürüm 1.4.0-alpha01 bu kaydetmeleri içerir.
- ExoPlayer:
rankingData
tarafından tanımlanan önceliklere göre birden fazla kaynağın önceden yüklemeyi koordine edenBasePreloadManager
ekleyin. Bu sınıfın genişletilmesiyle özelleştirme yapılabilir. Kaynakların medya örneklerini belleğe önceden yüklemek içinPreloadMediaSource
ve kullanıcı arayüzündeki bir öğenin dizinini gösteren bir tam sayırankingData
kullananDefaultPreloadManager
ekleyin.- Birden çok oynatıcıyı desteklemek üzere
LoadControl
uygulamalarını etkinleştirmek için çoğuLoadControl
yönteminePlayerId
ekleyin. Buffer.isDecodeOnly()
veC.BUFFER_FLAG_DECODE_ONLY
kaldırılır. Oluşturucular ve kod çözücüler zaman damgasına göre arabellekleri atlamaya karar vereceğinden bu işareti ayarlamaya gerek yoktur. Ö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
öğesini kontrol edebilir veya diğer arabellekleriDecoderOutputBuffer.shouldBeSkipped
ile işaretleyebilir.- Verilen
rankingData
ileMediaSource
öğesinin önceden yüklenmeyeceğini belirtmek içinTargetPreloadStatusControl.getTargetPreloadStatus(T)
tarafından boş değer döndürülmesine izin verin. remove(MediaSource)
adlı yeriBasePreloadManager
alanına ekleyin.
- Dönüştürücü:
ExportResult
öğesine, çıkış dosyasındaki ilgili parçanın nasıl oluşturulduğunu belirtenaudioConversionProcess
vevideoConversionProcess
öğelerini ekleyin.- Kırpma optimizasyonu H.264 düzeyi kontrollerini gevşetin.
- SDR ve HDR giriş medyası arasında sırayla geçiş yapma desteği eklendi.
- Beste düzeyinde ses efektleri için destek ekleyin.
- Ultra HDR görüntülerin kodunu HDR videolara dönüştürme desteği eklendi.
DefaultAudioMixer
öğesinin, sıfırlanıp yeniden kullanıldıktan sonra doğru bayt miktarını oluşturmaması sorunu düzeltildi.
- Video:
- Oynatma sırasında yüzeyler arasında geçiş yaparken
Listener.onRenderedFirstFrame()
ürününün çok erken gelmesi sorunu düzeltin.
- Oynatma sırasında yüzeyler arasında geçiş yaparken
- Veri Kaynağı:
package
öğesinin mevcut uygulamanın paketinden farklı olduğuandroid.resource://package/id
ham kaynak URI'leri için destek uygulayın. Bu, daha önce işe yaradığı belgelenmemişti ancak başka bir paketteki kaynaklara erişmek için ada göre daha verimli bir yöntemdir.url
öğesinin,DataSpec
kurucularında null olmadığını dikkatlice kontrol edin. Bu parametreye zaten null olmayan bir açıklama eklendi.
- Sonuç:
SpeedChangeEffect
içinde aynıEditedMediaItem
veyaComposition
içinde birden fazla hız değişikliklerini destekleyin.- Ultra HDR bit eşlem girişinden HLG ve PQ çıkışı desteği.
- ExoPlayer.setVideoEffect ve Transformer'ın Debug SurfaceView uygulamasında HLG yüzey çıkışını iyileştiren EGL_GL_COLORSPACE_BT2020_HLG_EXT desteği eklendi.
setOverlayFrameAnchor()
içinde uygulanan x ve y değerlerini çevirerek Katman matrisi uygulamasını belgelerle tutarlı olacak şekilde güncelleyin.OverlaySettings.Builder.setOverlayFrameAnchor()
kullanıyorsanız x ve y değerlerini-1
ile çarparak çevirin.
- Oturum:
CommandButton.enabled
varsayılanınıtrue
olarak değiştirin ve ilişkili komut kullanılabilir olsa bile bu değerin kumandalar için yanlış kalabileceğinden emin olun.CommandButton
için özel simge kaynakları yerine kullanılması gereken simge sabitleri ekleyin.- Uygulamaların,
onTaskRemoved()
ürününde hizmetin durdurulması gerekip gerekmediğini sorgulamasına izin vermek içinMediaSessionService.isPlaybackOngoing()
kodunu ekleyin (#1219). - Tüm oturumların oynatılmasını kolayca duraklatmanıza olanak tanıyan
MediaSessionService.pauseAllPlayersAndStopSelf()
ekleyin veMediaSessionService
yaşam döngüsünü sonlandırmak içinstopSelf
çağrısı yapın. - Oynatma devam ediyorsa veya hizmet devam ediyorsa ön planda çalışmaya devam eden güvenli bir varsayılan uygulama sağlamak için
MediaSessionService.onTaskRemoved(Intent)
politikasını geçersiz kılın.
- İndirilenler:
DownloadHelper
hizmetinin yayınlanmamışRenderer
örneklerini sızdırmadığından emin olun. Bu durum, ileride bir uygulamanınIllegalStateException: Too many receivers, total of 1000, registered for pid
ile kilitlenmesine neden olabilir (#1224).
- Test Yardımcı Programları:
FakeRenderer
içindeonInit()
veonRelease()
uygulayın.TestPlayerRunHelper.runUntil/playUntil
yöntemlerini önemli olmayan hatalarda (ör.AnalyticsListener.onVideoCodecError
için bildirilenler) başarısız olacak şekilde değiştirin. Bu davranışı devre dışı bırakmak için yeniTestPlayerRunHelper.run(player).ignoringNonFatalErrors().untilXXX()
yöntem zincirini kullanın.
- Demo uygulama:
- Kısa biçimli demo uygulamada
DefaultPreloadManager
kullanın.
- Kısa biçimli demo uygulamada
- Kullanımdan kaldırılan simgeleri kaldırın:
CronetDataSourceFactory
öğesini kaldır Bunun yerineCronetDataSource.Factory
politikasını kullanın.- Bazı
DataSpec
oluşturucuları kaldırın. Bunun yerineDataSpec.Builder
politikasını kullanın.
Sürüm 1.3.0
Sürüm 1.3.1
11 Nisan 2024
androidx.media3:media3-*:1.3.1
yayınlandı.
Sürüm 1.3.1 bu taahhütleri 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:
- Tekrar önceden yüklendiğinde akışların
PreloadMediaPeriod
tarafından tutulamamasıyla ilgili sorun düzeltildi. - Kanal yeniden seçimlerinde oynatma dönemine karşılık gelen doğru
TrackSelectionResult
değerini uygulayın. - Erken etkinleştirilmiş oluşturucuları yalnızca medya öğeleri arasında geçiş yaparken oynatma süresini artırdıktan sonra başlatın (#1017).
DefaultVideoFrameProcessor.Factory.Builder.build()
için ProGuard-keepclasseswithmembers
kuralına eksik dönüş türünü ekleyin (#1187).
- Tekrar önceden yüklendiğinde akışların
- Dönüştürücü:
MediaMuxer
API 30'dan önceki negatif sunum zaman damgalarını desteklemediğinden atlanan istisnaya yönelik geçici çözüm ekleyin.
- Parça Seçimi:
DefaultTrackSelector
: Kare hızı düşük veya ayarlanmamış kare hızına sahip videolar yerine "makul" kare hızına (>=10 fps) sahip video parçalarını tercih edin. Bu sayede oynatıcı, biri daha yüksek çözünürlüğe ancak çok az sayıda kareye sahip iki HEVC parçası içerebilen, hareketli fotoğraflardan alınan MP4'lerdeki "gerçek" video parçasını seçer (#1051).
- Ayıklayıcılar:
- WAV dosyalarından tek boyutlu parçalar okunurken dolgunun atlanmamasına neden olan sorunu düzeltin (#1117).
- MP3:
Format.averageBitrate
öğesiniXING
veVBRI
gibi meta veri çerçevelerinden doldurun. - MPEG-TS: Bir akışın son erişim birimini örnek sırasına geçirerek son karenin oluşturulmasını hedefleyen bir değişikliği geri döndürür (#7909). Bunun nedeni, değişikliğin yalnızca I-çerçeveli HLS akışları (#1150) ve H.262 HLS akışları (#1126) ile ilgili yeni sorunlara yol açmasıdır.
- Ses:
- Boşaltma modunda ses parçası başlatılamazsa boşaltma işlevini devre dışı bırakarak oluşturucu kurtarmaya izin verin.
- Video:
- Galaxy Tab S7 FE, Google TV'li Chromecast ve Lenovo M10 FHD Plus'ta 60 fps H265 akışlarının "desteklenmiyor" olarak işaretlenmesine neden olan bir cihaz sorunu için geçici çözüm ekleyin
- Cihaz bunu API'nin gerektirdiği şekilde otomatik olarak yapmasa bile tünel oluştururken ilk karenin her zaman oluşturulmasını sağlayan geçici bir çözüm ekleyin (#1169). (#966).
- HDR renk bilgisi işlemenin codec yanlış davranışına neden olduğu ve SDR video kanalları için uyarlanabilir biçim geçişlerini engellediği sorunu düzeltin (#1158).
- Kısa mesaj:
- WebVTT: Doğrudan ardışık işaretlerin
WebvttParser.parse
kaynağından yapay ekCuesWithTiming
örnekleri oluşturmasını engelleyin (#1177).
- WebVTT: Doğrudan ardışık işaretlerin
- DRM:
- Bazı Android 14 cihazlarda
ResourceBusyException
veyaNotProvisionedException
yerineMediaDrm
çerçevesinin atabileceğiNoSuchMethodError
sorununu çözümleyin (#1145).
- Bazı Android 14 cihazlarda
- Sonuç:
- Renk alanlarını dönüştürerek PQ'dan SDR ton eşlemeye iyileştirme.
- Oturum:
- Kullanıcı arayüzü:
Locale
, görünen adı tanımlayamazsa (#988) ses parçası dil adını eklemek için yedek kullanılır.
- DASH Uzantısı:
- Manifest'teki tüm
Label
öğeleriniFormat.labels
öğesine doldurun (#1054).
- Manifest'teki tüm
- RTSP Uzantısı:
- SDP ayrıştırmasında boş oturum bilgisi değerlerini (i-etiketler) atlayın (#1087).
- Kod Çözücü Uzantıları (FFmpeg, VP9, AV1, MIDI vb.):
- Ek bir Maven deposunun yapılandırılmasını gerektirdiğinden MIDI uzantısını varsayılan olarak yerel bağımlılık olarak devre dışı bırakın. Bu modüle bir yerel bağımlılıktan ihtiyaç duyan kullanıcılar bunu yeniden etkinleştirebilir.
Sürüm 1.3.0
6 Mart 2024
androidx.media3:media3-*:1.3.0
yayınlandı.
Sürüm 1.3.0 bu taahhütleri içerir.
- Ortak Kitaplık:
package
değerinin mevcut uygulamanın paketinden farklı olduğuandroid.resource://package/[type/]name
ham kaynak URI'leri için destek uygulayın. Bu yöntemin işe yaradığı zaten belgelenmiş olsa da şimdiye kadar doğru bir şekilde uygulanmadı.- Uygulama kodu tarafından ayarlanan MIME türlerini normalleştirin veya medyadan tamamen küçük harf olacak şekilde okuyun.
AdPlaybackState
içinde tek birUri
yerine tamMediaItem
içeren reklamları 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 son sürümlerine yükseltmemiz için gereklidir.- En az biri null olmadığında hem
artworkUri
hem deartworkData
öğesiniMediaMetadata.Builder.populate(MediaMetadata)
içinde doldurun (#964).
- ExoPlayer:
- Uygulamaların bir içerik medya kaynağını oynatmadan önce belirli bir başlangıç konumunda önceden yüklemesine olanak tanıyan
PreloadMediaSource
vePreloadMediaPeriod
özelliklerini ekleyin.PreloadMediaSource
, içerik medya kaynağınıTimeline
almak için hazırlar, dönemi belirtilen başlangıç konumunda hazırlar ve önbelleğe alır, kanalları seçer ve dönem için medya verilerini yükler. Uygulamalar,PreloadMediaSource.PreloadControl
uygulayarak önceden yüklemenin ilerleme durumunu kontrol eder ve önceden yüklenmiş kaynağı oynatma için oynatıcıya ayarlar. - Uygulamaların
ImageRenderer.ImageOutput
özelliğini ayarlamasına izin verenExoPlayer.setImageOutput
ekleyin. DefaultRenderersFactory
, artık oynatıcıya varsayılan olarak nullImageOutput
veImageDecoder.Factory.DEFAULT
ile birImageRenderer
sağlıyor.- Ses kapatma atlandığında
Player.Listener.onPositionDiscontinuity
etkinliği yayınlayın (#765). - Ayıklama sırasında altyazıların ayrıştırılması için deneysel destek ekleyin. Bu özelliği
MediaSource.Factory.experimentalParseSubtitlesDuringExtraction()
kullanarak etkinleştirebilirsiniz. PreloadMediaSource
ile uyarlanabilir medya kaynaklarını destekleyin.- HttpEngine API'sini kullanarak
HttpEngineDataSource
,HttpDataSource
uygulayın. CompositeSequenceableLoader
alt sınıflandırmasını engelleyin. Bu bileşen daha önce genişletilebilir hale getirilmiş ancak hiçbir zaman kitaplıkta alt sınıflandırılmamıştı. Özelleştirmeler, dekoratör kalıbı aracılığıyla bir örneği sarmalayıp özelCompositeSequenceableLoaderFactory
uygulayarak yapılabilir.- Aynı zamanı tekrar etmenin bu öğedeki meta verilerin silinmesine neden olduğu sorunu düzeltin (#1007).
BundledChunkExtractor.Factory
veDefaultHlsExtractorFactory
üzerindekiexperimentalSetSubtitleParserFactory
yöntemlerinisetSubtitleParserFactory
olarak yeniden adlandırın venull
yönteminin aktarılmasına 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
öğesinin özelleştirilmesi için destek ekleyin. Bu,MediaSource.Factory.setSubtitleParserFactory()
ile elde edilebilir. MergingMediaSource
öğesinden oluşturulan tümFormat.id
alanlarına kaynak ön eki ekleyin. Bu, hangi kaynağınFormat
ürettiğini belirlemeye yardımcı olur (#883).- Özel Ortak Medya İstemci Verileri (CMCD) anahtar adlarını doğrulamak için kullanılan normal ifadeyi, yalnızca kısa çizgiyi (#1028) kontrol edecek şekilde değiştirerek düzeltin.
- CMCD sorgu parametrelerini çift kodlamayı durdurun (#1075).
- Uygulamaların bir içerik medya kaynağını oynatmadan önce belirli bir başlangıç konumunda önceden yüklemesine olanak tanıyan
- Dönüştürücü:
- H.265/HEVC SEF ağır çekim videolarını düzeltmek için destek ekleyin.
- Özellikle "video kaldır" düzenlemelerinde işlem hızını artırın.
- Çıkış dosyasının bir video karesinde başladığından emin olmak için API ekleyin. Bu, kırpma işlemlerinin sonucunu, sunum zaman damgasına (#829) kadar ilk video karesini göstermeyen oynatıcı uygulamalarıyla daha uyumlu hale getirebilir.
- Tek öğeli MP4 kırpma işlemlerini optimize etmek için destek 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 çerçeveyle başlayan çıkış dosyalarını düzeltir (#829).
- Parça Seçimi:
- Resim parçası seçimini etkinleştirmek için
DefaultTrackSelector.selectImageTrack
ekleyin. - Hem resim kanalı hem de video kanalı mevcutsa resim kanalı seçip seçmeyeceğinizi belirlemek için
TrackSelectionParameters.isPrioritizeImageOverVideoEnabled
ekleyin. Varsayılan değerfalse
, video kanalı seçmeye ö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 ayıklayıcıya ek AV1C ayrıştırma işlemi ekleyin (#692).- MP3:
Info
başlığına (Xing
üstbilgisinin CBR eşdeğeri) sahip dosyaları aramak için sabit bit hızı (CBR) kullanın. Daha önce arama tablosunuInfo
başlığından kullanıyorduk, ancak bu durum, dosyayı yoksayıp dosyanın CBR olduğunu varsaydığımıza kıyasla daha az hassas aramayla sonuçlanıyor. - MPEG2-TS: DTS, DTS-LBR ve DTS:X Profile2 desteğini ekleyin (#275).
- TS tanımlayıcılarından ses türlerini ayıklayın ve rol işaretleriyle eşleyin. Böylece kullanıcılar daha bilinçli ses parçası seçimleri yapabilir (#973).
- Ses:
- Video:
VideoFrameProcessor.Factory
bağımsız değişkenini alanMediaCodecVideoRenderer
oluşturucuyu değiştirin ve bunu,VideoSinkProvider
bağımsız değişkeni alan bir oluşturucuyla değiştirin. ÖzelVideoFrameProcessor.Factory
eklemek isteyen uygulamalar, özelVideoFrameProcessor.Factory
kullanan birCompositingVideoSinkProvider
örneği oluşturabilir ve video havuzu sağlayıcısınıMediaCodecVideoRenderer
hizmetine iletebilir.
- Kısa mesaj:
DefaultExtractorsFactory.setTextTrackTranscodingEnabled
kullanılırkenTried to marshall a Parcel that contained Binder objects
hatasının çözülmesi için bit eşlem ipuçlarının serileştirilmesini düzeltin (#836).- CEA-708:
rowLock
değerini yoksayın. CEA-708-E S-2023 spesifikasyonunda, akışta bulunan değerler ne olursa olsunrowLock
vecolumnLock
değerlerinin doğru olarak kabul edilmesi gerektiği belirtilmektedir (columnLock
desteği uygulanmadığından etkin bir şekilde her zaman yanlış olduğu varsayılır).
- Resim:
- DASH küçük resimleri için destek ekleyin. Izgara resimleri kırpılır ve
ImageOutput
için sunum saatlerine yakın bir zamanda ayrı küçük resimler sağlanır.
- DASH küçük resimleri için destek ekleyin. Izgara resimleri kırpılır ve
- DRM:
- Daha sonraki şifrelenmiş örneklerin anahtarları henüz hazır olmasa bile, DRM içeriğindeki "potansiyel müşteri" şifrelenmemiş örnekleri varsayılan olarak hemen oynatın. Bu durum, oynatma konumu şifrelenmiş örneklere ulaştığında anahtarlar hâlâ hazır olmadığında oynatma ortasında duraklamalara neden olabilir (ancak daha önce oynatma, o zamana kadar hiç başlamamış olabilirdi). Bu davranış
MediaItem.DrmConfiguration.Builder.setPlayClearContentWithoutKey
veyaDefaultDrmSessionManager.Builder.setPlayClearSamplesWithoutKeys
ile devre dışı bırakılabilir.
- Daha sonraki şifrelenmiş örneklerin anahtarları henüz hazır olmasa bile, DRM içeriğindeki "potansiyel müşteri" şifrelenmemiş örnekleri varsayılan olarak hemen oynatın. Bu durum, oynatma konumu şifrelenmiş örneklere ulaştığında anahtarlar hâlâ hazır olmadığında oynatma ortasında duraklamalara neden olabilir (ancak daha önce oynatma, o zamana kadar hiç başlamamış olabilirdi). Bu davranış
- IMA uzantısı:
- Uygun dosya uzantısına sahip olmayan DASH ve HLS reklamlarının oynatılamadığı sorunu düzeltin.
- Oturum:
- TV uygulamaları için çift tıklama algılamayı devre dışı bırakın (#962).
- Yalnızca boş olmayan ekstralara sahip
MediaItem.RequestMetadata
öğesinin medya denetleyicileri ve oturumlar arasında iletilmemesiyle ilgili sorunu düzeltin. MediaLibrarySession.Builder
öğesineMediaLibraryService
yerine yalnızcaContext
alabilen oluşturucu ekleyin.
- HLS Uzantısı:
HlsMediaPeriod
değerini paket içinde gizli hale getirin. Bu tür, HLS paketinin dışından doğrudan bağlı olmamalıdır.- Çözüm, bir segmentin daha verimli bir şekilde başlamasını amaçlar (#1031).
- Kod Çözücü Uzantıları (FFmpeg, VP9, AV1, MIDI vb.):
- MIDI kod çözücü: SysEx etkinlik mesajlarını yoksayın (#710).
- Test Yardımcı Programları:
TestPlayerRunHelper.playUntilPosition
içinde oynatmayı duraklatma Test, oynatmayı oynatma durumunda tutar ancak test, onaylama ve başka işlemler ekleyene kadar ilerlemeyi askıya alır.
- Demo uygulama:
- Kısa içerik kullanım alanıyla
PreloadMediaSource
kullanımını göstermek için kısa biçimli bir demo modülü ekleyin.
- Kısa içerik kullanım alanıyla
Sürüm 1.3.0-rc01
22 Şubat 2024
1.3.0 kararlı sürümünü kullanın.
Sürüm 1.3.0-beta01
7 Şubat 2024
1.3.0 kararlı sürümünü kullanın.
Sürüm 1.3.0-alpha01
15 Ocak 2024
1.3.0 kararlı sürümünü kullanın.
Sürüm 1.2.0
Sürüm 1.2.1
9 Ocak 2024
- ExoPlayer:
LiveConfiguration.min/maxOffset
aralığının dışında yapılan manuel aramalar için ofseti tekrarmin/maxOffset
değerine ayarlamaya devam etme sorunu düzeltildi.- 3, 5, 6, 7 ve 8 kanalda OPUS ve VORBIS kanal düzenlerinin yanlış olması sorununu düzeltin (#8396).
- Canlı yayında sıfıra sarıldıktan sonra parça seçimlerinin hatalı şekilde yayının varsayılan konumunda başlamasına neden olan sorunu düzeltin (#9347).
- Yeni
CmcdData.Factory
örneklerinin, parça kaynaklarındanbufferedDurationUs
için negatif değerler almasıyla sonuçlanan sorunu düzeltin (#888).IllegalArgumentException
- Dönüştürücü:
- Yüksek bir çalışma hızı ayarlanması nedeniyle kodlayıcının yapılandırma sırasında gönderdiği bir soruna çözüm bulun.
- Ayıklayıcılar:
- JPEG hareketli fotoğraflarındaki ikincil (oynatılamayan) HEVC parçaları
ROLE_FLAG_ALTERNATE
olarak işaretleyin. Bu sayede, yüksek çözünürlükleri nedeniyle oynatma için otomatik olarak seçilirler. - TS H264 akışları için yanlış animasyon karesi algılamayı düzeltin (#864).
- 4.7.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ı
- Ses:
- Birden fazla kez çağrıldığında
SilenceSkippingAudioProcessor
için EOS işleminin işlenmesi düzeltildi (#712).
- Birden fazla kez çağrıldığında
- Video:
- Galaxy Tab S7 FE, Google TV'li Chromecast ve Lenovo M10 FHD Plus'ta 60 fps AVC akışlarının desteklenmiyor olarak işaretlenmesine neden olan bir cihaz sorunu için geçici çözüm ekleyin (#693).
- Üst veri:
MediaMetadata
değerinin Vorbis yorumlarında yalnızca büyük harf anahtarlarla doldurulduğu hatayı düzeltin (#876).- Çok büyük ID3 karelerini ayrıştırırken
OutOfMemoryError
yakalayın. Diğer bir deyişle, oynatma tamamen başarısız olmak yerine etiket bilgileri olmadan devam edebilir.
- DRM:
- Sahte NetKey
https://default.url
lisans URL'si için geçici çözümü API 33 ve sonraki sürümleri içerecek şekilde genişletin (daha önce bu çözüm yalnızca API 33'te tam olarak uygulanıyordu) (#837). - Oynatıcıya bağlı bir yüzey olmadan şifrelenmiş içerikten temiz içeriğe geçiş yaparken
ERROR_DRM_SESSION_NOT_OPENED
hatasını düzeltin. Bu hata, temiz içeriği oynatmak için güvenli bir kod çözücünün yanlış bir şekilde kullanılmasından kaynaklanmıştır.
- Sahte NetKey
- Oturum:
MediaMetadataCompat
içindeki özel anahtarları ve değerleriMediaMetadata.extras
öğesine,MediaMetadata.extras
öğesine deMediaMetadataCompat
öğesine (#756, #802) yerleştirin.- Eski kumandalarda
notifyChildrenChanged
yayınını düzeltin (#644). - Bildirimin devre dışı bırakılmış
setWhen
zamanlayıcısı için negatif bir zaman ayarlamanın bazı cihazlarda kilitlenmeye neden olduğu hata düzeltildi (#903). - İlk bildirim güncellemesi istendiğinde medya bildirim denetleyicisinin bağlanma işlemini tamamlamaması durumunda
IllegalStateException
sorununu düzeltin (#917).
- Kullanıcı arayüzü:
- DASH Uzantısı:
- DASH manifest'inde Dolby için "f800"ü kanal sayısı olarak 5 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üklenirken uygulamanın kilitlenmemesi için
Timeline
oluşturma işlemini temizleyin (#708).
- Yayın cihazında medya yüklenirken uygulamanın kilitlenmemesi için
Sürüm 1.2.0
15 Kasım 2023
- Ortak Kitaplık:
Log.Logger
arayüzündeki yöntemlere@Nullable Throwable
parametresi ekleyin. Bu yöntemlerinmessage
parametresi artıkLog.{d,i,w,e}()
yöntemlerine aktarılanThrowable
hakkında herhangi bir bilgi içermemektedir. Bu nedenle, gerekirse uygulamaların bu bilgileri manuel olarak eklemesi gerekir (büyük olasılıklaLogger.appendThrowableString(String, Throwable)
kullanılarak).- Boş değer atanabilir genel tür parametreleri ve boş değer atanabilir dizi öğesi türlerinin boş değer olarak algılanmadığı Kotlin uyumluluk sorununu düzeltin. Örnek olarak
TrackSelectorResult
veSimpleDecoder
yöntem parametreleri verilebilir (#6792). - Oynatma geçici olarak basıldığında (ör. geçici ses odağı kaybı nedeniyle)
Util.shouldShowPlayButton
uygulamasındaki varsayılan kullanıcı arayüzü ve bildirim davranışını, "oynat" düğmesi gösterilecek şekilde değiştirin. Eski davranış,PlayerView.setShowPlayButtonIfPlaybackIsSuppressed(false)
veyaMediaSession.Builder.setShowPlayButtonIfPlaybackIsSuppressed(false)
(#11213) kullanılarak korunabilir. - https://issuestracker.google.com/251172715'i düzeltmek için
androidx.annotation:annotation-experimental
numarasını1.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 tanımlanmamasından kaynaklanan AC4 akışlarında arama sorunlarını düzeltme (#11000).
- Bu özellik
ExoPlayer.Builder.setSuppressPlaybackOnUnsuitableOutput
aracılığıyla etkinleştirildiğinde uygun olmayan ses çıkış cihazlarında (ör. Wear OS cihazlardaki yerleşik hoparlör) çalmayı engelleme ekleyin. Uygun ses çıkışı olmadığında oynatma işlemi denenirse veya oynatma sırasında tüm uygun çıkışların bağlantısı kesilirse çalmayı engelleme nedeniPlayer.PLAYBACK_SUPPRESSION_REASON_UNSUITABLE_AUDIO_OUTPUT
olarak güncellenir. Uygun bir çıkış bağlandığında engelleme nedeni kaldırılır. Player.replaceMediaItem(s)
üzerinden oluşturulduktan sonraMediaItem
güncellemelerini kabul etmek içinMediaSource.canUpdateMediaItem
veMediaSource.updateMediaItem
öğelerini ekleyin.- Kitaplık tarafından
Player.replaceMediaItem(s)
aracılığıyla sağlanan tümMediaSource
sınıfları içinMediaItem
güncellemelerine izin ver (#33, #9978). MimeTypes.TEXT_EXOPLAYER_CUES
öğesinin adınıMimeTypes.APPLICATION_MEDIA3_CUES
olarak değiştirin.- Tüm PNG dosyasını gönderen ve okuyan
PngExtractor
öğesiniTrackOutput
içine tek bir örnek olarak ekleyin. SequenceableLoader
arayüzündeSequenceableLoader.continueLoading(long)
yöntemini iyileştirerekSequenceableLoader.continueLoading(LoadingInfo loadingInfo)
yapın.LoadingInfo
, mevcutplaybackPositionUs
parametresine ek olarakplaybackSpeed
velastRebufferRealtimeMs
dahil olmak üzere ek parametreler içerir.ChunkSource
arayüzündeChunkSource.getNextChunk(long, long, List, ChunkHolder)
yöntemini iyileştirerekChunkSource.getNextChunk(LoadingInfo, long, List, ChunkHolder)
yapın.- Ortak Medya İstemci Verileri (CMCD) günlük kaydına şu ek alanlar ekleyin: arabellek açma (
bs
), son tarih (dl
), oynatma hızı (pr
) ve başlatma (su
) (#8699). ColorInfo
öğesine luma ve renk bit derinliği ekleyin (#491).- Ortak Medya İstemci Verileri (CMCD) günlük kaydına ek alanlar ekleyin: sonraki nesne isteği (
nor
) ve sonraki aralık isteği (nrr
) (#8699). - Sorgu parametrelerini (#553) kullanarak Ortak Medya İstemci Verileri (CMCD) verilerini iletme işlevi ekleyin.
ExperimentalBandwidthMeter
içinConcurrentModificationException
hatasını düzeltin (#612).CompositeMediaSource.getMediaTimeForChildMediaTime
kampanyasınaMediaPeriodId
parametresini ekleyin.ConcatenatingMediaSource2
içindeClippingMediaSource
(ve dönem/aralık zaman sapmaları olan diğer kaynaklar) desteği (#11226).MediaPeriodId
bağımsız değişkeni de almak içinBaseRenderer.onStreamChanged()
değerini değiştirin.
- Dönüştürücü:
- Resim girişleri için EXIF döndürme verilerini ayrıştırın.
TransformationRequest.HdrMode
ek açıklama türünü ve ilişkili sabit değerlerini kaldırın. Bunun yerineComposition.HdrMode
ve ilişkili sabit değerlerini kullanın.- Rotasyon 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 değer, şu ankitrue
davranışında kalır.
- 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 geçirerek son karenin oluşturulmasını sağlar (#7909).
rotationDegrees
belirlenirken yazım hatalarını düzeltin.projectionPosePitch
,projectionPoseRoll
olarak değiştirildi (#461).Extractor
örneklerinininstanceof
ile doğrudan incelenebileceği varsayımını kaldırın. BirExtractor
öğesinin uygulama ayrıntılarına çalışma zamanında erişmek istiyorsanız önceExtractor.getUnderlyingInstance
yöntemini çağırmanız gerekir.BmpExtractor
ekleyin.WebpExtractor
ekleyin.HeifExtractor
ekleyin.Mp4Extractor
hizmetine QuickTime klasik desteğini ekleyin.
- Ses:
- MP4 ve Matroska'da 24/32 bit büyük 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 ekleyin.
- Havuzun biçim için
DefaultAudioOffloadSupportProvider
aracılığıyla sağlayabileceği yük kaldırma desteği düzeyini alanAudioSink.getFormatOffloadSupport(Format)
ekleyin.isFormatSupported
,isGaplessSupported
veisSpeedChangeSupported
içeren yeniAudioOffloadSupport
değerini döndürür. - Ses havuzundaki yük boşaltma yapılandırmasının yapılandırılacağı
AudioSink.setOffloadMode()
ekleyin.AudioSink.OFFLOAD_MODE_DISABLED
varsayılandır. - Boşaltma,
TrackSelectionParameters
içindekisetAudioOffloadPreference
aracılığıyla etkinleştirilebilir. Ayarlanan tercih "etkinleştirme" ise cihaz, biçim için yük aktarımını destekler 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 parçanın biçimi aktarımda destekleniyorsa seçilir. Yükleme sırasında hiçbir ses parçası desteklenmiyorsa hiçbir parça seçilmez.- Kanal geçişinden sonra oynatma konumu sorunu nedeniyle API düzeyi 33 öncesi sürümlerde yük boşaltma desteği devre dışı bırakılıyor.
enableOffload
parametresiniDefaultRenderersFactory.buildAudioSink
yöntem imzasından kaldırın.DefaultAudioSink.Builder.setOffloadMode
yöntemini kaldır.- intdef değerini kaldırın
DefaultAudioSink.OffloadMode.OFFLOAD_MODE_ENABLED_GAPLESS_DISABLED
. - Boşaltma oynatma sırasında Opus boşluksuz meta verileri için destek eklendi.
- İlk yazmada başarısız olursa boşaltmayı devre dışı bırakarak oluşturucu kurtarmaya izin verin (#627).
- Boşaltma Planlaması'nı varsayılan olarak, yalnızca ses kaynağından boşaltılmış oynatma için etkinleştirin.
ExoPlayer.experimentalSetOffloadSchedulingEnabled
veAudioOffloadListener.onExperimentalOffloadSchedulingEnabledChanged
öğelerini silin.onExperimentalSleepingForOffloadChanged
,onSleepingForOffloadChanged
veonExperimentalOffloadedPlayback
iseonOffloadedPlayback
olarak yeniden adlandırıldı.- Ses boşaltma moduyla ilgili
TrackSelectionParameters
arayüzlerini ve tanımlarını dahili birAudioOffloadPreferences
sınıfına taşıyın. AnalyticsListener
,AudioRendererEventListener
veAudioSink.Listener
adlı kullanıcılaraonAudioTrackInitialized
veonAudioTrackReleased
geri çağırması ekleyin.- DTS Express ses arabelleği yetersizliği sorununu düzeltin (#650).
- Özelliklerin E-AC3-JOC'nin kontrol ettiği
IllegalArgumentException
hatasını düzeltme (#677).
- MP4 ve Matroska'da 24/32 bit büyük PCM desteği ekleyin ve MP4'te
- Video:
MediaCodecVideoRenderer
sitesinin özel birVideoFrameProcessor.Factory
kullanmasına izin ver.- Ses akışı negatif zaman damgalarıyla başlıyorsa ilk karenin oluşturulamadığı hatayı düzeltin (#291).
- Kısa mesaj:
ExoplayerCuesDecoder
öğesini kaldırsampleMimeType = application/x-media3-cues
içeren metin kanalları artıkSubtitleDecoder
örneğine gerek kalmadan doğrudanTextRenderer
tarafından işleniyor.
- Üst veri:
- Uygulamanın yine de null döndürmesi gerektiğinden
MetadataDecoder.decode
artık "yalnızca kod çözme" örnekleri için çağrılmayacak.
- Uygulamanın yine de null döndürmesi gerektiğinden
- Sonuç:
- Zaman damgasına göre
VideoFrameProcessor.queueInputBitmap(Bitmap, Iterator<Long>)
sıraya ekleme bit eşlem girişini ekleyin. VideoFrameProcessor.registerInputStream()
değerini engellemeyecek şekilde değiştirin. UygulamalarVideoFrameProcessor.Listener#onInputStreamRegistered()
.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 DASH canlı yayınının istisnaya neden olabileceği hatayı düzeltin (#571).
AdsLoader.destroy()
çağrısından önce StreamManager'ı bırakın- IMA SDK sürümünü 3.31.0'a yükseltin.
- Oturum:
DefaultMediaNotificationProvider
içinde bildirimler ön plan hizmet davranışınıFOREGROUND_SERVICE_IMMEDIATE
olarak ayarlayın (#167).- Samsung cihazlarda desteği sonlandırılmış API'yle ilgili sorunları önlemek için yalnızca
android.media.session.MediaSession.setMediaButtonBroadcastReceiver()
API 31'in üzerinde kullanın (#167). - Mevcut komutları ve bildirimi ve platform oturumunu doldurmak amacıyla kullanılan özel düzeni ayarlamak için medya bildirim denetleyicisini proxy olarak kullanın.
MediaSessionService.onStartCommand()
tarafından medya3 içinde alınan medya düğmesi etkinliklerini, platform oturumuna ve tekrar Media3'e yönlendirmek yerine dönüştürün. Bu özellikle, çağrı denetleyicisi her zaman medya bildirim denetleyicisidir ve uygulamalar, desteklenen tüm API düzeylerinde aynı şekilde bildirimden gelen çağrıları kolayca tanıyabilir.- Eski bir
MediaSessionCompat
cihazına bağlandığındaMediaController.getCurrentPosition()
ürününün ilerlememesi hatasını düzeltin. MediaLibrarySession.getSubscribedControllers(mediaId)
ekleyin.- Denetleyicinin abone olduğu üst kimliğin kullanılabilirliğini doğrulamak için
MediaLibrarySession.Callback.onSubscribe()
değerini geçersiz kılın. Başarılı olursa abonelik kabul edilir ve tarayıcıya hemennotifyChildrenChanged()
çağrılır (#561). - Automotive OS için oturum demo modülü ekleyin ve Android Auto için oturum demosunu etkinleştirin.
- Medya bildirim denetleyicisinde
COMMAND_GET_TIMELINE
kullanılamadığında çerçeve oturumunun sırasını ayarlamayın. Android Auto, çerçeve oturumundan istemci denetleyicisi olarak okuma yaptığında bu durum, Android Auto'nun kullanıcı arayüzündekiqueue
düğmesinin gösterilmemesine neden olur (#339). SimpleBitmapLoader
yerine varsayılan olarakDataSourceBitmapLoader
kullanın (#271, #327).- Uygulamaların varsayılan medya düğmesi etkinlik işlemesini geçersiz kılmasına izin veren
MediaSession.Callback.onMediaButtonEvent(Intent)
ekleyin.
- Kullanıcı arayüzü:
- Kullanıcının uygun bir ses çıkışı (ör. Bluetooth kulaklık) bağlayabilmesi için sistem iletişim kutusunu başlatarak Wear OS cihazlara
Player.PLAYBACK_SUPPRESSION_REASON_UNSUITABLE_AUDIO_OUTPUT
nedeniyle oynatma engelleme işlemini yürüten birPlayer.Listener
uygulaması ekleyin. Dinleyici, yapılandırılabilir bir zaman aşımı süresi içinde uygun bir cihaz bağlanırsa oynatmayı otomatik olarak devam ettirir (varsayılan değer 5 dakikadır).
- Kullanıcının uygun bir ses çıkışı (ör. Bluetooth kulaklık) bağlayabilmesi için sistem iletişim kutusunu başlatarak Wear OS cihazlara
- İndirilenler:
- Android 14 uyumluluğu için
DownloadService
ile ilgili "veri senkronizasyonu" ön plan hizmet türünü tanımlayın. Bu hizmet kullanılırken uygulamanın manifest dosyasınadataSync
öğesiniforegroundServiceType
olarak eklemesi veFOREGROUND_SERVICE_DATA_SYNC
iznini eklemesi gerekir (#11239).
- Android 14 uyumluluğu için
- HLS Uzantısı:
- HLS canlı oynatma listesini, son yükleme işleminin tamamlandığı zaman (#663) yerine son yükleme başlangıç zamanından hesaplanan bir aralıkla yenileyin.
- DASH Uzantısı:
- Segment şablonu URL'sinde aynı DASH tanımlayıcısına izin verin.
- Ayıklama sırasında altyazıların ayrıştırılması için deneysel destek ekleyin. Bu özellik, altyazı segmentleri arasında geçiş yaparken oluşan titremeleri giderme de dahil olmak üzere çakışan altyazıların birleştirilmesi için daha iyi destek sunar. Bunu
DashMediaSource.Factory.experimentalParseSubtitlesDuringExtraction()
kullanarak etkinleştirebilirsiniz (#288).
- RTSP Uzantısı:
- TCP'ye geri dönüldüğünde veya bazı durumlarda oynatmanın askıya alınması durumunda
IndexOutOfBoundsException
'e yol açabilecek bir yarış durumunu düzeltin. RtspMediaPeriod
yükleme durumunu döndürürken RTSP ayarlarında durumu kontrol edin (#577).- Seçenekler yanıtı herkese açık başlığında özel Rtsp isteği yöntemlerini yoksayın (#613).
- Canlı tutma RTSP Seçenekleri isteklerinin gönderildiği zaman aralığında RTSP Kurulum Yanıtı zaman aşımı değerini kullanın (#662).
- TCP'ye geri dönüldüğünde veya bazı durumlarda oynatmanın askıya alınması durumunda
- Kod Çözücü Uzantıları (FFmpeg, VP9, AV1, MIDI vb.):
- Ses sentezlemek için Jsyn kitaplığını kullanarak standart MIDI dosyalarının çalınmasını destekleyen MIDI kod çözücü modülünü kullanıma sunun.
- Sunulması gerekmeyen çıkış arabelleklerini doğrudan işaretlemek için
DecoderOutputBuffer.shouldBeSkipped
ekleyin. Bu, desteği sonlandırılacakC.BUFFER_FLAG_DECODE_ONLY
yerine tercih edilir. - Kod çözücülerin yalnızca kod çözme amaçlı örnekleri başlangıç zamanından önce bırakmasına izin vermek için
Decoder.setOutputStartTimeUs
veSimpleDecoder.isAtLeastOutputStartTimeUs
ekleyin. Bu, desteği sonlandırılacakBuffer.isDecodeOnly
tercih edilmelidir. - MIDI kod çözücü yapısını Maven deposuna yayınlarken yapılan hata düzeltildi. Yapı,
media3-exoplayer-midi
olarak yeniden adlandırılır (#734).
- Leanback uzantısı:
- Bir yüzeyin devre dışı bırakılmasının Leanback kodunda
ArithmeticException
oluşmasına neden olabileceği hatayı düzeltin (#617).
- Bir yüzeyin devre dışı bırakılmasının Leanback kodunda
- Test Yardımcı Programları:
TestExoPlayerBuilder
veFakeClock
öğelerini Espresso kullanıcı arayüzü testleri ve Compose kullanıcı arayüzü testleriyle uyumlu hale getirin. Bu hata, Espresso veya Compose görüntüleme etkileşimleri sırasında oynatmanın belirsiz bir şekilde ilerlemesine neden olan hatayı düzeltir.
- Kullanımdan kaldırılan simgeleri kaldırın:
- Kaldır
TransformationRequest.Builder.setEnableRequestSdrToneMapping(boolean)
veTransformationRequest.Builder.experimental_setEnableHdrEditing(boolean)
. Bunun yerineComposition.Builder.setHdrMode(int)
kullanın veComposition
öğesiniTransformer.start(Composition, String)
öğesine iletin. - Desteği sonlandırılan
DownloadNotificationHelper.buildProgressNotification
yöntemini kaldırın. Bunun yerine,notMetRequirements
parametresi alan, desteği sonlandırılmamış bir yöntem kullanın.
- Kaldır
Sürüm 1.2.0-rc01
1 Kasım 2023
1.2.0 kararlı sürümü kullanın.
Sürüm 1.2.0-beta01
19 Ekim 2023
1.2.0 kararlı sürümü kullanın.
Sürüm 1.2.0-alpha02
29 Eylül 2023
1.2.0 kararlı sürümü kullanın.
Sürüm 1.2.0-alpha01
17 Ağustos 2023
1.2.0 kararlı sürümü 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 sahte
PlaybackStats
oluşturulduğuPlaybackStatsListener
sorunu düzeltildi. - Ortak Medya İstemci Verileri (CMCD) günlük kaydına şu ek alanları ekleyin: akış biçimi (sf), akış türü (st), sürüm (v), en üst birate (tb), nesne süresi (d), ölçülen işleme hızı (mtp) ve nesne türü (ot) (#8699).
- Oynatma listesi temizlendikten sonra sahte
- Ses:
- Çok kısa dosyalar oynatırken
Player.getState()
ürününün hiçbir zamanSTATE_ENDED
ürününe geçmemesine neden olan hatayı düzeltin (#538).
- Çok kısa dosyalar oynatırken
- Ses Aktarımı:
- RFC 7845'e uygun olarak, boşaltılmış Opus oynatma için bit akışının başına Ogg Kimliği ve Yorum Üstbilgisi Sayfalarını ekleyin.
- Video:
- H.265/HEVC: SPS kısa ve uzun vadeli referans resmi bilgilerini ayrıştırma sorunu düzeltildi.
- Kısa mesaj:
- CEA-608: İşaret kesme mantığını yalnızca görünür metinleri dikkate alacak şekilde değiştirin. Daha önce, işaret uzunluğu 32 karakterle sınırlanırken girinti ve sekme ofseti ekleniyordu (bu özellik spesifikasyonda teknik olarak 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 bu düzene erişmesi için bir alıcı sağlayın. Özel düzen değiştiğinde
MediaController.Listener.onCustomLayoutChanged
çağrılır. Farklı Media3 denetleyicisine farklı özel düzenler göndermek isteyen uygulamalar, bağlantı tamamlandığında özel düzenin denetleyici tarafından kullanılabilmesini sağlamak içinAcceptedResultBuilder
kullanarakMediaSession.Callback.onConnect
içinde bunu yapabilir. MediaLibraryServiceLegacyStub
ürününün, bu işlemi desteklemeyen birResult
öğesineUnsupportedOperationException
(#78) hatası gönderdiği durumları düzeltin.- Hem eski komutlarla (
COMMAND_ADJUST_DEVICE_VOLUME
veCOMMAND_SET_DEVICE_VOLUME
) hem de yeni komutlarla (COMMAND_ADJUST_DEVICE_VOLUME_WITH_FLAGS
veCOMMAND_SET_DEVICE_VOLUME_WITH_FLAGS
) (#554)volumeControlType
değerini belirleyerekPlayerWrapper
öğesininVolumeProviderCompat
oluşturma yöntemini düzeltin.
- Denetleyicinin durumuna özel düzen ekleyin ve bu düzene erişmesi 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:
- Ses rotasının uygun olmaması için engelleme nedeni ekleyin ve hazır olduğunda, çok uzun süre engellenme nedenini değiştirin. (#15).
- Oynatıcıya komut ekleyin:
COMMAND_GET_METADATA
COMMAND_SET_PLAYLIST_METADATA
COMMAND_SET_DEVICE_VOLUME_WITH_FLAGS
COMMAND_ADJUST_DEVICE_VOLUME_WITH_FLAGS
- Player'a, kullanıcıların ses seviyesi işaretleri belirtmesine olanak tanıyan aşırı yüklenen yöntemler 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.- Uzaktan oynatmalar için yönlendirme denetleyicisi kimliğini belirtmek üzere
DeviceInfo.routingControllerId
ekleyin. - Aynı konuma öğe ekleyip kaldırmak için kısayol olarak
Player.replaceMediaItem(s)
ekleyin (#8046).
- ExoPlayer:
- ExoPlayer'ın cihaz ses düzeyi yöntemlerini kontrol etmesine yalnızca
açıkça etkinleştirilmişse izin verin. Şunlara 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)
MediaSource
kaynağından kullanılabilir kanal türlerini filtrelemeye olanak tanıyanFilteringMediaSource
ekleyin.- DASH, HLS ve SmoothStreaming uyarlanabilir akış biçimlerinin giden isteklerine Ortak Medya İstemci Verileri'ni (CMCD) ekleme desteği ekleyin.
br
,bl
,cid
,rtp
vesid
alanları dahil edilmiştir (#8699). API yapısı ve API yöntemleri:- CMCD günlük kaydı varsayılan olarak devre dışıdır. Etkinleştirmek için
MediaSource.Factory.setCmcdConfigurationFactory(CmcdConfiguration.Factory cmcdConfigurationFactory)
kullanın. - Tüm anahtarlar varsayılan olarak etkindir. Günlüğe hangi anahtarların kaydedildiğini filtrelemek için
CmcdConfiguration.RequestConfig.isKeyAllowed(String key)
öğesini geçersiz kılın. - Özel anahtar günlük kaydını etkinleştirmek için
CmcdConfiguration.RequestConfig.getCustomData()
politikasını geçersiz kılın.
- CMCD günlük kaydı varsayılan olarak devre dışıdır. Etkinleştirmek için
- Demo uygulamayı özel bir
*.exolist.json
dosyasıyla başlatmayı kolaylaştırmak için ana demonun manifest dosyasına ek işlem ekleyin (#439). - Video oynatma sırasında
Effect
kullanmak içinExoPlayer.setVideoEffects()
ekleyin. sourceId
öğesiniint
yerinelong
olarak depolamak içinSampleQueue
öğesini güncelleyin. Bu işlem,SampleQueue.sourceId
veSampleQueue.peekSourceId
herkese açık yöntemlerinin imzalarını değiştirir.LoadControl
yöntemlerineshouldStartPlayback
veonTracksSelected
yöntemlerine, bu yöntemlerin ilgiliMediaPeriod
ile ilişkilendirilmesine olanak tanıyan parametreler ekleyin.- Haritada anahtar olarak kullanılan UID'lere sahip dönemleri içeren bir zaman çizelgesi parametresi ekleyerek
ServerSideAdInsertionMediaSource.setAdPlaybackStates(Map<Object, AdPlaybackState>)
imzasını değiştirin. Çok dönemli canlı yayınlarda eşzamanlılık sorunlarını önlemek için bu gereklidir. EventDispatcher.withParameters(int windowIndex, @Nullable MediaPeriodId mediaPeriodId, long mediaTimeOffsetMs)
veBaseMediaSource.createEventDispatcher(..., long mediaTimeOffsetMs)
öğelerini kullanımdan kaldırın. Bunun yerine,mediaTimeOffsetUs
içermeyen yöntemlerin varyantı çağrılabilir. Kullanımdan kaldırılmış varyantlar için bile, ofsetin artık sevk görevlisi tarafından gönderilenMediaLoadData
nesnelerininstartTimeUs
veendTimeUs
kısmına eklenmediğini unutmayın.ExoTrackSelection.blacklist
alanının adınıexcludeTrack
veisBlacklisted
adınıisTrackExcluded
olarak değiştirin.- Boş bir oynatma listesinde çağrıldığında
ExoPlayer.setMediaItem(s)
ileaddMediaItem(s)
arasındaki tutarsız davranışı düzeltin.
- ExoPlayer'ın cihaz ses düzeyi yöntemlerini kontrol etmesine yalnızca
açıkça etkinleştirilmişse izin verin. Şunlara erişmek için
- Dönüştürücü:
Transformer.Builder.setMediaSourceFactory(MediaSource.Factory)
öğesini kaldır Bunun yerineExoPlayerAssetLoader.Factory(MediaSource.Factory)
veTransformer.Builder.setAssetLoaderFactory(AssetLoader.Factory)
kullanın.Transformer.startTransformation(MediaItem, ParcelFileDescriptor)
öğesini kaldır- Giriş karesi işlenmeyi beklerken video akışının sonunun sinyali verildiyse dönüşümün tıkanmasına (muxer zaman aşımına neden olur) yol açabilen hatayı düzeltin.
- Desteği artırmak için
findDecoder/EncoderForFormat
yardımcı programlarını kullanmak yerineMediaCodecList
aracılığıyla codec'leri sorgulayın. - Bazı cihazlarda çalışmadığından
DefaultEncoderFactory
içindeki B çerçeve yapılandırmasını kaldırın.
- Parça seçimi:
- Varsayılan olarak devre dışı olan
DefaultTrackSelector.Parameters.allowInvalidateSelectionsForRendererCapabilitiesChange
ekleyin. Etkinleştirildiğinde, oluşturucu özellikleri değiştiğindeDefaultTrackSelector
yeni bir parça seçimini tetikler.
- Varsayılan olarak devre dışı olan
- Ayıklayıcılar:
- Ses:
- Tünel etkin ve
AudioProcessors
etkinken bazı oynatmaların başarısız olduğu hata düzeltildi (ör.aralıksız kırpma için). (#10847). - Opus karelerini, doğrudan oynatmalarda (yükleme) Ogg paketleri içinde kapsülleyin.
- Yük boşaltma planlamasıyla uyku sırasında mevcut konumun ekstrapolasyonunu yapın.
- Oyuncunun yaşam döngüsünün sonunda kaynakları serbest bırakmak için
Renderer.release()
veAudioSink.release()
ekleyin. DefaultAudioSink
ürününde ses özelliklerindeki değişiklikleri dinleyin.DefaultAudioSink
oluşturucusuna,context
adlı zorunlu parametreyi ekleyin. Bu parametreyleDefaultAudioSink
,AudioCapabilitiesReceiver
için dinleyici olarak kaydedilir ve özellik değişikliği olduğunda bilgininaudioCapabilities
özelliğini günceller.AudioSink.Listener
arayüzündeki yeni bir etkinlikonAudioCapabilitiesChanged
veonRendererCapabilitiesChanged
etkinliklerini tetikleyen yeni arayüzRendererCapabilities.Listener
ile ses özelliklerindeki değişiklikleri uygulayın.- Ses kanallarına ölçeklendirme/miksleme uygulamak için
ChannelMixingAudioProcessor
ekleyin. - Ses özellikleri değiştirildikten sonra atlama modunun kullanılması mümkün olduğunda ses kod çözücüyü silmek için
DecoderDiscardReasons
öğesineDISCARD_REASON_AUDIO_BYPASS_POSSIBLE
yeni tam değer ekleyin. - DTS Express ve DTS:X için doğrudan oynatma desteği ekleyin (#335).
- Tünel etkin ve
- Video:
- Oluşturucu devre dışı bırakıldığında
MediaCodecVideoRenderer
ürününün, genişliği ve yüksekliği 0 olan birVideoSize
raporu bildirmesini sağlayın.Player.getVideoSize()
değiştiğindePlayer.Listener.onVideoSizeChanged
çağrılır. Bu değişiklikle birlikte,Player.getCurrentTracks
videoyu desteklemediğinde veya desteklenen video parçasının boyutu henüz belirlenmediğinde ExoPlayer'ınMediaCodecVideoRenderer
içeren video boyutunun genişliği ve yüksekliği 0 olur.
- Oluşturucu devre dışı bırakıldığında
- DRM:
- DRM paketinin dışından çağrılması beklenmeyen bazı dahili yöntemlerin
DefaultDrmSession
üzerinde 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 bazı dahili yöntemlerin
- Muxer:
- MP4 container dosyası oluşturmak için kullanılabilecek yeni bir muxer kitaplığı ekleyin.
- IMA uzantısı:
- DAI için çok dönemli canlı DASH akışlarını etkinleştirin. Mevcut uygulamanın, canlı yayınlarda arama özelliğini henüz desteklemediğini lütfen unutmayın (#10912).
- Art arda zaman çizelgelerinde hesaplanan içerik konumu küçük farklılıklar gösterdiği için canlı yayınlara yeni bir reklam grubunun eklenmesiyle ilgili hatayı düzeltin.
- Oturum:
- Şu anda
Player
yöntemini çağıran denetleyici hakkında bilgi edinmek içinMediaSession.getControllerForCurrentRequest
yardımcı yöntemini ekleyin. - Uygulamaları, örneğin bir Bluetooth mikrofonlu kulaklık (#167) tarafından gönderilen medya düğmesi etkinlikleriyle oynatmayı devam ettirme özelliğini etkinleştirmek için
androidx.media3.session.MediaButtonReceiver
ekleyin. LocalConfiguration
(ör. URI) (#282) varsa istenenMediaItems
öğesininPlayer
öğesine aktarılmasına izin vermek içinMediaSession.Callback.onAddMediaItems
öğesine varsayılan uygulamayı ekleyin.- Android 12 ve önceki sürümler için varsayılan olarak kompakt medya bildirimi görünümüne "öncekiye sar" ve "sonrakine git" komut düğmelerini ekleyin (#410).
LocalConfiguration
(ör. URI) (#282) varsa istenenMediaItems
öğesininPlayer
öğesine aktarılmasına izin vermek içinMediaSession.Callback.onAddMediaItems
öğesine varsayılan uygulamayı ekleyin.- Android 12 ve önceki sürümler için varsayılan olarak kompakt medya bildirimi görünümüne "öncekiye sar" ve "sonrakine git" komut düğmelerini ekleyin (#410).
- Şu anda
- Kullanıcı arayüzü:
- Oynat/duraklat düğmesiyle özel kullanıcı arayüzü öğeleri yazmak için
shouldShowPlayButton
vehandlePlayPauseButtonAction
Util yöntemlerini ekleyin.
- Oynat/duraklat düğmesiyle özel kullanıcı arayüzü öğeleri yazmak için
- RTSP Uzantısı:
- DASH Uzantısı:
- Çok dönemli DASH akışları için
MediaLoadData.startTimeMs
veMediaLoadData.endTimeMs
arasındaki medya zaman farkını kaldırın. - Çok dönemli bir canlı Dash medya kaynağının tekrar hazırlandığı sırada
IndexOutOfBoundsException
oluşturulması (#10838) hatası düzeltildi.
- Çok dönemli DASH akışları için
- HLS Uzantısı:
- Yükleme iş parçacığının,
TimestampAdjuster
öğesinin başlatılmasını beklemesi için zaman aşımı belirlemek üzereHlsMediaSource.Factory.setTimestampAdjusterInitializationTimeoutMs(long)
ekleyin. Başlatma, zaman aşımından önce tamamlanmazsa oynatmanın sonsuz şekilde durmasını önlemek için birPlaybackException
gönderilir. Zaman aşımı varsayılan olarak sıfıra ayarlanır (#323).
- Yükleme iş parçacığının,
- Test Yardımcı Programları:
DataSourceContractTest
ürününde URI şeması büyük/küçük harfe duyarlılığını kontrol edin.
- Kullanımdan kaldırılan simgeleri kaldırın:
DefaultAudioSink
oluşturucuları kaldırın, bunun yerineDefaultAudioSink.Builder
kullanın.HlsMasterPlaylist
öğesini kaldırın, onun yerineHlsMultivariantPlaylist
kullanın.Player.stop(boolean)
öğesini kaldır Bunun yerinePlayer.stop()
vePlayer.clearMediaItems()
(reset
true
ise) kullanın.- Kullanımdan kaldırılmış iki
SimpleCache
oluşturucuyu kaldırın ve daha iyi performans için bunun yerineDatabaseProvider
kullanan, desteği sonlandırılmamış bir oluşturucu kullanın. DefaultBandwidthMeter
oluşturucuyu kaldırın, bunun yerineDefaultBandwidthMeter.Builder
kullanın.DefaultDrmSessionManager
oluşturucuları kaldırın, bunun yerineDefaultDrmSessionManager.Builder
kullanın.- Kullanımdan kaldırılmış iki
HttpDataSource.InvalidResponseCodeException
oluşturucuyu kaldırın ve hata günlük kaydını iyileştirmek için ek alanları(cause
,responseBody
) kabul eden ve desteği sonlandırılmamış bir oluşturucu kullanın. DownloadHelper.forProgressive
,DownloadHelper.forHls
,DownloadHelper.forDash
veDownloadHelper.forSmoothStreaming
öğelerini kaldırın, bunun yerineDownloadHelper.forMediaItem
kullanın.- Kullanımdan kaldırılan
DownloadService
oluşturucusunu kaldırın vechannelDescriptionResourceId
parametresi sağlama seçeneği içeren, desteği sonlandırılmamış bir oluşturucu kullanın. - Karakter kümeleri (
ASCII_NAME
,UTF8_NAME
,ISO88591_NAME
,UTF16_NAME
veUTF16LE_NAME
) için desteği sonlandırılmış Dize sabitlerini kaldırın. Bunun yerine,kotlin.text
paketinden Kotlin Karakter Kümelerini kullanın.java.nio.charset.StandardCharsets
com.google.common.base.Charsets
- Desteği sonlandırılan
WorkManagerScheduler
oluşturucuyu kaldırın. Bunun yerine,Context
parametresi sağlama seçeneği içeren ve desteği sonlandırılmamış bir oluşturucu kullanın. Format
sınıfını örneklendirmek için kullanılan ve desteği sonlandırılmış yöntemleri olancreateVideoSampleFormat
,createAudioSampleFormat
,createContainerFormat
vecreateSampleFormat
yöntemlerini kaldırın. Bunun yerine,Format
örneklerini 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, bunların yerineFormat.buildUpon()
ve belirleyici yöntemleri kullanın. - Desteği sonlandırılan
ExoPlayer.retry()
öğesini kaldırın, bunun yerineprepare()
politikasını kullanın. - Desteği sonlandırılan sıfır bağımsız değişkenli
DefaultTrackSelector
oluşturucuyu kaldırın, bunun yerineDefaultTrackSelector(Context)
kullanın. - Desteği sonlandırılan
OfflineLicenseHelper
oluşturucuyu kaldırın, bunun yerineOfflineLicenseHelper(DefaultDrmSessionManager, DrmSessionEventListener.EventDispatcher)
kullanın. - Desteği sonlandırılan
DownloadManager
oluşturucuyu kaldırın, bunun yerineExecutor
kullanan oluşturucuyu kullanın. - Desteği sonlandırılan
Cue
oluşturucuları kaldırın, bunun yerineCue.Builder
kullanın. - Desteği sonlandırılan
OfflineLicenseHelper
oluşturucuyu kaldırın, bunun yerineOfflineLicenseHelper(DefaultDrmSessionManager, DrmSessionEventListener.EventDispatcher)
kullanın. - Desteği sonlandırılmış 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.
- Kullanımdan kaldırılan
Player.Listener.onSeekProcessed
veAnalyticsListener.onSeekProcessed
öğelerini kaldırın, bunun yerineonPositionDiscontinuity
uygulamasınıDISCONTINUITY_REASON_SEEK
ile kullanın. ExoPlayer.setHandleWakeLock(boolean)
öğesini kaldırın, onun yerinesetWakeMode(int)
kullanın.- Desteği sonlandırılan
DefaultLoadControl.Builder.createDefaultLoadControl()
öğesini kaldırın, bunun yerinebuild()
politikasını kullanın. - Kullanımdan kaldırılan
MediaItem.PlaybackProperties
yerineMediaItem.LocalConfiguration
kullanın. Kullanımdan kaldırılanMediaItem.playbackProperties
alanı artıkMediaItem.LocalConfiguration
türünde.
Sürüm 1.1.0-rc01
21 Haziran 2023
1.1.0 kararlı sürümü kullanın.
Sürüm 1.1.0-beta01
7 Haziran 2023
1.1.0 kararlı sürümü kullanın.
Sürüm 1.1.0-alpha01
10 Mayıs 2023
1.1.0 kararlı sürümü kullanın.
Sürüm 1.0.0
Sürüm 1.0.2
18 Mayıs 2023
androidx.media3:media3-*:1.0.2
yayınlandı.
1.0.2 sürümü bu kaydetmeleri 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çermektedir:
- Temel kitaplık:
Buffer
öğesininC.BUFFER_FLAG_LAST_SAMPLE
işaretini içerip içermediğini gösterenBuffer.isLastSample()
ekleyin.- Çerçeve içeren son örnek, "akış sonu" örneği okunmadan sıraya alınırsa son karenin oluşturulamaması sorunu düzeltildi. (#11079).
- Ayıklayıcılar:
- RTSP ve MP4 ayıklayıcıları tarafından halihazırda kullanılan ayrıştırma mantığını yeniden kullanarak MPEG-TS dosyalarında H.265 SPS ayrıştırmasını düzeltin (#303).
- Kısa mesaj:
- SSA: Bayt sıra işaretiyle başlayan UTF-16 dosyaları için destek ekleyin (#319).
- Oturum:
MediaController
ürününün, işlemlerini güncelleyen eski birMediaSessionCompat
öğesine bağlandığında kullanılabilir komutları güncellememesi sorunu düzeltildi.- API 30'da System UI'dan
Callback.onGetLibraryRoot
öğesineparams.isRecent == true
ile yapılan bir çağrı içinMediaLibraryService
öğesinin null döndürmesini engelleyen hatayı düzeltin (#355). MediaSessionService
veyaMediaLibraryService
bellek sızıntısını düzeltin (#346).MediaSession
içindekiTimeline
ve konum güncellemesinin,MediaController
öğesininIllegalStateException
atmasına neden olabileceği hata düzeltildi.
Sürüm 1.0.1
18 Nisan 2023
androidx.media3:media3-*:1.0.1
yayınlandı.
Sürüm 1.0.1 bu kaydetmeleri içerir.
Bu sürüm ExoPlayer 2.18.6 sürümüne karşılık gelir.
- Temel kitaplık:
- Varsayılan konuma geçerken hedef canlı yayın geçersiz kılma ayarını sıfırlayın (#11051).
- Medyadaki boş örnek akışların oynatmanın takılmasına neden olabileceği hatayı düzeltin.
- Oturum:
- Eski bir
MediaSessionCompat
tarafından yayınlanan birden fazla özdeş sıra öğesininMediaController
öğesinde istisnaya neden olduğu hatayı düzeltin (#290). - Eksik olan
MediaSession.broadcastCustomCommand
yönlendirmesini eskiMediaControllerCompat.Callback.onSessionEvent
'ye ekleyin (#293). MediaSession.setPlayer
çağrısının mevcut komutların güncellenmemesiyle ilgili hata düzeltildi.MediaController
öğesinden gönderilenTrackSelectionOverride
örneğin,Format.metadata
öğesini içeren bir gruba başvuruda bulunması durumunda yoksayılması sorununu düzeltin (#296).- Meta verilere eski
MediaSessionCompat
üzerinden erişmek içinPlayer.COMMAND_GET_CURRENT_MEDIA_ITEM
öğesinin kullanılabilir olması gereken sorunu düzeltin. - Arka plandaki bir ileti dizisindeki
MediaSession
örnek,MediaSessionService
içinde kullanıldığında kilitlenmeye neden olan sorunu düzeltin (#318). - Uygulamada böyle bir amaç olmadan medya düğmesi alıcısının kitaplık tarafından bildirilmesi sorunu düzeltin (#314).
- Eski bir
- DASH:
- Boş segment zaman çizelgelerinin işlenmesiyle ilgili sorunu düzeltin (#11014).
- RTSP:
- UDP ile RTSP Kurulumu, RTSP Hatası 461 DesteklenmeyenTransport (#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
yayınlandı.
1.0.0 sürümü bu kaydetmeleri içerir.
Bu sürüm ExoPlayer 2.18.5 sürümüne karşılık gelir.
1.0.0-rc02 tarihinden bu yana herhangi bir değişiklik yok.
Sürüm 1.0.0-rc02
2 Mart 2023
androidx.media3:media3-*:1.0.0-rc02
yayınlandı.
Sürüm 1.0.0-rc02 bu kaydetmeleri içerir.
Bu sürüm ExoPlayer 2.18.4 sürümüne karşılık gelir.
- Temel kitaplık:
- İndirilenler:
SegmentDownloader
ve alt sınıflarda yapılandırılabilir olacak şekilde iki segmentin başlangıç zamanındaki maksimum farkı oluşturun (#248).
- Ses:
- Video:
- HEVC HDR10 biçimini
HEVCProfileMain10
yerineHEVCProfileMain10HDR10
ile eşleyin. - Google TV Yüklü Chromecast ve Lenovo M10 FHD Plus'ta, 60 fps AVC akışlarının desteklenmiyor olarak işaretlenmesine neden olan bir cihaz sorunu için geçici çözüm ekleyin (#10898).
- Kare hızı ekran yenileme hızından çok daha yüksek olan medya oynatırken kare bırakma performansı sorunlarını düzeltin.
- HEVC HDR10 biçimini
- Yayınlama:
- Medya öğeleri arasında geçiş yaparken geçici
STATE_IDLE
sorununu düzeltin (#245).
- Medya öğeleri arasında geçiş yaparken geçici
- RTSP:
- Geçersiz RTSP ayrıştırılırken atılan LegalArgumentException hatasını yakalayın Yanıt mesajlarını açıklayın (#10971).
- Oturum:
- Bildirim oynat/duraklat düğmesinin oynatıcı durumuyla güncellenmemesiyle ilgili hatayı düzeltin (#192).
- IMA uzantısı:
- İlk (ve reklamsız durumda tek)
LOADED
etkinliği alınmadığı için reklam olmadan DAI akışlarının başlamasını engelleyen hatayı düzeltin.
- İlk (ve reklamsız durumda tek)
Sürüm 1.0.0-rc01
16 Şubat 2023
androidx.media3:media3-*:1.0.0-rc01
yayınlandı.
Sürüm 1.0.0-rc01 bu kaydetmeleri içerir.
Bu sürüm ExoPlayer 2.18.3 sürümüne karşılık gelir.
- Temel kitaplık:
- Kod çözücü medyayı iyi bir şekilde oynatamadığını bildirse bile, oluşturucunun kod çözücü sıralama mantığını
MediaCodecSelector
tercihleri için geçerli olacak şekilde ayarlayın. Örneğin, varsayılan seçicide yalnızca işlevsel desteği olan bir donanım kod çözücü, biçimi tamamen destekleyen yazılım kod çözücüye tercih edilir (#10604). - Yeni bir ExoPlayer örneği için önceden mevcut bir oynatma ileti dizisi ayarlayan
ExoPlayer.Builder.setPlaybackLooper
ekleyin. - İndirme yöneticisi yardımcılarının temizlenmesine izin ver (#10776).
- Arama için kullanılan komutu da belirtmek için
BasePlayer.seekTo
öğesine parametre ekleyin. - API 21 ve sonraki sürümlerde çizimleri yüklerken temayı kullanın (#220).
- Birden fazla medya öğesinin tek bir pencerede birleştirilmesini sağlayan
ConcatenatingMediaSource2
ekleyin (#247).
- Kod çözücü medyayı iyi bir şekilde oynatamadığını bildirse bile, oluşturucunun kod çözücü sıralama mantığını
- Ayıklayıcılar:
- trak atomlarını ayrıştırırken örnek tabloda (stbl) gerekli bir örnek açıklaması (stsd) yoksa
NullPointerException
yerineParserException
kullanın. - fMP4'te doğrudan bir senkronizasyon karesine bakarken örnekleri doğru şekilde atlayın (#10941).
- trak atomlarını ayrıştırırken örnek tabloda (stbl) gerekli bir örnek açıklaması (stsd) yoksa
- Ses:
- Doğrudan oynatmalarda (geçiş reklamı)
AudioTrack
için minimum arabellek boyutunu hesaplamak üzere sıkıştırılmış ses biçimi bit hızını kullanın.
- Doğrudan oynatmalarda (geçiş reklamı)
- Kısa mesaj:
- Bir altyazı dosyasında hiç işaret yoksa
TextRenderer
işlevininSubtitle.getEventTime
öğesine geçersiz (negatif) bir dizin iletmesi sorununu düzeltin. - SubRip: Bir bayt sıra işaretiyle başlayan UTF-16 dosyaları için destek ekleyin.
- Bir altyazı dosyasında hiç işaret yoksa
- Üst veri:
- ID3 v2.4 tarafından izin verildiği şekilde ID3 çerçevelerinden boş değerle ayrılmış birden fazla değeri ayrıştırın.
- Meta verilerin tanımladığı içerik türünü veya klasör türünü belirtmek için
MediaMetadata.mediaType
ekleyin. MediaMetadata.folderType
yerineMediaMetadata.isBrowsable
ekleyin. Bu klasör türü sonraki sürümde kullanımdan kaldırılacaktır.
- DASH:
- Resim uyarlama grupları için karo sayısı dahil olmak üzere tam ayrıştırma ekleyin (#3752).
- Kullanıcı arayüzü:
- Görünürlük değişikliklerinin kayıtlı dinleyiciye iletildiğinden emin olmak için desteği sonlandırılan
PlayerView.setControllerVisibilityListener(PlayerControlView.VisibilityListener)
sorununu düzeltin (#229). - Sağdan sola (RTL) düzeni kullanırken
PlayerView
içinde orta oynatıcı kontrollerinin sıralamasını düzeltin (#227).
- Görünürlük değişikliklerinin kayıtlı dinleyiciye iletildiğinden emin olmak için desteği sonlandırılan
- Oturum:
- Özel oynatıcılar için
Player
arayüzünü uygulamaya yardımcı olması için soyutSimpleBasePlayer
ekleyin. - Platform oturum jetonunu Media3'e dönüştürmek için yardımcı yöntem ekleyin
SessionToken
(#171). - Platform medya oturumunun güncellemelerini tetiklemek için
onMediaMetadataChanged
işlevini kullanın (#219). - Medya oturumunu,
DefaultMediaNotificationProvider
öğesiningetMediaButtons()
bağımsız değişkeni olarak ekleyin ve netlik için sabit listeler kullanın (#216). - Player'a ayarlamadan önce
MediaItem
listesini, başlangıç dizinini ve konumu oturuma göre değiştirme/ayarlama yöntemleri sağlamak içinonSetMediaItems
geri çağırma dinleyicisi ekleyin (#156). - Bluetooth olmayan medya düğmesi etkinlikleri için iki kez dokunma algılamasını önleyin (#233).
- şüpheli bir eski oturum durumu olması durumunda
QueueTimeline
uygulamasını daha güçlü hale getirin (#241).
- Özel oynatıcılar için
- Üst veri:
- ID3 v2.4 tarafından izin verildiği şekilde ID3 çerçevelerinden boş değerle ayrılmış birden fazla değeri ayrıştırın.
- Meta verilerin tanımladığı içerik türünü veya klasör türünü belirtmek için
MediaMetadata.mediaType
ekleyin. MediaMetadata.folderType
yerineMediaMetadata.isBrowsable
ekleyin. Bu klasör türü sonraki sürümde kullanımdan kaldırılacaktır.
- Yayın uzantısı:
- Cast SDK'sı sürümünü 21.2.0'a yükseltin.
- IMA uzantısı:
- İleti dizisi sorunlarını önlemek için uygulama iş parçacığında
ImaServerSideAdInsertionMediaSource
oynatıcı işleyicisini kaldırın. - TV cihazlarında atla düğmesine odaklanma isteğinde bulunmak ve bunu varsayılan olarak doğru değerine ayarlamak için
ImaServerSideAdInsertionMediaSource.AdsLoader.Builder
öğesinefocusSkipButtonWhenAvailable
özelliği ekleyin. - Programatik olarak atla düğmesine odaklanmayı istemek için
ImaServerSideAdInsertionMediaSource.AdsLoader
öğesinefocusSkipButton()
yöntemi ekleyin. - IMA SDK sürümünü 3.29.0'a yükseltin.
- İleti dizisi sorunlarını önlemek için uygulama iş parçacığında
- Demo uygulama:
- Çalışma zamanında indirme bildirimleri için bildirim izni isteme (#10884).
Sürüm 1.0.0-beta03
22 Kasım 2022
androidx.media3:media3-*:1.0.0-beta03
yayınlandı.
Sürüm 1.0.0-beta03 bu kaydetmeleri içerir.
Bu sürüm ExoPlayer 2.18.2 sürümüne karşılık gelir.
- Temel kitaplık:
- Şu anda seçili olan kanallarda tünellemenin etkin olup olmadığını kontrol etmek için
ExoPlayer.isTunnelingEnabled
ekleyin (#2518). - Tek bir
MediaSource
sarmalamayı kolaylaştırmak içinWrappingMediaSource
ekleyin (#7279). - Yetersiz bellek nedeniyle oynatma takılmadan önce geri arabelleği silin.
- Boşaltma etkinleştirildiğinde İzleme "doSomeWork" blokunu kapatın.
PlaybackStatsListener
ürününde hızlı aramalarla ilgili oturum izleme sorununu düzeltin (#180).- Tek öğeli bir oynatma listesinde
seekToNext
veyaseekToPrevious
çağrısı yapıldığında eksikonMediaItemTransition
geri çağırmasını gönderin (#10667). - Videonun oluşturulduğu yüzeyin boyutunu döndüren
Player.getSurfaceSize
ekleyin. - Oynatıcının yayınlanması sırasında dinleyicileri kaldırmanın
IllegalStateException
(#10758) sorununa neden olabileceği hata düzeltildi.
- Şu anda seçili olan kanallarda tünellemenin 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 engelleme yayınlamaktan kaçının.
- Derleme hatalarını önlemek için minimum
- Parça seçimi:
- Ekran desteklemiyorsa diğer parçaları Dolby Vision'a tercih edin. (#8944).
- İndirilenler:
- Aynı
PriorityTaskManager
ile eş zamanlı indirme ve oynatmanın neden olduğuProgressiveDownloader
içindeki olası sonsuz döngüyü düzeltin (#10570). - İndirme bildiriminin hemen görünmesini sağlayın (#183).
- Çok fazla ileti dizisi oluşturulmasını önlemek için paralel indirme kaldırma işlemlerini 1 ile sınırlayın (#10458).
- Aynı
- Video:
- Ekran desteklemiyorsa Dolby Vision için alternatif kod çözücüyü deneyin. (#9794).
- Ses:
- Aynı anda birden fazla oynatıcı yayınlarken OutOfMemory hatalarını önlemek amacıyla
AudioTrack
örnek serbest bırakmak içinSingleThreadExecutor
kullanın (#10057). - AudioTrack boşaltma durumu için
AudioOffloadListener.onExperimentalOffloadedPlayback
ekler. (#134). AudioTrackBufferSizeProvider
öğesini herkese açık arayüz yapın.- Tercih edilen ses çıkış cihazını ayarlamak için
ExoPlayer.setPreferredAudioDevice
ekleyin (#135). androidx.media3.exoplayer.audio.AudioProcessor
öğesinin adınıandroidx.media3.common.audio.AudioProcessor
olarak değiştirin.- Tüm Android sürümlerinde 8 kanallı ve 12 kanallı sesi sırasıyla 7.1 ve 7.1.4 kanal maskeleriyle eşleyin (#10701).
- Aynı anda birden fazla oynatıcı yayınlarken OutOfMemory hatalarını önlemek amacıyla
- Üst veri:
MetadataRenderer
artık meta veriler kullanılabilir olduğu anda oluşturulacak şekilde yapılandırılabilir. Oluşturucunun meta verileri erkenden mi yoksa oynatıcı konumuyla senkronize olarak mı çıkaracağını belirtmek içinMetadataRenderer(MetadataOutput, Looper, MetadataDecoderFactory, boolean)
ile bir örnek oluşturun.
- DRM:
- Android 13 Temizleme Anahtarı uygulamasında, boş olmayan ancak geçersiz bir lisans URL'si döndüren hataya geçici çözüm bulunması.
- Bir oynatma listesindeki DRM şemaları arasında geçiş yaparken (ör. Widevine'dan DeleteKey'e)
setMediaDrmSession failed: session not opened
hatasını düzeltin.
- Kısa mesaj:
- CEA-608: 2. alandaki hizmet geçiş komutlarının doğru şekilde işlendiğinden emin olun (#10666).
- DASH:
EventStream.presentationTimeOffset
öğesini manifestlerden ayrıştırın (#10460).
- Kullanıcı arayüzü:
- Oynatıcının mevcut geçersiz kılmalarını önceden ayarlanmış olarak kullanın
TrackSelectionDialogBuilder
(#10429).
- Oynatıcının mevcut geçersiz kılmalarını önceden ayarlanmış olarak kullanın
- Oturum:
- Bazıları eşzamansız çözünürlük gerektirse bile komutların her zaman doğru sırada yürütüldüğünden emin olun (#85).
DefaultMediaNotificationProvider
örneklerini derlemek içinDefaultMediaNotificationProvider.Builder
ekleyin. Oluşturucu; bildirim kimliğini, bildirim kanalı kimliğini ve sağlayıcı tarafından kullanılan bildirim kanalı adını yapılandırabilir. Ayrıca, bildirimler küçük simgesi ayarlamak içinDefaultMediaNotificationProvider.setSmallIcon(int)
yöntemini ekleyin. (#104).MediaController.release()
tarihinden önce gönderilen komutların atlanmadığından emin olun (#99).SimpleBitmapLoader
,file://
URI'lerden bit eşlem yükleyebilir (#108).MediaController
ürününün belirli bir süre içinde bir reklamı aramasını engelleyen onaylamayı düzeltin (#122).- Oynatma sona erdiğinde,
MediaSessionService
ön planda durdurulur ve oynatılan son medya öğesinin oynatılmasını yeniden başlatmak için bir bildirim gösterilir (#112). - Duraklatma niyetiyle bir ön plan hizmetini başlatmayın (#167).
- API 26 ve API 27'de
DefaultNotificationProvider
tarafından oluşturulan bildirimle ilişkili "rozeti" manuel olarak gizleyin (rozet, API 28 ve sonraki sürümlerde otomatik olarak gizlenir) (#131). - Eski bir MediaSession'dan Media3 MediaController'a ikinci bir bağlayıcı bağlantısının Yasadışı Durum İstisnalarına neden olduğu hata düzeltildi (#49).
- RTSP:
- IMA:
- IMA SDK'nın reklam yüklerken takıldığı durumları ele almak üzere reklam bilgilerini yükleme için zaman aşımı ekleyin (#10510).
- İçeriğin sonuna doğru ilerlerken videonun ortasında gösterilen reklamların atlanmasını önleme (#10685).
- IMA DAI gibi sunucu tarafı eklenen reklamların yer aldığı canlı yayınlar için aralık süresini doğru şekilde hesaplayın (#10764).
- FFmpeg uzantısı:
- FFmpeg kitaplıklarını NDK 23.1.7779620 ve sonraki sürümlere bağlamak için yeni gereken flag'leri ekleyin (#9933).
- AV1 uzantısı:
- En son Android Studio sürümleriyle uyumsuzlukları önlemek için CMake sürümünü güncelleyin (#9933).
- Yayın uzantısı:
MediaController
ile oynatmayı kontrol ederkenCastPlayer
öğesini tanımlayabilmek içingetDeviceInfo()
uygulayın (#142).
- Dönüştürücü:
- Çıkış örneği oluşturma işleminin çok yavaş olduğunu algılamak için muxer güvenlik zamanlayıcısı ekleyin.
- Kullanımdan kaldırılan simgeleri kaldırın:
Transformer.Builder.setOutputMimeType(String)
öğesini kaldır Bu özellik kaldırılmıştır. Varsayılan muxer kullanıldığında MIME türü her zaman MP4 olur.
Sürüm 1.0.0-beta02
21 Temmuz 2022
androidx.media3:media3-*:1.0.0-beta02
yayınlandı.
Sürüm 1.0.0-beta02 bu kaydetmeleri içerir.
Bu sürüm ExoPlayer 2.18.1 sürümüne karşılık gelir.
- Temel kitaplık:
ShuffleOrder
parametresiExoPlayer.setShuffleOrder
ile değiştirildiğinde,reason=Player.TIMELINE_CHANGE_REASON_PLAYLIST_CHANGED
ilePlayer.Listener#onTimelineChanged
çağrısı yapıldığından emin olun (#9889).- Progresif medya için yalnızca seçilen parçaları arabelleğe alınmış konuma ekleyin (#10361).
- Tüm ExoPlayer günlük çıkışları için özel günlükçüye izin ver (#9752).
- Bazı durumlarda işlevsel olmayan
setDataSourceFactory
uygulamasınıDefaultMediaSourceFactory
içinde düzeltin (#116).
- Ayıklayıcılar:
- DASH:
- NetKey lisans URL'sini manifestlerden ayrıştırın (#10246).
- Kullanıcı arayüzü:
- TalkBack'in, oynatma kontrolleri menüsünde mevcut durumda etkin olan hız seçeneğini duyurduğundan emin olun (#10298).
- RTSP:
- VP8 parçalı paket işleme ekleyin (#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
yayınlandı.
Sürüm 1.0.0-beta01 bu kaydetmeleri içerir.
Bu, ExoPlayer 2.18.0 sürümüne karşılık gelir.
- Temel kitaplık:
MediaMetricsManager
üzerinden Android platform teşhisi desteğini etkinleştirin. ExoPlayer, oynatma etkinliklerini ve performans verilerini platforma ileterek cihazda sistem performansı ve hata ayıklama bilgilerinin sağlanmasına yardımcı olur. Bu veriler, cihazın kullanıcısı tarafından kullanım ve teşhis verilerini paylaşma özelliği 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ı hatasını düzeltin (ör. altyazıları başka bir şekilde yüklerken ve oynatma sırasında seçili altyazıyı değiştirirken) (#10248).- API 29 ve 30'da 5G-NSA ağ türünü algılamayı durdurun. Bu oynatmalar için 4G ağ kullanıldığı varsayılır.
null
öğesininMediaSource.Factory.setDrmSessionManagerProvider
veMediaSource.Factory.setLoadErrorHandlingPolicy
özelliklerine iletilmesine izin verme.DefaultDrmSessionManagerProvider
veDefaultLoadErrorHandlingPolicy
örnekleri, gerekirse açıkça iletilebilir.- Tam
LocalConfiguration
bilinmediğinde medya oynatmak için gereken meta verileri temsil etmesi içinMediaItem.RequestMetadata
ekleyin. Ayrıca bu öğeRequestMetadata
paketine dahil edildiği içinMediaMetadata.mediaUrl
öğesini de kaldırın. - Oyuncuların tek bir öğe ayarlamasına
izin verebilmesi için
Player.Command.COMMAND_SET_MEDIA_ITEM
ekleyin.
- Parça seçimi:
TrackSelectionOverrides
sınıfınıTrackSelectionParameters
olarak birleştir veTrackSelectionOverride
sınıfını üst düzey bir sınıfa yükselt.TracksInfo
alanının adınıTracks
veTracksInfo.TrackGroupInfo
konumunuTracks.Group
olarak yeniden adlandırın.Player.getCurrentTracksInfo
vePlayer.Listener.onTracksInfoChanged
adlı kullanıcıların adları daPlayer.getCurrentTracks
vePlayer.Listener.onTracksChanged
olarak değiştirildi. Bu, farklı parametre türleriylePlayer.Listener.onTracksChanged
yöntem adının "kullanımdan kaldırılmasını" içerir.- Desteği sonlandırılan
DefaultTrackSelector.ParametersBuilder
yerineDefaultTrackSelector.Parameters.Builder
değerini döndürecek şekildeDefaultTrackSelector.buildUponParameters
veDefaultTrackSelector.Parameters.buildUpon
değerlerini değiştirin. - Varsayılan olarak etkin olan
DefaultTrackSelector.Parameters.constrainAudioChannelCountToDeviceCapabilities
değerini ekleyin. EtkinleştirildiğindeDefaultTrackSelector
, kanal sayısı cihaz çıkış özelliklerini aşmayan ses parçalarını tercih eder. Avuç içi cihazlarda, çok kanallı biçim üç boyutlu (Android 12L ve sonraki sürümler) veya Dolby surround ses biçimi değilseDefaultTrackSelector
çok kanallı ses biçimleri yerine stereo/mono'yu tercih eder. AyrıcaDefaultTrackSelector
, ses konumlaştırmayı destekleyen cihazlarda Üç Boyutlu Oluşturucu özelliklerindeki değişiklikleri izler ve bunlar üzerinde yeni bir parça seçimi tetikler.television
Kullanıcı arayüzü moduna sahip cihazlar bu kısıtlamalardan hariç tutulur ve en yüksek kanal sayısına sahip biçim tercih edilir. Bu özelliğin etkinleştirilmesi içinDefaultTrackSelector
örneğinin birContext
ile oluşturulması gerekir.
- Video:
DummySurface
listesinin adınıPlaceholderSurface
olarak değiştir.MediaCodecVideoRenderer.getCodecMaxInputSize
kanalına AV1 desteği ekleyin.
- Ses:
- Standart olmayan MIME türünü tanıtan LG AC3 ses kod çözücüyü kullanın.
- API < 21'de yavaş ART doğrulamasını önlemek için
android.media.AudioAttributes
olanAudioAttributes.getAudioAttributesV21()
döndürme türünü yeni birAudioAttributesV21
sarmalayıcı sınıfıyla değiştirin. - HLS parçasız hazırlık işleminde (10204) ses kanalı sayısı ayarlanmadan bırakıldığında platformu sorgulayın (API 29+) veya ses geçişi için ses kodlama kanal sayısını varsayın.
- Kod çözücü 12 kanallı PCM sesi (#10322) veriyorsa
AudioTrack
özelliğini kanal maskesiAudioFormat.CHANNEL_OUT_7POINT1POINT4
ile yapılandırın.
- DRM
- Biçim değişikliğinden hemen sonra arama yapıldığında DRM oturumunun her zaman doğru şekilde güncellendiğinden (10274) emin olun.
- Kısa mesaj:
Player.getCurrentCues()
değerini,List<Cue>
yerineCueGroup
değerini döndürecek şekilde değiştirin.- SSA:
BorderStyle == 3
(ör.OutlineColour
, reklam işaretinin arka planını ayarladığında)OutlineColour
stil ayarını destekler (#8435). - CEA-708: Verileri birden fazla hizmet bloğuna ayrıştırın ve seçili olan hizmet numarasıyla ilişkili olmayan engellemeleri yoksayın.
- Yalnızca Google'ın kendi altyazı biçimlerini işlemek için kullanılan
RawCcExtractor
politikasını kaldırın.
- Ayıklayıcılar:
- Kullanıcı arayüzü:
useController=false
olması (#9605) durumunda,PlayerView
tarihinde ayarlananOnClickListener
işlemlerine etkinlik teslimini düzeltin. Ayrıca tüm görünüm yapılandırmaları için etkinliklerinOnLongClickListener
hedefine teslimini de düzeltin.ACTION_UP
öncesindePlayerView
sınırlarından çıkan bir dokunma etkinliği dizisinin yanlış bir şekilde tıklama olarak ele alınması sorununu düzeltin (#9861).- Kontrolleri gizlemek yerine dokunarak oynatmayı etkinleştirme/devre dışı bırakmaya yol açabilecek
PlayerView
erişilebilirlik sorununu düzeltin (#8627). ExoPlayer
yerinePlayer
arayüzüyle çalışacak şekildeTrackSelectionView
veTrackSelectionDialogBuilder
öğelerini yeniden yazın. Bu, görünümlerin diğerPlayer
uygulamalarıyla kullanılmasına izin verir ve kullanıcı arayüzü modülünden ExoPlayer modülüne bağımlılığı ortadan kaldırır. Bu yıkıcı bir değişiklik.PlayerView
kanal seçicide zorunlu metin parçalarını göstermeyin ve "Yok" seçeneği belirlenmişse uygun bir zorunlu metin parçasını seçili tutun (#9432).
- DASH:
- Kanal sayısını DTS
AudioChannelConfiguration
öğelerinden ayrıştırın. Bu, DTS akışları için ses geçişini yeniden etkinleştirir (#10159). null
öğesininDashMediaSource.Factory.setCompositeSequenceableLoaderFactory
öğesine iletilmesine izin verme.DefaultCompositeSequenceableLoaderFactory
örnekleri, gerekirse açıkça iletilebilir.
- Kanal sayısını DTS
- HLS:
- Oynatma listesi CODECS özelliği, ses codec'ini (#10065) içermiyorsa parçalı hazırlamaya geri dön.
null
öğesininHlsMediaSource.Factory.setCompositeSequenceableLoaderFactory
,HlsMediaSource.Factory.setPlaylistParserFactory
veHlsMediaSource.Factory.setPlaylistTrackerFactory
sürümlerine iletilmesine izin verme.DefaultCompositeSequenceableLoaderFactory
veDefaultHlsPlaylistParserFactory
örnekleri veyaDefaultHlsPlaylistTracker.FACTORY
öğesine yapılan referans, gerekirse açıkça iletilebilir.
- Sorunsuz canlı yayın:
null
öğesininSsMediaSource.Factory.setCompositeSequenceableLoaderFactory
öğesine iletilmesine izin verme.DefaultCompositeSequenceableLoaderFactory
örnekleri, gerekirse açıkça iletilebilir.
- RTSP:
- H263 için RTP okuyucu ekleyin (#63).
- MPEG4 için RTP okuyucu ekleyin (#35).
- HEVC için RTP okuyucu ekleyin (#36).
- AMR için RTP okuyucu ekleyin. Şu anda yalnızca tek kanallı ve araya dahil olmayan AMR akışları desteklenmektedir. Bileşik AMR RTP yükü desteklenmiyor. (#46)
- VP8 için RTP okuyucu ekleyin (#47).
- WAV için RTP okuyucu ekleyin (#56).
- RTSP temel yetkilendirme başlığını düzeltin. (#9544).
- ExoPlayer'ın ihtiyacı olmadığından zorunlu SDP alanlarını kontrol etmeyi bırakın (#10049).
- RTSP zamanlamasını ayrıştırırken işaretli istisnayı atın (#10165).
- VP9 için RTP okuyucu ekleyin (#47).
- OPUS için RTP okuyucu ekleyin (#53).
- Veri kaynakları:
DummyDataSource
listesinin adınıPlaceholderDataSource
olarak değiştir.- OkHttp kesme işlemeye yönelik geçici çözüm.
- Oturum:
- İsteklerin eşzamansız olarak çözülmesine izin vermek için
MediaSession.MediaItemFiller
değeriniMediaSession.Callback.onAddMediaItems
ile değiştirin. MediaController
eski bir medya oturumuna bağlandığındasetMediaItems(s)
yöntemlerini destekleyin.MediaController.setMediaUri
veMediaSession.Callback.onSetMediaUri
kaldırın. Aynı işlev,MediaController.setMediaItem
veMediaSession.Callback.onAddMediaItems
kullanarak da elde edilebilir.- Medyayı oynatmak için eski
MediaController
çağrılarınıonSetMediaUri
yerineMediaSession.Callback.onAddMediaItems
adresine yönlendirin. - Bildirimin özelleştirilmesi için
MediaNotification.Provider
veDefaultMediaNotificationProvider
ekleyin. - Poster resimlerini indirmek için
BitmapLoader
veSimpleBitmapLoader
ekleyin. - Eski oturumla geriye dönük uyumluluk sağlamak için
MediaSession.setCustomLayout()
ekleyin. - Eski oturumla özellik eşdeğeri sağlamak için
MediaSession.setSessionExtras()
ekleyin. MediaSession.MediaSessionCallback
öğesinin adınıMediaSession.Callback
,MediaLibrarySession.MediaLibrarySessionCallback
adınıMediaLibrarySession.Callback
veMediaSession.Builder.setSessionCallback
adlı öğenin adınısetCallback
olarak değiştirin.MediaControllerImplLegacy
içindeki NPE'yi düzeltin (#59).- Zaman çizelgesi değişikliğinde oturum konumu bilgilerini güncelleyin(#51).
- Kumandayı serbest bıraktıktan sonra
MediaControllerImplBase
içinde NPE'yi düzeltin (#74).
- İsteklerin eşzamansız olarak çözülmesine izin vermek için
- Reklam oynatma / IMA:
- Medya Derecelendirme Konseyi'nin (MRC) önerileri doğrultusunda, reklam yoklama hızını 100 ms'den her 200 ms'ye indirin.
- FFmpeg uzantısı:
- AndroidStudio'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).
- AndroidStudio'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 simgeleri kaldırın:
Player.Listener.onTracksChanged(TrackGroupArray, TrackSelectionArray)
öğesini kaldır Bunun yerinePlayer.Listener.onTracksChanged(Tracks)
politikasını kullanın.Player.getCurrentTrackGroups
vePlayer.getCurrentTrackSelections
kaldırın. Bunun yerinePlayer.getCurrentTracks
politikasını kullanın. Ayrıca,ExoPlayer.getCurrentTrackGroups
veExoPlayer.getCurrentTrackSelections
özelliklerini kullanmaya devam edebilirsiniz ancak bu yöntemler kullanımdan kaldırılmıştır.DownloadHelper
DEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_VIEWPORT
veDEFAULT_TRACK_SELECTOR_PARAMETERS
sabit değerlerini kaldırın. Mümkün olduğunda bunun yerinegetDefaultTrackSelectorParameters(Context)
, aksi takdirdeDEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_CONTEXT
kullanın.DefaultTrackSelector(ExoTrackSelection.Factory)
oluşturucuyu kaldırın. Bunun yerineDefaultTrackSelector(Context, ExoTrackSelection.Factory)
politikasını kullanın.Transformer.Builder.setContext
öğesini kaldırContext
, bunun yerineTransformer.Builder
oluşturucuya geçirilmelidir.
Sürüm 1.0.0-alpha03
14 Mart 2022
androidx.media3:media3-*:1.0.0-alpha03
yayınlandı.
1.0.0-alpha03 sürümü bu kaydetmeleri içerir.
Bu, ExoPlayer 2.17.1 sürümüne karşılık gelir.
- Ses:
- HLS'deki Dolby Atmos'un (E-AC3-JOC) ses özelliklerini kontrol ederken karşılaşılan sorunları düzeltin.
- Ayıklayıcılar:
- FMP4: Hem v0 hem de v1 emsg atomları içeren akışlarda e-posta örnek meta verilerinin yanlış sırada çıkmasına yol açan sorun düzeltildi (#9996).
- Kısa mesaj:
SubtitleConfiguration
alanına öncelik vermek içinSingleSampleMediaSource.Factory.setTrackId
veMediaItem.SubtitleConfiguration.Builder.setId
etkileşimini düzeltin ve ayarlanmadıysaFactory
değerini kullanın (#10016).
- Reklam oynatma:
- Canlı HLS SSAI akışlarında reklam dönemleri arasında yaşanan ses kesintilerini düzeltin.
Sürüm 1.0.0-alpha02
2 Mart 2022
androidx.media3:media3-*:1.0.0-alpha02
yayınlandı.
1.0.0-alpha02 sürümü bu kaydetmeleri içerir.
Bu, ExoPlayer 2.17.0 sürümüne karşılık gelir.
- Çekirdek Kitaplık:
- Korumalı yöntem ekleyin
DefaultRenderersFactory.getCodecAdapterFactory()
bu şekilde geçersiz kılanDefaultRenderersFactory
alt sınıflarıbuildVideoRenderers()
veyabuildAudioRenderers()
codec adaptör fabrikasına erişebilir ve bunu, oluşturduklarıMediaCodecRenderer
örneklerine iletebilir. - Uygulamaya
Player.Listener.onMediaMetadataChanged()
üzerinden ulaşabilmeleri için ICY başlık alanlarını sırasıylaname
vegenre
ileMediaMetadata.station
veMediaMetadata.genre
öğelerini çoğaltın (#9677). DefaultHttpDataSource#getResponseHeaders
cihazından boş anahtarları kaldırın.MediaCodec
örneği oluşturma işlemi başarısız olduğunda uyku moduna geçip yeniden deneyin. Bu, bazı cihazlarda bir yüzeyi güvenli codec'ten başka bir codec'e geçirirken ortaya çıkan soruna çözüm olarak çalışır (#8696).- Kullanıcıların
MediaCodec
üzerinden metrik verileri almasına izin vermek içinMediaCodecAdapter.getMetrics()
ekleyin. (#9766). - Maven bağımlılığı sorununu düzeltin (#8353).
- Düşük gecikme özellikleri veya hızı belirleyen bir kullanıcı isteği olmayan canlı yayınlar için otomatik hız ayarlamayı devre dışı bırakın (#9329).
DecoderCounters#inputBufferCount
listesinin adınıqueuedInputBufferCount
olarak değiştir.SimpleExoPlayer.renderers
öğesini gizli hale getirin. OluşturucularaExoPlayer.getRenderer
üzerinden erişilebilir.- Bazı
AnalyticsListener.EventFlags
sabit değerleri,Player.EventFlags
içindeki değerlerle eşleşecek şekilde güncellendi. AnalyticsCollector
kodunu bir arayüze ve varsayılan uygulamaya ayırarak uygulamanın ihtiyaç duymadığı durumlarda R8 tarafından sadeleştirilmesini sağlayın.
- Korumalı yöntem ekleyin
- Parça seçimi:
- Parça seçiminde tercih edilen video rolü işaretlemelerini destekleyin (#9402).
- Uyarlama için birden fazla video kanalı seçerken tercih edilen MIME türlerini ve rol işaretlerini dikkate alacak şekilde video parçası seçim mantığını güncelleyin (#9519).
- Video ve ses parçası seçim mantığını, yalnızca aynı kod çözücü ve donanım desteğine (#9565) sahip uyarlanabilir seçimler için biçimleri seçecek şekilde güncelleyin.
- Birincil, donanım hızlandırmalı kod çözücüler tarafından birden fazla codec destekleniyorsa video parçası seçme mantığını daha verimli codec'leri tercih edecek şekilde güncelleyin (#4835).
- Teknik parça seçimi kısıtlamaları (örneğin, tercih edilen MIME türü veya maksimum kanal sayısı) yerine ses içeriği tercihlerini (örneğin, "varsayılan" ses parçası veya sistem yerel ayarıyla eşleşen bir parça) tercih edin.
- Bir parça grubu geçersiz kılındığında aynı türdeki diğer kanal gruplarının devre dışı bırakılmamasına neden olan kanal seçimi sorununu düzeltin (#9675).
- Boş olmayan ve boş kanal geçersiz kılma karışımının doğru şekilde uygulanmadığı kanal seçimi sorununu düzeltin (#9649).
TrackGroupArray
içinde yinelenenTrackGroup
öğelerini engelleyin.TrackGroup
öğeleri,TrackGroup
oluşturucuda birid
ayarlanarak her zaman ayırt edilebilir hale getirilebilir. Bu düzeltme, uygulama arka plana alınmış bir parçayı geçersiz kılarak devam ettirildikten sonra oynatmaya devam ederken oluşan kilitlenmeleri düzeltir (#9718).- Oynatma canlı kenara çok yakın olsa bile yeterli ağ bant genişliği altında kalite artışına olanak tanımak için
AdaptiveTrackSelection
mantığında değişiklik yapın (#9784).
- Video:
- Gerekirse Dolby Vision'ın uyumlu bir H264/H265 kod çözücüyü kullanması için kod çözücü yedek mantığını düzeltin.
- Ses:
- Gerekirse Dolby Atmos'un (E-AC3-JOC) uyumlu bir E-AC3 kod çözücüyü kullanması için kod çözücü yedek mantığını düzeltin.
AudioCapabilities
API'lerini,null
yerine açıkçaAudioCapabilities.DEFAULT_AUDIO_CAPABILITIES
iletilmesini gerektirecek şekilde değiştirin.DefaultAudioSink
öğesineAudioTrackBufferSizeProvider
ekleyerekAudioTrack
arabellek boyutu hesaplamasının özelleştirilmesine izin verin. (#8891).- İstenen arabellek boyutu 1 MB'tan büyükse
AudioTrack
öğesini oluşturmayı yeniden deneyin. (#9712).
- Ayıklayıcılar:
- Kısa mesaj:
- Yapılandırmadan oluşturulan altyazı parçasının
Format.id
alanına birMediaItem.SubtitleConfiguration.id
alanı ekleyin (#9673). - Matroska kapsayıcılarına WebVTT altyazıları için temel destek ekleyin (#9886).
Cea708Decoder
sitesinin, bir hizmet bloğunun bildirilen boyutundan daha fazlasını okumasını önleyin.
- Yapılandırmadan oluşturulan altyazı parçasının
- DRM:
playbackLooper
kullanıcısınıDrmSessionManager.(pre)acquireSession
sitesinden kaldır.DrmSessionManager
, bir uygulama tarafından özelMediaSource
öğesinde kullanıldığındaplaybackLooper
öğesininDrmSessionManager.setPlayer
öğesine aktarılması gerekir.
- Reklam oynatma / IMA:
- IMA Dinamik Reklam Ekleme (DAI) desteği ekleyin (#8213).
- Bir reklam grubunun tekrar oynatılabilmesi için sıfırlanmasına olanak tanıyan bir yöntem ekleyin (#9615).
AdPlaybackState
- Reklam oynatma sırasında oynatma hızını 1.0 zorunlu kılın (#9018).
- Yüklenemeyen bir reklam grubunun anında oynatmanın sıfırlanmasına neden olduğu sorunu düzeltin (#9929).
- Kullanıcı arayüzü:
- DASH:
Representation
öğesine ayrıştırılmış temel ve ek özellikleri ekleyin (#9579).forced-subtitle
kanalı rolünü destekleyin (#9727).main
kanalı 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öreli
MPD.Location
URL'lerini destekler (#9939).
- HLS:
Format.label
öğesini yalnızca ses HLS akışları için doğru şekilde doldurun (#9608).- Başlatma süresini iyileştirmek için parçasız hazırlığı varsayılan olarak kullanın. Oluşturma işlemleriniz ana oynatma listesinde bildirilmeyen karışık altyazı parçaları içeriyorsa bunları çalmak için ana oynatma listesine eklemeniz veya
HlsMediaSource.Factory.setAllowChunklessPreparation(false)
ile parçasız hazırlamayı kapatmanız gerekir. - HLS'de anahtar kare doğru arama özelliğini destekleme (#2882).
- RTSP:
- Herhangi bir sunucu bağlantısı için kullanılan
SocketFactory
parametresini geçersiz kılacak bir istemci API'si sağlayın (#9606). - Her ikisi de mevcutsa BASIC yerine DIGEST kimlik doğrulama yöntemini tercih edin (#9800).
- RTSP izleme zamanlaması kullanılamadığında işleyin (#9775).
- Geçersiz RTP-Info başlık değerlerini yoksay (#9619).
- Herhangi bir sunucu bağlantısı için kullanılan
- Dönüştürücü:
- Gerekli minimum API sürümünü 21'e yükseltin.
TransformationException
artık dönüşüm sırasında oluşan hataları tanımlamak için kullanılıyor.- Dönüştürme seçeneklerini belirtmek için
TransformationRequest
ekleyin. - Birden fazla dinleyicinin kaydedilmesine izin verin.
- codec çıkışı kısmen okunduğunda Dönüştürücünün takılması sorunu düzeltildi.
- Muxer'ları serbest bırakırken
Transformer.getProgress
ürününde olası NPE'yi düzeltin. - Dönüşüm uygulamak için bir demo uygulama ekleyin.
- MediaSession uzantısı:
- Varsayılan olarak
MediaSessionConnector
, durdurulduğunda oynatma listesini temizler. Oynatma listesinin saklanmasını isteyen uygulamalar, bağlayıcıdasetClearMediaItemsOnStop(false)
komutunu çağırabilir.
- Varsayılan olarak
- Yayın uzantısı:
- FFmpeg uzantısı:
build_ffmpeg.sh
işlevinin, GNU'lar yerine LLVM'nin kutu yardımcılarına dayalı olmasını sağlayın (#9933).
- Android 12 uyumluluğu:
- Cast uzantısını,
com.google.android.gms:play-services-cast-framework:20.1.0
uygulamasına bağımlı olacak şekilde yeni sürüme geçirin. Öncekiplay-services-cast-framework
sürümleri Android 12'yi hedefleyen uygulamalarla uyumlu değildir vePendingIntent
oluşturulurkenIllegalArgumentException
ile kilitlenir (#9528).
- Cast uzantısını,
- Kullanımdan kaldırılan simgeleri kaldırın:
Player.EventListener
öğesini kaldır Bunun yerinePlayer.Listener
politikasını kullanın.MediaSourceFactory#setDrmSessionManager
,MediaSourceFactory#setDrmHttpDataSourceFactory
veMediaSourceFactory#setDrmUserAgent
uygulamalarını kaldırın. Bunun yerineMediaSourceFactory#setDrmSessionManagerProvider
kullanın.MediaSourceFactory#setStreamKeys
öğesini kaldır Bunun yerineMediaItem.Builder#setStreamKeys
kullanın.MediaSourceFactory#createMediaSource(Uri)
öğesini kaldır Bunun yerineMediaSourceFactory#createMediaSource(MediaItem)
kullanın.setTag
adlı kitleyiDashMediaSource
,HlsMediaSource
veSsMediaSource
adlı reklam grubundan kaldırın. Bunun yerineMediaItem.Builder#setTag
politikasını kullanın.DashMediaSource#setLivePresentationDelayMs(long, boolean)
öğesini kaldır Manifest'i geçersiz kılmak içinMediaItem.Builder#setLiveConfiguration
veMediaItem.LiveConfiguration.Builder#setTargetOffsetMs
, yedek değer sağlamak içinseDashMediaSource#setFallbackTargetLiveOffsetMs
kullanın.(Simple)ExoPlayer.setThrowsWhenUsingWrongThread
öğesini kaldır İş parçacığı yaptırımının kapsamı dışında kalmak artık mümkün değildir.ActionFile
veActionFileUpgradeUtil
kaldırılır. Eski işlem dosyalarınıDefaultDownloadIndex
ile birleştirmek içinActionFileUpgradeUtil
uygulamasını kullanmak istiyorsanız ExoPlayer 2.16.1 veya daha eski bir sürüm kullanın.ProgressiveMediaSource#setExtractorsFactory
öğesini kaldır Bunun yerineProgressiveMediaSource.Factory(DataSource.Factory, ExtractorsFactory)
oluşturucuyu kullanın.ProgressiveMediaSource.Factory#setTag
veProgressiveMediaSource.Factory#setCustomCacheKey
öğelerini kaldırın. Bunun yerineMediaItem.Builder#setTag
veMediaItem.Builder#setCustomCacheKey
kullanın.DefaultRenderersFactory(Context, @ExtensionRendererMode int)
veDefaultRenderersFactory(Context, @ExtensionRendererMode int, long)
oluşturucularını kaldırın. Bunun yerineDefaultRenderersFactory(Context)
oluşturucuyu,DefaultRenderersFactory#setExtensionRendererMode
veDefaultRenderersFactory#setAllowedVideoJoiningTimeMs
kullanın.- Herkese açık tüm
CronetDataSource
oluşturucularını kaldır. Bunun yerineCronetDataSource.Factory
kullanın.
- Aşağıdaki
IntDefs
değerini yalnızca@Target(TYPE_USE)
olarak değiştirin. Bu durum, Kotlin'deki kullanım derlemelerini bozabilir. Bu durumda, ek açıklamayı türe (Int
) açıklama ekleyerek düzeltebilirsiniz.@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
pakette)@FragmentedMp4Extractor.Flags
@HlsMediaPlaylist.PlaylistType
@HttpDataSourceException.Type
@IllegalClippingException.Reason
@IllegalMergeException.Reason
@LoadErrorHandlingPolicy.FallbackType
@MatroskaExtractor.Flags
@Mp3Extractor.Flags
@Mp4Extractor.Flags
@NotificationUtil.Importance
@PlaybackException.FieldNumber
@PlayerNotificationManager.Priority
@PlayerNotificationManager.Visibility
@PlayerView.ShowBuffering
@Renderer.State
@RendererCapabilities.AdaptiveSupport
@RendererCapabilities.Capabilities
@RendererCapabilities.DecoderSupport
@RendererCapabilities.FormatSupport
@RendererCapabilities.HardwareAccelerationSupport
@RendererCapabilities.TunnelingSupport
@SampleStream.ReadDataResult
@SampleStream.ReadFlags
@StyledPlayerView.ShowBuffering
@SubtitleView.ViewType
@TextAnnotation.Position
@TextEmphasisSpan.MarkFill
@TextEmphasisSpan.MarkShape
@Track.Transformation
@TrackOutput.SampleDataPart
@Transformer.ProgressState
@TsExtractor.Mode
@TsPayloadReader.Flags
@WebvttCssStyle.FontSizeUnit
Sürüm 1.0.0-alpha01
27 Ekim 2021
androidx.media3:media3-*:1.0.0-alpha01
yayınlandı.
1.0.0-alpha01 sürümü bu kaydetmeleri içerir.
Yeni özellikler
Media3, ExoPlayer gibi medya destek kitaplıklarının yeni adresidir. İlk alfa sürümü, medya kullanım alanlarını uygulamaya yönelik kitaplıkların erken aşamadaki işlevsel uygulamalarını içerir. Örneğin:
- Android için kolayca özelleştirilip genişletilebilen uygulama düzeyinde bir medya oynatıcı olan ExoPlayer.
- Oynatmaları göstermek ve kontrol etmek için medya oturumu işlevi. Bu yeni oturum modülü, ExoPlayer ile aynı
Player
arayüzünü kullanır. - Medya oynatma kullanıcı arayüzleri oluşturmak için kullanılan kullanıcı arayüzü bileşenleri.
- ExoPlayer ile kullanılmak üzere diğer kitaplıklarda bulunan sarmalama işlevi (ör. IMA SDK aracılığıyla reklam ekleme).
Daha fazla bilgi için Media3 GitHub projesine bakın.
ExoPlayer daha önce ayrı bir ExoPlayer GitHub projesinde barındırılıyordu. Media3'teki paket adı androidx.media3.exoplayer
şeklindedir. Uygulamaların Media3'e taşınması için zaman tanımak amacıyla ExoPlayer GitHub projesini bir süre daha yayınlamaya ve yayınlamaya devam etmeyi planlıyoruz. Media3'te, yeni media3-session
modülüyle değiştirilen eski media2 ve mediasession uzantıları hariç tüm ExoPlayer modüllerinin yerine bulunmaktadır. Bu, 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.