Medya3
Son Güncelleme | Kararlı Sürüm | Sürüm Adayı | Beta Sürümü | Alfa Sürümü |
---|---|---|---|---|
13 Kasım 2024 | 1.4.1 | 1.5.0-rc01 | - | - |
Bağımlılıkları beyan etme
Media3'e bağımlılık eklemek için projenize Google Maven deposunu eklemeniz gerekir. Daha fazla bilgi için Google'ın Maven deposunu inceleyin.
Uygulamanızın veya modülünüzün build.gradle
dosyasına ihtiyacınız olan yapıların bağımlılıklarını ekleyin:
Groovy
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 başlıklı makaleyi inceleyin.
Geri bildirim
Geri bildiriminiz Jetpack'in iyileştirilmesine yardımcı olur. Sorulara, bilinen sorunlara ve özellik isteklerine yanıt bulmak ve yeni sorunlar bildirmek için Media3 sorun izleyicisini kullanabilirsiniz.
Sürüm 1.5
1.5.0-rc02 (2024-11-19)
androidx.media3:media3-*:1.5.0-rc02
yayınlanır.
1.5.0-rc02 sürümü bu taahhütleri içerir.
Bu sürüm, 1.5.0-rc01 sürümünden bu yana yapılan aşağıdaki değişiklikleri içerir:
- Ayıklayıcılar:
- AC-4 4. Katman ISO temel medya dosyası biçimi desteği eklendi (#1265).
- Metin:
- Sana Özel bölümünde birden fazla SEI mesajı bulunan içeriklerde bozuk CEA-608 altyazılarını düzeltin.
- CEA-608 altyazılar etkinleştirildiğinde DASH çok dönemli akışlarda oynatma işleminin takılmasını düzeltin (#1863).
- MP4 dosyalarında her örneği yanlış bir şekilde senkronizasyon örneği olarak işaretleyen bozuk CEA-608 altyazılarını düzeltin (#1863).
- Demo uygulama
- Demo kısa video uygulamasındaki bellek sızıntısını giderin (#1839).
1.5.0-rc01 (2024-11-13)
androidx.media3:media3-*:1.5.0-rc01
yayınlanır.
1.5.0-rc01 sürümü bu taahhütleri içerir.
Bu sürüm, 1.5.0-beta01 sürümünden bu yana yapılan aşağıdaki değişiklikleri içerir:
- ExoPlayer:
- Oynatma listesi öğelerinin veya çok dönemli DASH akışlarındaki dönemlerin gerçek içerikle eşleşmeyen sürelerinin, öğenin sonunda kare donmasına neden olabileceği hatayı düzeltme (#1698).
- Son güncellemeden sonra geçen maksimum süreyi ayarlamak için
SntpClient
öğesine bir ayarlayıcı ekleyin. Bu sürenin sonunda istemci yeniden başlatılır (#1794).
- Ayıklayıcılar:
- Veri Kaynağı:
DataSourceContractTest
:DataSource.getUri()
'un çözümlenmiş URI'yi (belgelerde belirtildiği gibi) döndürdüğünü doğrulayın. Bu, istenen URI'den farklıysa testler yeniDataSourceContractTest.TestResource.Builder.setResolvedUri()
yöntemini kullanarak bunu belirtebilir.DataSourceContractTest
:DataSource.getUri()
vegetResponseHeaders()
'nin,open()
'a yapılan bir çağrının başarısız olmasından (kaynak "bulunamadı" nedeniyle) sonra ve sonraki birclose()
çağrısından önce "açık" değerini döndürdüğünü doğrulayın.DataSourceContractTest.getNotFoundResources()
'ü geçersiz kılmak, test alt sınıflarının birden fazla "bulunamadı" kaynağı sağlamasına ve beklenen tüm üstbilgileri de sağlamasına olanak tanır. Bu sayede HTTP 404 (başlıklarla) ile "sunucu bulunamadı" (başlık yok) arasında ayrım yapılabilir.
- Metin:
- H.264 MPEG-TS akışlarında CEA-608 altyazılarının yayınlanmaması sorunu düzeltildi (bu sorun, https://github.com/androidx/media/commit/03a205f220ecf7681f85f8a752227e3986e257ff tarafından
1.5.0-alpha01
sürümünde bozulmuştu). - Dolby Vision içeriklerinde CEA-608 altyazı desteği (#1820).
- H.264 MPEG-TS akışlarında CEA-608 altyazılarının yayınlanmaması sorunu düzeltildi (bu sorun, https://github.com/androidx/media/commit/03a205f220ecf7681f85f8a752227e3986e257ff tarafından
- RTSP Uzantısı:
- Başlık uzantılarıyla RTP paketleri ayrıştırılırken kilitlenme sorunu düzeltildi (#1225).
Sürüm 1.5.0-beta01
30 Ekim 2024
androidx.media3:media3-*:1.5.0-beta01
yayınlanır.
1.5.0-beta01 sürümü bu taahhütleri içerir.
- Ortak Kitaplık:
- Çalışma zamanında sınıf doğrulama hatalarını önlemek için tasarlanmış, manuel olarak satır dışı bırakılmış iç sınıflardan
@DoNotInline
ek açıklamalarını kaldırın. R8'in son sürümleri artık çalışma zamanındaki hataları önlemek için bu tür satır dışı çağrıları otomatik olarak satır dışına çıkarıyor (bu nedenle manuel satır dışı çıkarma işlemi artık gerekli değildir). Kitaplığın tüm Gradle kullanıcıları,compileSdk = 35
nedeniyle, bunu yapan bir R8 sürümünü kullanan Android Gradle eklentisinin bir sürümünü zaten kullanıyor olmalıdır. Gradle dışında bir derleme sistemi kullanan kitaplık kullanıcılarının, çalışma zamanında sınıf doğrulama hatalarını önlemek için R8 eşdeğeri küçültme/karartma adımlarının benzer bir otomatik satır dışı bırakma işlemi gerçekleştirdiğinden emin olmaları gerekir. Bu değişiklik diğer AndroidX kitaplıklarında zaten yapılmıştır.
- Çalışma zamanında sınıf doğrulama hatalarını önlemek için tasarlanmış, manuel olarak satır dışı bırakılmış iç sınıflardan
- ExoPlayer:
MediaCodec
, asenkron modda çalıştırıldığındaMediaCodec.CryptoException
bazen "beklenmeyen çalışma zamanı hatası" olarak raporlanıyordu (API 31 ve sonraki sürümlerde varsayılan davranış). Bu sorun düzeltildi.PreloadMediaSource.PreloadControl.onContinueLoadingRequested()
ilebufferedPositionUs
yerinebufferedDurationUs
gönderin. AyrıcaDefaultPreloadManager.Status.STAGE_LOADED_TO_POSITION_MS
,DefaultPreloadManager.Status.STAGE_LOADED_FOR_DURATION_MS
olarak değiştirilir. Ardından uygulamaların, varsayılan başlangıç konumundan itibaren belirli bir süreyi temsil eden bir değer iletmesi gerekir. Bu durumda, ilgili medya kaynağının konum yerine bu IntDef ile önceden yüklenmesi gerekir.- Tüm yöntem çağrılarını başka bir oluşturma aracına yönlendiren
ForwardingRenderer
uygulamasını ekleyin (1703). - Oynatma listesindeki bir sonraki öğe için oynatma listesi ön yükleme özelliğini ekleyin. Uygulamalar,
ExoPlayer.setPreloadConfiguration(PreloadConfiguration)
işlevini uygun şekilde çağırarak önceden yüklemeyi etkinleştirebilir. Önceden yükleme varsayılan olarak devre dışıdır. Etkinleştirildiğinde ve oynatma işlemini etkilememesi içinDefaultLoadControl
, ön yüklemenin yalnızca oynatıcı oynatma için yüklenmediği durumlarda başlatılmasını ve devam etmesini kısıtlar. Uygulamalar,LoadControl.shouldContinuePreloading()
'ü uygun şekilde uygulayarak (ör.DefaultLoadControl
'te bu yöntemi geçersiz kıldığında) bu davranışı değiştirebilir.LoadControl
'nin varsayılan uygulaması, bir uygulamaLoadControl
'nin özel bir uygulamasını kullanıyorsa ön yüklemeyi devre dışı bırakır. - Alt sınıf dinleyicilerinin etkinliklerinin çağrılmasına izin vermek için
MediaSourceEventListener.EventDispatcher.dispatchEvent()
yöntemini ekleyin (1736). DefaultPreloadManager
veExoPlayer
örneklerini tutarlı bir şekilde paylaşılan yapılandırmalarla oluşturanDefaultPreloadManager.Builder
öğesini ekleyin.DefaultLoadControl
uygulaması akış türleriniExoTrackSelection[]
'ten alabileceğindenRenderer[]
parametresiniLoadControl.onTracksSelected()
'ten kaldırın.DefaultLoadControl.calculateTargetBufferBytes(Renderer[], ExoTrackSelection[])
desteği sonlandırıldı ve geçersiz kılma işlemlerini önlemek için yöntem nihai olarak işaretlendi. Bunun yerine yeniDefaultLoadControl.calculateTargetBufferBytes(ExoTrackSelection[])
kullanılmalıdır.MergingMediaSource
'te ikincil kaynaklardan gelenMediaSourceEventListener
etkinliklerini bildirme. Bu işlem, yan taraftan yüklenen altyazılar (MediaItem.LocalConfiguration.subtitleConfigurations
ile eklenen altyazılar) için yükleme başlangıcı/hata/iptal/tamamlanma etkinliklerinin raporlanmasına neden olur. Bu etkinlikler,AnalyticsListener
tarafından yayınlanan yinelenen yükleme etkinlikleri olarak görünebilir.- Altyazı ve meta veri hatalarının oynatmayı tamamen durdurmasını önler.
Bunun yerine, sorunlu parça devre dışı bırakılır ve kalan parçaların oynatılması devam eder (#1722).
- Yeni altyazı işleme sürecinde (ayrıştırma sırasında), ilişkili ayrıştırma (ör. geçersiz altyazı verileri) ve yükleme hataları (ör. HTTP 404)
onLoadError
geri çağırma işlevleri aracılığıyla yayınlanır. - Eski altyazı işleme sürecinde (oluşturma sırasında), yalnızca ilişkili yükleme hataları
onLoadError
geri çağırma işlevleri aracılığıyla yayınlanırken ayrıştırma hataları sessizce yoksayılır (bu, önceden var olan bir davranıştır).
- Yeni altyazı işleme sürecinde (ayrıştırma sırasında), ilişkili ayrıştırma (ör. geçersiz altyazı verileri) ve yükleme hataları (ör. HTTP 404)
- Dönüştürücü:
- Resim dışa aktarma işlemi için
MediaItem.Builder.setImageDurationMs
kullanarak resim süresini ayarlamayı zorunlu kılın. - EditedMediaItems ses dizilerindeki boşluklar için dışa aktarma desteği eklendi.
- Resim dışa aktarma işlemi için
- Parça Seçimi:
DefaultTrackSelector
: Diğer faktörler eşit olduğunda kanal tabanlı ses yerine nesne tabanlı sesi tercih edin.
- Ayıklayıcılar:
- MP4 dosyalarındaki düzenleme listelerini işlerken anahtar kare olmayan medya başlangıç konumları için önizleme örneği işlemeyi düzeltin (#1659).
Mp4Extractor
veFragmentedMp4Extractor
'dekimdhd
kutusundaki medya süresinden yararlanarak kare hızı hesaplaması iyileştirildi (#1531).- MP4 düzenleme listelerinde
media_time
öğesinin yanlış ölçeklendirilmesi düzeltildi.segment_duration
, film zaman ölçeği kullanılarak zaten doğru şekilde ölçeklendirilmişkenmedia_time
, MP4 biçim standardında (#1792) belirtildiği gibi parça zaman ölçeği kullanılarak doğru şekilde ölçeklendirilir. - Düzenleme listesi ile MP4 için
endIndices
hesaplamasında sıra dışı kareleri ele alın (#1797).
- Ses:
- Arama sırasında oluşabilecek patlama seslerini düzeltme
- Sonic'in zaman uzatma/ton değiştirme algoritması için kesme hatası birikmesini düzeltin.
SpeedChangingAudioProcessor
'te çıkış karelerinin atlanmasına neden olan hata düzeltildi.
- Video:
- Galaxy Tab S7 FE'de 60 fps güvenli H264 akışlarının desteklenmiyor olarak işaretlenmesine neden olan cihaz sorunu için geçici çözüm eklendi (#1619).
- Son örnekten sonra yayın sonu sinyali döndürmeden takılan codec'ler için geçici çözüm ekleyin.
- Metin:
- HLS'de çok büyük altyazı zaman damgalarına (mikrosaniye olarak gösterildiğinde ve
90,000
MPEG zaman tabanıyla çarpıldığında 64 bitlik birlong
'yi aşan) sahip WebVTT'nin gösterildiğinden emin olun (#1763).
- HLS'de çok büyük altyazı zaman damgalarına (mikrosaniye olarak gösterildiğinde ve
- Meta veriler:
- icy veya vnd.dvb.ait içeriği içeren parçalara
C.TRACK_TYPE_METADATA
türünü atayın.
- icy veya vnd.dvb.ait içeriği içeren parçalara
- DRM:
- DRM oturumu açmaya çalıştığınızda
DefaultDrmSession.requiresSecureDecoder
hatası alıyorsanızIllegalStateException
sorununu düzeltin. Bu sorun1.5.0-alpha01
sürümünde kullanıma sunulmuştur.
- DRM oturumu açmaya çalıştığınızda
- Karıştırıcılar:
- IMA uzantısı:
- Sunucu tarafına önceden yerleştirilmiş DAI akışlarının, son orta reklamdan sonra oynatıldığında
ArrayIndexOutOfBoundsException
hatasına neden olabileceği hatayı düzeltme (#1741).
- Sunucu tarafına önceden yerleştirilmiş DAI akışlarının, son orta reklamdan sonra oynatıldığında
- Oturum:
- Eski bir hizmete bağlanıldığında
MediaBrowser
'ten gönderilen özel komutların yönteminMediaBrowserServiceCompat
varyantı yerineMediaSessionCompat.Callback
varyantına gönderilmesine neden olan hata düzeltildi. Bu durum,MediaBrowser
'ün eski hizmet tarafından geri gönderilen gerçek döndürülen değeri almasını engelledi (#1474). - Medya düğmesi intent'leri için yayın alıcısını ayarlarken belirli üreticilerin cihazları tarafından atılan
IllegalArgumentException
değerini işleyin (#1730). - Medya öğeleri için komut düğmeleri ekleyin. Bu işlem,
Custom browse actions
olarak bilinen eski kitaplığaMediaBrowserCompat
ile Media3 API'yi ekler. Media3 ile medya öğeleri için komut düğmelerinin hemMediaBrowser
hem deMediaController
için kullanılabileceğini unutmayın. AAOS'un özel Göz atma işlemleri başlıklı makaleyi inceleyin. - Media3 denetleyicisinin bazen
play()
isteğinde bulunduktan sonra oturum uygulamasının ön plan hizmetini başlatmasına izin vermediği hata düzeltildi. CommandButton.Builder.setIconUri
'ü yalnızca içerik URI'lerini kabul edecek şekilde kısıtlayın.- Eski bir
MediaBrowserCompat
'e bağlanırken Media3 tarayıcısının bağlantı ipuçlarını ilkMediaBrowserCompat
'e iletin. Hizmet,onGetRoot()
çağrısına yapılan ilk çağrıda kök ipucu olarak iletilen bağlantı ipuçlarını alabilir. - Eski bir tarayıcı hizmetine bağlı bir
MediaBrowser
'nin, tarayıcı birparentid
'a abone olduktan sonra hizmet tarafından gönderilen hatayı almamasına neden olan hata düzeltildi. - Eski bir
MediaBrowserService
'e bağlı bir Media3 tarayıcısının, bir üst öğeye abone olurkenparentId
'un çocuklarını iki kez istememesi için birlikte çalışabilirlik davranışını iyileştirin.
- Eski bir hizmete bağlanıldığında
- Kullanıcı Arayüzü:
- XML tabanlı paylaşılan geçişlerle ilgili sorunlar nedeniyle
PlayerView
-in-Compose-AndroidView
geçici çözümünde, videoyu uzatılmış/kırpılmış olarak oluşturun.AndroidView
içindePlayerView
kullanan uygulamaların etkinleştirmek içinPlayerView.setEnableComposeSurfaceSyncWorkaround
'yi çağırması gerekir (#1237, #1594). - Tam ekran düğmesinin simgesinin isteğe bağlı olarak güncellenmesine izin vermek için
setFullscreenButtonState
öğesiniPlayerView
öğesine ekleyin. Yani, tıklama etkileşimine tepki olarak değil, bant dışı olarak güncelleme yapılmalıdır (#1590, #184). - Uygulama tanımlı metin parçası seçim tercihleri varsa metin seçiminde "Yok" seçeneğinin çalışmadığı hata düzeltildi.
- XML tabanlı paylaşılan geçişlerle ilgili sorunlar nedeniyle
- Sorunsuz Yayın Uzantısı:
- Metin parçaları içeren SmoothStreaming yayınlarını oynatırken
Bad magic number for Bundle
hatası düzeltildi (#1779).
- Metin parçaları içeren SmoothStreaming yayınlarını oynatırken
- RTSP Uzantısı:
- Kodlanmış @ karakterleri içeren URL'lerde kullanıcı bilgilerinin kaldırılması sorunu düzeltildi (#1138).
- Kod Çözücü Uzantılar (FFmpeg, VP9, AV1 vb.):
- Android 15'te kod çözücü uzantıları için 16 KB sayfa desteği ekleyin (#1685).
- Cast Uzantısı:
- CastSession bağlantısı kesildikten sonra zaman çizelgesini temizlemeyi durdurur. Bu sayede gönderen uygulama, bağlantı kesildikten sonra oynatmayı yerel olarak devam ettirebilir.
- Bir
Context
sağlandığında CastPlayer'ınDeviceInfo
değerini doldurun. Bu,MediaSession
öğesinin birRoutingSession
öğesine bağlanmasını sağlar. Çıkış değiştiricinin (#1056) entegrasyonu için bu gereklidir.
- Desteği sonlandırılan sembolleri kaldırın:
- Desteği sonlandırılan
DefaultEncoderFactory
kurucularını kaldırın. Bunun yerineDefaultEncoderFactory.Builder
kullanın.
- Desteği sonlandırılan
Sürüm 1.5.0-alpha01
10 Eylül 2024
Bu sürüm, 1.4.1 sürümünden bu yana yapılan aşağıdaki değişiklikleri içerir:
- Ortak Kitaplık:
- Tam tutarlılık ve dinleyicinin işlenmesi sağlanırken küçük ayarlamalarla başka bir oynatıcıya yönlendirmeye olanak tanıyan
ForwardingSimpleBasePlayer
ekleyin (#1183). SimpleBasePlayer.State.playlist
yerinegetPlaylist()
yöntemini kullanın.- Oynatma listesi yapısı oluşturmak yerine doğrudan bir
Timeline
ve mevcutTracks
veMetadata
belirtmek içinSimpleBasePlayer.State.Builder.setPlaylist()
için geçersiz kılma ekleyin. minSdk
değerini 21'e (Android Lollipop) yükseltin. Bu, diğer tüm AndroidX kitaplıklarıyla uyumludur.- Ortak kitaplığın üzerine inşa edilmiş Kotlin'e özgü işlevler sağlayan
androidx.media3:media3-common-ktx
yapısını ekleyin media3-common-ktx
kitaplığına,Player.Events
'u dinlemek için bir coroutine döndürmek üzerePlayer.listen
askıya alma uzantı işlevini ekleyin.
- Tam tutarlılık ve dinleyicinin işlenmesi sağlanırken küçük ayarlamalarla başka bir oynatıcıya yönlendirmeye olanak tanıyan
- ExoPlayer:
MediaCodecRenderer.onProcessedStreamChange()
artık her medya öğesi için çağrılabilir. Daha önce ilk için çağrılmamış. Bunu etkinleştirmek içinMediaCodecRenderer.experimentalEnableProcessedStreamChangedAtStart()
simgesini kullanın.- Hata oluştuğunda
PreloadMediaSource.PreloadControl
uygulamalarının işlem yapmasına izin vermek içinPreloadMediaSource.PreloadControl.onPreloadError
ekleyin. - Ön yükleme etkinliklerini uygulamalara dağıtmak için
BasePreloadManager.Listener
ekleyin. - SNTP istemci zaman aşımının değiştirilmesine izin verin ve zaman aşımı durumunda alternatif adresleri yeniden deneyin (#1540).
- Alan her zaman sıfır olduğu için
MediaCodecAdapter.Configuration.flags
değerini kaldırın. - Kullanıcının, Wear OS API 35 ve sonraki sürümlerde (cihazın bu özelliği desteklediğini belirttiği durumlarda) oynatma için yerleşik hoparlörü seçmesine izin verin.
- Ses odak işleme etkinleştirilene kadar
Context.getSystemService(Context.AUDIO_SERVICE)
numaralı telefona yapılan engelleme çağrısını erteleyin. Bu, ses odak işleme etkinleştirilmemişse engelleme çağrısının yapılmamasını sağlar (#1616). - Yükleme başarısız olduğunda arabelleğe alınan süreye bakılmaksızın oynatmaya izin verin (#1571).
- Ayrı ayrı oluşturma araçları oynatmanın hazır olmasına izin verdiğinde
AnalyticsListener.onRendererReadyChanged()
ekleyin.
- Dönüştürücü:
Surface
aracılığıyla video verilerinin Transformer'a sıraya eklenmesini destekleyenSurfaceAssetLoader
öğesini ekleyin.ImageAssetLoader
,IllegalStateException
atma yerineAssetLoader.onError
aracılığıyla desteklenmeyen girişi bildirir.
- Ayıklayıcılar:
Mp4Extractor
veFragmentedMp4Extractor
'nin, sonraki örnekler tarafından referans olarak kullanılmayan H264 örneklerini tanımlamasına izin verin.AmrExtractor
'te dizin tabanlı aramayı etkinleştirme seçeneği ekleyin.- Geçerli kareler arasında 128 KB'den uzun MP3 dosyalarını "geçersiz" yerine "kesilmiş" olarak değerlendirin. Bu, MP3 baytlarının uzunluğunu belirten başka bir meta verisi olmayan ve sonunda MP3 olmayan veriler içeren dosyaların artık
ParserException: Searched too many bytes.{contentIsMalformed=true, dataType=1}
(#1563) hatasıyla başarısız olmak yerine MP3 verilerinin sonunda oynatmayı durduracağı anlamına gelir.
- Veri Kaynağı:
HttpEngineDataSource
'ü, API düzeyi 34 yerine S uzantısı 7 sürümünden itibaren kullanıma izin verecek şekilde güncelleyin (#1262).
- Ses:
- Medyada varsa codec'te CTA-2075 ses seviyesi meta verilerini otomatik olarak yapılandırın.
- Sarma sırasında sesin kademeli olarak azaldığından emin olun.
- Video:
MediaCodecVideoRenderer
, oluşturulmayan veya diğer örnekler tarafından referans olarak kullanılmayan örneklerin kodunu çözmez.- API 35 ve sonraki sürümlerde
MediaCodecAdapter
artıkconfigure
içinde birnull
Surface
alabilir ve codec bunu destekliyorsa (MediaCodecInfo.detachedSurfaceSupported
) daha önce ayarlanmış birSurface
'yi kaldırmak için yeni bir yöntemdetachOutputSurface
çağırır. onOutputFormatChanged
işlenirken sağlanmışsaMediaCodecAdapter
tarafından sağlanan piksel en boy oranı değerlerini kullanın (#1371).
- Metin:
- Özel bir
VoiceSpan
ekleyin ve WebVTT ses aralıkları için doldurun (#1632).
- Özel bir
- Resim:
- Glide veya Coil gibi harici resim yükleme kitaplıklarıyla basitleştirilmiş entegrasyon için
ExternallyLoadedImageDecoder
ekleyin.
- Glide veya Coil gibi harici resim yükleme kitaplıklarıyla basitleştirilmiş entegrasyon için
- Veri Kaynağı:
FileDescriptor
'den okumak için kullanılabilecek yeni birDataSource
olanFileDescriptorDataSource
'ü ekleyin (#3757).
- Etki:
- Küçük
SurfaceTexture
ölçeklendirmesi içinDefaultVideoFrameProcessor
geçici çözümü ekleyin.SurfaceTexture
, kırpılmış bir arabelleğin kenarında 1 piksellik bir kenar boşluğu kesen küçük bir ölçeklendirme içerebilir. Bu durum artık çıktının beklenene daha yakın olması için ele alınmaktadır. - Hızlandırma
DefaultVideoFrameProcessor.queueInputBitmap()
. Sonuç olarak,Transformer
ile resimleri videoya aktarma işlemi daha hızlıdır.
- Küçük
- IMA uzantısı:
- Oynatma listesinin temizlenmesinin
ImaServerSideAdInsertionMediaSource
'daArrayIndexOutOfBoundsException
'ye neden olabileceği hata düzeltildi.
- Oynatma listesinin temizlenmesinin
- Oturum:
- Uygulamaların bu yöntemi geçersiz kılarak oynatmaya devam etmek için gelen bir oynatma komutunu bastırmasına izin vermek üzere
MediaButtonReceiver.shouldStartForegroundService(Intent)
ekleyin. Varsayılan olarak hizmet her zaman başlatılır ve sistem birForegroundServiceDidNotStartInTimeException
ile hizmeti kilitlemeden oynatma durdurulamaz (#1528).
- Uygulamaların bu yöntemi geçersiz kılarak oynatmaya devam etmek için gelen bir oynatma komutunu bastırmasına izin vermek üzere
- DASH Uzantısı:
- Bir segmentin ortasından başlayan dönemler için destek ekleyin (#1440).
- Kod Çözücü Uzantılar (FFmpeg, VP9, AV1 vb.):
- Ses sentezlemek için libiamf yerel kitaplığını kullanan IAMF parçaları içeren MP4 dosyalarının oynatılmasına destek sağlayan IAMF kod çözücü modülünü ekleyin.
- Stereo düzenin yanı sıra isteğe bağlı kafa hareketi izleme özelliği etkinleştirildiğinde uzamsallaştırmayla 5.1 oynatma etkinleştirilir ancak binaural oynatma desteği şu anda kullanılamıyor.
- Ses sentezlemek için libiamf yerel kitaplığını kullanan IAMF parçaları içeren MP4 dosyalarının oynatılmasına destek sağlayan IAMF kod çözücü modülünü ekleyin.
- Cast Uzantısı:
- CastSession bağlantısı kesildikten sonra zaman çizelgesini temizlemeyi durdurur. Bu sayede gönderen uygulama, bağlantı kesildikten sonra oynatmayı yerel olarak devam ettirebilir.
- Bir
Context
sağlandığında CastPlayer'ınDeviceInfo
değerini doldurun. Bu,MediaSession
öğesinin birRoutingSession
öğesine bağlanmasını sağlar. Çıkış değiştiricinin (#1056) entegrasyonu için bu gereklidir.
- Test Yardımcı Programları:
DataSourceContractTest
artık aşağıdakileri doğrulamak için testler içerir:- Giriş akışı
read position
güncellendi. - Çıkış arabelleği
offset
doğru şekilde uygulanır.
- Giriş akışı
- Desteği sonlandırılan sembolleri kaldırın:
- Desteği sonlandırılan
Player.hasPrevious
,Player.hasPreviousWindow()
öğelerini kaldırın. Bunun yerinePlayer.hasPreviousMediaItem()
politikasını kullanın. - Desteği sonlandırılan
Player.previous()
yöntemini kaldırın. Bunun yerinePlayer.seekToPreviousMediaItem()
kullanın. - Desteği sonlandırılan
DrmSessionEventListener.onDrmSessionAcquired
yöntemini kaldırın.
- Desteği sonlandırılan
1.4.0 sürümü
Sürüm 1.4.1
27 Ağustos 2024
androidx.media3:media3-*:1.4.1
yayınlanır.
1.4.1 sürümü bu taahhütleri içerir.
- ExoPlayer:
- Ayıklayıcılar:
- MP3:
Info
çerçevesindeki uzunluk alanına göre MP3 olmayan son verileri doğru şekilde yoksayarakSearched too many bytes
hatasını düzeltin (#1480).
- MP3:
- Metin:
- TTML:
tts:fontSize
yüzde değerlerinin,tts:fontSize
yüzde değerlerine sahip üst düğümlerden doğru şekilde devralınmasını sağlamak içintts:fontSize
yüzde değerlerinin işlenmesi düzeltildi. - İstenilen çıkış başlangıç zamanının
Subtitle
'deki son etkinlik zamanından büyük veya eşit olması durumunun yanlış ele alınması nedeniyleLegacySubtitleUtil
'tekiIndexOutOfBoundsException
hatası düzeltildi (#1516).
- TTML:
- DRM:
- L1 Widevine içeriği oynatan API 31 ve sonraki sürümlerin cihazlarında
android.media.MediaCodec$CryptoException: Operation not supported in this configuration: ERROR_DRM_CANNOT_HANDLE
hatasını düzeltin. Bu hata, çerçeveMediaDrm.requiresSecureDecoder
yönteminin eksik uygulanmasından kaynaklanır (#1603).
- L1 Widevine içeriği oynatan API 31 ve sonraki sürümlerin cihazlarında
- Etki:
GlObjectsProvider
'arelease()
yöntemi ekleyin.
- Oturum:
KEYCODE_HEADSETHOOK
simgesine iki kez dokunma işlemini, belgelendiği gibi "sonrakiye git" işlemine dönüştürün (#1493).KEYCODE_HEADSETHOOK
değerini,MediaButtonReceiver
içinde "play" komutu olarak işleyin. Böylece,ForegroundServiceDidNotStartInTimeException
değerini atlayıp atlamamaya karar verebilirsiniz (#1581).
- RTSP Uzantısı:
- SDP ayrıştırmasında geçersiz medya açıklamalarını atlama (#1087).
1.4.0 sürümü
25 Temmuz 2024
androidx.media3:media3-*:1.4.0
yayınlanır.
1.4.0 sürümü bu taahhütleri içerir.
- Ortak Kitaplık:
- İşlemsiz olduğu varsayılan arama çağrılarını yoksaymak yerine korumalı
BasePlayer.seekTo()
veSimpleBasePlayer.handleSeek()
yöntemlerine yönlendirin. Bu yöntemleri özel bir oynatıcıda uyguluyorsanız bu ek çağrılarımediaItemIndex == C.INDEX_UNSET
ile işlemeniz gerekebilir. - Geliştirilmiş Java 8 şekerleme kaldırma işlemine yönelik derleme bağımlılığını kaldırın (#1312).
MediaItem.Builder.setImageDurationMs()
parametresine iletilen sürenin, resim olmayanMediaItem
için yoksayıldığından emin olun (belgelerde belirtildiği gibi).Format
örnekleri hakkında uygulama tarafından sağlanan özel bilgileri depolamak içinFormat.customData
ekleyin.
- İşlemsiz olduğu varsayılan arama çağrılarını yoksaymak yerine korumalı
- ExoPlayer:
- Birden fazla kaynağın ön yüklemesini,
rankingData
tarafından tanımlanan önceliklere göre koordine edenBasePreloadManager
öğesini ekleyin. Bu sınıfı genişleterek özelleştirme yapabilirsiniz. Kaynakların medya örneklerini belleğe ön yüklemek içinPreloadMediaSource
kullanan ve kullanıcı arayüzündeki bir öğenin dizesini belirten tam sayırankingData
kullananDefaultPreloadManager
ekleyin. LoadControl
uygulamalarının birden fazla oyuncuyu desteklemesini sağlamak içinLoadControl
yöntemlerinin çoğunaPlayerId
ekleyin.Buffer.isDecodeOnly()
veC.BUFFER_FLAG_DECODE_ONLY
öğelerini kaldırın. Oluşturucular ve kod çözücüler, zaman damgasına göre arabellekleri atlamaya karar vereceğinden bu iş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()
değerini kontrol edebilir veya diğer arabellekleri atlamak içinDecoderOutputBuffer.shouldBeSkipped
ile işaretleyebilir.- Belirtilen
rankingData
ile birMediaSource
'yi önceden yüklemeyeceğini belirtmek içinTargetPreloadStatusControl.getTargetPreloadStatus(T)
tarafından döndürülen boş değere izin verin. remove(MediaSource)
öğesiniBasePreloadManager
'a ekleyin.- Önyükleme yöneticisi örneğini korurken tüm bekletme kaynaklarını serbest bırakmak için
reset()
öğesiniBasePreloadManager
öğesine ekleyin. PriorityTaskManager
'de kullanılan öncelik değerini ve API 35'ten itibaren MediaCodec önemini tanımlamak içinExoPlayer.setPriority()
(veBuilder.setPriority()
) ekleyin.- Son yeniden arabelleğe alma süresinin güncellenmesiyle ilgili sorunu düzeltin. Bu sorun, CMCD'de yanlış
bs
(arabellek açlığı) anahtarına neden oluyordu (#1124). - Kaynağın sonuna kadar yüklendiğini belirtmek için
PreloadMediaSource.PreloadControl.onLoadedToTheEndOfSource(PreloadMediaSource)
ekleyin. Bu sayedeDefaultPreloadManager
ve özelPreloadMediaSource.PreloadControl
uygulamaları, sonraki kaynağı önceden yükleyebilir veya başka işlemler yapabilir. - Öğelerin sonunda sessiz bölümleri atlama işleminin oynatma istisnası tetiklemesine yol açan hata düzeltildi.
- Önceden yükleme süresini silmek için
clear
öğesiniPreloadMediaSource
'e ekleyin. - Daha yüksek öncelikli görevler için codec kaynakları yeniden kullanıldığında kullanılan yeni hata kodu
PlaybackException.ERROR_CODE_DECODING_RESOURCES_RECLAIMED
ekleyin. - İlk içerik medya hazırlığı tamamlanmadan önce
AdsMediaSource
'ün videodan önce gösterilen reklamları yüklemesine izin verin (#1358). - Orijinal dönem manifestten kaldırıldıktan sonra çok dönemli bir DASH canlı yayını yeniden hazırlanırken oynatma işleminin
STATE_ENDED
'e taşınmasına neden olan hata düzeltildi. PreloadMediaSource.PreloadControl
'teonTimelineRefreshed()
'üonSourcePrepared()
,onPrepared()
'yi iseonTracksSelected()
olarak yeniden adlandırın.DefaultPreloadManager.Stage
içindeki IntDefs'leri de uygun şekilde yeniden adlandırın.- Çalışmayı CPU uyanma döngüleriyle daha iyi uyumlu hale getirmek ve uyanma işlemini oluşturucuların ilerleyebileceği zamana ertelemek için dinamik planlama için deneysel destek ekleyin.
ExoPlayer örneğinizi ayarlarken
experimentalSetDynamicSchedulingEnabled()
seçeneğini kullanarak bu özelliği etkinleştirebilirsiniz. Renderer.getDurationToProgressUs()
ekleyin. BirRenderer
, ExoPlayer'a oynatmanın, oluşturma işleminin ilerlemesi için ilerlemesi gereken süreyi döndürmek üzere bu yöntemi uygulayabilir.ExoPlayer
,experimentalSetDynamicSchedulingEnabled()
ile ayarlanırsaExoPlayer
, iş görevini planlama zamanını hesaplarken bu yöntemi çağırır.- Giriş ve çıkış arabellekleri
MediaCodecRenderer
tarafından kullanılabilir olduğunda uyarı almak içinMediaCodecAdapter#OnBufferAvailableListener
ekleyin.MediaCodecRenderer
bu geri çağırma çağrılarını aldığındaExoPlayer
'e sinyal gönderir veExoPlayer
,experimentalSetDynamicSchedulingEnabled()
ile ayarlanmışsa oluşturucular ilerleme kaydedebileceğinden çalışma döngüsünü planlar.ExoPlayer
- Ayrı parametreler yerine
LoadControl
yöntemleri için veri sınıfını kullanın. Exoplayer.release()
işlevinin çağrılıp çağrılmadığını kontrol etmek içinExoPlayer.isReleased()
ekleyin.seekToPrevious()
'nin önceki öğeye bakacağı maksimum konumu yapılandırmak içinExoPlayer.Builder.setMaxSeekToPreviousPositionMs()
ekleyin (#1425).- Oynatıcı duraklatıldığında tam veya geçici odak kaybının raporlanmaması (#1436) gibi bazı ses odak tutarsızlıkları düzeltildi.
- İlk hazırlık adımı sonrasında ek parçalar bildiren ayıklayıcılar nedeniyle ortaya çıkabilecek
IndexOutOfBoundsException
sorununu düzeltin (#1476). ExoPlayer.setVideoEffect()
içindekiEffects
, zaman damgalarını oluşturucu ofseti kaldırılmış şekilde alır (#1098).- Başka bir oynatma listesi öğesinde ileriye doğru okuma yapılırken ortaya çıkan oynatıcı hatasını ele alırken olası
IllegalArgumentException
hatasını düzeltin (#1483).
- Birden fazla kaynağın ön yüklemesini,
- Dönüştürücü:
- Çıkış dosyasındaki ilgili parçanın nasıl oluşturulduğunu belirten
audioConversionProcess
vevideoConversionProcess
öğeleriniExportResult
içine ekleyin. - Kırpma optimizasyonu H.264 düzeyindeki kontrolleri gevşetin.
- SDR ve HDR giriş medyaları arasında sırayla geçiş yapma desteği eklendi.
- Beste düzeyinde ses efektleri için destek eklendi.
- Ultra HDR resimleri HDR videolara kodlama desteği eklendi.
DefaultAudioMixer
'ün sıfırlanıp yeniden kullanıldıktan sonra doğru bayt miktarını döndürmemesi sorunu düzeltildi.- PCM girişi işlenirken ses kanallarının sayısının stereo olarak sınırlandığı bir kod çözücü hatası için geçici çözüm.
ExoPlayerAssetLoader
'te parça seçerken yalnızca oynatma için geçerli olduklarından ses kanalı sayısı kısıtlamalarını yoksayabilirsiniz.androidx.media3.transformer.Muxer
arayüzünüandroidx.media3.muxer.Muxer
ile değiştirin veandroidx.media3.transformer.Muxer
'ü kaldırın.- İçerik URI şemalarından HEIC resim yükleme sorununu düzeltin. (#1373).
- AV senkronizasyonunu iyileştirmek için
AudioGraphInput
'te ses parçası süresini ayarlayın. ExportResult.processedInputs
alanını kaldırın. Bu alanı codec ayrıntıları için kullanıyorsanız bunun yerineDefaultDecoderFactory.listener
kullanın. Codec istisnası olması durumunda codec ayrıntılarıExportException.codecInfo
'te yer alır.
- Çıkış dosyasındaki ilgili parçanın nasıl oluşturulduğunu belirten
- Ayıklayıcılar:
- MPEG-TS: Bir yayının son erişim birimini örnek kuyruğuna aktararak son karenin oluşturulmasını sağlayarak değişikliği ileriye dönük olarak uygulayın (#7909). Yalnızca I-kare HLS yayınlarında(#1150) ve H.262 HLS yayınlarında (#1126) ortaya çıkan sorunları çözmek için düzeltmeler eklendi.
- MP3: Temel akış tarafından bildirilen boyut yerine
Info
çerçevesindeki veri boyutunu tercih edin (ör. dosya boyutu veya HTTPContent-Length
başlığı). Bu, oynatılamayan fragman verilerini (ör. albüm kapağı) sabit bit hızı arama hesaplamalarından hariç tutarak aramaları daha doğru hale getirir (#1376). - MP3: Sabit bit hızı arama için ortalama bit hızını hesaplamak üzere
Info
karesindeki kare sayısını ve diğer verileri (varsa) kullanın. Bu,Info
karesinden sonraki karenin bit hızından (ör.PCUT
karesi) ekstrapolasyon yapmak yerine yapılır. Bu işlem, yapay olarak küçük olabilir (#1376). - AVI kapsayıcılarında PCM ses biçimi ayıklama sorunu düzeltildi.
- Ses:
- Geçiş oynatma için DTS:X Profil 2 kodlama özelliklerini düzeltin (#1299).
- Aktarılan oynatma için
AudioTrack.stop()
çağrısı yapılmadan önceDefaultAudioSink
'te akış tamamlama izleme alanını sıfırlayın. BöyleceAudioTrack.StreamEventCallback#onPresentationEnded
, bekleyen tüm verilerin ne zaman oynatıldığını doğru şekilde tanımlayabilir. SilenceSkippingAudioProcessor
'te farklı ses biçimleri arasındaki geçişlerin (ör. stereodan monoya) işlemcinin istisna atmasına neden olabileceği hata düzeltildi (#1352).- ExoPlayer'ın ana çalışma döngüsünü MediaCodecAudioRenderer'ın ilerleme kaydedebileceği zamana dinamik olarak planlaması için
MediaCodecAudioRenderer.getDurationToProgressUs()
'ü uygulayın.
- Video:
- Oynatma sırasında yüzey değiştirirken
Listener.onRenderedFirstFrame()
'ün çok erken gelmesi sorunu düzeltildi. - Dolby Vision'un gerekirse uyumlu bir AV1 kod çözücüsü kullanması için kod çözücü yedek mantığını düzeltin (#1389).
- Oynatma sırasında video oluşturma aracının etkinleştirilmesinden kaynaklanabilecek codec istisnası düzeltildi.
- Oynatma sırasında yüzey değiştirirken
- Metin:
- Bir arama konumundan önce başlayan altyazıları atlama sorunu düzeltildi. Bu sorun yalnızca Media3 1.4.0-alpha01 sürümünde ortaya çıktı.
- Varsayılan altyazı ayrıştırma davranışını, oluşturma yerine ayıklama sırasında gerçekleşecek şekilde değiştirin (ayıklama ve oluşturma arasındaki fark için ExoPlayer'ın mimari şemasına bakın).
- Bu değişiklik,
MediaSource.Factory.experimentalParseSubtitlesDuringExtraction(false)
veTextRenderer.experimentalSetLegacyDecodingEnabled(true)
'in ikisi de çağrılarak geçersiz kılınabilir. Bu bileşenlerin birExoPlayer
örneğine nasıl bağlanacağı hakkında bilgi edinmek için özelleştirmeyle ilgili belgelere göz atın. Bu yöntemler (ve eski altyazı kod çözmeyle ilgili tüm destek) gelecekteki bir sürümde kaldırılacaktır. - Özel
SubtitleDecoder
uygulamaları olan uygulamaların,SubtitleParser
(veSubtitleDecoderFactory
yerineSubtitleParser.Factory
) uygulamak için bunları güncellemesi gerekir.
- Bu değişiklik,
- PGS:
0
değerini gerçek renk değeri yerine renk dizini olarak çözmek için satır uzunluğunu kod çözme işlemini düzeltin (#1367). - CEA-708:
rowLock
değerini yoksay. CEA-708-E S-2023 spesifikasyonunda, akıştaki değerlerden bağımsız olarakrowLock
vecolumnLock
değerlerinin her ikisinin de doğru olduğu varsayılır (columnLock
desteği uygulanmadığından her zaman yanlış olduğu varsayılır).- Bu değişiklik başlangıçta
1.3.0-alpha01
sürüm notlarına dahil edilmişti ancak1.3.0-rc01
sürümünden önce yanlışlıkla geri alındı. Bu sorun düzeltildi ve değişiklik tekrar uygulandı.
- Bu değişiklik başlangıçta
- CEA-708: ExoPlayer'ın "kalem konumunu ayarla" komutunu basit bir şekilde ele almasından dolayı yinelenen yeni satırların eklenmesini önleyin (#1315).
- WebVTT altyazı örneğinde işaret yoksa (ör. DASH yayınının parçası olarak)
IllegalArgumentException
'tenLegacySubtitleUtil
'e bir düzeltme yapın (#1516).
- Meta veriler:
- MP4 ile ID3 sıralama etiketlerinin eşlenmesi düzeltildi. Daha önce "albüm sıralaması" (
soal
), "sanatçı sıralaması" (soar
) ve "albüm sanatçısı sıralaması" (soaa
) MP4 etiketleri yanlışlıklaTSO2
,TSOA
veTSOP
ID3 etiketleriyle eşleniyordu (#1302). - Değer bir bayttan uzun olduğunda MP4 (/iTunes) sayısal
gnre
(tür) vetmpo
(tempo) etiketlerinin okunması düzeltildi. - ID3
TCON
çerçevesiniMediaMetadata.genre
'a aktarı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 eklendi.
- Daha önce ayarlanmış bir
ImageOutput
değerini temizlemek içinExoPlayer.setImageOutput()
parametresi olaraknull
değerine izin verin.
- Veri Kaynağı:
package
'ın mevcut uygulamanın paketinden farklı olduğuandroid.resource://package/id
ham kaynak URI'leri için destek uygulayın. Bu yöntemin daha önce çalıştığının belirtilmediği halde, başka bir paketteki kaynaklara ada göre erişmekten daha verimli bir yöntemdir.DataSpec
yapıcılarındaurl
değerinin null olmadığından emin olun. Bu parametre zaten boş olmayan olarak ek açıklamaya sahipti.ByteArrayDataSource
'ün, URI'yi oluşturma sırasında sabit kodlanmış olarak kullanmak yerineopen()
sırasında bir bayt dizisi olarak çözmesine izin verin (#1405).
- DRM:
DefaultDrmSessionManagerProvider
üzerindeLoadErrorHandlingPolicy
ayarlamaya izin verin (#1271).
- Etki:
SpeedChangeEffect
'de aynıEditedMediaItem
veyaComposition
içinde birden fazla hız değişikliğini destekler.- Ultra HDR bitmap girişinden HLG ve PQ çıkışı desteği.
- ExoPlayer.setVideoEffect ve Transformer'ın Debug SurfaceView'ı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 yer paylaşımı matrisi uygulamasını dokümanla tutarlı olacak şekilde güncelleyin.OverlaySettings.Builder.setOverlayFrameAnchor()
kullanıyorsanız x ve y değerlerini-1
ile çarparak tersine çevirin.TimestampWrapper
'ünExoPlayer#setVideoEffects
ile birlikte kullanıldığında kilitlenmesine yol açan hata düzeltildi (#821).- Varsayılan SDR renk çalışma alanını doğrusal renklerden elektrik BT 709 SDR videosuna değiştirin. Ayrıca orijinal renk alanını korumak için üçüncü bir seçenek de sunun.
- EditedMediaItemSequences için belirsiz z-sırasının tanımlanmasına izin verin (#1055).
- Farklı HDR içerik parçalarında tutarlı bir parlaklık aralığı kullanın (HLG aralığı kullanılır).
- HDR içeriklerde Ultra HDR (bitmap) yer paylaşımları için destek ekleme
- API 26'dan önce
SeparableConvolution
efektlerinin kullanılmasına izin verin. - Yer paylaşımının ve çerçevenin dinamik aralığı 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.Builder.setHdrLuminanceMultiplier()
ile ayarlanabilir.
- IMA uzantısı:
- Uygulamaların DAI reklam akışlarını oynatması için gereken API'yi kararlı sürüme geçirin.
- Reklam etiketi parametrelerinin çalışma zamanında değiştirilmesine olanak tanıyan
replaceAdTagParameters(Map <String, String>)
öğesiniImaServerSideAdInsertionMediaSource.AdLoader
içine ekleyin. - Reklam oynatma sırasında bir oynatıcı hatası oluştuğunda
VideoAdPlayer.VideoAdPlayerCallback.onError()
işlevinin çağrılmadığı hata düzeltildi (#1334). data://
reklam etiketi URI'leri kullanılırkenNullPointerException
hatasını düzeltmek için IMA SDK sürümünü 3.33.0'a yükseltin (#700).
- Oturum:
CommandButton.enabled
değerinin varsayılan değerinitrue
olarak değiştirin ve ilişkili komut mevcut olsa bile değerin kontrolörler için yanlış olarak kalmasını sağlayın.- Özel simge kaynakları yerine kullanılacak
CommandButton
için simge sabitleri ekleyin. - Uygulamaların, hizmetin
onTaskRemoved()
'te durdurulup durdurulmayacağını sorgulamasına izin vermek içinMediaSessionService.isPlaybackOngoing()
değerini ekleyin (#1219). - Tüm oturumların oynatılmasını duraklatmaya olanak tanıyan
MediaSessionService.pauseAllPlayersAndStopSelf()
işlevini ekleyin veMediaSessionService
öğesinin yaşam döngüsünü sonlandırmak içinstopSelf()
işlevini çağırın. - Oynatma devam ediyorsa hizmeti ön planda çalıştıran veya aksi takdirde durduran güvenli bir varsayılan uygulama sağlamak için
MediaSessionService.onTaskRemoved(Intent)
değerini geçersiz kılın. - Platform oturumu meta verilerine süreyi ayarlayarak canlı yayınların medya bildirimindeki ilerleme çubuğunu gizleme (#1256).
- Meta veri özelliklerini seçerken media1'de olduğu gibi aynı tercih edilen sırayı ve mantığı kullanmak için
MediaMetadata
dönüşümünüMediaDescriptionCompat
ile uyumlu hale getirin. - Media3 denetleyicisine önemli olmayan hataların gönderilmesine izin veren
MediaSession.sendError()
öğesini ekleyin. Bildirim denetleyicisi kullanıldığında (MediaSession.getMediaNotificationControllerInfo()
bölümüne bakın), özel hata, platform oturumununPlaybackState
değerini belirli hata bilgileriyle hata durumuna güncellemek için kullanılır (#543). - Belirli bir kumandadaki bir dizi oyuncu etkileşimi sona erdiğinde oturumları bilgilendirmek için
MediaSession.Callback.onPlayerInteractionFinished()
ekleyin. - Hata ve mümkünse hatanın nasıl çözüleceği hakkında daha fazla bilgi sağlamak için
SessionError
ekleyin ve hata kodu yerineSessionResult
veLibraryResult
içinde kullanın. - Medya oturumu yayınlayan uygulamalarla etkileşimleri test etmek için kullanılabilecek media3 denetleyici test uygulamasının kodunu yayınlayın.
- media3'ün
MediaSession[Builder].setSessionExtras()
özelliğine iletilen ekstraları media1 denetleyicisininPlaybackStateCompat.getExtras()
özelliğine iletin. - Önemli ve önemsiz hataları platform oturumuyla eşleyin. Bir
PlaybackException
,PlaybackStateCompat
'un kritik hata durumuyla eşlenir. Medya bildirim denetleyicisineMediaSession.sendError(ControllerInfo, SessionError)
ile gönderilen birSessionError
,PlaybackStateCompat
'de kritik olmayan bir hatayla eşlenir. Bu, hata kodu ve mesajın ayarlandığı ancak platform oturumunun durumununSTATE_ERROR
'tan farklı kaldığı anlamına gelir. - Genel oturum etkinliğini geçersiz kılmak için oturum etkinliğinin kontrol cihazı başına ayarlanmasına izin verin. Oturum etkinliği,
AcceptedResultBuilder.setSessionActivivty(PendingIntent)
ileConnectionResult
oluşturarak bağlantı sırasında bir kontrolör için tanımlanabilir. Bağlantı kurulduktan sonra oturum etkinliğiMediaSession.setSessionActivity(ControllerInfo, PendingIntent)
ile güncellenebilir. MediaLibrarySession.Callback
'e yapılan çağrıların hata kopyalama işlemi iyileştirildi. Hata çoğaltma özelliği artık hata türünü seçmek veya varsayılan olarak etkin olan hata çoğaltmayı devre dışı bırakmak içinMediaLibrarySession.Builder.setLibraryErrorReplicationMode()
kullanılarak yapılandırılabilir.
- Kullanıcı Arayüzü:
ExoPlayer
'a bağlıykenPlayerView
'e resim görüntüleme desteği ekleyin (#1144).- XML özellikleri aracılığıyla
PlayerControlView
'teki çeşitli simgelerin özelleştirmesini ekleyin. Böylece, genel geçersiz kılma yerine (#1200)PlayerView
örneği başına farklı çizilebilir öğelere izin verebilirsiniz. - API 34'te bir Compose
AndroidView
içindeSurfaceView
kullanıldığında videonun uzatılmasına/kırpılmasına neden olan platform hatasını giderme (#1237).
- İndirilenler:
DownloadHelper
'ün, yayınlanmamışRenderer
örneklerini sızdırmadığından emin olun. Bu durum, uygulamanınIllegalStateException: Too many receivers, total of 1000, registered for pid
ile kilitlenmesine neden olabilir (#1224).
- Cronet Uzantısı:
CronetDataSource
'tekiSocketTimeoutException
sorununu düzeltin. Cronet'in bazı sürümlerinde geri çağırma işlevi tarafından sağlanan istek her zaman aynı değildir. Bu durum, geri çağırma işleminin tamamlanmamasına ve isteğin zaman aşımına uğramasına neden olur (https://issuetracker.google.com/328442628).
- HLS Uzantısı:
- Kesintiyi bekleyen bekleyen EMSG örneklerinin,
HlsSampleStreamWrapper
içinde yanlış bir ofsetle atanması ve bunun sonucundaIndexOutOfBoundsException
veyaIllegalArgumentException
oluşmasına yol açan hata düzeltildi (#1002). - Birincil olmayan oynatma listelerinin LL-HLS yayınları için sürekli olarak yeniden yüklenmesine neden olan hata düzeltildi (#1240).
- Başlatma segmentleriyle HLS için CMCD'nin etkinleştirilmesinin
Source Error
veIllegalArgumentException
ile sonuçlandığı hatayı düzeltme. - Canlı oynatma sırasında birincil olmayan oynatma listelerinin yenilenmemesi hatası düzeltildi (#1240).
- HLS canlı yayınları için CMCD'nin etkinleştirilmesinin
ArrayIndexOutOfBoundsException
(#1395) hatasına neden olduğu sorun düzeltildi.
- Kesintiyi bekleyen bekleyen EMSG örneklerinin,
- DASH Uzantısı:
- Cast Uzantısı:
MediaQueueItem
albüm başlığını Media3 medya öğesindeki sanatçıya dönüştüren hatayı düzeltin (#1255).
- Test Yardımcı Programları:
FakeRenderer
'deonInit()
veonRelease()
işaretlemelerini uygulayın.TestPlayerRunHelper.runUntil()/playUntil()
yöntemlerini, önemli olmayan hatalarda (ör.AnalyticsListener.onVideoCodecError()
'a bildirilenler) başarısız olacak şekilde değiştirin. Bu davranışı devre dışı bırakmak için yeniTestPlayerRunHelper.run(player).ignoringNonFatalErrors().untilXXX()
yöntem zincirini kullanın.
- Demo uygulama:
- Kısa form demo uygulamasında
DefaultPreloadManager
kullanın. - Tekrar modunu komut satırından
Intent
bağımsız değişkenleriyle ayarlamaya izin verin (#1266). - Cihaz tarafından destekleniyorsa
HttpDataSource
olarakHttpEngineDataSource
kullanın.
- Kısa form demo uygulamasında
- Desteği sonlandırılan sembolleri kaldırın:
CronetDataSourceFactory
öğesini kaldırın. Bunun yerineCronetDataSource.Factory
kullanın.- Bazı
DataSpec
kurucularını kaldırın. Bunun yerineDataSpec.Builder
politikasını kullanın. setContentTypePredicate(Predicate)
yönteminiDefaultHttpDataSource
,OkHttpDataSource
veCronetDataSource
'ten kaldırın. Bunun yerine herXXXDataSource.Factory
için eşdeğer yöntemi kullanın.OkHttpDataSource
kurucularını veOkHttpDataSourceFactory
'ı kaldırın. Bunun yerineOkHttpDataSource.Factory
politikasını kullanın.PlayerMessage.setHandler(Handler)
öğesini kaldırın. Bunun yerinesetLooper(Looper)
kullanın.Timeline.Window.isLive
alanını kaldırın. Bunun yerineisLive()
yöntemini kullanın.DefaultHttpDataSource
kurucularını kaldırın. Bunun yerineDefaultHttpDataSource.Factory
kullanın.DashMediaSource.DEFAULT_LIVE_PRESENTATION_DELAY_MS
öğesini kaldırın. Bunun yerineDashMediaSource.DEFAULT_FALLBACK_TARGET_LIVE_OFFSET_MS
kullanın.MediaCodecInfo.isSeamlessAdaptationSupported(Format, Format, boolean)
öğesini kaldırın. Bunun yerineMediaCodecInfo.canReuseCodec(Format, Format)
politikasını kullanın.DrmSessionManager.DUMMY
vegetDummyDrmSessionManager()
yöntemini kaldırın. Bunun yerineDrmSessionManager.DRM_UNSUPPORTED
politikasını kullanın.AnalyticsListener.onAudioInputFormatChanged(EventTime, Format)
,AnalyticsListener.onVideoInputFormatChanged(EventTime, Format)
,AudioRendererEventListener.onAudioInputFormatChanged(Format)
,VideoRendererEventListener.onVideoInputFormatChanged(Format)
öğelerini kaldırın. Bunun yerineDecoderReuseEvaluation
alan adı alan aşırı yüklemeleri kullanın.RendererSupport.FormatSupport
IntDef veFORMAT_HANDLED
,FORMAT_EXCEEDS_CAPABILITIES
,FORMAT_UNSUPPORTED_DRM
,FORMAT_UNSUPPORTED_SUBTYPE
,FORMAT_UNSUPPORTED_TYPE
sabitlerini kaldırın. Bunun yerineandroidx.media3.common.C
'teki eşdeğer IntDef ve sabitleri kullanın (ör.C.FORMAT_HANDLED
).Bundleable
arayüzünü kaldırın. Buna tümBundleable.Creator<Foo> CREATOR
sabit alanlarının kaldırılması da dahildir. Arama yapanlar bunun yerine her türdeBundle toBundle()
vestatic Foo fromBundle(Bundle)
yöntemlerini kullanmalıdır.
Sürüm 1.4.0-rc01
10 Temmuz 2024
1.4.0 kararlı sürümünü kullanın.
Sürüm 1.4.0-beta01
26 Haziran 2024
1.4.0 kararlı sürümünü kullanın.
Sürüm 1.4.0-alpha02
7 Haziran 2024
1.4.0 kararlı sürümünü kullanın.
Sürüm 1.4.0-alpha01
17 Nisan 2024
1.4.0 kararlı sürümünü kullanın.
1.3.0 sürümü
1.3.1 sürümü
11 Nisan 2024
androidx.media3:media3-*:1.3.1
yayınlanır.
1.3.1 sürümü 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:
PreloadMediaPeriod
'ün yeniden önceden yüklendiğinde akışları koruyamamasına neden olan sorun düzeltildi.- Parçayı yeniden seçerken oynatma dönemine doğru
TrackSelectionResult
değerini uygulayın. - Erken etkinleştirilen oluşturucular, medya öğeleri arasında geçiş yaparken yalnızca oynatma süresini ilerlettikten sonra başlatılmalıdır (#1017).
DefaultVideoFrameProcessor.Factory.Builder.build()
için proguard-keepclasseswithmembers
kuralına eksik döndürme türünü ekleyin (#1187).
- Dönüştürücü:
- API 30'dan önce
MediaMuxer
negatif sunum zaman damgalarını desteklemediği için istisna atılması sorununa geçici çözüm ekleyin.
- API 30'dan önce
- Parça Seçimi:
DefaultTrackSelector
: Düşük veya ayarlanmamış kare hızına sahip video parçaları yerine "makul" kare hızına (>=10 fps) sahip video parçalarını tercih edin. Bu sayede oynatıcı, hareketli fotoğraflardan ayıklanan MP4'lerde "gerçek" video parçasını seçer. Bu MP4'ler, biri daha yüksek çözünürlükte ancak çok az sayıda kare içeren iki HEVC parçası içerebilir (#1051).
- Ayıklayıcılar:
- WAV dosyalarından tek sayılı boyutlarda parçalar okunurken dolgunun atlanmamasına neden olan sorun düzeltildi (#1117).
- MP3:
XING
veVBRI
gibi meta veri çerçevelerindenFormat.averageBitrate
öğesini doldurun. - MPEG-TS: Bir akıştaki son erişim birimini örnek kuyruğuna aktararak son karenin oluşturulmasını sağlamayı amaçlayan bir değişikliği geri alın (#7909). Bunun nedeni, yalnızca I-frame HLS yayınlarında (#1150) ve H.262 HLS yayınlarında (#1126) yeni sorunlara neden olan değişikliktir.
- Ses:
- Ses parçası, aktarma modunda başlatılamazsa aktarma işlemini devre dışı bırakarak oluşturma aracının kurtarılmasına izin verin.
- Video:
- Galaxy Tab S7 FE, Google TV Yüklü Chromecast ve Lenovo M10 FHD Plus'ta 60 fps H265 yayınlarının desteklenmiyor olarak işaretlenmesine neden olan cihaz sorunu için geçici çözüm ekleme
- Cihaz, API tarafından gerektiği gibi bunu otomatik olarak yapmasa bile tünel oluşturma sırasında ilk karenin her zaman oluşturulmasını sağlayan geçici çözümü ekleyin (#1169). (#966).
- HDR renk bilgisinin işlenmesi nedeniyle codec'in yanlış davranmasına ve SDR video parçaları için uyarlanabilir biçim geçişlerinin yapılmasına engel olan sorunu düzeltin (#1158).
- Metin:
- WebVTT: Doğrudan art arda gelen işaretçilerin,
WebvttParser.parse
öğesindenCuesWithTiming
öğesi oluşturmasını engelleyin (#1177).
- WebVTT: Doğrudan art arda gelen işaretçilerin,
- DRM:
- Bazı Android 14 cihazlarda
ResourceBusyException
veyaNotProvisionedException
yerineMediaDrm
çerçevesi tarafından atılabilenNoSuchMethodError
sorununu giderme (#1145).
- Bazı Android 14 cihazlarda
- Etki:
- Renk alanlarını dönüştürerek PQ'den SDR'ye ton eşleme özelliği iyileştirildi.
- Oturum:
- Kullanıcı Arayüzü:
Locale
görünen ad tanımlayamazsa ses parçasının dil adını eklemek için yedek (#988).
- DASH Uzantısı:
- Manifest'teki tüm
Label
öğeleriniFormat.labels
ile doldurun (#1054).
- Manifest'teki tüm
- RTSP Uzantısı:
- SDP ayrıştırmasında boş oturum bilgileri değerlerini (i-etiketleri) atlama (#1087).
- Kod Çözücü Uzantıları (FFmpeg, VP9, AV1, MIDI vb.):
- MIDI uzantısı, yapılandırılmak için ek bir Maven deposu gerektirdiğinden varsayılan olarak yerel bağımlılık olarak devre dışı bırakılır. Yerel bir bağımlılıktan bu modüle ihtiyaç duyan kullanıcılar modülü yeniden etkinleştirebilir.
1.3.0 sürümü
6 Mart 2024
androidx.media3:media3-*:1.3.0
yayınlanır.
1.3.0 sürümü bu taahhütleri içerir.
- Ortak Kitaplık:
package
'ın mevcut uygulamanın paketinden farklı olduğuandroid.resource://package/[type/]name
ham kaynak URI'leri için destek uygulayın. Bu yöntemin her zaman çalışacağı belirtilmiş olsa da bugüne kadar doğru şekilde uygulanmamıştır.- Uygulama kodu tarafından ayarlanan veya medyadan okunan MIME türlerini tamamen küçük harf olacak şekilde normalleştirin.
AdPlaybackState
dosyasında reklamları tek birUri
yerine tam birMediaItem
ile tanımlayın.minSdk
değerini 19'a yükseltin (Android KitKat). 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.- Bunlardan en az biri boş olmadığında
MediaMetadata.Builder.populate(MediaMetadata)
içinde hemartworkUri
hem deartworkData
doldurulur (#964).
- ExoPlayer:
- Uygulamaların oynatmadan önce belirli bir başlangıç konumunda bir içerik medya kaynağını önceden yüklemesine olanak tanıyan
PreloadMediaSource
vePreloadMediaPeriod
öğelerini ekleyin.PreloadMediaSource
, içerik medya kaynağınıTimeline
'ü alacak şekilde hazırlama, belirtilen başlangıç konumunda dönemi hazırlayıp önbelleğe alma, parçaları seçme ve döneme ait medya verilerini yükleme işlemlerini gerçekleştirir. Uygulamalar,PreloadMediaSource.PreloadControl
uygulayarak önceden yükleme işlemini kontrol eder ve önceden yüklenmiş kaynağı oynatıcıya ayarlayarak oynatılmasını sağlar. - Uygulamaların
ImageRenderer.ImageOutput
ayarlarına izin verenExoPlayer.setImageOutput
ekleyin. DefaultRenderersFactory
artık varsayılan olarak boşImageOutput
veImageDecoder.Factory.DEFAULT
ile birlikte oynatıcıya birImageRenderer
sağlar.- Sessiz mod atlandığında
Player.Listener.onPositionDiscontinuity
etkinliği yayınlama (#765). - Ayıklama sırasında altyazı ayrıştırma için deneysel destek ekleme. Bu özelliği
MediaSource.Factory.experimentalParseSubtitlesDuringExtraction()
kullanarak etkinleştirebilirsiniz. PreloadMediaSource
ile uyarlanabilir medya kaynaklarını destekleyin.- HttpEngine API'sini kullanarak
HttpDataSource
olanHttpEngineDataSource
'ü uygulayın. CompositeSequenceableLoader
alt sınıflandırmasını önleyin. Bu bileşen daha önce genişletilebilir hale getirilmiş ancak kitaplıkta hiçbir zaman alt sınıfa ayrılmamıştır. Özelleştirmeler, süsleyici kalıbı kullanılarak bir örnek sarmalanarak ve özel birCompositeSequenceableLoaderFactory
uygulanarak yapılabilir.- Aynı zamanın tekrarlanmasının, bu öğenin meta verilerinin temizlenmesine neden olduğu sorun düzeltildi (#1007).
BundledChunkExtractor.Factory
veDefaultHlsExtractorFactory
üzerindekiexperimentalSetSubtitleParserFactory
yöntemlerinisetSubtitleParserFactory
olarak yeniden adlandırın venull
iletme işlemine izin vermeyin. Ayrıştırma davranışını kontrol etmek için yeniexperimentalParseSubtitlesDuringExtraction(boolean)
yöntemlerini kullanın.- Ayıklama sırasında kullanılan
SubtitleParser.Factory
öğesini özelleştirme desteği eklendi. BunuMediaSource.Factory.setSubtitleParserFactory()
ile yapabilirsiniz. MergingMediaSource
kaynağından oluşturulan tümFormat.id
alanlarına kaynak ön ek ekleyin. Bu, hangi kaynağınFormat
(#883) oluşturduğunu belirlemenize yardımcı olur.- Özel Common Media Client Data (CMCD) anahtar adlarını doğrulamak için kullanılan normal ifadeyi, yalnızca kısa çizgi olup olmadığını kontrol edecek şekilde değiştirerek düzeltin (#1028).
- CMCD sorgu parametrelerinin çift kodlanmasını durdurun (#1075).
- Uygulamaların oynatmadan önce belirli bir başlangıç konumunda bir içerik medya kaynağını önceden yüklemesine olanak tanıyan
- Dönüştürücü:
- H.265/HEVC SEF ağır çekim videolarının düzleştirilmesi için destek eklendi.
- Özellikle "videoyu kaldırma" düzenlemeleri için kod dönüştürme hızını artırın.
- Çıkış dosyasının bir video karesiyle başlamasını sağlamak için API ekleyin. Bu, kırpma işlemlerinin çıktısını, ilk video karesini sunum zaman damgasına kadar göstermeyen oynatıcı uygulamalarıyla daha uyumlu hale getirebilir (#829).
- Tek öğe MP4 kırpma işlemlerini optimize etme desteği eklendi.
- Video karesinde çıkış dosyasında ilk zaman damgasının bulunduğundan emin olmak 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 parçası hem de video parçası varsa resim parçasının seçilip seçilmeyeceğini belirlemek için
TrackSelectionParameters.isPrioritizeImageOverVideoEnabled
ekleyin. Varsayılan değerfalse
'tür. Bu, video parçasının seçilmesine öncelik verildiği anlamına gelir.
- Resim parçası seçimini etkinleştirmek için
- Ayıklayıcılar:
ColorInfo.colorSpace
,ColorInfo.colorTransfer
veColorInfo.colorRange
değerlerini almak için MP4 çıkarıcıya ek AV1C ayrıştırma ekleyin (#692).- MP3:
Info
başlığı (Xing
başlığının CBR eşdeğeri) olan dosyalar için sabit bit hızı (CBR) araması kullanın. Daha önceInfo
başlığındaki arama tablosunu kullanıyorduk ancak bu, tabloyu yok sayıp dosyanın CBR olduğunu varsaydığımızdan daha az hassas arama sonuçlarına neden oluyordu. - MPEG2-TS: DTS, DTS-LBR ve DTS:X Profile2 desteği ekleyin (#275).
- TS tanımlayıcılarından ses türlerini ayıklayın ve bunları 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şkeni alanMediaCodecVideoRenderer
oluşturucuyu değiştiripVideoSinkProvider
bağımsız değişkeni alan bir oluşturucuyla değiştirin. Özel birVideoFrameProcessor.Factory
eklemek isteyen uygulamalar, özelVideoFrameProcessor.Factory
kullanan birCompositingVideoSinkProvider
örneği oluşturabilir ve video alıcı sağlayıcıyıMediaCodecVideoRenderer
'ye iletebilir.
- Metin:
DefaultExtractorsFactory.setTextTrackTranscodingEnabled
kullanılırkenTried to marshall a Parcel that contained Binder objects
hatasını çözmek için bitmap ipuçlarının serileştirilmesini düzeltin (#836).- CEA-708:
rowLock
değerini yoksay. CEA-708-E S-2023 spesifikasyonunda, akıştaki değerlerden bağımsız olarakrowLock
vecolumnLock
değerlerinin her ikisinin de doğru olduğu varsayılır (columnLock
desteği uygulanmadığından her zaman yanlış olduğu varsayılır).
- Resim:
- DASH küçük resimleri için destek eklendi. Grid resimleri kırpılır ve sunum zamanlarına yakın
ImageOutput
ayrı küçük resimler sağlanır.
- DASH küçük resimleri için destek eklendi. Grid resimleri kırpılır ve sunum zamanlarına yakın
- DRM:
- Daha sonra şifrelenmiş örneklerin anahtarları henüz hazır olmasa bile, DRM içeriğindeki "net ses" şifrelenmemiş örnekleri varsayılan olarak hemen oynatın. Oynatma konumu şifrelenmiş örneklere ulaştığında anahtarlar hâlâ hazır değilse bu durum oynatma işleminin ortasında duraklamaya neden olabilir (ancak daha önce bu noktaya kadar oynatma işlemi hiç başlamazdı). Bu davranış,
MediaItem.DrmConfiguration.Builder.setPlayClearContentWithoutKey
veyaDefaultDrmSessionManager.Builder.setPlayClearSamplesWithoutKeys
ile devre dışı bırakılabilir.
- Daha sonra şifrelenmiş örneklerin anahtarları henüz hazır olmasa bile, DRM içeriğindeki "net ses" şifrelenmemiş örnekleri varsayılan olarak hemen oynatın. Oynatma konumu şifrelenmiş örneklere ulaştığında anahtarlar hâlâ hazır değilse bu durum oynatma işleminin ortasında duraklamaya neden olabilir (ancak daha önce bu noktaya kadar oynatma işlemi hiç başlamazdı). Bu davranış,
- IMA uzantısı:
- Uygun dosya uzantısı olmayan DASH ve HLS reklamların oynatılamama sorunu düzeltildi.
- Oturum:
- TV uygulamaları için çift tıklama algılamayı devre dışı bırakma (#962).
- Yalnızca null olmayan ekstralara sahip
MediaItem.RequestMetadata
öğesinin medya denetleyicileri ve oturumlar arasında iletilmemesi sorunu düzeltildi. MediaLibrarySession.Builder
sınıfına,MediaLibraryService
yerine yalnızcaContext
alan bir kurucu ekleyin.
- HLS Uzantısı:
HlsMediaPeriod
'ü pakete özel görünürlüğe indirin. Bu tür, HLS paketinin dışından doğrudan bağımlı olmamalıdır.- Çözüm, bir segmentin başlangıcını daha verimli bir şekilde bulmaya çalışır (#1031).
- Kod Çözücü Uzantıları (FFmpeg, VP9, AV1, MIDI vb.):
- MIDI kod çözücü: SysEx etkinlik mesajlarını yoksay (#710).
- Test Yardımcı Programları:
TestPlayerRunHelper.playUntilPosition
'te oynatmayı duraklatmayın. Test, oynatmayı oynatma durumunda tutar ancak test, iddialar ve başka işlemler ekleyene kadar ilerlemeyi askıya alır.
- Demo uygulama:
- Kısa içerik kullanım alanında
PreloadMediaSource
'ün kullanımını göstermek için kısa bir demo modülü ekleyin.
- Kısa içerik kullanım alanında
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 manuel arama yapıldığında ofsetinmin/maxOffset
değerine geri ayarlanmasıyla ilgili sorun düzeltildi.- 3, 5, 6, 7 ve 8 kanal için OPUS ve VORBIS kanal düzenlerinin yanlış olması sorunu düzeltildi (#8396).
- Canlı yayında sıfıra ilerleme yapıldıktan sonra parça seçimlerinin, yayının varsayılan konumda başlatılmasına neden olduğu sorun düzeltildi (#9347).
- Yeni
CmcdData.Factory
örnekleri,bufferedDurationUs
içinbufferedDurationUs
negatif değerleri aldığındaIllegalArgumentException
(#888) hatası oluşmasına neden olan sorun düzeltildi.
- Dönüştürücü:
- Kodlayıcının, yüksek çalışma hızı ayarlanmasından dolayı yapılandırma sırasında hata vermesine yol açan sorunu giderme
- Ayıklayıcılar:
- JPEG hareketli fotoğraflardaki ikincil (oynatılamayan) HEVC parçalarını, daha yüksek çözünürlükleri nedeniyle oynatılmak üzere otomatik olarak seçilmelerini önlemek için
ROLE_FLAG_ALTERNATE
olarak işaretleyin. - TS H264 akışları için yanlış animasyon karesi algılama sorununu düzeltin (#864).
- 47.721 saniyeden uzun TS akışlarının süre tahminini düzeltin (#855).
- JPEG hareketli fotoğraflardaki ikincil (oynatılamayan) HEVC parçalarını, daha yüksek çözünürlükleri nedeniyle oynatılmak üzere otomatik olarak seçilmelerini önlemek için
- Ses:
- Birden çok kez çağrıldığında
SilenceSkippingAudioProcessor
için EOS'un işlenmesi düzeltildi (#712).
- Birden çok kez çağrıldığında
- Video:
- Galaxy Tab S7 FE, Google TV Yüklü Chromecast ve Lenovo M10 FHD Plus'ta 60 fps AVC akışlarının desteklenmiyor olarak işaretlenmesine neden olan cihaz sorunu için geçici çözüm eklendi (#693).
- Meta veriler:
MediaMetadata
değerinin yalnızca büyük harfli anahtarlarla Vorbis yorumlarından doldurulduğu hatayı düzeltin (#876).- Çok büyük ID3 çerçeveleri ayrıştırılırken
OutOfMemoryError
yakalanır. Bu, oynatma işleminin tamamen başarısız olması yerine oynatma işleminin etiket bilgileri olmadan devam edebileceği anlamına gelir.
- DRM:
- Sahte ClearKey
https://default.url
lisans URL'si için geçici çözümü API 33 ve sonraki sürümlere genişletin (eskiden geçici çözüm yalnızca API 33'te uygulanıyordu) (#837). - Oynatıcıya bağlı bir yüzey olmadan şifrelenmiş içerikten net içeriğe geçiş yaparken
ERROR_DRM_SESSION_NOT_OPENED
hatası düzeltildi. Hata, net içeriği oynatmak için güvenli bir kod çözücünün yanlış kullanılmasından kaynaklanıyordu.
- Sahte ClearKey
- Oturum:
- Özel anahtarları ve değerleri
MediaMetadataCompat
ileMediaMetadata.extras
arasına,MediaMetadata.extras
ileMediaMetadataCompat
arasına yerleştirin (#756, #802). - Eski kontrolörler için
notifyChildrenChanged
yayını düzeltme (#644). - Bildirimin devre dışı bırakılmış
setWhen
zamanlayıcısı için negatif bir zaman ayarlandığında bazı cihazlarda kilitlenmeye neden olan hata düzeltildi (#903). - İlk bildirim güncellemesi istendiğinde medya bildirim denetleyicisi bağlantıyı tamamlamamışsa
IllegalStateException
sorununu düzeltin (#917).
- Özel anahtarları ve değerleri
- Kullanıcı Arayüzü:
- DASH Uzantısı:
- DASH manifestinde Dolby için "f800" değerini 5 kanal sayısı olarak ayrıştırın (#688).
- Kod Çözücü Uzantıları (FFmpeg, VP9, AV1, MIDI vb.):
- Cast Uzantısı:
- Yayın cihazında medya yükleme başarısız olduğunda uygulamanın kilitlenmemesi için
Timeline
oluşturma işlemini temizleyin (#708).
- Yayın cihazında medya yükleme başarısız olduğunda uygulamanın kilitlenmemesi için
Sürüm 1.2.0
15 Kasım 2023
- Ortak Kitaplık:
Log.Logger
arayüzündeki yöntemlere@Nullable Throwable
parametresi ekleyin. Bu yöntemlerinmessage
parametresi artıkLog.{d,i,w,e}()
yöntemlerine iletilenThrowable
hakkında herhangi bir bilgi içermiyor. Bu nedenle, isterseniz uygulamalarınızın bu bilgileri manuel olarak eklemesi gerekir (muhtemelenLogger.appendThrowableString(String, Throwable)
kullanılarak).- Boş değer atanabilir genel tür parametrelerinin ve boş değer atanabilir dizi öğesi türlerinin boş değer atanabilir olarak algılanmamasına neden olan Kotlin uyumluluk sorunu düzeltildi. Örnekler
TrackSelectorResult
veSimpleDecoder
yöntem parametreleridir (#6792). - Oynatma geçici olarak engellenirken (ör. geçici ses odak kaybı nedeniyle)
Util.shouldShowPlayButton
'te varsayılan kullanıcı arayüzü ve bildirim davranışını "çal" düğmesi gösterecek şekilde değiştirin. Eski davranış,PlayerView.setShowPlayButtonIfPlaybackIsSuppressed(false)
veyaMediaSession.Builder.setShowPlayButtonIfPlaybackIsSuppressed(false)
kullanılarak sürdürülebilir (#11213). - https://issuetracker.google.com/251172715 sorununu düzeltmek için
androidx.annotation:annotation-experimental
sürümünü1.3.1
sürümüne yükseltin. ExoPlayer.setAudioAttributes
öğesiniPlayer
arayüzüne taşıyın.
- ExoPlayer:
- AC4 yayınlarında, yalnızca kod çözme amaçlı örneklerin doğru şekilde tanımlanmamasından kaynaklanan arama sorunlarını düzeltin (#11000).
ExoPlayer.Builder.setSuppressPlaybackOnUnsuitableOutput
aracılığıyla bu özellik etkinleştirildiğinde, uygun olmayan ses çıkış cihazlarında (ör. Wear OS cihazlardaki yerleşik hoparlör) oynatma işleminin engellenmesini ekleyin. Uygun ses çıkışı olmadığında veya uygun çıkışların tümü oynatma sırasında bağlantısını kestikten sonra oynatma denemesi yapılırsa oynatma 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
ekleyin.- Kitaplığın
Player.replaceMediaItem(s)
üzerinden sağladığı tümMediaSource
sınıfları içinMediaItem
güncellemelerine izin verin (#33, #9978). MimeTypes.TEXT_EXOPLAYER_CUES
'üMimeTypes.APPLICATION_MEDIA3_CUES
olarak yeniden adlandırın.- Bir PNG dosyasının tamamını gönderip okuyan
PngExtractor
işleviniTrackOutput
içine tek bir örnek olarak ekleyin. SequenceableLoader
arayüzündekiSequenceableLoader.continueLoading(long)
yönteminiSequenceableLoader.continueLoading(LoadingInfo loadingInfo)
olarak geliştirin.LoadingInfo
, mevcutplaybackPositionUs
'a ek olarakplaybackSpeed
velastRebufferRealtimeMs
gibi ek parametreler içerir.ChunkSource
arayüzündekiChunkSource.getNextChunk(long, long, List, ChunkHolder)
yönteminiChunkSource.getNextChunk(LoadingInfo, long, List, ChunkHolder)
olarak iyileştirin.- Common Media Client Data (CMCD) günlük kaydına ek alanlar ekleyin: arabelleğe alma açlığı (
bs
), son tarih (dl
), oynatma hızı (pr
) ve başlatma (su
) (#8699). ColorInfo
(#491) özelliğine parlaklık ve renk bit derinliği ekleyin.- 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 kullanarak Common Media Client Data (CMCD) verilerini iletme işlevi ekleyin (#553).
ExperimentalBandwidthMeter
'daConcurrentModificationException
sorununu düzeltin (#612).CompositeMediaSource.getMediaTimeForChildMediaTime
parametresiniMediaPeriodId
alanına ekleyin.ConcatenatingMediaSource2
'teClippingMediaSource
(ve dönem/pencere zaman ofsetleri olan diğer kaynaklar) desteği (#11226).BaseRenderer.onStreamChanged()
işlevini,MediaPeriodId
bağımsız değişkenini de alacak şekilde 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 sabitlerini kaldırın. Bunun yerineComposition.HdrMode
ve ilişkili sabitleri kullanın.- Döndürme sorunlarını düzeltmek için
OverlaySettings
öğesini basitleştirin. SampleConsumer.queueInputBitmap
içinframeRate
vedurationUs
parametreleriTimestampIterator
olarak değiştirildi.
- Parça Seçimi:
- Sorunsuz olmayan uyarlamaya açıkça izin vermek veya izin vermemek için
DefaultTrackSelector.Parameters.allowAudioNonSeamlessAdaptiveness
ekleyin. Varsayılan değer,true
olan mevcut davranışında kalır.
- Sorunsuz olmayan uyarlamaya açıkça izin vermek veya izin vermemek için
- Ayıklayıcılar:
- MPEG-TS: Bir yayının son erişim birimini örnek kuyruğuna aktararak son karenin oluşturulmasını sağlayın (#7909).
rotationDegrees
değerini belirlerken yazım hatası düzeltildi.projectionPosePitch
yerineprojectionPoseRoll
kullanıldı (#461).Extractor
örneklerinininstanceof
ile doğrudan denetlenebileceği varsayımını kaldırın. BirExtractor
'ün uygulama ayrıntılarına çalışma zamanında erişmek istiyorsanız önceExtractor.getUnderlyingInstance
işlevini çağırmanız gerekir.BmpExtractor
ekleyin.WebpExtractor
ekleyin.HeifExtractor
ekleyin.Mp4Extractor
'ye QuickTime classic desteği ekleyin.
- Ses:
- MP4 ve Matroska'da 24/32 bit büyük endian PCM desteği eklendi ve MP4'te
lpcm
için PCM kodlaması ayrıştırıldı. - MP4'te Vorbis seslerini ayıklamak için destek eklendi.
DefaultAudioOffloadSupportProvider
aracılığıyla, alıcının biçim için sağlayabileceği aktarma desteği düzeyini alanAudioSink.getFormatOffloadSupport(Format)
ekleyin.isFormatSupported
,isGaplessSupported
veisSpeedChangeSupported
içeren yeniAudioOffloadSupport
öğesini döndürür.- Ses alıcısında aktarma yapılandırmasının yapılandırıldığı
AudioSink.setOffloadMode()
öğesini ekleyin. Varsayılan değerAudioSink.OFFLOAD_MODE_DISABLED
'tir. - Veri aktarma özelliği,
TrackSelectionParameters
'tekisetAudioOffloadPreference
üzerinden etkinleştirilebilir. Ayarlanan tercih etkinse cihaz, biçim için aktarmayı destekliyorsa ve parça seçimi tek bir ses parçasıysa ses aktarma etkinleştirilir. audioOffloadModePreference
,AUDIO_OFFLOAD_MODE_PREFERENCE_REQUIRED
olarak ayarlanırsaDefaultTrackSelector
yalnızca bir ses parçası seçer ve bu parçanın biçimi, aktarma işleminde destekleniyorsa seçer. Aktarmada ses parçası desteklenmiyorsa hiçbir parça seçilmez.- Parça geçişinden sonra oynatma konumu sorunu nedeniyle API düzeyi 33'ten önceki sürümlerde boşluksuz oynatma desteği devre dışı bırakıldı.
enableOffload
parametresiniDefaultRenderersFactory.buildAudioSink
yöntem imzasından kaldırın.DefaultAudioSink.Builder.setOffloadMode
yöntemini kaldırın.- intdef değerini
DefaultAudioSink.OffloadMode.OFFLOAD_MODE_ENABLED_GAPLESS_DISABLED
kaldırın. - Aktarma sırasında oynatma için Opus ses aralığı olmayan meta verileri destekleme
- İlk yazma işleminde başarısız olursa aktarma işlemini devre dışı bırakarak oluşturma aracının kurtarılmasına izin verin (#627).
- Yalnızca sesli oynatma için varsayılan olarak Aktarmayı Planla'yı etkinleştirin.
ExoPlayer.experimentalSetOffloadSchedulingEnabled
veAudioOffloadListener.onExperimentalOffloadSchedulingEnabledChanged
öğelerini silin.onExperimentalSleepingForOffloadChanged
onSleepingForOffloadChanged
,onExperimentalOffloadedPlayback
iseonOffloadedPlayback
olarak yeniden adlandırıldı.- Ses aktarma moduyla ilgili
TrackSelectionParameters
arayüzlerini ve tanımlarını bir içAudioOffloadPreferences
sınıfına taşıyın. AnalyticsListener
,AudioRendererEventListener
veAudioSink.Listener
içinonAudioTrackInitialized
veonAudioTrackReleased
geri aramaları ekleyin.- DTS Express ses arabelleğinin alt akış sorunu düzeltildi (#650).
- E-AC3-JOC için özellikler kontrolünün
IllegalArgumentException
hatası vermesine yol açan hata düzeltildi (#677).
- MP4 ve Matroska'da 24/32 bit büyük endian PCM desteği eklendi ve MP4'te
- Video:
MediaCodecVideoRenderer
'in özelVideoFrameProcessor.Factory
kullanmasına izin verin.- Ses akışı negatif zaman damgalarıyla başlarsa ilk karenin oluşturulamaması sorunu düzeltildi (#291).
- Metin:
ExoplayerCuesDecoder
öğesini kaldırın.sampleMimeType = application/x-media3-cues
içeren metin parçaları artıkSubtitleDecoder
örneğine gerek kalmadan doğrudanTextRenderer
tarafından işlenir.
- Meta veriler:
- Uygulamanın zaten null döndürmesi gerektiğinden
MetadataDecoder.decode
artık "yalnızca kod çözme" örnekleri için çağrılmayacak.
- Uygulamanın zaten null döndürmesi gerektiğinden
- Etki:
- Zaman damgasına göre bitmap girişini sıraya eklemek için
VideoFrameProcessor.queueInputBitmap(Bitmap, Iterator<Long>)
VideoFrameProcessor.registerInputStream()
değerini engellemeyen olarak değiştirin. UygulamalarVideoFrameProcessor.Listener#onInputStreamRegistered()
özelliğini uygulamalıdır.VideoFrameProcessor.queueInputBitmap
içinframeRate
vedurationUs
parametreleriTimestampIterator
olarak değiştirildi.
- Zaman damgasına göre bitmap girişini sıraya eklemek için
- IMA uzantısı:
- Oynatma listesinde ilk öğe olmayan çok dönemli DASH canlı yayınlarının istisna atmasına neden olan hata düzeltildi (#571).
AdsLoader.destroy()
çağrısından önce StreamManager'ı serbest bırakma- IMA SDK sürümünü 3.31.0'a yükseltin.
- Oturum:
- Bildirimler ön plan hizmet davranışını
DefaultMediaNotificationProvider
'teFOREGROUND_SERVICE_IMMEDIATE
olarak ayarlayın (#167). - Samsung cihazlarda desteği sonlandırılan API'lerle ilgili sorunları önlemek için yalnızca API 31 ve sonraki sürümleri kullanın (#167).
android.media.session.MediaSession.setMediaButtonBroadcastReceiver()
- Bildirimi ve platform oturumunu doldurmak için kullanılan mevcut komutları ve özel düzeni ayarlamak üzere medya bildirim denetleyicisini proxy olarak kullanın.
- Platform oturumuna ve ardından Media3'e yönlendirmek yerine, Media3 içinde
MediaSessionService.onStartCommand()
tarafından alınan medya düğmesi etkinliklerini dönüştürün. Bu sayede, arayan denetleyicisi her zaman medya bildirimi denetleyicisidir ve uygulamalar, desteklenen tüm API düzeylerinde bildirim üzerinden gelen aramaları kolayca aynı şekilde tanıyabilir. - Eski bir
MediaSessionCompat
'a bağlıykenMediaController.getCurrentPosition()
'ün ilerlememesi sorunu düzeltildi. - Kolaylık için
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. İşlem başarılı olursa abonelik kabul edilir venotifyChildrenChanged()
, tarayıcıya bilgi vermek için hemen çağrılır (#561). - Automotive OS için oturum tanıtım modülü ekleyin ve Android Auto için oturum tanıtımını etkinleştirin.
- Medya bildirim denetleyicisi için
COMMAND_GET_TIMELINE
kullanılamadığında çerçeve oturumunun sırasını ayarlamayın. Android Auto, istemci denetleyici olarak çerçeve oturumundan veri okuyor. Bu durum, Android Auto kullanıcı arayüzündekiqueue
düğmesinin gösterilmemesine neden oluyor (#339). - Varsayılan olarak
SimpleBitmapLoader
yerineDataSourceBitmapLoader
kullanın (#271, #327). - Uygulamaların varsayılan medya düğmesi etkinlik işleyişini geçersiz kılmasına olanak tanıyan
MediaSession.Callback.onMediaButtonEvent(Intent)
öğesini ekleyin.
- Bildirimler ön plan hizmet davranışını
- Kullanıcı Arayüzü:
- Kullanıcının uygun bir ses çıkışı (ör. Bluetooth kulaklık) bağlamasına olanak tanıyan bir sistem iletişim kutusu açarak Wear OS cihazlar için
Player.PLAYBACK_SUPPRESSION_REASON_UNSUITABLE_AUDIO_OUTPUT
nedeniyle oynatma engellemesini ele alan birPlayer.Listener
uygulaması ekleyin. Uygun bir cihaz, yapılandırılabilir bir zaman aşımı içinde (varsayılan olarak 5 dakika) bağlanırsa dinleyici oynatmayı otomatik olarak devam ettirir.
- Kullanıcının uygun bir ses çıkışı (ör. Bluetooth kulaklık) bağlamasına olanak tanıyan bir sistem iletişim kutusu açarak Wear OS cihazlar için
- İndirilenler:
- Android 14 uyumluluğu için
DownloadService
için "data sync" ön plan hizmet türünü bildirin. Bu hizmeti kullanırken uygulamanın manifest'edataSync
'yiforegroundServiceType
olarak eklemesi veFOREGROUND_SERVICE_DATA_SYNC
iznini (#11239) eklemesi de gerekir.
- Android 14 uyumluluğu için
- HLS Uzantısı:
- HLS canlı oynatma listesini, son yükleme tamamlanma zamanından değil, son yükleme başlangıç zamanından hesaplanan bir aralıkla yenileyin (#663).
- DASH Uzantısı:
- Segment şablonu URL'sinde aynı DASH tanımlayıcının birden fazlasına izin veriliyor.
- Ayıklama sırasında altyazı ayrıştırma için deneysel destek ekleme. Bu sürüm, altyazı segmentleri arasında geçiş yaparken titremeyi çözme de dahil olmak üzere çakışık altyazıların birleştirilmesi için daha iyi destek sunar. Bu özelliği
DashMediaSource.Factory.experimentalParseSubtitlesDuringExtraction()
'yi kullanarak etkinleştirebilirsiniz (#288).
- RTSP Uzantısı:
- TCP'ye geri dönüldüğünde
IndexOutOfBoundsException
'e veya bazı durumlarda oynatmanın takılmasına neden olabilecek bir yarış koşulu düzeltildi. RtspMediaPeriod
durumunu döndürürken RTSP kurulumunda durumu kontrol edin (#577).- Seçenekler yanıtının herkese açık üstbilgisinde özel Rtsp istek yöntemlerini yoksayma (#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
- Kod Çözücü Uzantıları (FFmpeg, VP9, AV1, MIDI vb.):
- Ses sentezlemek için Jsyn kitaplığını kullanan standart MIDI dosyalarının oynatılmasına destek sağlayan MIDI kod çözücü modülünü kullanıma sunuyoruz.
- Gösterilmesi 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. - Çözücülerin başlangıç zamanından önce yalnızca kod çözme örneklerinin bırakılmasına izin vermek için
Decoder.setOutputStartTimeUs
veSimpleDecoder.isAtLeastOutputStartTimeUs
ekleyin. Bu, desteği sonlandırılacakBuffer.isDecodeOnly
yerine tercih edilmelidir. - MIDI kod çözücü yapısını Maven deposuna yayınlarken oluşan hatayı düzeltme. Artefakt,
media3-exoplayer-midi
olarak yeniden adlandırıldı (#734).
- Leanback uzantısı:
- Bir yüzeyin devre dışı bırakılmasının Leanback kodunda
ArithmeticException
değerine 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
'ü Espresso kullanıcı arayüzü testleriyle ve Compose kullanıcı arayüzü testleriyle uyumlu hale getirin. Bu, Espresso veya Oluştur görüntüleme etkileşimleri sırasında oynatma işleminin rastgele ilerlediği bir hatayı düzeltir.
- Desteği sonlandırılan sembolleri kaldırın:
TransformationRequest.Builder.setEnableRequestSdrToneMapping(boolean)
veTransformationRequest.Builder.experimental_setEnableHdrEditing(boolean)
öğelerini kaldırın.Composition.Builder.setHdrMode(int)
kullanın veComposition
değeriniTransformer.start(Composition, String)
'ye iletin.- Desteği sonlandırılan
DownloadNotificationHelper.buildProgressNotification
yöntemini kaldırın, bunun yerinenotMetRequirements
parametresi alan, desteği sonlandırılmamış bir yöntem kullanın.
Sürüm 1.2.0-rc01
1 Kasım 2023
1.2.0 kararlı sürümünü kullanın.
Sürüm 1.2.0-beta01
19 Ekim 2023
1.2.0 kararlı sürümünü kullanın.
Sürüm 1.2.0-alpha02
29 Eylül 2023
1.2.0 kararlı sürümünü kullanın.
Sürüm 1.2.0-alpha01
17 Ağustos 2023
1.2.0 kararlı sürümünü kullanın.
1.1.0 sürümü
1.1.1 sürümü
16 Ağustos 2023
- Ortak Kitaplık:
- Yanlışlıkla eklenen
multidex
bağımlılığını tüm modüllerden kaldırın (#499).
- Yanlışlıkla eklenen
- ExoPlayer:
- Oynatma listesi temizlendikten sonra
PlaybackStatsListener
içinde sahtePlaybackStats
oluşturulmasına neden olan sorun düzeltildi. - Ortak Medya İstemcisi Verileri (CMCD) günlük kaydına ek alanlar ekleyin: yayın biçimi (sf), yayın türü (st), sürüm (v), en yüksek bit hızı (tb), nesne süresi (d), ölçülen aktarım hızı (mtp) ve nesne türü (ot) (#8699).
- Oynatma listesi temizlendikten sonra
- Ses:
- Çok kısa dosyalar oynatıldığında
Player.getState()
'ün hiçbir zamanSTATE_ENDED
'a geçmediği hata düzeltildi (#538).
- Çok kısa dosyalar oynatıldığında
- Ses aktarma:
- RFC 7845'e uygun olarak aktarılan Opus oynatma için bit akışına Ogg kimliği üstbilgisini ve yorum üstbilgi sayfalarını ekleyin.
- Video:
- H.265/HEVC: SPS kısa ve uzun vadeli referans resim bilgilerinin ayrıştırılması düzeltildi.
- Metin:
- CEA-608: İşaretçi kısaltma mantığını yalnızca görünür metni dikkate alacak şekilde değiştirin. Daha önce, işaret uzunluğu 32 karakterle sınırlandığında girinti ve sekme kaydırma dahil edilirdi (teknik olarak spesifikasyona göre doğrudur) (#11019).
- IMA uzantısı:
- IMA SDK sürümünü 3.30.3'e yükseltin.
- Oturum:
- Denetleyicinin durumuna özel düzen ekleyin ve buna erişmek için bir alıcı sağlayın. Özel düzen değiştiğinde
MediaController.Listener.onCustomLayoutChanged
çağrılır. Farklı Media3 denetleyicilerine farklı özel düzenler göndermek isteyen uygulamalar, bağlantı tamamlandığında özel düzenin denetleyici tarafından kullanılabilmesi içinMediaSession.Callback.onConnect
içindeAcceptedResultBuilder
kullanarak bunu yapabilir. MediaLibraryServiceLegacyStub
'ün, bunu desteklemeyen birResult
'e hata gönderdiği veUnsupportedOperationException
'nin oluştuğu durumlar düzeltildi (#78).- Hem eski komutlar (
COMMAND_ADJUST_DEVICE_VOLUME
veCOMMAND_SET_DEVICE_VOLUME
) hem de yeni komutlar (COMMAND_ADJUST_DEVICE_VOLUME_WITH_FLAGS
veCOMMAND_SET_DEVICE_VOLUME_WITH_FLAGS
) aracılığıylavolumeControlType
değerini belirleyerekPlayerWrapper
'ünVolumeProviderCompat
oluşturma şeklini düzeltin (#554).
- Denetleyicinin durumuna özel düzen ekleyin ve buna erişmek için bir alıcı sağlayın. Özel düzen değiştiğinde
1.1.0 sürümü
5 Temmuz 2023
- Ortak Kitaplık:
- Uygun olmayan ses yolu için engelleme nedeni ekleyin ve hazır olduğunda çaldırın. Çok uzun süre engelleme nedeni değiştirildi. (#15).
- Oynatıcıya komut ekleme:
COMMAND_GET_METADATA
COMMAND_SET_PLAYLIST_METADATA
COMMAND_SET_DEVICE_VOLUME_WITH_FLAGS
COMMAND_ADJUST_DEVICE_VOLUME_WITH_FLAGS
- Player'a, kullanıcıların ses işaretlerini 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 kurucunun desteğini sonlandırın.- Uzaktan oynatmalar için yönlendirme denetleyici kimliğini belirtmek üzere
DeviceInfo.routingControllerId
ekleyin. - Aynı konuma öğe eklemek ve kaldırmak için
Player.replaceMediaItem(s)
kısayolunu ekleyin (#8046).
- ExoPlayer:
- ExoPlayer'ın cihaz ses yöntemlerini kontrol etmesine yalnızca açıkça etkinleştirildiyse izin verin. Aşağıdakilere erişmek için
ExoPlayer.Builder.setDeviceVolumeControlEnabled
'ü kullanın:getDeviceVolume()
isDeviceMuted()
setDeviceVolume(int)
vesetDeviceVolume(int, int)
increaseDeviceVolume(int)
veincreaseDeviceVolume(int, int)
decreaseDeviceVolume(int)
vedecreaseDeviceVolume(int, int)
MediaSource
'dan mevcut parça türlerini filtrelemenize olanak tanıyanFilteringMediaSource
ekleyin.- DASH, HLS ve SmoothStreaming uyarlanabilir akış biçimlerinin giden isteklerine Ortak Medya İstemci Verileri'ni (CMCD) dahil etme desteği eklendi.
br
,bl
,cid
,rtp
vesid
alanları eklendi (#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)
simgesini kullanın. - Tüm anahtarlar varsayılan olarak etkindir. Günlüğe hangi anahtarların kaydedileceğini filtrelemek için
CmcdConfiguration.RequestConfig.isKeyAllowed(String key)
'ü geçersiz kılın. - Özel anahtar günlüğü kaydını etkinleştirmek için
CmcdConfiguration.RequestConfig.getCustomData()
değerini geçersiz kılın.
- CMCD günlük kaydı varsayılan olarak devre dışıdır. Etkinleştirmek için
- Demo uygulamasını ö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
değeriniint
yerinelong
olarak depolamak içinSampleQueue
değerini güncelleyin. Bu işlem,SampleQueue.sourceId
veSampleQueue.peekSourceId
adlı herkese açık yöntemlerin imzalarını değiştirir.LoadControl
yöntemlerineshouldStartPlayback
veonTracksSelected
, bu yöntemleri alakalıMediaPeriod
ile ilişkilendirmeye olanak tanıyan parametreler ekleyin.- Haritadaki anahtarlar olarak kullanılan UID'leri içeren dönemleri içeren bir zaman çizelgesi parametresi ekleyerek
ServerSideAdInsertionMediaSource.setAdPlaybackStates(Map<Object, AdPlaybackState>)
imzasını değiştirin. Bu, çok dönemli canlı yayınlarda eşzamanlılık sorunlarını önlemek için gereklidir. EventDispatcher.withParameters(int windowIndex, @Nullable MediaPeriodId mediaPeriodId, long mediaTimeOffsetMs)
veBaseMediaSource.createEventDispatcher(..., long mediaTimeOffsetMs)
özelliklerini kullanımdan kaldırın. Bunun yerine,mediaTimeOffsetUs
içermeyen yöntem varyantı çağrılabilir. Desteği sonlandırılan varyantlar için bile, dağıtıcı tarafından dağıtılanMediaLoadData
nesnelerininstartTimeUs
veendTimeUs
değerlerine artık ofset eklenmediğini unutmayın.ExoTrackSelection.blacklist
'üexcludeTrack
,isBlacklisted
'yi iseisTrackExcluded
olarak yeniden adlandırın.- Boş bir oynatma listesinde çağrıldığında
ExoPlayer.setMediaItem(s)
ileaddMediaItem(s)
arasındaki tutarsız davranışı düzeltme
- ExoPlayer'ın cihaz ses yöntemlerini kontrol etmesine yalnızca açıkça etkinleştirildiyse izin verin. Aşağıdakilere erişmek için
- Dönüştürücü:
Transformer.Builder.setMediaSourceFactory(MediaSource.Factory)
öğesini kaldırın. Bunun yerineExoPlayerAssetLoader.Factory(MediaSource.Factory)
veTransformer.Builder.setAssetLoaderFactory(AssetLoader.Factory)
özelliklerini kullanın.Transformer.startTransformation(MediaItem, ParcelFileDescriptor)
öğesini kaldırın.- Giriş karesi işlenmeyi beklerken video akışının sonu sinyali gönderilirse dönüşümün takılmasına (birleştirici zaman aşımına neden olur) yol açan hata düzeltildi.
- Desteği genişletmek için
findDecoder/EncoderForFormat
yardımcı programlarını kullanmak yerineMediaCodecList
üzerinden codec'leri sorgulayın. - Bazı cihazlarda çalışmadığı için
DefaultEncoderFactory
'teki B çerçevesi yapılandırmasını kaldırın.
- Parça seçimi:
- Varsayılan olarak devre dışı olan
DefaultTrackSelector.Parameters.allowInvalidateSelectionsForRendererCapabilitiesChange
ekleme seçeneğini belirleyin. EtkinleştirildiğindeDefaultTrackSelector
, oluşturma aracı özellikleri değiştiğinde yeni bir parça seçimini tetikler.
- Varsayılan olarak devre dışı olan
- Ayıklayıcılar:
- Ses:
- Tünel oluşturma etkinleştirildiğinde ve
AudioProcessors
etkin olduğunda (ör. kesintisiz kırpma için) bazı oynatma işlemlerinin başarısız olmasına neden olan hata düzeltildi (#10847). - Doğrudan oynatmalarda Opus karelerini Ogg paketlerine yerleştirin (yük aktarma).
- Boşaltma planlamasıyla uyku sırasındaki mevcut konumu tahmin edin.
- Oyuncu yaşam döngüsünün sonunda kaynakları serbest bırakmak için
Renderer.release()
veAudioSink.release()
ekleyin. DefaultAudioSink
'teki ses özellikleriyle ilgili değişiklikleri dinleyin.DefaultAudioSink
sınıfının yapıcısına,DefaultAudioSink
'ınAudioCapabilitiesReceiver
için dinleyici olarak kaydolacağı ve bir özellik değişikliği hakkında bilgilendirildiğindeaudioCapabilities
mülkünü güncelleyeceği zorunlu bircontext
parametresi ekleyin.- Ses özellikleriyle ilgili değişiklikleri
AudioSink.Listener
arayüzündeki yeni bir etkinlikonAudioCapabilitiesChanged
veonRendererCapabilitiesChanged
etkinliklerini tetikleyen yeni bir arayüzRendererCapabilities.Listener
aracılığıyla yayınlayın. - Ses kanallarına ölçeklendirme/karıştırma uygulamak için
ChannelMixingAudioProcessor
ekleyin. - İşitsel özellikler değiştikten sonra bypass modu mümkün olduğunda işitsel kod çözücüyü atmak için
DecoderDiscardReasons
değerine yeni bir int değeriDISCARD_REASON_AUDIO_BYPASS_POSSIBLE
ekleyin. - DTS Express ve DTS:X için doğrudan oynatma desteği eklendi (#335).
- Tünel oluşturma etkinleştirildiğinde ve
- Video:
- Oluşturucu devre dışıyken
MediaCodecVideoRenderer
'ün genişliği ve yüksekliği 0 olan birVideoSize
raporlamasını sağlayın.Player.getVideoSize()
değiştiğindePlayer.Listener.onVideoSizeChanged
buna göre çağrılır. Bu değişiklikle birlikte,Player.getCurrentTracks
videoyu desteklemediği veya desteklenen video kanalının boyutu henüz belirlenmediği zaman ExoPlayer'ınMediaCodecVideoRenderer
ile video boyutu 0 genişlik ve yüksekliğe sahip olur.
- Oluşturucu devre dışıyken
- DRM:
DefaultDrmSession
üzerinde, DRM paketinin dışından çağrılması beklenmeyen ve yalnızca dahili olarak kullanılabilen çeşitli yöntemlerin görünürlüğünü azaltın:void onMediaDrmEvent(int)
void provision()
void onProvisionCompleted()
onProvisionError(Exception, boolean)
- Birleştirici:
- MP4 kapsayıcı dosyası oluşturmak için kullanılabilecek yeni bir birleştirici kitaplığı ekleyin.
- IMA uzantısı:
- DAI için çok dönemli canlı DASH yayınlarını etkinleştirin. Mevcut uygulamada canlı yayınlarda ileri sarma özelliği henüz desteklenmiyor (#10912).
- Art arda gelen zaman çizelgelerinde hesaplanan içerik konumu biraz değiştiği için canlı yayınlara yeni bir reklam grubunun eklendiği bir hatayı düzeltin.
- Oturum:
- Şu anda
Player
yöntemini çağıran denetleyici hakkında bilgi edinmek için yardımcı yöntemMediaSession.getControllerForCurrentRequest
ekleyin. - Uygulamaların, örneğin Bluetooth kulaklık tarafından gönderilen medya düğmesi etkinlikleriyle oynatma işlemini devam ettirmesini sağlamak için
androidx.media3.session.MediaButtonReceiver
ekleyin (#167). - İstenilen
MediaItems
'unLocalConfiguration
(ör. URI) varsaPlayer
'ye iletilmesine izin vermek içinMediaSession.Callback.onAddMediaItems
'e varsayılan uygulama ekleyin (#282). - Android 12 ve önceki sürümlerde varsayılan olarak kompakt medya bildirimi görünümüne "önceki oynat" ve "sonraki oynat" komut düğmeleri ekleyin (#410).
- İstenilen
MediaItems
'unLocalConfiguration
(ör. URI) varsaPlayer
'ye iletilmesine izin vermek içinMediaSession.Callback.onAddMediaItems
'e varsayılan uygulama ekleyin (#282). - Android 12 ve önceki sürümlerde varsayılan olarak kompakt medya bildirimi görünümüne "önceki oynat" ve "sonraki oynat" komut düğmeleri ekleyin (#410).
- Şu anda
- Kullanıcı Arayüzü:
- Oynat/duraklat düğmesi içeren özel kullanıcı arayüzü öğeleri yazmak için Util yöntemleri
shouldShowPlayButton
vehandlePlayPauseButtonAction
ekleyin.
- Oynat/duraklat düğmesi içeren özel kullanıcı arayüzü öğeleri yazmak için Util yöntemleri
- RTSP Uzantısı:
- DASH Uzantısı:
- Çok dönemli DASH akışları için medya zaman kaydırmasını
MediaLoadData.startTimeMs
veMediaLoadData.endTimeMs
öğesinden kaldırın. - Çok dönemli canlı Dash medya kaynağının yeniden hazırlanmasının
IndexOutOfBoundsException
oluşturmasına yol açan hata düzeltildi (#10838).
- Çok dönemli DASH akışları için medya zaman kaydırmasını
- HLS Uzantısı:
- Yükleme iş parçacığının
TimestampAdjuster
'un başlatılmasını beklemesi için bir zaman aşımı belirlemek üzereHlsMediaSource.Factory.setTimestampAdjusterInitializationTimeoutMs(long)
ekleyin. İlklendirme, zaman aşımı süresinden önce tamamlanmazsa oynatmanın sonsuz bir şekilde duraklamasını önlemek için birPlaybackException
atılır. Zaman aşımı varsayılan olarak sıfıra ayarlanmıştır (#323).
- Yükleme iş parçacığının
- Test Yardımcı Programları:
DataSourceContractTest
konumunda URI şemasının büyük/küçük harf duyarlılığını kontrol edin.
- Desteği sonlandırılan sembolleri kaldırın:
DefaultAudioSink
kurucularını kaldırın, bunun yerineDefaultAudioSink.Builder
kullanın.HlsMasterPlaylist
'ü kaldırın, bunun yerineHlsMultivariantPlaylist
kullanın.Player.stop(boolean)
öğesini kaldırın. Bunun yerinePlayer.stop()
vePlayer.clearMediaItems()
(reset
true
ise) kullanın.- Desteği sonlandırılan iki
SimpleCache
kurucuyu kaldırın, daha iyi performans için bunun yerineDatabaseProvider
alan, desteği sonlandırılmamış bir kurucu kullanın. DefaultBandwidthMeter
kurucusunu kaldırın, bunun yerineDefaultBandwidthMeter.Builder
kullanın.DefaultDrmSessionManager
kurucularını kaldırın, bunun yerineDefaultDrmSessionManager.Builder
kullanın.- Kullanımdan kaldırılan iki
HttpDataSource.InvalidResponseCodeException
yapıcıyı kaldırın, hata günlüğüne ekleme yapmak için ek alanları(cause
,responseBody
) kabul eden, kullanımdan kaldırılmamış bir yapıcı kullanın. DownloadHelper.forProgressive
,DownloadHelper.forHls
,DownloadHelper.forDash
veDownloadHelper.forSmoothStreaming
'i kaldırın, bunun yerineDownloadHelper.forMediaItem
'i kullanın.- Desteği sonlandırılan
DownloadService
kurucusunu kaldırın,channelDescriptionResourceId
parametresi sağlama seçeneğini içeren, desteği sonlandırılmamış bir kurucu kullanın. - Desteği sonlandırılan karakter kümesi (
ASCII_NAME
,UTF8_NAME
,ISO88591_NAME
,UTF16_NAME
veUTF16LE_NAME
) dize sabitlerini kaldırın. Bunun yerinekotlin.text
paketindeki Kotlin karakter kümelerini,java.nio.charset.StandardCharsets
veyacom.google.common.base.Charsets
'ı kullanın. - Desteği sonlandırılan
WorkManagerScheduler
kurucusunu kaldırın, bunun yerineContext
parametresi sağlama seçeneğini içeren, desteği sonlandırılmayan bir kurucu kullanın. Format
sınıfını örneklemek için kullanılan ve desteği sonlandırılancreateVideoSampleFormat
,createAudioSampleFormat
,createContainerFormat
vecreateSampleFormat
yöntemlerini kaldırın. Bunun yerine,Format
örnekleri oluşturmak içinFormat.Builder
kullanın.- Desteği sonlandırılan
copyWithMaxInputSize
,copyWithSubsampleOffsetUs
,copyWithLabel
,copyWithManifestFormatInfo
,copyWithGaplessInfo
,copyWithFrameRate
,copyWithDrmInitData
,copyWithMetadata
,copyWithBitrate
vecopyWithVideoSize
yöntemlerini kaldırın, bunun yerineFormat.buildUpon()
ve ayarlayıcı yöntemlerini kullanın. - Desteği sonlandırılan
ExoPlayer.retry()
'ü kaldırın, bunun yerineprepare()
kullanın. - Desteği sonlandırılan sıfır bağımsız değişkenli
DefaultTrackSelector
yapıcısını kaldırın, bunun yerineDefaultTrackSelector(Context)
kullanın. - Desteği sonlandırılan
OfflineLicenseHelper
kurucusunu kaldırın, bunun yerineOfflineLicenseHelper(DefaultDrmSessionManager, DrmSessionEventListener.EventDispatcher)
kullanın. - Desteği sonlandırılan
DownloadManager
kurucusunu kaldırın, bunun yerineExecutor
alan kurucuyu kullanın. - Desteği sonlandırılan
Cue
kurucularını kaldırın, bunun yerineCue.Builder
kullanın. - Desteği sonlandırılan
OfflineLicenseHelper
kurucusunu kaldırın, bunun yerineOfflineLicenseHelper(DefaultDrmSessionManager, DrmSessionEventListener.EventDispatcher)
kullanın. - Desteği sonlandırılan dört
AnalyticsListener
yöntemini kaldırın:onDecoderEnabled
yerineonAudioEnabled
ve/veyaonVideoEnabled
onDecoderInitialized
yerineonAudioDecoderInitialized
ve/veyaonVideoDecoderInitialized
kullanın.onDecoderInputFormatChanged
, bunun yerineonAudioInputFormatChanged
ve/veyaonVideoInputFormatChanged
kullanın.onDecoderDisabled
yerineonAudioDisabled
ve/veyaonVideoDisabled
- Desteği sonlandırılan
Player.Listener.onSeekProcessed
veAnalyticsListener.onSeekProcessed
işlemlerini kaldırın, bunun yerineDISCONTINUITY_REASON_SEEK
ileonPositionDiscontinuity
kullanın. ExoPlayer.setHandleWakeLock(boolean)
'ü kaldırın, bunun yerinesetWakeMode(int)
kullanın.- Desteği sonlandırılan
DefaultLoadControl.Builder.createDefaultLoadControl()
'ü kaldırın, bunun yerinebuild()
kullanın. - Desteği sonlandırılan
MediaItem.PlaybackProperties
'ü kaldırın, bunun yerineMediaItem.LocalConfiguration
kullanın. Kullanımdan kaldırılanMediaItem.playbackProperties
alanı artıkMediaItem.LocalConfiguration
türüne sahip.
Sürüm 1.1.0-rc01
21 Haziran 2023
1.1.0 kararlı sürümünü kullanın.
Sürüm 1.1.0-beta01
7 Haziran 2023
1.1.0 kararlı sürümünü kullanın.
Sürüm 1.1.0-alpha01
10 Mayıs 2023
1.1.0 kararlı sürümünü kullanın.
Sürüm 1.0.0
Sürüm 1.0.2
18 Mayıs 2023
androidx.media3:media3-*:1.0.2
yayınlanır.
1.0.2 sürümü bu taahhütleri 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 yapılan aşağıdaki değişiklikleri içerir:
- Temel kitaplık:
Buffer
'unC.BUFFER_FLAG_LAST_SAMPLE
işaretini içerip içermediğini belirtenBuffer.isLastSample()
değerini ekleyin.- Kare içeren son örnek, "akış sonu" örneği okunmadan sıra dışı bırakılırsa son karenin oluşturulamaması sorunu düzeltildi. (#11079).
- Ayıklayıcılar:
- RTSP ve MP4 çıkarıcıları tarafından kullanılan ayrıştırma mantığını yeniden kullanarak MPEG-TS dosyalarındaki H.265 SPS'nin ayrıştırılmasını düzeltin (#303).
- Metin:
- SSA: UTF-16 dosyaları bayt sırası işaretiyle başlıyorsa bu dosyalar için destek eklendi (#319).
- Oturum:
- İşlemlerini güncelleyen eski bir
MediaSessionCompat
'e bağlıykenMediaController
'ün mevcut komutlarını güncellememesiyle ilgili sorun düzeltildi. - API 30'da
params.isRecent == true
ile Sistem Kullanıcı Arayüzü'ndenCallback.onGetLibraryRoot
'a yapılan bir çağrı içinMediaLibraryService
'ün null döndürmesini engelleyen hata düzeltildi (#355). MediaSessionService
veyaMediaLibraryService
bellek sızıntısı düzeltildi (#346).MediaSession
'da birleştirilmişTimeline
ve konum güncellemesininMediaController
'ninIllegalStateException
atmasına neden olabileceği hata düzeltildi.
- İşlemlerini güncelleyen eski bir
1.0.1 sürümü
18 Nisan 2023
androidx.media3:media3-*:1.0.1
yayınlanır.
1.0.1 sürümü bu taahhütleri içerir.
Bu sürüm, ExoPlayer 2.18.6 sürümüne karşılık gelir.
- Temel kitaplık:
- Varsayılan konuma giderken hedef canlı yayın geçersiz kılma ayarını sıfırlama (#11051).
- Medyadaki boş örnek akışlarının oynatmanın takılmasına neden olabileceği hata düzeltildi.
- Oturum:
- Eski bir
MediaSessionCompat
tarafından yayınlanan birden fazla aynı sıra öğesininMediaController
'da istisna oluşturmasına yol açan hata düzeltildi (#290). - Eski
MediaControllerCompat.Callback.onSessionEvent
'eMediaSession.broadcastCustomCommand
yönlendirme özelliği eklendi (#293). MediaSession.setPlayer
çağrıldığında kullanılabilir komutların güncellenmemesine yol açan hata düzeltildi.MediaController
ile gönderilenTrackSelectionOverride
örnekleri,Format.metadata
içeren bir gruba referans veriyorsa yoksayılıyordu (#296). Bu sorun düzeltildi.- Eski
MediaSessionCompat
üzerinden meta verilere erişmek içinPlayer.COMMAND_GET_CURRENT_MEDIA_ITEM
'ün kullanılabilir olması gerektiği sorunu düzeltildi. - Arka plan iş parçacığındaki
MediaSession
örnekleriMediaSessionService
'da kullanıldığında kilitlenmelere neden olan sorun düzeltildi (#318). - Uygulamanın bunu amaçlamaması durumunda kitaplığın medya düğmesi alıcısını tanımlaması sorunu düzeltildi (#314).
- Eski bir
- DASH:
- Boş segment zaman çizelgelerinin işlenmesi düzeltildi (#11014).
- RTSP:
- UDP ile RTSP Kurulumu, 461 numaralı RTSP Hatası (UnsupportedTransport) ile başarısız olursa TCP ile tekrar deneyin (#11069).
Sürüm 1.0.0
22 Mart 2023
androidx.media3:media3-*:1.0.0
yayınlanır.
1.0.0 sürümü bu taahhütleri içerir.
Bu sürüm, ExoPlayer 2.18.5 sürümüne karşılık gelir.
1.0.0-rc02 sürümünden bu yana herhangi bir değişiklik yoktur.
Sürüm 1.0.0-rc02
2 Mart 2023
androidx.media3:media3-*:1.0.0-rc02
yayınlanır.
1.0.0-rc02 sürümü bu taahhütleri içerir.
Bu sürüm, ExoPlayer 2.18.4 sürümüne karşılık gelir.
- Temel kitaplık:
- İndirilenler:
- Birleştirilecek iki segmentin başlangıç zamanının maksimum farkını
SegmentDownloader
ve alt sınıflarda yapılandırılabilir hale getirin (#248).
- Birleştirilecek iki segmentin başlangıç zamanının maksimum farkını
- 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 yayınlarının desteklenmiyor olarak işaretlenmesine neden olan cihaz sorunu için geçici çözüm eklendi (#10898).
- Ekran yenileme hızından çok daha yüksek kare hızına sahip medya oynatırken kare yayınlama performansıyla ilgili sorunları düzeltme
- HEVC HDR10 biçimini
- Yayınla:
- Medya öğeleri arasında geçiş yaparken geçici
STATE_IDLE
sorunu düzeltildi (#245).
- Medya öğeleri arasında geçiş yaparken geçici
- RTSP:
- Geçersiz RTSP Describe yanıt mesajlarının ayrıştırılmasında oluşturulan IllegalArgumentException hatasını yakalama (#10971).
- Oturum:
- Bildirim oynatma/duraklatma düğmesinin oynatıcı durumuna göre güncellenmemesine neden olan hata düzeltildi (#192).
- IMA uzantısı:
- İlk (ve reklamsız durumda tek)
LOADED
etkinliği alınmadığı için reklamsız DAI akışlarının başlatılmasını engelleyen bir hata düzeltildi.
- İlk (ve reklamsız durumda tek)
Sürüm 1.0.0-rc01
16 Şubat 2023
androidx.media3:media3-*:1.0.0-rc01
yayınlanır.
1.0.0-rc01 sürümü bu taahhütleri içerir.
Bu sürüm, ExoPlayer 2.18.3 sürümüne karşılık gelir.
- Temel kitaplık:
- Bir kod çözücü, medyayı etkili bir şekilde oynatamayacağı konusunda rapor verse bile, oluşturma aracının kod çözücü sıralama mantığını
MediaCodecSelector
'nin tercihlerini gözetecek şekilde değiştirin. Örneğin, varsayılan seçicide, biçimi tam olarak destekleyen yazılım kod çözücüye kıyasla yalnızca işlevsel destek sunan donanım kod çözücü tercih edilir (#10604). - Yeni bir ExoPlayer örneği için önceden var olan bir oynatma iş parçacığı ayarlayan
ExoPlayer.Builder.setPlaybackLooper
öğesini ekleyin. - İndirme yöneticisi yardımcılarının temizlenmesine izin verin (#10776).
- Arama için kullanılan komutu da belirtmek üzere
BasePlayer.seekTo
parametresini ekleyin. - API 21 ve sonraki sürümlerde drawable'ları yüklerken tema kullanın (#220).
- Birden fazla medya öğesinin tek bir pencerede birleştirilmesine olanak tanıyan
ConcatenatingMediaSource2
öğesini ekleyin (#247).
- Bir kod çözücü, medyayı etkili bir şekilde oynatamayacağı konusunda rapor verse bile, oluşturma aracının kod çözücü sıralama mantığını
- Ayıklayıcılar:
- Trak atomları ayrıştırılırken örnek tabloda (stbl) gerekli bir örnek açıklaması (stsd) eksikse
NullPointerException
yerineParserException
atayın. - fMP4'te doğrudan bir senkronizasyon karesine sarma sırasında örnekleri doğru şekilde atlama (#10941).
- Trak atomları ayrıştırılırken örnek tabloda (stbl) gerekli bir örnek açıklaması (stsd) eksikse
- Ses:
- Doğrudan oynatmalarda (geçiş)
AudioTrack
için minimum arabellek boyutunu hesaplamak üzere sıkıştırılmış ses biçimi bit hızını kullanın.
- Doğrudan oynatmalarda (geçiş)
- Metin:
- Altyazı dosyası işaret içermiyorsa
TextRenderer
'ninSubtitle.getEventTime
'ye geçersiz (negatif) bir dizin göndermesi sorunu düzeltildi. - SubRip: UTF-16 dosyaları için, bayt sırası işaretiyle başlayan dosyalar için destek ekleyin.
- Altyazı dosyası işaret içermiyorsa
- Meta veriler:
- ID3 v2.4'ün izin verdiği şekilde, ID3 çerçevelerinden birden çok boşlukla ayrılmış değeri ayrıştırın.
- Meta veriler tarafından açıklanan içerik veya klasör türünü belirtmek için
MediaMetadata.mediaType
ekleyin. MediaMetadata.folderType
yerineMediaMetadata.isBrowsable
ekleyin. Klasör türünün desteği sonraki sürümde sonlandırılacak.
- DASH:
- Kutu sayıları dahil olmak üzere resim uyarlama setleri için tam ayrıştırma ekleyin (#3752).
- Kullanıcı Arayüzü:
- Görünürlük değişikliklerinin kayıtlı dinleyiciye iletilmesini sağlamak için desteği sonlandırılan
PlayerView.setControllerVisibilityListener(PlayerControlView.VisibilityListener)
özelliğini düzeltin (#229). - Sağdan sola (RTL) düzen kullanıldığında
PlayerView
'teki orta oynatıcı kontrollerinin sırasını düzeltin (#227).
- Görünürlük değişikliklerinin kayıtlı dinleyiciye iletilmesini sağlamak için desteği sonlandırılan
- Oturum:
- Özel oyuncular için
Player
arayüzünü uygulamaya yardımcı olması amacıyla 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
öğesini kullanın (#219). - Medya oturumunu
DefaultMediaNotificationProvider
öğesiningetMediaButtons()
bağımsız değişkeni olarak ekleyin ve netlik için değişmez listeler kullanın (#216). - Oynatıcıya ayarlamadan önce
MediaItem
listesini, başlangıç dizini ve konumunu oturuma göre değiştirme/ayarlama olanağı 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 eski oturum durumu olması durumunda
QueueTimeline
'ü daha sağlam hale getirin (#241).
- Özel oyuncular için
- Meta veriler:
- ID3 v2.4'ün izin verdiği şekilde, ID3 çerçevelerinden birden çok boşlukla ayrılmış değeri ayrıştırın.
- Meta veriler tarafından açıklanan içerik veya klasör türünü belirtmek için
MediaMetadata.mediaType
ekleyin. MediaMetadata.folderType
yerineMediaMetadata.isBrowsable
ekleyin. Klasör türünün desteği sonraki sürümde sonlandırılacak.
- Yayın uzantısı:
- Cast SDK sürümünü 21.2.0 olarak yükseltin.
- IMA uzantısı:
- Konu dizisi sorunlarını önlemek için uygulama iş akışındaki
ImaServerSideAdInsertionMediaSource
için oynatıcı dinleyicisini kaldırın. - TV cihazlarında atlama düğmesinin odaklanmasını istemek için
ImaServerSideAdInsertionMediaSource.AdsLoader.Builder
özelliğiniImaServerSideAdInsertionMediaSource.AdsLoader.Builder
öğesine ekleyin ve varsayılan olarak true olarak ayarlayın.focusSkipButtonWhenAvailable
- Atlama düğmesine odaklanmayı programatik olarak istemek için
ImaServerSideAdInsertionMediaSource.AdsLoader
sınıfınafocusSkipButton()
yöntemi ekleyin. - IMA SDK sürümünü 3.29.0'a yükseltin.
- Konu dizisi sorunlarını önlemek için uygulama iş akışındaki
- Demo uygulama:
- Çalışma zamanında indirme bildirimleri için bildirim izni isteyin (#10884).
Sürüm 1.0.0-beta03
22 Kasım 2022
androidx.media3:media3-*:1.0.0-beta03
yayınlanır.
1.0.0-beta03 sürümü bu taahhütleri 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 parçalar için tünel oluşturmanın etkin olup olmadığını kontrol etmek üzere
ExoPlayer.isTunnelingEnabled
ekleyin (#2518). - Tek bir
MediaSource
'ı sarma işlemini basitleştirmek içinWrappingMediaSource
ekleyin (#7279). - Yeterli bellek olmadığı için oynatma takılmadan önce geri arabelleği atma.
- Aktarma etkinleştirildiğinde İzleme "doSomeWork" bloğunu kapatın.
PlaybackStatsListener
(#180) sürümünde hızlı aramalarla ilgili oturum izleme sorunu düzeltildi.- Tek öğeli bir oynatma listesinde
seekToNext
veyaseekToPrevious
'yi çağırırken eksikonMediaItemTransition
geri araması gönderme (#10667). - Videonun oluşturulduğu yüzeyin boyutunu döndüren
Player.getSurfaceSize
değerini ekleyin. - Oynatıcının yayınlanması sırasında dinleyicilerin kaldırılmasının
IllegalStateException
hatasına neden olabileceği hata düzeltildi (#10758).
- Şu anda seçili olan parçalar için tünel oluşturmanın etkin olup olmadığını kontrol etmek üzere
- Derleme:
- Derleme hatalarını önlemek için minimum
compileSdkVersion
'ü zorunlu kılın (#10684). - Başka bir Gradle derlemesine dahil edildiğinde yayınlama bloğunu engelleyin.
- Derleme hatalarını önlemek için minimum
- Parça seçimi:
- Ekran Dolby Vision'ı desteklemiyorsa diğer parçaları tercih edin. (#8944).
- İndirilenler:
- Aynı
PriorityTaskManager
ile aynı anda indirme ve oynatma işleminin yapılmasından kaynaklananProgressiveDownloader
'te olası sonsuz döngü düzeltildi (#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 Dolby Vision'ı desteklemiyorsa alternatif Dolby Vision kod çözücüyü deneyin. (#9794).
- Ses:
- Aynı anda birden fazla oynatıcıyı serbest bırakırken OutOfMemory hatalarını önlemek için
AudioTrack
örneklerini serbest bırakmak üzereSingleThreadExecutor
kullanın (#10057). - AudioTrack aktarma durumu için
AudioOffloadListener.onExperimentalOffloadedPlayback
değerini ekler. (#134). AudioTrackBufferSizeProvider
'ü herkese açık bir arayüz haline getirin.- Tercih edilen ses çıkış cihazını ayarlamak için
ExoPlayer.setPreferredAudioDevice
ekleyin (#135). androidx.media3.exoplayer.audio.AudioProcessor
'üandroidx.media3.common.audio.AudioProcessor
olarak yeniden adlandırın.- Tüm Android sürümlerinde 8 kanallı ve 12 kanallı sesi sırasıyla 7.1 ve 7.1.4 kanal maskelerine eşleme (#10701).
- Aynı anda birden fazla oynatıcıyı serbest bırakırken OutOfMemory hatalarını önlemek için
- Meta veriler:
MetadataRenderer
artık meta veriler mevcut olduğu anda oluşturulacak şekilde yapılandırılabilir. Oluşturucunun meta verileri erken mi yoksa oynatıcı konumuyla senkronize mi yayınlayacağını belirtmek içinMetadataRenderer(MetadataOutput, Looper, MetadataDecoderFactory, boolean)
ile bir örnek oluşturun.
- DRM:
- Android 13 ClearKey uygulamasında boş olmayan ancak geçersiz bir lisans URL'si döndüren bir hatayı giderme
- Oynatma listesindeki DRM şemalarının (ör. Widevine'den ClearKey'e) arasında geçiş yaparken
setMediaDrmSession failed: session not opened
hatası düzeltildi.
- Metin:
- CEA-608: 2. alandaki servis anahtarı komutlarının doğru şekilde işlendiğinden emin olun (#10666).
- DASH:
- Manifestlerden
EventStream.presentationTimeOffset
ayrıştırma (#10460).
- Manifestlerden
- Kullanıcı Arayüzü:
- Oynatıcının mevcut geçersiz kılma işlemlerini
TrackSelectionDialogBuilder
'te ön ayar olarak kullanın (#10429).
- Oynatıcının mevcut geçersiz kılma işlemlerini
- Oturum:
- Bazıları eşzamansız çözüm gerektirse bile komutların her zaman doğru sırayla yürütüldüğünden emin olun (#85).
DefaultMediaNotificationProvider
örnekleri oluşturmak içinDefaultMediaNotificationProvider.Builder
ekleyin. Oluşturucu, sağlayıcı tarafından kullanılan bildirim kimliğini, bildirim kanalı kimliğini ve bildirim kanalı adını yapılandırabilir. Ayrıca, bildirimlerin küçük simgesini ayarlamak içinDefaultMediaNotificationProvider.setSmallIcon(int)
yöntemini ekleyin. (#104).MediaController.release()
'ten önce gönderilen komutların atlanmadığından emin olun (#99).SimpleBitmapLoader
,file://
URI'lerinden bitmap yükleyebilir (#108).MediaController
'ün bir dönemde bir reklamı aramasını engelleyen iddiayı düzeltin (#122).- Oynatma sona erdiğinde
MediaSessionService
ön planda durdurulur ve son oynatılan medya öğesinin oynatılmasını yeniden başlatan bir bildirim gösterilir (#112). - Duraklatma için bekleyen bir intent içeren bir ön plan hizmeti başlatmayın (#167).
- API 26 ve API 27'de
DefaultNotificationProvider
tarafından oluşturulan bildirimle ilişkili "rozeti" manuel olarak gizleme (rozet, API 28 ve sonraki sürümlerde otomatik olarak gizlenir) (#131). - Eski bir MediaSession'dan Media3 MediaController'a ikinci bir bağlayıcı bağlantısının IllegalStateExceptions'e neden olduğu hata düzeltildi (#49).
- RTSP:
- IMA:
- IMA SDK'sının reklam yüklerken takıldığı durumları (#10510) ele almak için reklam bilgilerini yükleme zaman aşımı ekleyin.
- İçeriğin sonuna giderken videonun ortasında gösterilen reklamların atlamasını önleme (#10685).
- Sunucu tarafı yerleştirilmiş reklamlar (ör. IMA DAI) içeren canlı yayınlar için aralığın süresini doğru hesaplama (#10764).
- FFmpeg uzantısı:
- FFmpeg kitaplıklarını NDK 23.1.7779620 ve sonraki sürümlerle bağlamak için yeni gerekli işaretleri ekleyin (#9933).
- AV1 uzantısı:
- En son Android Studio sürümleriyle uyumsuzlukları önlemek için CMake sürümünü güncelleyin (#9933).
- Yayın uzantısı:
MediaController
ile oynatmayı kontrol ederkenCastPlayer
'ı tanımlayabilmek içingetDeviceInfo()
'ü uygulayın (#142).
- Dönüştürücü:
- Çıkış örneğinin çok yavaş oluşturulduğunu algılamak için bir birleştirici gözetleyici zamanlayıcısı ekleyin.
- Desteği sonlandırılan sembolleri kaldırın:
Transformer.Builder.setOutputMimeType(String)
öğesini kaldırın. Bu özellik kaldırıldı. Varsayılan birleştirici 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ınlanır.
1.0.0-beta02 sürümü bu taahhütleri içerir.
Bu sürüm, ExoPlayer 2.18.1 sürümüne karşılık gelir.
- Temel kitaplık:
ShuffleOrder
yerineExoPlayer.setShuffleOrder
yazıldığındareason=Player.TIMELINE_CHANGE_REASON_PLAYLIST_CHANGED
ilePlayer.Listener#onTimelineChanged
numaralı telefon arandığından emin olun (#9889).- İlerleyen medya için yalnızca seçili parçaları arabelleğe alınmış konumda ekleyin (#10361).
- Tüm ExoPlayer günlük çıkışı için özel günlükleyiciye izin verin (#9752).
DefaultMediaSourceFactory
içindesetDataSourceFactory
'ün uygulanmasını düzeltin. Bu, bazı durumlarda çalışmazdı (#116).
- Ayıklayıcılar:
- DASH:
- Manifestlerden ClearKey lisans URL'sini ayrıştırma (#10246).
- Kullanıcı Arayüzü:
- TalkBack'in, oynatma kontrolleri menüsünde etkin olan hız seçeneğini duyurmasını sağlayın (#10298).
- RTSP:
- VP8 parçalanmış paket işleme eklendi (#110).
- Leanback uzantısı:
LeanbackAdapter
içinplayWhenReady
değişikliklerini dinleyin (10420).
- Yayınla:
Sürüm 1.0.0-beta01
16 Haziran 2022
androidx.media3:media3-*:1.0.0-beta01
yayınlanır.
1.0.0-beta01 sürümü bu taahhütleri 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 iletir. Bu sayede cihazdaki sistem performansı ve hata ayıklama bilgileri sağlanabilir. Bu veriler, cihazın kullanıcısı tarafından kullanım ve teşhis verilerinin paylaşımı etkinleştirildiyse Google tarafından da toplanabilir. Uygulamalar,ExoPlayer.Builder.setUsePlatformDiagnostics(false)
ile ExoPlayer için platform teşhislerine katkıda bulunmayı devre dışı bırakabilir.MergingMediaSource
kullanılırken parçaların çok sık sıfırlanması (ör. altyazılar harici olarak yüklenirken ve oynatma sırasında seçili altyazı değiştirilirken) ile ilgili hata düzeltildi (#10248).- API 29 ve 30'da 5G-NSA ağ türünü algılama işlemi durduruldu. Bu oynatmalarda 4G ağı varsayılır.
null
'ünMediaSource.Factory.setDrmSessionManagerProvider
veMediaSource.Factory.setLoadErrorHandlingPolicy
'ye iletilmesine izin vermeyin. GerekirseDefaultDrmSessionManagerProvider
veDefaultLoadErrorHandlingPolicy
örnekleri açıkça iletilebilir.- Tam
LocalConfiguration
bilinmediğinde medyayı oynatmak için gereken meta verileri temsil etmek üzereMediaItem.RequestMetadata
ekleyin. AyrıcaMediaMetadata.mediaUrl
,RequestMetadata
'a dahil edildiği içinMediaMetadata.mediaUrl
'yi de kaldırın. - Oyuncuların tek bir öğe ayarlamalarına izin vermek için
Player.Command.COMMAND_SET_MEDIA_ITEM
ekleyin.
- Parça seçimi:
TrackSelectionOverrides
sınıfınıTrackSelectionParameters
olarak düzleştirin veTrackSelectionOverride
sınıfını üst düzey bir sınıfa yükseltin.TracksInfo
'üTracks
,TracksInfo.TrackGroupInfo
'yi iseTracks.Group
olarak yeniden adlandırın.Player.getCurrentTracksInfo
vePlayer.Listener.onTracksInfoChanged
daPlayer.getCurrentTracks
vePlayer.Listener.onTracksChanged
olarak yeniden adlandırıldı. Bu,Player.Listener.onTracksChanged
yöntem adının "desteklenmesini sonlandırmayı" içerir ancak farklı parametre türleri vardır.- Desteği sonlandırılan
DefaultTrackSelector.ParametersBuilder
yerineDefaultTrackSelector.buildUponParameters
veDefaultTrackSelector.Parameters.buildUpon
'üDefaultTrackSelector.Parameters.Builder
döndürecek şekilde değiştirin. - Varsayılan olarak etkin olan
DefaultTrackSelector.Parameters.constrainAudioChannelCountToDeviceCapabilities
ekleme simgesini tıklayın. EtkinleştirildiğindeDefaultTrackSelector
, kanal sayısı cihaz çıkış özelliklerini aşmayan ses parçalarını tercih eder. El cihazlarında, çok kanallı biçim uzamsallaştırılabilir (Android 12L+) veya Dolby surround ses biçimi olmadığı süreceDefaultTrackSelector
, çok kanallı ses biçimlerine kıyasla stereo/monoyu tercih eder. Ayrıca, ses uzamsallaştırmayı destekleyen cihazlardaDefaultTrackSelector
, uzamsallaştırıcı özelliklerinde yapılan değişiklikleri izler ve bu değişikliklere göre yeni bir parça seçimini tetikler.television
UI modu olan cihazlar bu kısıtlamalardan hariç tutulur ve en yüksek kanal sayısına sahip biçim tercih edilir. Bu özelliği etkinleştirmek içinDefaultTrackSelector
örneğinin birContext
ile oluşturulması gerekir.
- Video:
DummySurface
'üPlaceholderSurface
olarak yeniden adlandırın.MediaCodecVideoRenderer.getCodecMaxInputSize
'e AV1 desteği ekleyin.
- Ses:
- Standart olmayan MIME türü reklamı yapan LG AC3 ses kodlayıcısı kullanın.
- API 21 ve önceki sürümlerde yavaş ART doğrulamasını önlemek için
AudioAttributes.getAudioAttributesV21()
değerinin döndürme türünüandroid.media.AudioAttributes
yerine yeni birAudioAttributesV21
sarmalayıcı sınıfına değiştirin. - Platformu sorgulayın (API 29 ve üzeri) veya biçim ses kanalı sayısı ayarlanmamışken ses aktarımı için ses kodlama kanalı sayısını varsayın. Bu durum, HLS'nin parçalara ayrılmadan hazırlanmasıyla (10204) ortaya çıkar.
- Kod çözücü 12 kanallı PCM ses çıkışı veriyorsa
AudioTrack
'ü kanal maskesiAudioFormat.CHANNEL_OUT_7POINT1POINT4
ile yapılandırın (#10322).
- DRM
- DRM oturumunun, bir biçim değişikliğinden hemen sonra aranırken her zaman doğru şekilde güncellendiğinden emin olun (10274).
- Metin:
Player.getCurrentCues()
değerini,List<Cue>
yerineCueGroup
döndürecek şekilde değiştirin.- SSA:
BorderStyle == 3
olduğundaOutlineColour
stil ayarını destekleyin (ör.OutlineColour
işaretin arka planını ayarlar) (#8435). - CEA-708: Verileri birden fazla hizmet bloğuna ayırın ve şu anda seçili hizmet numarasıyla ilişkili olmayan blokları yoksayın.
- Yalnızca Google'ın dahili altyazı biçimini işlemek için kullanılan
RawCcExtractor
öğesini kaldırın.
- Ayıklayıcılar:
- Kullanıcı Arayüzü:
useController=false
durumundaPlayerView
üzerinde ayarlananOnClickListener
'lere etkinliklerin yayınını düzeltin (#9605). Ayrıca tüm görünüm yapılandırmaları için etkinliklerinOnLongClickListener
adresine teslimini düzeltin.ACTION_UP
'ten öncePlayerView
'ün sınırlarını terk eden bir dokunma etkinliği dizisinin tıklama olarak yanlış şekilde ele alınması düzeltildi (#9861).- Dokunulduğunda kontrolleri gizlemek yerine oynatmayı değiştirebilen
PlayerView
erişilebilirlik sorunu düzeltildi (#8627). TrackSelectionView
veTrackSelectionDialogBuilder
'üExoPlayer
yerinePlayer
arayüzüyle çalışacak şekilde yeniden yazın. Bu, görünümlerin diğerPlayer
uygulamalarıyla kullanılmasına olanak tanır ve kullanıcı arayüzü modülü ile ExoPlayer modülü arasındaki bağımlılığı kaldırır. Bu, önemli bir değişikliktir.PlayerView
kanal seçicide zorunlu metin kanalları gösterilmez ve "Yok" seçiliyse uygun bir zorunlu metin kanalı seçili kalır (#9432).
- DASH:
- DTS
AudioChannelConfiguration
öğelerinden kanal sayısını ayrıştırma Bu işlem, DTS akışları için ses geçişini yeniden etkinleştirir (#10159). null
öğesininDashMediaSource.Factory.setCompositeSequenceableLoaderFactory
öğesine iletilmesine izin vermeyin. GerekirseDefaultCompositeSequenceableLoaderFactory
örnekleri açıkça iletilebilir.
- DTS
- HLS:
- Oynatma listesi CODECS özelliği ses codec'ini içermiyorsa parçalara ayırarak hazırlamaya geçin (#10065).
null
'ünHlsMediaSource.Factory.setCompositeSequenceableLoaderFactory
,HlsMediaSource.Factory.setPlaylistParserFactory
veHlsMediaSource.Factory.setPlaylistTrackerFactory
'e iletilmesine izin vermeyin. GerekirseDefaultCompositeSequenceableLoaderFactory
,DefaultHlsPlaylistParserFactory
örnekleri veyaDefaultHlsPlaylistTracker.FACTORY
referansı açıkça iletilebilir.
- Sorunsuz Yayın:
null
öğesininSsMediaSource.Factory.setCompositeSequenceableLoaderFactory
öğesine iletilmesine izin vermeyin. GerekirseDefaultCompositeSequenceableLoaderFactory
örnekleri açıkça iletilebilir.
- RTSP:
- H263 için RTP okuyucu eklendi (#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ı, ardışık olmayan AMR akışları desteklenmektedir. Karma AMR RTP yükü desteklenmez. (#46)
- VP8 için RTP okuyucu eklendi (#47).
- WAV için RTP okuyucu ekleyin (#56).
- RTSP temel yetkilendirme üstbilgisini düzeltin. (#9544).
- ExoPlayer'ın bunlara ihtiyacı olmadığından zorunlu SDP alanlarının kontrolünü durdurun (#10049).
- RTSP zamanlaması ayrıştırılırken kontrollü istisna atma (#10165).
- VP9 için RTP okuyucu eklendi (#47).
- OPUS için RTP okuyucu ekleyin (#53).
- Veri kaynakları:
DummyDataSource
'üPlaceholderDataSource
olarak yeniden adlandırın.- OkHttp kesinti işleme geçici çözümü.
- Oturum:
- İstekleri eşzamansız olarak çözmek için
MediaSession.MediaItemFiller
yerineMediaSession.Callback.onAddMediaItems
yazın. MediaController
eski bir medya oturumuna bağlandığındasetMediaItems(s)
yöntemlerini destekler.MediaController.setMediaUri
veMediaSession.Callback.onSetMediaUri
öğelerini kaldırın. Aynı işlevlerMediaController.setMediaItem
veMediaSession.Callback.onAddMediaItems
kullanılarak da elde edilebilir.- Medya oynatmak için eski
MediaController
aramalarınıonSetMediaUri
yerineMediaSession.Callback.onAddMediaItems
'e yönlendirin. - Bildirimi özelleştirmek için
MediaNotification.Provider
veDefaultMediaNotificationProvider
ekleyin. - Poster resimlerini indirmek için
BitmapLoader
veSimpleBitmapLoader
öğelerini ekleyin. - Eski oturumla geriye dönük uyumluluk sağlamak için
MediaSession.setCustomLayout()
ekleyin. - Eski oturumla özellik eşleşmesi sağlamak için
MediaSession.setSessionExtras()
ekleyin. MediaSession.MediaSessionCallback
'üMediaSession.Callback
,MediaLibrarySession.MediaLibrarySessionCallback
'yiMediaLibrarySession.Callback
veMediaSession.Builder.setSessionCallback
'isetCallback
olarak yeniden adlandırın.MediaControllerImplLegacy
'te NPE düzeltildi (#59).- Zaman çizelgesi değişikliğinde oturum konumu bilgilerini güncelleme(#51).
- Denetleyiciyi yayınladıktan sonra
MediaControllerImplBase
'te NPE'yi düzeltin (#74).
- İstekleri eşzamansız olarak çözmek için
- Reklam oynatma / IMA:
- Medya Derecelendirme Konseyi (MRC) önerilerine uygun olması için reklam anketi hızını 100 ms'den 200 ms'ye düşürün.
- FFmpeg uzantısı:
- Android Studio'nun gradle senkronizasyonunun başarısız olmasına neden olan bir CMake hatasını önlemek için CMake sürümünü
3.21.0+
olarak güncelleyin (#9933).
- Android Studio'nun gradle senkronizasyonunun başarısız olmasına neden olan bir CMake hatasını önlemek için CMake sürümünü
- Desteği sonlandırılan sembolleri kaldırın:
Player.Listener.onTracksChanged(TrackGroupArray, TrackSelectionArray)
öğesini kaldırın. Bunun yerinePlayer.Listener.onTracksChanged(Tracks)
kullanın.Player.getCurrentTrackGroups
vePlayer.getCurrentTrackSelections
öğelerini kaldırın. Bunun yerinePlayer.getCurrentTracks
kullanın. Desteği sonlandırılmış olsa daExoPlayer.getCurrentTrackGroups
veExoPlayer.getCurrentTrackSelections
yöntemlerini kullanmaya devam edebilirsiniz.DownloadHelper
DEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_VIEWPORT
veDEFAULT_TRACK_SELECTOR_PARAMETERS
sabitlerini kaldırın. Mümkün olduğunda bunun yerinegetDefaultTrackSelectorParameters(Context)
, aksi takdirdeDEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_CONTEXT
kullanın.DefaultTrackSelector(ExoTrackSelection.Factory)
yapıcısını kaldırın. Bunun yerineDefaultTrackSelector(Context, ExoTrackSelection.Factory)
politikasını kullanın.Transformer.Builder.setContext
öğesini kaldırın.Context
, bunun yerineTransformer.Builder
oluşturucuya aktarılmalıdır.
Sürüm 1.0.0-alpha03
14 Mart 2022
androidx.media3:media3-*:1.0.0-alpha03
yayınlanır.
1.0.0-alpha03 sürümü bu taahhütleri içerir.
Bu, ExoPlayer 2.17.1 sürümüne karşılık gelir.
- Ses:
- HLS'de Dolby Atmos (E-AC3-JOC) için ses özelliklerini kontrol ederken oluşan hatayı düzeltme
- Ayıklayıcılar:
- FMP4: Hem v0 hem de v1 emsg atomları içeren akışlar için emsg örnek meta verilerinin yanlış sırada yayınlanabileceği sorun düzeltildi (#9996).
- Metin:
SingleSampleMediaSource.Factory.setTrackId
veMediaItem.SubtitleConfiguration.Builder.setId
arasındaki etkileşimi düzelterekSubtitleConfiguration
alanına öncelik verin ve ayarlanmamışsaFactory
değerine geri dönün (#10016).
- Reklam oynatma:
- Canlı HLS SSAI yayınlarında reklam dönemleri arasındaki ses eksikliklerini düzeltin.
Sürüm 1.0.0-alpha02
2 Mart 2022
androidx.media3:media3-*:1.0.0-alpha02
yayınlanır.
1.0.0-alpha02 sürümü bu taahhütleri içerir.
Bu, ExoPlayer 2.17.0 sürümüne karşılık gelir.
- Temel Kitaplık:
buildVideoRenderers()
veyabuildAudioRenderers()
'ı geçersiz kılanDefaultRenderersFactory
alt sınıflarının codec bağdaştırıcısı fabrikasına erişebilmesi ve bunu oluşturduklarıMediaCodecRenderer
örneklerine iletebilmesi için korunanDefaultRenderersFactory.getCodecAdapterFactory()
yöntemini ekleyin.- ICY üstbilgi alanları
name
vegenre
'u sırasıylaMediaMetadata.station
veMediaMetadata.genre
'a iletin. Böylece,Player.Listener.onMediaMetadataChanged()
üzerinden uygulamaya ulaşabilirler (#9677). DefaultHttpDataSource#getResponseHeaders
öğesinden boş anahtarları kaldırın.MediaCodec
örneği oluşturma işlemi başarısız olduğunda uyku moduna geçip tekrar deneyin. Bu, bir yüzey güvenli bir codec'ten başka bir codec'e geçirilirken bazı cihazlarda ortaya çıkan bir sorunu (#8696) giderir.- Kullanıcıların
MediaCodec
'ten metrik verileri almasına izin vermek içinMediaCodecAdapter.getMetrics()
ekleyin. (#9766). - Maven bağımlılık çözümü düzeltildi (#8353).
- Düşük gecikmeli özelliklere sahip olmayan veya kullanıcının hızı ayarlama isteği bulunmayan canlı yayınlarda otomatik hız ayarını devre dışı bırakın (#9329).
DecoderCounters#inputBufferCount
'üqueuedInputBufferCount
olarak yeniden adlandırın.SimpleExoPlayer.renderers
'ü gizli hale getirin. OluşturucularaExoPlayer.getRenderer
üzerinden erişilebilir.- Bazı
AnalyticsListener.EventFlags
sabit değerleri,Player.EventFlags
'daki değerlerle eşleşecek şekilde güncellendi. - Uygulamanın ihtiyaç duymadığı durumlarda R8 tarafından kaldırılmasına izin vermek için
AnalyticsCollector
'ü bir arayüz ve varsayılan uygulamaya bölün.
- Parça seçimi:
- Parça seçiminde tercih edilen video rolü işaretlerini destekleyin (#9402).
- Uyarlama için birden fazla video parçası seçerken tercih edilen MIME türlerini ve rol işaretlerini dikkate alacak şekilde video parçası seçim mantığını güncelleyin (#9519).
- Video ve ses parçası seçim mantığını, yalnızca aynı düzeyde kod çözücü ve donanım desteğine sahip uyarlanabilir seçimler için biçimler seçecek şekilde güncelleyin (#9565).
- Birincil, donanım hızlandırmalı kod çözücüler birden fazla codec'i destekliyorsa video kanalı seçim mantığını, daha verimli codec'leri tercih edecek şekilde güncelleyin (#4835).
- Teknik parça seçim kısıtlamalarına (ör. tercih edilen MIME türü veya maksimum kanal sayısı) kıyasla ses içeriği tercihlerini ("varsayılan" ses parçası veya sistem yerel dili ile eşleşen bir parça) tercih edin.
- Bir parça grubunun geçersiz kılınmasının, aynı türdeki diğer parça gruplarını devre dışı bırakmamasına neden olan parça seçimi sorunu düzeltildi (#9675).
- Boş olmayan ve boş parça geçersiz kılmalarının bir karışımının doğru şekilde uygulanmadığı parça seçimi sorunu düzeltildi (#9649).
TrackGroupArray
içinde yinelenenTrackGroup
'leri yasaklayın.TrackGroup
s,TrackGroup
oluşturucuda birid
ayarlayarak her zaman ayırt edilebilir hale getirilebilir. Bu, etkin bir kanal geçersiz kılma özelliğiyle uygulamayı arka plana aldıktan sonra oynatmayı devam ettirirken yaşanan kilitlenmeyi düzeltir (#9718).- Oynatma canlı yayına çok yakın olsa bile yeterli ağ bant genişliğinde kalite artışına izin vermek için
AdaptiveTrackSelection
'teki mantığı düzeltin (#9784).
- Video:
- Gerekirse Dolby Vision'un uyumlu bir H.264/H.265 kod çözücüsü kullanması için kod çözücünün yedek mantığını düzeltin.
- Ses:
- Gerekirse uyumlu bir E-AC3 kod çözücüsü kullanması için Dolby Atmos (E-AC3-JOC) için kod çözücü yedek mantığını düzeltin.
AudioCapabilities
API'lerini,null
yerine açıkçaAudioCapabilities.DEFAULT_AUDIO_CAPABILITIES
ile iletmeyi zorunlu kılacak şekilde değiştirin.DefaultAudioSink
içine birAudioTrackBufferSizeProvider
ekleyerekAudioTrack
arabellek boyutu hesaplamasının özelleştirilmesine izin verin. (#8891).- İstenen arabellek boyutu 1 MB'tan büyükse
AudioTrack
oluşturmayı yeniden deneyin. (#9712).
- Ayıklayıcılar:
- Metin:
- Yapılandırmadan oluşturulan altyazı parçasının
Format.id
alanına aktarılan birMediaItem.SubtitleConfiguration.id
alanı ekleyin (#9673). - Matroska kapsayıcılarında WebVTT altyazılar için temel destek ekleyin (#9886).
Cea708Decoder
'ün, hizmet bloğunun beyan edilen boyutundan fazlasını okumasını engelleyin.
- Yapılandırmadan oluşturulan altyazı parçasının
- DRM:
playbackLooper
,DrmSessionManager.(pre)acquireSession
hesabından kaldırılsın mı? BirDrmSessionManager
, özel birMediaSource
içinde bir uygulama tarafından kullanıldığında bunun yerineplaybackLooper
'ninDrmSessionManager.setPlayer
'e iletilmesi gerekir.
- Reklam oynatma / IMA:
- IMA Dinamik Reklam Ekleme (DAI) desteği eklendi (#8213).
- Bir reklam grubunun tekrar oynatılabilmesi için sıfırlanmasına izin vermek üzere
AdPlaybackState
işlevine bir yöntem ekleyin (#9615). - Reklam oynatma sırasında 1,0 oynatma hızını zorunlu kılma (#9018).
- Yüklenemeyen bir reklam grubunun oynatmanın hemen sıfırlanmasına neden olduğu sorun düzeltildi (#9929).
- Kullanıcı Arayüzü:
- DASH:
- Ayrıştırılmış temel ve ek özellikleri
Representation
'e ekleyin (#9579). forced-subtitle
parça rolü için destek (#9727).main
kanal rolünüC.SELECTION_FLAG_DEFAULT
olarak yorumlamayı durdurun.- DVB ad alanını tanımlamayan manifest'ler için temel URL hariç tutma mantığını düzeltin (#9856).
- Göreli
MPD.Location
URL'leri desteklenir (#9939).
- Ayrıştırılmış temel ve ek özellikleri
- HLS:
- Yalnızca ses içeren HLS akışları için
Format.label
parametresini doğru şekilde doldurun (#9608). - Başlangıç süresini iyileştirmek için varsayılan olarak parçalara ayrılmamış hazırlığı kullanın. Yorumlarınız, ana oynatma listesinde belirtilmemiş, birleştirilmiş altyazı parçaları içeriyorsa oynatılabilmesi için bunları ana oynatma listesine eklemeniz veya
HlsMediaSource.Factory.setAllowChunklessPreparation(false)
ile parçalara ayrılmadan hazırlama özelliğini devre dışı bırakmanız gerekir. - HLS'de anahtar kare doğru aramayı destekleyin (#2882).
- Yalnızca ses içeren HLS akışları için
- RTSP:
- Herhangi bir sunucu bağlantısı için kullanılan
SocketFactory
değerini geçersiz kılacak bir istemci API'si sağlayın (#9606). - Her ikisi de mevcutsa BASIC yerine DIGEST kimlik doğrulama yöntemini tercih edin (#9800).
- RTSP parça zamanlaması kullanılamadığında işlem yapın (#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ır.- Dönüşüm seçeneklerini belirtmek için
TransformationRequest
ekleyin. - Birden fazla dinleyicinin kaydolmasına izin verin.
- Kodek çıkışı kısmen okunduğunda Dönüştürücü'nün takılmasını düzeltme
- Birleştiricinin yayını sonlandırırken
Transformer.getProgress
'te olası NPE'yi düzeltin. - Dönüşümleri uygulamak için bir demo uygulama ekleyin.
- MediaSession uzantısı:
MediaSessionConnector
artık varsayılan olarak durdurulduğunda oynatma listesini temizliyor. Oynatma listesinin korunmasını isteyen uygulamalar, bağlayıcıdasetClearMediaItemsOnStop(false)
işlevini çağırabilir.
- Yayın uzantısı:
- FFmpeg uzantısı:
build_ffmpeg.sh
'ü GNU yerine LLVM'in bin utils'ine bağlayın (#9933).
- Android 12 uyumluluğu:
- Cast uzantısını
com.google.android.gms:play-services-cast-framework:20.1.0
'e bağlı olacak şekilde yükseltin.play-services-cast-framework
'ün önceki sürümleri Android 12'yi hedefleyen uygulamalarla uyumlu değildir vePendingIntent
oluştururkenIllegalArgumentException
hatasıyla kilitlenir (#9528).
- Cast uzantısını
- Desteği sonlandırılan sembolleri kaldırın:
Player.EventListener
öğesini kaldırın. Bunun yerinePlayer.Listener
politikasını kullanın.MediaSourceFactory#setDrmSessionManager
,MediaSourceFactory#setDrmHttpDataSourceFactory
veMediaSourceFactory#setDrmUserAgent
öğelerini kaldırın. Bunun yerineMediaSourceFactory#setDrmSessionManagerProvider
kullanın.MediaSourceFactory#setStreamKeys
öğesini kaldırın. Bunun yerineMediaItem.Builder#setStreamKeys
kullanın.MediaSourceFactory#createMediaSource(Uri)
öğesini kaldırın. Bunun yerineMediaSourceFactory#createMediaSource(MediaItem)
kullanın.setTag
,DashMediaSource
,HlsMediaSource
veSsMediaSource
'ten kaldırılsın mı? Bunun yerineMediaItem.Builder#setTag
politikasını kullanın.DashMediaSource#setLivePresentationDelayMs(long, boolean)
öğesini kaldırın. Manifesti geçersiz kılmak içinMediaItem.Builder#setLiveConfiguration
veMediaItem.LiveConfiguration.Builder#setTargetOffsetMs
'ü, yedek değer sağlamak içinDashMediaSource#setFallbackTargetLiveOffsetMs
'i kullanın.(Simple)ExoPlayer.setThrowsWhenUsingWrongThread
öğesini kaldırın. İleti dizisi yaptırımını devre dışı bırakmak artık mümkün değildir.ActionFile
veActionFileUpgradeUtil
öğelerini kaldırın. Eski işlem dosyalarınıDefaultDownloadIndex
ile birleştirmek içinActionFileUpgradeUtil
kullanmak üzere ExoPlayer 2.16.1 veya önceki bir sürümü kullanın.ProgressiveMediaSource#setExtractorsFactory
öğesini kaldırın. Bunun yerineProgressiveMediaSource.Factory(DataSource.Factory, ExtractorsFactory)
sınıf oluşturucusunu kullanın.ProgressiveMediaSource.Factory#setTag
veProgressiveMediaSource.Factory#setCustomCacheKey
öğelerini kaldırın. Bunun yerineMediaItem.Builder#setTag
veMediaItem.Builder#setCustomCacheKey
politikalarını kullanın.DefaultRenderersFactory(Context, @ExtensionRendererMode int)
veDefaultRenderersFactory(Context, @ExtensionRendererMode int, long)
sınıf oluşturucularını kaldırın. Bunun yerineDefaultRenderersFactory(Context)
kurucusunu,DefaultRenderersFactory#setExtensionRendererMode
veDefaultRenderersFactory#setAllowedVideoJoiningTimeMs
kullanın.- Tüm herkese açık
CronetDataSource
kurucularını kaldırın. Bunun yerineCronetDataSource.Factory
kullanın.
- Aşağıdaki
IntDefs
değerini yalnızca@Target(TYPE_USE)
olarak değiştirin. Bu, Kotlin'de kullanımların derlenmesini bozabilir. Bu sorun, türü ek açıklamaya (Int
) taşımak için ek açıklamayı taşıyarak düzeltilebilir.@AacAudioObjectType
@Ac3Util.SyncFrameInfo.StreamType
@AdLoadException.Type
@AdtsExtractor.Flags
@AmrExtractor.Flags
@AspectRatioFrameLayout.ResizeMode
@AudioFocusManager.PlayerCommand
@AudioSink.SinkFormatSupport
@BinarySearchSeeker.TimestampSearchResult.Type
@BufferReplacementMode
@C.BufferFlags
@C.ColorRange
@C.ColorSpace
@C.ColorTransfer
@C.CryptoMode
@C.Encoding
@C.PcmEncoding
@C.Projection
@C.SelectionReason
@C.StereoMode
@C.VideoOutputMode
@CacheDataSource.Flags
@CaptionStyleCompat.EdgeType
@DataSpec.Flags
@DataSpec.HttpMethods
@DecoderDiscardReasons
@DecoderReuseResult
@DefaultAudioSink.OutputMode
@DefaultDrmSessionManager.Mode
@DefaultTrackSelector.SelectionEligibility
@DefaultTsPayloadReaderFactory.Flags
@EGLSurfaceTexture.SecureMode
@EbmlProcessor.ElementType
@ExoMediaDrm.KeyRequest.RequestType
@ExtensionRendererMode
@Extractor.ReadResult
@FileTypes.Type
@FlacExtractor.Flags
(com.google.android.exoplayer2.ext.flac
paketinde)@FlacExtractor.Flags
(com.google.android.exoplayer2.extractor.flac
paketinde)@FragmentedMp4Extractor.Flags
@HlsMediaPlaylist.PlaylistType
@HttpDataSourceException.Type
@IllegalClippingException.Reason
@IllegalMergeException.Reason
@LoadErrorHandlingPolicy.FallbackType
@MatroskaExtractor.Flags
@Mp3Extractor.Flags
@Mp4Extractor.Flags
@NotificationUtil.Importance
@PlaybackException.FieldNumber
@PlayerNotificationManager.Priority
@PlayerNotificationManager.Visibility
@PlayerView.ShowBuffering
@Renderer.State
@RendererCapabilities.AdaptiveSupport
@RendererCapabilities.Capabilities
@RendererCapabilities.DecoderSupport
@RendererCapabilities.FormatSupport
@RendererCapabilities.HardwareAccelerationSupport
@RendererCapabilities.TunnelingSupport
@SampleStream.ReadDataResult
@SampleStream.ReadFlags
@StyledPlayerView.ShowBuffering
@SubtitleView.ViewType
@TextAnnotation.Position
@TextEmphasisSpan.MarkFill
@TextEmphasisSpan.MarkShape
@Track.Transformation
@TrackOutput.SampleDataPart
@Transformer.ProgressState
@TsExtractor.Mode
@TsPayloadReader.Flags
@WebvttCssStyle.FontSizeUnit
Sürüm 1.0.0-alpha01
27 Ekim 2021
androidx.media3:media3-*:1.0.0-alpha01
yayınlanır.
1.0.0-alpha01 sürümü bu taahhütleri içerir.
Yeni özellikler
Media3, ExoPlayer dahil olmak üzere medya destek kitaplıklarının yeni adresidir. İlk alfa sürümünde, aşağıdakiler dahil olmak üzere medya kullanım alanlarını uygulamak için kitaplıkların erken ve işlevsel uygulamaları yer alır:
- Android için uygulama düzeyinde bir medya oynatıcı olan ExoPlayer'ı özelleştirmek ve genişletmek kolaydır.
- Oynatma işlemlerini 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şturmaya yönelik kullanıcı arayüzü bileşenleri.
- ExoPlayer ile kullanılmak üzere diğer kitaplıklardaki işlevleri sarmalayan modüller (ör. IMA SDK aracılığıyla reklam ekleme).
Daha fazla bilgi için Media3 GitHub projesine göz atın.
ExoPlayer daha önce ayrı bir ExoPlayer GitHub projesinde barındırılıyordu. Media3'te paket adı androidx.media3.exoplayer
. Uygulamaların Media3'e geçiş yapması için ExoPlayer GitHub projesini bir süre daha sürdürmeye ve yayınlamaya devam etmeyi planlıyoruz. Media3, eski media2 ve mediasession uzantıları dışındaki tüm ExoPlayer modüllerinin yerini alan yeni media3-session
modülüne sahiptir. Bu sayede, adaptör/konnektör sınıfı kullanmaya gerek kalmadan oynatıcılar ile medya oturumları arasında doğrudan entegrasyon sağlanır.