Medya3
Son Güncelleme | Kararlı Sürüm | Serbest Bırakma Adayı | Beta Sürümü | Alfa Sürümü |
---|---|---|---|---|
12 Nisan 2024 | 1.3.1 | - | - | 1.4.0-alpha01 |
Bağımlılıkları bildirme
Media3'e bağımlılık eklemek için projenize Google Maven deposunu eklemeniz gerekir. Daha fazla bilgi için Google'ın Maven deposunu okuyun.
Uygulamanızın veya modülünüz için build.gradle
dosyasına ihtiyaç duyduğunuz yapıların bağımlılıklarını ekleyin:
Modern
dependencies { def media3_version = "1.3.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" }
Kotlin
dependencies { val media3_version = "1.3.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") }
Bağımlılıklar hakkında daha fazla bilgi edinmek için Derleme Bağımlılıkları Ekleme bölümüne bakın.
Geri bildirim
Geri bildiriminiz Jetpack'i daha iyi hale getirmemize yardımcı oluyor. Soruların yanıtlarını, bilinen sorunları ve özellik isteklerini bulmak ve yeni sorunlar bildirmek için Media3 sorun izleyicisini kullanabilirsiniz.
Sürüm 1.4.0
Sürüm 1.4.0-alpha01
17 Nisan 2024
androidx.media3:media3-*:1.4.0-alpha01
yayınlandı.
1.4.0-alpha01 sürümü bu kayıtları içerir.
- ExoPlayer:
- Birden fazla kaynak için önceden yüklemeyi koordine eden
BasePreloadManager
öğesi ekleyin. Bu işlemde, kaynaklarınrankingData
tarafından tanımlanan önceliklere göre işlem yapılır. Bu sınıfın kapsamı genişletildiğinde özelleştirme yapılabilir. Kaynakların medya örneklerini belleğe önceden yüklemek içinPreloadMediaSource
ve kullanıcı arayüzündeki öğenin dizinini belirten bir tamsayırankingData
kullananDefaultPreloadManager
ekleyin. LoadControl
uygulamalarını birden çok oynatıcıyı destekleyecek şekilde etkinleştirmek için çoğuLoadControl
yönteminePlayerId
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 ayarlamanıza gerek yoktur. ÖzelRenderer
uygulamaları, bir örneğin gösterilip gösterilmeyeceğine karar vermek için tampon süresinin en azBaseRenderer.getLastResetPositionUs()
olup olmadığını kontrol etmelidir. ÖzelSimpleDecoder
uygulamaları, gerekirseisAtLeastOutputStartTimeUs
öğesini işaretleyebilir veya diğer tamponlarıDecoderOutputBuffer.shouldBeSkipped
ile işaretleyebilir.- Belirtilen
rankingData
ile birMediaSource
öğesinin önceden yüklenmemesi gerektiğini belirtmek içinTargetPreloadStatusControl.getTargetPreloadStatus(T)
tarafından boş değerin döndürülmesine izin verin. remove(MediaSource)
adlı kişiyiBasePreloadManager
alanına ekleyin.
- Birden fazla kaynak için önceden yüklemeyi koordine eden
- Dönüştürücü:
- Çıkış dosyasındaki ilgili parçanın nasıl yapıldığını gösteren
audioConversionProcess
vevideoConversionProcess
öğeleriniExportResult
öğesine ekleyin. - Kırpma optimizasyonu H.264 seviye kontrollerini gevşetin.
- Sırayla SDR ve HDR giriş medyası arasında geçiş yapma desteği eklendi.
- Beste düzeyinde ses efektleri için destek eklendi.
- Ultra HDR görüntülerin HDR videolara kodunu dönüştürme desteği eklendi.
DefaultAudioMixer
öğesinin sıfırlanıp yeniden kullanıldıktan sonra doğru bayt miktarını vermemesi sorununu düzeltin.
- Çıkış dosyasındaki ilgili parçanın nasıl yapıldığını gösteren
- Video:
- Oynatma sırasında yüzeyler arasında geçiş yaparken
Listener.onRenderedFirstFrame()
öğesinin çok erken gelmesi sorunu düzeltildi.
- Oynatma sırasında yüzeyler arasında geçiş yaparken
- Veri Kaynağı:
package
öğesinin mevcut uygulamanın paketinden farklı olduğuandroid.resource://package/id
ham kaynak URI'leri için destek uygulayın. Bunun önceden işe yaradığı belgelenmemiştir ancak kaynaklara erişmenin addan ziyade başka bir paketteki daha etkili bir yoludur.DataSpec
oluşturucularındaurl
öğesinin boş olup olmadığını dikkatlice kontrol edin. Bu parametreye zaten boş olmayan bir ek açıklama eklenmiş.
- Sonuç:
SpeedChangeEffect
içinde aynıEditedMediaItem
veyaComposition
içinde birden fazla hız değişikliğini destekleyin.- Ultra HDR bit eşlem girişinden HLG ve PQ çıkışı desteği.
- EGL_GL_COLORSPACE_BT2020_HLG_EXT desteği ekleyin. Bu destek, ExoPlayer.setVideoEffect ve Transformer'ın Hata Ayıklama SurfaceView özelliğinde HLG yüzey çıkışını iyileştirir.
- Yer paylaşımlı matris uygulamasını, belgelerle tutarlı hale getirmek için
setOverlayFrameAnchor()
öğesinde uygulanan x ve y değerlerini ters çevirerek güncelleyin.OverlaySettings.Builder.setOverlayFrameAnchor()
kullanıyorsanız x ve y değerlerini-1
ile çarparak tersine çevirin.
- Oturum:
- Varsayılan
CommandButton.enabled
değerinitrue
olarak değiştirin ve ilişkili komut kullanılabilir olsa bile değerin kumandalar için yanlış kalabileceğinden emin olun. CommandButton
için özel simge kaynakları yerine kullanılması gereken simge sabitleri ekleyin.- Uygulamaların, hizmetin
onTaskRemoved()
ürününde durdurulması gerekip gerekmediğini sorgulamasına izin vermek içinMediaSessionService.isPlaybackOngoing()
ekleyin (#1219). - Tüm oturumların oynatılmasını kolayca duraklatabilecek bir
MediaSessionService.pauseAllPlayersAndStopSelf()
ekleyin veMediaSessionService
öğesinin yaşam döngüsünü sonlandırmak içinstopSelf
yöntemini çağırın. - Oynatma devam ediyorsa hizmetin ön planda çalışmaya devam etmesini sağlayan veya aksi takdirde hizmeti durduran bir güvenli varsayılan uygulama sağlamak için
MediaSessionService.onTaskRemoved(Intent)
politikasını geçersiz kılın.
- Varsayılan
- İndirmeler:
DownloadHelper
öğesinin, yayınlanmamışRenderer
örneklerini sızdırmadığından emin olun. Bu, bir uygulamanınIllegalStateException: Too many receivers, total of 1000, registered for pid
ile kilitlenmesine neden olabilir (#1224).
- Test Yardımcı Programları:
FakeRenderer
uygulamasındaonInit()
veonRelease()
uygulamalarını 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:
DefaultPreloadManager
uygulamasını kısa biçimli demo uygulamasında kullanın.
- Kullanımdan kaldırılan sembolleri kaldırın:
CronetDataSourceFactory
öğesini kaldır Bunun yerineCronetDataSource.Factory
politikasını kullanın.- Bazı
DataSpec
kurucularını kaldırın. Bunun yerineDataSpec.Builder
politikasını kullanın.
Sürüm 1.3.0
Sürüm 1.3.1
11 Nisan 2024
androidx.media3:media3-*:1.3.1
yayınlandı.
1.3.1 sürümü bu kayıtları 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
tekrar önceden yüklendiğinde akışları koruyamamasıyla ilgili sorun düzeltildi.- Parça yeniden seçiminde oynatma dönemine karşılık gelen doğru
TrackSelectionResult
değerini uygulayın. - Erken etkinleştirilen oluşturucuları, yalnızca medya öğeleri arasında geçiş yaparken oynatma süresini ilerlettikten sonra başlatın(#1017).
DefaultVideoFrameProcessor.Factory.Builder.build()
için-keepclasseswithmembers
kuralını korumak (#1187) için eksik dönüş türünü ekleyin.
- Dönüştürücü:
MediaMuxer
API'si 30'dan önceki negatif sunum zaman damgalarını desteklemediğinden dolayı atılan istisna için geçici çözüm ekleyin.
- Parça Seçimi:
DefaultTrackSelector
: Kare hızı "makul" kare hızına (>=10 fps) sahip video parçalarını daha düşük veya ayarlanmamış olan video parçalarına tercih edin. Bu, oynatıcının hareketli fotoğraflardan çıkarılan MP4'lerdeki "gerçek" video parçasını seçmesini sağlar. Bu parçalardan birinin daha yüksek çözünürlüğe sahip olduğu ancak çok az sayıda kareye sahip olduğu (#1051) iki HEVC parçası bulunabilir.
- Ayıklayıcılar:
- WAV dosyalarından tek boyutlu parçalar okunurken dolgunun atlanmaması sorunu düzeltildi (#1117).
- MP3:
Format.averageBitrate
öğesini,XING
veVBRI
gibi meta veri çerçevelerinden doldurun. - MPEG-TS: Bir akışın son erişim birimini örnek sırasına ileterek son karenin oluşturulmasını amaçlayan değişikliği geri alın (#7909). Bunun nedeni, değişikliğin yalnızca I-frame yalnızca HLS akışları (#1150) ve H.262 HLS akışları (#1126) ile ilgili yeni sorunlara neden olmasıdır.
- Ses:
- Ses kanalı boşaltma modunda başlatılamazsa boşaltma işlemini devre dışı bırakarak oluşturucu kurtarmasına izin verin.
- Video:
- Galaxy Tab S7 FE, Google TV Yüklü Chromecast ve Lenovo M10 FHD Plus'ta 60 fps H265 akışlarının desteklenmiyor olarak işaretlenmesine neden olan bir cihaz sorunu için geçici çözüm ekleyin
- Cihaz, API'nin gerektirdiği şekilde bunu otomatik olarak yapmasa bile tünelleme sırasında ilk karenin her zaman oluşturulmasını sağlayan bir geçici çözüm ekleyin (#1169). (#966).
- HDR renk bilgilerinin işlenmesinin codec yanlış davranışına neden olması ve SDR video kanalları için uyarlanabilir biçim geçişlerini engellemesi sorunu düzeltildi (#1158).
- Metin:
- WebVTT: Doğrudan ardışık işaretlerin
WebvttParser.parse
kaynağından sahteCuesWithTiming
örnekleri oluşturmasını engelleyin (#1177).
- WebVTT: Doğrudan ardışık işaretlerin
- DRM:
- Bazı Android 14 cihazlarda
ResourceBusyException
veyaNotProvisionedException
yerineMediaDrm
çerçevesi tarafından gönderilebilenNoSuchMethodError
çözümünü çözün (#1145).
- Bazı Android 14 cihazlarda
- Sonuç:
- Renk alanlarını dönüştürerek PQ'dan SDR ton eşlemeye iyileştirme iyileştirildi.
- Oturum:
- Kullanıcı arayüzü:
Locale
görünen adı tanımlayamazsa ses parçası dil adını içerecek yedek (#988).
- DASH Uzantısı:
- Manifest'teki tüm
Label
öğeleriniFormat.labels
içine doldurun (#1054).
- Manifest'teki tüm
- RTSP Uzantısı:
- SDP ayrıştırmada boş oturum bilgisi değerlerini (i-tag'ler) atlayın (#1087).
- Kod Çözücü Uzantıları (FFmpeg, VP9, AV1, MIDI vb.):
- Ek bir Maven deposunun yapılandırılmasını gerektirdiğinden MIDI uzantısını varsayılan olarak yerel bağımlılık olarak devre dışı bırakın. Bir yerel bağımlılıktan bu modüle ihtiyaç duyan kullanıcılar, modülü yeniden etkinleştirebilir.
Sürüm 1.3.0
6 Mart 2024
androidx.media3:media3-*:1.3.0
yayınlandı.
1.3.0 sürümü bu kayıtları içerir.
- Ortak Kitaplık:
package
'nin mevcut uygulamanın paketinden farklı olduğuandroid.resource://package/[type/]name
ham kaynak URI'leri için destek uygulayın. Bunun her zaman işe yaradığı belgelenmiş ancak şimdiye kadar doğru bir şekilde uygulanmamıştı.- Uygulama kodu tarafından ayarlanan MIME türlerini normalleştirin veya medyadan tamamen küçük harf olacak şekilde okuyun.
AdPlaybackState
içinde tek birUri
yerine tamMediaItem
içeren reklamları tanımlayın.minSdk
değerini 19'a (Android KitKat) yükseltin. Bu diğer tüm AndroidX kitaplıklarıyla uyumludur ve AndroidX bağımlılarımızın en son sürümlerine geçiş yapabilmemiz için bu gereklidir.- En az biri null olmadığında hem
artworkUri
hem deartworkData
değerleriniMediaMetadata.Builder.populate(MediaMetadata)
içinde doldurun (#964).
- ExoPlayer:
- Uygulamaların bir içerik medya kaynağını oynatmadan önce belirli bir başlangıç konumunda önceden yüklemesine olanak tanıyan
PreloadMediaSource
vePreloadMediaPeriod
öğelerini ekleyin.PreloadMediaSource
,Timeline
bilgisini almak için içerik medya kaynağını hazırlama, belirtilen başlangıç konumunda dönemi hazırlama ve önbelleğe alma, parçaları seçme ve söz konusu döneme ilişkin medya verilerini yükleme işlemlerini gerçekleştirir. UygulamalarPreloadMediaSource.PreloadControl
öğesini uygulayarak önceden yükleme ilerlemesini kontrol eder ve önceden yüklenmiş kaynağı oynatma için oynatıcıya ayarlar. - Uygulamaların
ImageRenderer.ImageOutput
ayarını yapmasını sağlayanExoPlayer.setImageOutput
ekleyin. DefaultRenderersFactory
artık boşImageOutput
veImageDecoder.Factory.DEFAULT
ile oynatıcıya varsayılan olarak birImageRenderer
sağlıyor.- Sessizlik atlandığında
Player.Listener.onPositionDiscontinuity
etkinliği yayınla (#765). - Ayıklama sırasında altyazıların ayrıştırılması için deneysel destek eklendi. Bu özelliği
MediaSource.Factory.experimentalParseSubtitlesDuringExtraction()
kullanarak etkinleştirebilirsiniz. PreloadMediaSource
ile uyarlanabilir medya kaynaklarını destekleyin.- HttpEngine API kullanarak bir
HttpDataSource
olanHttpEngineDataSource
uygulayın. CompositeSequenceableLoader
alt sınıflandırmasını engelle. Bu bileşen, önceden genişletilebilir hale getirilebilirdi ancak kitaplıkta hiçbir zaman alt sınıflandırılmamıştır. Özelleştirmeler, dekoratör kalıbı kullanılarak bir örneği sarmalayarak ve özel birCompositeSequenceableLoaderFactory
uygulayarak yapılabilir.- Aynı saati tekrar yapmanın bu öğedeki meta verilerin silinmesine neden olduğu sorunu düzeltin (#1007).
BundledChunkExtractor.Factory
veDefaultHlsExtractorFactory
üzerindekiexperimentalSetSubtitleParserFactory
yöntemlerinisetSubtitleParserFactory
olarak yeniden adlandırın venull
iletilmesine izin vermeyin. Ayrıştırma davranışını kontrol etmek için yeniexperimentalParseSubtitlesDuringExtraction(boolean)
yöntemlerini kullanın.- Çıkarma sırasında kullanılan
SubtitleParser.Factory
özelleştirme desteği ekleyin. Bunu,MediaSource.Factory.setSubtitleParserFactory()
ile yapabilirsiniz. MergingMediaSource
kaynağından oluşturulan tümFormat.id
alanlarına kaynak ön eki ekleyin. Bu, hangi kaynağınFormat
(#883) oluşturduğunu belirlemeye yardımcı olur.- Özel Common Media Client Data (CMCD) anahtar adlarını doğrulamak için kullanılan normal ifadeyi, yalnızca kısa çizgi (#1028) kontrol edilecek şekilde değiştirerek düzeltin.
- CMCD sorgu parametrelerinin çift kodlamasını yapmayı durdurun (#1075).
- Uygulamaların bir içerik medya kaynağını oynatmadan önce belirli bir başlangıç konumunda önceden yüklemesine olanak tanıyan
- Dönüştürücü:
- H.265/HEVC SEF ağır çekim videoları düzleştirme desteği eklendi.
- Özellikle 'video kaldırma' düzenlemeleri için dönüştürme hızını artırın.
- Çıkış dosyasının bir video karesinde başladığından emin olmak için API ekleyin. Bu, kırpma işlemlerinin çıktısını, ilk video karesini sunum zaman damgasına (#829) kadar göstermeyen oynatıcı uygulamalarıyla daha uyumlu hale getirebilir.
- Tek öğeli MP4 kırpma işlemlerini optimize etme desteği eklendi.
- Çıkış dosyasındaki ilk zaman damgasının bir video karesinde 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 kanalı seçimini etkinleştirmek için
DefaultTrackSelector.selectImageTrack
ekleyin. - Hem resim kanalı hem de video kanalı varsa resim kanalı seçip seçmeyeceğinizi belirlemek için
TrackSelectionParameters.isPrioritizeImageOverVideoEnabled
ekleyin. Varsayılan değerfalse
, yani video parçası seçimine öncelik verilir.
- Resim kanalı seçimini etkinleştirmek için
- Ayıklayıcılar:
ColorInfo.colorSpace
,ColorInfo.colorTransfer
veColorInfo.colorRange
değerlerini almak için MP4 ayıklayıcıya ek AV1C ayrıştırması ekleyin (#692).- MP3:
Info
başlığı (Xing
başlığının CBR eşdeğeri) olan dosyaları aramak için sabit bit hızı (CBR) kullanın. Daha önceInfo
başlığındaki arama tablosunu kullanıyorduk ancak bu, arama tablosunu yok sayıp dosyanın CBR olduğunu varsayacağımız duruma göre daha az hassas arama ile sonuçlanır. - MPEG2-TS: DTS, DTS-LBR ve DTS:X Profile2 desteğini ekleyin (#275).
- TS açıklayıcılarından ses türlerini çıkarıp rol işaretleriyle eşleyerek kullanıcıların daha bilinçli ses parçası seçimleri yapmasına olanak tanır (#973).
- Ses:
- Video:
VideoFrameProcessor.Factory
bağımsız değişkeni alanMediaCodecVideoRenderer
kurucusunu değiştirin ve bunuVideoSinkProvider
bağımsız değişkeni alan bir kurucuyla değiştirin. ÖzelVideoFrameProcessor.Factory
yerleştirmek isteyen uygulamalar, özelVideoFrameProcessor.Factory
kullanan birCompositingVideoSinkProvider
örneği oluşturabilir ve video havuzu sağlayıcısınıMediaCodecVideoRenderer
öğesine iletebilir.
- Metin:
DefaultExtractorsFactory.setTextTrackTranscodingEnabled
kullanılırkenTried to marshall a Parcel that contained Binder objects
hatasını çözmek için bit eşlem işaretlerinin serileştirilmesiyle ilgili düzeltme uygulandı (#836).- CEA-708:
rowLock
değerini yoksayın. CEA-708-E S-2023 spesifikasyonu, akıştaki mevcut değerlerden bağımsız olarakrowLock
vecolumnLock
öğelerinin doğru olarak kabul edilmesi gerektiğini belirtir (columnLock
desteği uygulanmadığından her zaman yanlış olduğu varsayılır).
- Resim:
- DASH küçük resimleri için destek ekleyin. Izgara resimleri kırpılır ve bağımsız küçük resimler, sunum zamanlarına yakın
ImageOutput
ile sağlanır.
- DASH küçük resimleri için destek ekleyin. Izgara resimleri kırpılır ve bağımsız küçük resimler, sunum zamanlarına yakın
- DRM:
- Daha sonra şifrelenen örneklerin anahtarları henüz hazır olmasa bile, DRM içeriğindeki şifrelenmemiş "potansiyel müşteriyi temizleme" örneklerini varsayılan olarak hemen oynatın. Bu durum, oynatma konumu şifrelenmiş örneklere ulaştığında anahtarlar hâlâ hazır değilse (ancak daha önce oynatma bu noktaya kadar hiç başlamamıştı) oynatmanın ortasında durmalara neden olabilir. Bu davranış
MediaItem.DrmConfiguration.Builder.setPlayClearContentWithoutKey
veyaDefaultDrmSessionManager.Builder.setPlayClearSamplesWithoutKeys
ile devre dışı bırakılabilir.
- Daha sonra şifrelenen örneklerin anahtarları henüz hazır olmasa bile, DRM içeriğindeki şifrelenmemiş "potansiyel müşteriyi temizleme" örneklerini varsayılan olarak hemen oynatın. Bu durum, oynatma konumu şifrelenmiş örneklere ulaştığında anahtarlar hâlâ hazır değilse (ancak daha önce oynatma bu noktaya kadar hiç başlamamıştı) oynatmanın ortasında durmalara neden olabilir. Bu davranış
- IMA uzantısı:
- Uygun dosya uzantısına sahip olmayan DASH ve HLS reklamlarının oynatılamamasına yol açan sorun düzeltildi.
- Oturum:
- TV uygulamaları için çift tıklama algılamayı devre dışı bırakın (#962).
- Yalnızca boş olmayan ekstra özelliklere sahip
MediaItem.RequestMetadata
öğesinin medya denetleyicileri ve oturumlar arasında iletilmemesiyle ilgili sorun düzeltildi. MediaLibrarySession.Builder
öğesine,MediaLibraryService
yerine yalnızcaContext
alan bir kurucu ekleyin.
- HLS Uzantısı:
HlsMediaPeriod
değerini pakette özel görünürlüğe düşürün. Bu tür, HLS paketinin dışından doğrudan kullanılmamalıdır.- Çözme işlemi, bir segmentin daha verimli bir şekilde başlamasını sağlar (#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
uygulamasında oynatmayı duraklatma. Test, oynatmayı oynatma durumunda tutar ancak test, onaylamalar ve başka işlemler ekleyene kadar ilerlemeyi askıya alır.
- Demo uygulama:
- Kısa içerik kullanım alanıyla
PreloadMediaSource
kullanımını göstermek için kısa biçimli bir demo modülü ekleyin.
- Kısa içerik kullanım alanıyla
Sürüm 1.3.0-rc01
22 Şubat 2024
1.3.0 kararlı sürümünü kullanın.
Sürüm 1.3.0-beta01
7 Şubat 2024
1.3.0 kararlı sürümünü kullanın.
Sürüm 1.3.0-alpha01
15 Ocak 2024
1.3.0 kararlı sürümünü kullanın.
Sürüm 1.2.0
Sürüm 1.2.1
9 Ocak 2024
- ExoPlayer:
LiveConfiguration.min/maxOffset
aralığının dışında manuel aramaların ofseti tekrarmin/maxOffset
olarak ayarlamaya devam etmesi sorunu düzeltildi.- OPUS ve VORBIS kanal düzenlerinin 3, 5, 6, 7 ve 8 kanal için yanlış olmasıyla ilgili sorunu düzeltin (#8396).
- Bir canlı yayında sıfırlanmış parça seçimlerinin, hatalı bir şekilde yayının varsayılan konumunda başlamasına neden olması sorunu düzeltildi (#9347).
- Yeni
CmcdData.Factory
örneklerinin yığın kaynaklarındanbufferedDurationUs
için negatif değerler alması ve bununIllegalArgumentException
(#888) ile sonuçlanması sorununu düzeltin.
- Dönüştürücü:
- Kodlayıcının yüksek çalışma hızına bağlı olarak yapılandırma zamanında hataya neden olabileceği bir sorunu çözmek için çalışın.
- Ayıklayıcılar:
- JPEG hareketli fotoğraflardaki ikincil (oynatılamayan) HEVC parçaları
ROLE_FLAG_ALTERNATE
olarak işaretleyin. Böylece, yüksek çözünürlükleri nedeniyle otomatik olarak oynatılmak üzere seçilemezler. - TS H264 akışları için yanlış animasyon karesi algılaması düzeltildi (#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ı
- Ses:
- Birden çok kez çağrıldığında
SilenceSkippingAudioProcessor
için EOS'nin 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 bir cihaz sorunu için geçici çözüm ekleyin (#693).
- Meta veri:
MediaMetadata
öğesinin yalnızca büyük harf tuşlarıyla Vorbis yorumlarından doldurulmasına neden olan hata düzeltildi (#876).- Çok büyük ID3 karelerini ayrıştırırken
OutOfMemoryError
yakalayın. Bu, oynatmanın tamamıyla başarısız olması yerine 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 (daha önce bu geçici çözüm yalnızca tam olarak API 33'te uygulanıyordu) (#837). - Oynatıcıya bağlı bir yüzey olmadan şifrelenmiş içerikleri temizlemeye geçerken
ERROR_DRM_SESSION_NOT_OPENED
sorununu düzeltin. Hata, temiz içeriği oynatmak için yanlış bir şekilde güvenli bir kod çözücü kullanılmasından kaynaklanıyordu.
- Sahte ClearKey
- Oturum:
MediaMetadataCompat
türündeki özel anahtarları ve değerleriMediaMetadata.extras
öğesine veMediaMetadata.extras
öğesineMediaMetadataCompat
(#756, #802) yerleştirin.- Eski kumandalar için
notifyChildrenChanged
yayınlama düzeltildi (#644). - Bildirimin devre dışı bırakılmış bir
setWhen
zamanlayıcısı için negatif bir süre ayarlamanın bazı cihazlarda kilitlenmeye neden olduğu hata düzeltildi (#903). - İlk bildirim güncellemesi istendiğinde medya bildirim denetleyicisinin bağlantısı tamamlanmadığında
IllegalStateException
sorununu düzeltin (#917).
- Kullanıcı arayüzü:
- DASH Uzantısı:
- DASH manifestinde Dolby için 5 kanal sayısı olarak "f800" ayrıştırmasını yapın (#688).
- Kod Çözücü Uzantıları (FFmpeg, VP9, AV1, MIDI vb.):
- Cast Uzantısı:
- Yayın cihazında medya yüklenemediğinde uygulamanın kilitlenmemesi için
Timeline
oluşturma işlemini sadeleştirin (#708).
- Yayın cihazında medya yüklenemediğinde 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 bir@Nullable Throwable
parametresi ekleyin. Bu yöntemlerinmessage
parametresi artıkLog.{d,i,w,e}()
yöntemlerine geçirilenThrowable
hakkında herhangi bir bilgi içermediğinden, uygulamaların istenirse bu bilgileri manuel olarak eklemesi gerekir (muhtemelenLogger.appendThrowableString(String, Throwable)
kullanılarak).- Boş atanabilir genel tür parametrelerin ve null özellikli dizi öğe türlerinin null yapılabilir olarak algılanmadığı Kotlin uyumluluk sorununu düzeltin. Örnek olarak
TrackSelectorResult
veSimpleDecoder
yöntem parametreleri verilebilir (#6792). - Oynatma geçici olarak basıldığında (ör. geçici ses odağı kaybı nedeniyle) "oynat" düğmesi gösterilecek şekilde
Util.shouldShowPlayButton
içindeki varsayılan kullanıcı arayüzünü ve bildirim davranışını değiştirin. Eski davranış,PlayerView.setShowPlayButtonIfPlaybackIsSuppressed(false)
veyaMediaSession.Builder.setShowPlayButtonIfPlaybackIsSuppressed(false)
(#11213) kullanılarak sürdürülebilir. - Sorunu düzeltmek için
androidx.annotation:annotation-experimental
uygulamasını1.3.1
sürümüne yükseltin https://issuetracker.google.com/251172715. ExoPlayer.setAudioAttributes
öğesiniPlayer
arayüzüne taşıyın.
- ExoPlayer:
- Yalnızca kod çözme örneklerinin doğru tanımlanmamasından kaynaklanan AC4 akışlarında arama sorunlarını düzeltin (#11000).
- Bu özellik
ExoPlayer.Builder.setSuppressPlaybackOnUnsuitableOutput
üzerinden etkinleştirildiğinde, uygun olmayan ses çıkış cihazlarında (ör. Wear OS cihazlardaki yerleşik hoparlör) müzik çalmayı engelleme özelliği ekleyin. Uygun ses çıkışı olmadığında veya oynatma sırasında uygun tüm çıkışların bağlantısı kesilirse çalmayı engelleme nedeniPlayer.PLAYBACK_SUPPRESSION_REASON_UNSUITABLE_AUDIO_OUTPUT
olarak güncellenir. Uygun bir çıkış bağlandığında engelleme nedeni kaldırılır. - Oluşturduktan sonra
Player.replaceMediaItem(s)
aracılığıyla yapılanMediaItem
güncellemelerini kabul etmek içinMediaSource.canUpdateMediaItem
veMediaSource.updateMediaItem
öğelerini ekleyin. - Kitaplık tarafından
Player.replaceMediaItem(s)
aracılığıyla sağlanan tümMediaSource
sınıfları içinMediaItem
güncellemelerine izin ver (#33, #9978). MimeTypes.TEXT_EXOPLAYER_CUES
alanının adınıMimeTypes.APPLICATION_MEDIA3_CUES
olarak değiştirin.TrackOutput
dosyasına bütün bir PNG dosyasını gönderip okuyanPngExtractor
özelliğini tek bir örnek olarak ekleyin.SequenceableLoader
arayüzündekiSequenceableLoader.continueLoading(long)
yönteminiSequenceableLoader.continueLoading(LoadingInfo loadingInfo)
olarak iyileştirin.LoadingInfo
, mevcutplaybackPositionUs
parametresine ek olarakplaybackSpeed
velastRebufferRealtimeMs
dahil olmak üzere ek parametreler içerir.ChunkSource
arayüzündekiChunkSource.getNextChunk(long, long, List, ChunkHolder)
yönteminiChunkSource.getNextChunk(LoadingInfo, long, List, ChunkHolder)
olarak geliştirin.- Common Media Client Data (CMCD) günlük kaydına şu alanlar ekleyin: arabellek yetersizliği (
bs
), son tarih (dl
), oynatma hızı (pr
) ve başlatma (su
) (#8699). ColorInfo
öğesine luma ve renk bit derinliği ekleyin (#491).- Common Media Client Data (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 aktarma işlevi ekleyin (#553).
ExperimentalBandwidthMeter
içindekiConcurrentModificationException
sorununu düzeltin (#612).CompositeMediaSource.getMediaTimeForChildMediaTime
hedefineMediaPeriodId
parametresini ekleyin.ConcatenatingMediaSource2
içindeClippingMediaSource
(ve dönem/aralık zaman farkları olan diğer kaynaklar) desteklensin (#11226).MediaPeriodId
bağımsız değişkeni de almak içinBaseRenderer.onStreamChanged()
değerini değiştirin.
- Dönüştürücü:
- Resim girişleri için EXIF döndürme verilerini ayrıştırma.
TransformationRequest.HdrMode
ek açıklama türünü ve ilişkili sabit değerlerini kaldırın. Bunun yerineComposition.HdrMode
ve ilişkili sabit değerlerini kullanın.- Rotasyon sorunlarını düzeltmek için
OverlaySettings
basitleştirin. SampleConsumer.queueInputBitmap
kapsamındakiframeRate
vedurationUs
parametreleriTimestampIterator
olarak değiştirildi.
- Parça Seçimi:
- Kesintisiz olmayan uyarlamaya açıkça izin vermek veya izin vermemek için
DefaultTrackSelector.Parameters.allowAudioNonSeamlessAdaptiveness
ekleyin. Varsayılan değer, mevcuttrue
davranışında kalır.
- Kesintisiz olmayan uyarlamaya açıkça izin vermek veya izin vermemek için
- Ayıklayıcılar:
- MPEG-TS: Bir akışın son erişim birimini örnek sırasına geçirerek son karenin oluşturulduğundan emin olun (#7909).
rotationDegrees
belirlenirken yazım hatasını düzeltin.projectionPosePitch
,projectionPoseRoll
(#461) olarak değiştirildi.Extractor
örneklerinininstanceof
ile doğrudan incelenebileceği varsayımını ortadan kaldırın. BirExtractor
öğesinin uygulama ayrıntılarına çalışma zamanı erişimi istiyorsanız önceExtractor.getUnderlyingInstance
numarasını aramanız gerekir.BmpExtractor
ekleyin.WebpExtractor
ekleyin.HeifExtractor
ekleyin.Mp4Extractor
öğesine QuickTime klasik desteğini ekleyin.
- Ses:
- MP4 ve Matroska'da 24/32 bit büyük uçlu PCM desteği ekleyin ve MP4'te
lpcm
için PCM kodlamasını ayrıştırın. - Vorbis sesini MP4 olarak çıkarma desteği eklendi.
- Havuzun
DefaultAudioOffloadSupportProvider
aracılığıyla biçim için sağlayabileceği yük desteği düzeyini alanAudioSink.getFormatOffloadSupport(Format)
ekleyin.isFormatSupported
,isGaplessSupported
veisSpeedChangeSupported
değerlerini içeren yeniAudioOffloadSupport
değerini döndürür. - Ses havuzundaki boşaltma yapılandırmasının yapılandırıldığı
AudioSink.setOffloadMode()
ekleyin. Varsayılan değer:AudioSink.OFFLOAD_MODE_DISABLED
. - Boşaltma,
TrackSelectionParameters
içindekisetAudioOffloadPreference
aracılığıyla etkinleştirilebilir. Ayarlanan tercih "Etkinleştir" olursa cihaz, biçim için boşaltmayı destekler ve parça seçimi tek bir ses parçası olursa ses boşaltma etkinleştirilir. audioOffloadModePreference
,AUDIO_OFFLOAD_MODE_PREFERENCE_REQUIRED
değerine ayarlanırsaDefaultTrackSelector
yalnızca bir ses parçası seçer ve yalnızca bu parçanın biçimi boşaltmada destekleniyorsa. Boşaltma işleminde hiçbir ses parçası desteklenmiyorsa herhangi bir parça seçilmez.- Kanal geçişinden sonra oynatma konumu sorunu nedeniyle API düzeyi 33 öncesi aşamada boşaltma için boşluksuz destek devre dışı bırakılıyor.
DefaultRenderersFactory.buildAudioSink
yöntem imzasındanenableOffload
parametresini kaldırın.DefaultAudioSink.Builder.setOffloadMode
yöntemini kaldır.DefaultAudioSink.OffloadMode.OFFLOAD_MODE_ENABLED_GAPLESS_DISABLED
tam değerini kaldırın.- Boş yükleme oynatma sırasında Opus boşluksuz meta verileri için destek eklendi.
- İlk yazmada başarısız olduysa boşaltmayı devre dışı bırakarak oluşturucu kurtarmaya izin verin(#627).
- Yalnızca sesin kapalı olduğu oynatma için Boşaltma Zamanlaması'nı varsayılan olarak etkinleştirin.
ExoPlayer.experimentalSetOffloadSchedulingEnabled
veAudioOffloadListener.onExperimentalOffloadSchedulingEnabledChanged
verilerini silin.onExperimentalSleepingForOffloadChanged
yenidenonSleepingForOffloadChanged
veonExperimentalOffloadedPlayback
,onOffloadedPlayback
olarak yeniden adlandırıldı.- Ses boşaltma moduyla ilgili
TrackSelectionParameters
arayüzlerini ve tanımlarını bir dahiliAudioOffloadPreferences
sınıfına taşıyın. AnalyticsListener
,AudioRendererEventListener
veAudioSink.Listener
kampanyalarınaonAudioTrackInitialized
veonAudioTrackReleased
geri çağırmaları ekleyin.- DTS Express ses arabelleği alt akış sorununu düzeltme (#650).
- E-AC3-JOC özellik kontrolünün bir
IllegalArgumentException
(#677) döndürmesine neden olan hata düzeltildi.
- MP4 ve Matroska'da 24/32 bit büyük uçlu PCM desteği ekleyin ve MP4'te
- Video:
MediaCodecVideoRenderer
uygulamasının özel birVideoFrameProcessor.Factory
kullanmasına izin verin.- Ses akışı negatif zaman damgalarıyla başlıyorsa ilk karenin oluşturulamadığı hata düzeltildi (#291).
- Metin:
ExoplayerCuesDecoder
öğesini kaldırsampleMimeType = application/x-media3-cues
ile metin kanalları artıkSubtitleDecoder
örneğine gerek kalmadan doğrudanTextRenderer
tarafından işleniyor.
- Meta veri:
- Uygulamanın yine de null değerini döndürmesi gerektiğinden,
MetadataDecoder.decode
artık "yalnızca kod çözme" örnekleri için çağrılmayacaktır.
- Uygulamanın yine de null değerini döndürmesi gerektiğinden,
- Sonuç:
- Zaman damgasına göre
VideoFrameProcessor.queueInputBitmap(Bitmap, Iterator<Long>)
sıralama bit eşlem girişi ekleyin. VideoFrameProcessor.registerInputStream()
engelini engellenmeyecek şekilde değiştirin. UygulamalarVideoFrameProcessor.Listener#onInputStreamRegistered()
'yi kullanmalıdır.VideoFrameProcessor.queueInputBitmap
kapsamındakiframeRate
vedurationUs
parametreleriTimestampIterator
olarak değiştirildi.
- Zaman damgasına göre
- IMA uzantısı:
- Oynatma listesindeki ilk öğe olmayan çok dönemli DASH canlı yayınının istisnaya neden olabileceği hata düzeltildi (#571).
AdsLoader.destroy()
çağrısı yapmadan önce StreamManager'ı serbest bırakın- IMA SDK sürümünü 3.31.0'a yükseltin.
- Oturum:
DefaultMediaNotificationProvider
içinde bildirim ön plan hizmet davranışınıFOREGROUND_SERVICE_IMMEDIATE
olarak ayarlayın (#167).- Samsung cihazlarda kullanımdan kaldırılan API ile ilgili sorunları önlemek için API 31'in üzerindeki yalnızca
android.media.session.MediaSession.setMediaButtonBroadcastReceiver()
özelliğini kullanın(#167). - Bildirimi ve platform oturumunu doldurmak üzere kullanılabilir komutları ve özel düzeni ayarlamak için medya bildirim denetleyicisini proxy olarak kullanın.
MediaSessionService.onStartCommand()
tarafından alınan medya düğmesi etkinliklerini, platform oturumuna ve tekrar Media3'e yönlendirmek yerine Media3 içinde dönüştürün. Bu sayede çağrı denetleyicisi her zaman medya bildirim denetleyicisidir ve uygulamalar, desteklenen tüm API düzeylerinde bildirimden gelen çağrıları aynı şekilde kolayca tanıyabilir.- Eski bir
MediaSessionCompat
öğesine bağlıykenMediaController.getCurrentPosition()
öğesinin ilerlememesi hatasını düzeltin. - kolaylık olması için
MediaLibrarySession.getSubscribedControllers(mediaId)
ekleyin. - Denetleyicinin abone olduğu üst kimliğin kullanılabilirliğiyle ilgili hak talebinde bulunmak için
MediaLibrarySession.Callback.onSubscribe()
öğesini geçersiz kılın. Başarılı olursa abonelik kabul edilir ve tarayıcıyı bilgilendirmek içinnotifyChildrenChanged()
çağrılır (#561). - Automotive OS için oturum demo modülü ekleyin ve Android Auto için oturum demosunu etkinleştirin.
- Medya bildirim denetleyicisi için
COMMAND_GET_TIMELINE
kullanılamadığında çerçeve oturumunun sırasını ayarlamayın. Çerçeve oturumundan okuma yapan istemci denetleyicisi Android Auto olduğunda, Android Auto'nun kullanıcı arayüzündekiqueue
düğmesi gösterilmez (#339). SimpleBitmapLoader
yerine varsayılan olarakDataSourceBitmapLoader
kullanın (#271, #327).- Uygulamaların, varsayılan medya düğmesi etkinlik işlemesini geçersiz kılmasına izin veren
MediaSession.Callback.onMediaButtonEvent(Intent)
ekleyin.
- Kullanıcı arayüzü:
- Kullanıcının uygun bir ses çıkışına (ör. Bluetooth kulaklık) bağlanmasına izin vermek için bir sistem iletişim kutusu başlatarak Wear OS cihazlara
Player.PLAYBACK_SUPPRESSION_REASON_UNSUITABLE_AUDIO_OUTPUT
nedeniyle oynatma azaltmayı işleyen birPlayer.Listener
uygulaması ekleyin. Yapılandırılabilir bir zaman aşımı süresi içinde uygun bir cihaz bağlanırsa dinleyici, oynatmayı otomatik olarak devam ettirir (varsayılan değer 5 dakikadır).
- Kullanıcının uygun bir ses çıkışına (ör. Bluetooth kulaklık) bağlanmasına izin vermek için bir sistem iletişim kutusu başlatarak Wear OS cihazlara
- İndirmeler:
- Android 14 uyumluluğuyla ilgili olarak
DownloadService
için "veri senkronizasyonu" ön plan hizmet türünü beyan edin. Bu hizmeti kullanırken uygulamanın ayrıcadataSync
iznini manifest dosyasınaforegroundServiceType
olarak eklemesi veFOREGROUND_SERVICE_DATA_SYNC
iznini (#11239) eklemesi gerekir.
- Android 14 uyumluluğuyla ilgili olarak
- HLS Uzantısı:
- HLS canlı oynatma listesini, son yüklemenin tamamlanma zamanı yerine son yükleme başlangıç zamanından hesaplanan bir aralıkla yenileyin (#663).
- DASH Uzantısı:
- Segment şablonu URL'sinde aynı DASH tanımlayıcısının birden çok kısmına izin ver.
- Ayıklama sırasında altyazıların ayrıştırılması için deneysel destek eklendi. Bu özellik, altyazı segmentleri arasında geçiş yaparken titremeyi çözme de dahil olmak üzere çakışan altyazıları birleştirme konusunda daha iyi destek sağlar. Bunu
DashMediaSource.Factory.experimentalParseSubtitlesDuringExtraction()
(#288) komutuyla etkinleştirebilirsiniz.
- RTSP Uzantısı:
- TCP'ye geri dönerken
IndexOutOfBoundsException
sorununa veya bazı durumlarda oynatmanın durmasına yol açabilecek yarış durumunu düzeltin. RtspMediaPeriod
yükleme durumuna dönerken RTSP kurulumunda durumu kontrol edin (#577).- Seçenekler yanıtı genel başlığında özel Rtsp istek yöntemlerini yoksay(#613).
- Keep-alive RTSP Seçenekleri istekleri gönderme zaman aralığında RTSP Kurulumu Yanıtı zaman aşımı değerini kullanın (#662).
- TCP'ye geri dönerken
- Kod Çözücü Uzantıları (FFmpeg, VP9, AV1, MIDI vb.):
- Ses sentezlemek için Jsyn kitaplığını kullanarak standart MIDI dosyalarının oynatılmasını destekleyen MIDI kod çözücü modülünü bırakın.
- Sunulması gerekmeyen çıkış arabelleklerini doğrudan işaretlemek için
DecoderOutputBuffer.shouldBeSkipped
ekleyin. Kullanımdan kaldırılacak olanC.BUFFER_FLAG_DECODE_ONLY
yerine bu seçenek tercih edilir. - Kod çözücülerin, başlangıç zamanından önce yalnızca kod çözme özellikli örnekleri bırakmasına izin vermek için
Decoder.setOutputStartTimeUs
veSimpleDecoder.isAtLeastOutputStartTimeUs
ekleyin. Kullanımdan kaldırılacak olanBuffer.isDecodeOnly
yerine bu seçenek tercih edilmelidir. - MIDI kod çözücü yapısını Maven deposuna yayınlama hatası düzeltildi. Yapı
media3-exoplayer-midi
olarak yeniden adlandırılır (#734).
- Leanback uzantısı:
- Bir yüzeyi devre dışı bırakmanın Leanback kodunda
ArithmeticException
hatasına neden olabileceği hata düzeltildi (#617).
- Bir yüzeyi devre dışı bırakmanın Leanback kodunda
- Test Yardımcı Programları:
TestExoPlayerBuilder
veFakeClock
öğelerini Espresso kullanıcı arayüzü testleri ve Kullanıcı Arayüzü testleriyle uyumlu hale getirin. Bu düzeltme, Espresso veya Compose görüntüleme etkileşimleri sırasında oynatmanın belirleyici olmayan bir şekilde ilerlemesine neden olan hata düzeltildi.
- Kullanımdan kaldırılan sembolleri kaldırın:
TransformationRequest.Builder.setEnableRequestSdrToneMapping(boolean)
veTransformationRequest.Builder.experimental_setEnableHdrEditing(boolean)
öğelerini kaldırın. Bunun yerineComposition.Builder.setHdrMode(int)
kullanın veComposition
değeriniTransformer.start(Composition, String)
hesabına iletin.- Kullanımdan kaldırılan
DownloadNotificationHelper.buildProgressNotification
yöntemini kaldırın. Bunun yerine,notMetRequirements
parametresini alan, kullanımdan kaldırılmayan bir yöntem kullanın.
Sürüm 1.2.0-rc01
1 Kasım 2023
1.2.0 kararlı sürümünü kullanın.
Sürüm 1.2.0-beta01
19 Ekim 2023
1.2.0 kararlı sürümünü kullanın.
Sürüm 1.2.0-alpha02
29 Eylül 2023
1.2.0 kararlı sürümünü kullanın.
Sürüm 1.2.0-alpha01
17 Ağustos 2023
1.2.0 kararlı sürümünü kullanın.
Sürüm 1.1.0
Sürüm 1.1.1
16 Ağustos 2023
- Ortak Kitaplık:
- Yanlışlıkla eklenen
multidex
bağımlılığını tüm modüllerden kaldırın (#499).
- Yanlışlıkla eklenen
- ExoPlayer:
PlaybackStatsListener
uygulamasında, oynatma listesi temizlendikten sonra sahtePlaybackStats
oluşturulmasıyla ilgili sorun düzeltildi.- Common Media Client Data (CMCD) günlük kaydına ek alanlar ekleyin: akış biçimi (sf), akış türü (st), sürüm (v), en yüksek sayı (tb), nesne süresi (d), ölçülen işleme hızı (mtp) ve nesne türü (ot) (#8699).
- Ses:
- Çok kısa dosyalar oynatırken
Player.getState()
ürünününSTATE_ENDED
ürününe hiç geçiş yapmamasına neden olan hata düzeltildi (#538).
- Çok kısa dosyalar oynatırken
- Ses Aktarımı:
- RFC 7845'e uygun olarak, boşaltılmış Opus'un oynatılması için Ogg Kimliği Üstbilgi ve Yorum Başlık Sayfalarını bit akışına ekleyin.
- Video:
- H.265/HEVC: SPS'nin kısa ve uzun vadeli referans resmi bilgilerinin ayrıştırılması düzeltildi.
- Metin:
- CEA-608: İşaret kesme 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ırılırken (bu, spesifikasyonlara göre teknik olarak doğruydu) girinti ve sekme ofseti dahil ediliyordu (#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şmesi için bir alıcı sağlayın. Özel düzen değiştiğinde
MediaController.Listener.onCustomLayoutChanged
çağrılır. Farklı Media3 denetleyicilerine farklı özel düzenler göndermek isteyen uygulamalar, bağlantı tamamlandığında özel düzenin denetleyici tarafından kullanılabilmesini sağlamak için bunuMediaSession.Callback.onConnect
üzerindeAcceptedResultBuilder
kullanarak yapabilir. MediaLibraryServiceLegacyStub
ürününün bunu desteklemeyen birResult
öğesine hata gönderdiği veUnsupportedOperationException
(#78) hatasına neden olduğu durumları düzeltin.- 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
) (#554) üzerindenvolumeControlType
belirleyerekPlayerWrapper
ürünününVolumeProviderCompat
oluşturma şeklini düzeltin.
- Denetleyicinin durumuna özel düzen ekleyin ve buna erişmesi için bir alıcı sağlayın. Özel düzen değiştiğinde
Sürüm 1.1.0
5 Temmuz 2023
- Ortak Kitaplık:
- Ses yönlendirmesinin uygun olmaması için engelleme nedeni ekleyin ve hazır olduğunda sesin çok uzun süre bastırılması için değiştirme nedeni. (#15).
- Oynatıcıya komut ekleyin:
COMMAND_GET_METADATA
COMMAND_SET_PLAYLIST_METADATA
COMMAND_SET_DEVICE_VOLUME_WITH_FLAGS
COMMAND_ADJUST_DEVICE_VOLUME_WITH_FLAGS
- Player'a aşırı yüklenmiş yöntemler ekleyin. Bu yöntemler, kullanıcıların ses seviyesi işaretlerini belirtmelerine olanak tanır:
void setDeviceVolume(int, int)
void increaseDeviceVolume(int)
void decreaseDeviceVolume(int)
void setDeviceMuted(boolean, int)
DeviceInfo
içinBuilder
ekleyin ve mevcut oluşturucuyu kullanımdan kaldırın.- Uzaktan oynatmalar için yönlendirme kumandası kimliğini belirtmek üzere
DeviceInfo.routingControllerId
ekleyin. - Aynı konumdaki öğeleri eklemek ve kaldırmak için kısayol olarak
Player.replaceMediaItem(s)
ekleyin (#8046).
- ExoPlayer:
- ExoPlayer'ın cihaz ses yöntemlerini kontrol etmesine yalnızca açıkça etkinleştirilmişse 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)
- Kullanılabilir kanal türlerini bir
MediaSource
'dan filtrelemek içinFilteringMediaSource
ekleyin. - DASH, HLS ve SmoothStreaming uyarlanabilir akış biçimlerinin giden isteklerine Common Media Client Data (CMCD) ekleme desteği ekleyin. Aşağıdaki alanlar (
br
,bl
,cid
,rtp
vesid
) dahil edildi (#8699). API yapısı ve API yöntemleri:- CMCD günlük kaydı varsayılan olarak devre dışıdır. Etkinleştirmek için
MediaSource.Factory.setCmcdConfigurationFactory(CmcdConfiguration.Factory cmcdConfigurationFactory)
kullanın. - Tüm anahtarlar varsayılan olarak etkindir. Hangi anahtarların günlüğe kaydedileceğini filtrelemek için
CmcdConfiguration.RequestConfig.isKeyAllowed(String key)
öğesini geçersiz kılın. - Özel anahtar günlük kaydını etkinleştirmek için
CmcdConfiguration.RequestConfig.getCustomData()
politikasını geçersiz kılın.
- CMCD günlük kaydı varsayılan olarak devre dışıdır. Etkinleştirmek için
- Demo 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
öğesiniint
yerinelong
olarak depolamak içinSampleQueue
uygulamasını güncelleyin. Bu işlem, herkese açık yöntemlerinSampleQueue.sourceId
veSampleQueue.peekSourceId
imzalarını değiştirir.LoadControl
yöntemlerine,shouldStartPlayback
veonTracksSelected
yöntemlerinin ilgiliMediaPeriod
ile ilişkilendirilmesine olanak tanıyan parametreler ekleyin.- Haritada anahtar olarak kullanılan UID'lerin yer aldığı noktaları 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)
öğelerini kullanımdan kaldırın. Bunun yerine, yöntemlerinmediaTimeOffsetUs
içermeyen varyantı çağrılabilir. Kullanımdan kaldırılan varyantlarda bile ofsetin, görev dağıtıcı tarafından gönderilenMediaLoadData
nesnelerininstartTimeUs
veendTimeUs
öğelerine eklenmediğini unutmayın.ExoTrackSelection.blacklist
öğesinin adınıexcludeTrack
,isBlacklisted
adını iseisTrackExcluded
olarak değiştirin.- Boş bir oynatma listesinden çağrıldığında
ExoPlayer.setMediaItem(s)
ileaddMediaItem(s)
arasındaki tutarsız davranış düzeltildi.
- ExoPlayer'ın cihaz ses yöntemlerini kontrol etmesine yalnızca açıkça etkinleştirilmişse izin verin. Aşağıdakilere erişmek için
- Dönüştürücü:
Transformer.Builder.setMediaSourceFactory(MediaSource.Factory)
öğesini kaldır Bunun yerineExoPlayerAssetLoader.Factory(MediaSource.Factory)
veTransformer.Builder.setAssetLoaderFactory(AssetLoader.Factory)
kullanın.Transformer.startTransformation(MediaItem, ParcelFileDescriptor)
öğesini kaldır- Bir giriş karesinin işlenmeyi beklediği sırada video akışının sonu bildirilmişse dönüşümün takılabileceği (muxer'ın zaman aşımına uğramasına neden olan) hata düzeltildi.
- Desteği genişletmek için
findDecoder/EncoderForFormat
yardımcı programları kullanmak yerineMediaCodecList
aracılığıyla codec'leri sorgulayın. - Bazı cihazlarda çalışmadığı için
DefaultEncoderFactory
ürünündeki B çerçevesi yapılandırmasını kaldırın.
- Kanal seçimi:
- Varsayılan olarak devre dışı olan
DefaultTrackSelector.Parameters.allowInvalidateSelectionsForRendererCapabilitiesChange
özelliğini ekleyin. Etkinleştirildiğinde, oluşturucu özellikleri değiştiğindeDefaultTrackSelector
yeni bir kanal seçimini tetikler.
- Varsayılan olarak devre dışı olan
- Ayıklayıcılar:
- Ses:
- Tünel oluşturma etkinken ve
AudioProcessors
etkinken bazı oynatmaların başarısız olduğu hata düzeltildi (ör.boşluksuz kırpma için). (#10847). - Doğrudan oynatmalarda (boşluk) Opus karelerini Ogg paketlerine kapsülleyin.
- Boşaltma planlamasıyla uyku sırasında mevcut konumu tahmin etme.
- Oynatıcının yaşam döngüsünün sonunda kaynakları serbest bırakmak için
Renderer.release()
veAudioSink.release()
ekleyin. DefaultAudioSink
ses özellikleri değişikliklerini dinleyin.DefaultAudioSink
oluşturucuya,DefaultAudioSink
öğesininAudioCapabilitiesReceiver
için işleyici olarak kaydedileceği gerekli bircontext
parametresini ekleyin ve bir özellik değişikliğiyle bilgilendirildiğindeaudioCapabilities
özelliğini güncelleyin.- Ses özelliklerindeki değişiklikleri
AudioSink.Listener
arayüzünde yeni bir etkinlikonAudioCapabilitiesChanged
veonRendererCapabilitiesChanged
etkinliklerini tetikleyen yeni bir arayüzRendererCapabilities.Listener
ile uygulayın. - Ses kanallarına ölçeklendirme/karıştırma uygulamak için
ChannelMixingAudioProcessor
ekleyin. - Ses özellikleri değiştikten sonra atlama modu mümkün olduğunda ses kod çözücüyü silmek için
DecoderDiscardReasons
öğesine yeni tamsayıDISCARD_REASON_AUDIO_BYPASS_POSSIBLE
ekleyin. - DTS Express ve DTS:X için doğrudan oynatma desteği ekleyin (#335).
- Tünel oluşturma etkinken ve
- Video:
- Oluşturucu devre dışı bırakıldığında
MediaCodecVideoRenderer
ürününün genişliği ve yüksekliği 0 olan birVideoSize
raporu yapın.Player.getVideoSize()
değiştiğindePlayer.Listener.onVideoSizeChanged
buna uygun şekilde çağrılır. Bu değişiklikle birlikte,Player.getCurrentTracks
video özelliğini desteklemediğinde veya desteklenen video parçasının boyutu henüz belirlenmediğinde,MediaCodecVideoRenderer
ile ExoPlayer'ın video boyutunun genişliği ve yüksekliği 0 olur.
- Oluşturucu devre dışı bırakıldığında
- DRM:
DefaultDrmSession
üzerinde, DRM paketi dışından çağrılması beklenmeyen birkaç dahili yöntemin görünürlüğünü azaltın:void onMediaDrmEvent(int)
void provision()
void onProvisionCompleted()
onProvisionError(Exception, boolean)
- Muxer:
- MP4 kapsayıcı dosyası oluşturmak için kullanılabilecek yeni bir muxer kitaplığı ekleyin.
- IMA uzantısı:
- DAI için çok dönemli canlı DASH akışlarını etkinleştirin. Mevcut uygulamanın henüz canlı yayınlarda arama yapmayı desteklemediğini lütfen unutmayın (#10912).
- Art arda gelen zaman çizelgelerindeki hesaplanan içerik konumu küçük farklılıklar içerdiğinden, canlı yayınlara yeni bir reklam grubu eklenmesiyle ilgili hata düzeltildi.
- Oturum:
- Şu anda bir
Player
yöntemini çağıran denetleyici hakkında bilgi edinmek içinMediaSession.getControllerForCurrentRequest
yardımcı yöntemini ekleyin. - Uygulamaların, örneğin bir Bluetooth mikrofonlu kulaklık (#167) tarafından gönderilen medya düğmesi etkinliklerini kullanarak oynatmayı devam ettirmesini sağlamak için
androidx.media3.session.MediaButtonReceiver
ekleyin. - İstenen
MediaItems
öğesinin,LocalConfiguration
değerine (ör. URI) (#282) sahip olması durumundaPlayer
öğesine iletilmesine izin vermek içinMediaSession.Callback.onAddMediaItems
öğesine varsayılan uygulama ekleyin (#282). - Android 12 ve önceki sürümlerde varsayılan olarak "öncekine sar" ve "sonrakine sar" komut düğmelerini ekleyin (#410).
- İstenen
MediaItems
öğesinin,LocalConfiguration
değerine (ör. URI) (#282) sahip olması durumundaPlayer
öğesine iletilmesine izin vermek içinMediaSession.Callback.onAddMediaItems
öğesine varsayılan uygulama ekleyin (#282). - Android 12 ve önceki sürümlerde varsayılan olarak "öncekine sar" ve "sonrakine sar" komut düğmelerini ekleyin (#410).
- Şu anda bir
- Kullanıcı arayüzü:
- Oynat/duraklat düğmesiyle özel kullanıcı arayüzü öğeleri yazmak için
shouldShowPlayButton
vehandlePlayPauseButtonAction
Util yöntemlerini ekleyin.
- Oynat/duraklat düğmesiyle özel kullanıcı arayüzü öğeleri yazmak için
- RTSP Uzantısı:
- DASH Uzantısı:
- Çok dönemli DASH akışları için
MediaLoadData.startTimeMs
veMediaLoadData.endTimeMs
alanlarındaki medya zaman farkını kaldırın. - Çok dönemli canlı Dash medya kaynağının yeniden hazırlanmasının
IndexOutOfBoundsException
(#10838) oluşturulmasına neden olan hata düzeltildi.
- Çok dönemli DASH akışları için
- HLS Uzantısı:
- Yükleme iş parçacığının
TimestampAdjuster
öğesinin başlatılmasını beklemesi için zaman aşımı ayarlamak üzereHlsMediaSource.Factory.setTimestampAdjusterInitializationTimeoutMs(long)
ekleyin. Başlatma, zaman aşımına uğramadan önce tamamlanmazsa oynatmanın sonsuza kadar durmasını önlemek için birPlaybackException
gönderilir. Zaman aşımı varsayılan olarak sıfıra ayarlanır (#323).
- Yükleme iş parçacığının
- Test Yardımcı Programları:
DataSourceContractTest
içindeki URI şeması büyük/küçük harfe duyarlılığını kontrol edin.
- Kullanımdan kaldırılan sembolleri kaldırın:
DefaultAudioSink
kurucularını kaldırın, bunun yerineDefaultAudioSink.Builder
kullanın.HlsMasterPlaylist
öğesini kaldırın, bunun yerineHlsMultivariantPlaylist
kullanın.Player.stop(boolean)
öğesini kaldır Bunun yerinePlayer.stop()
vePlayer.clearMediaItems()
değerlerini kullanın (reset
true
ise).- Kullanımdan kaldırılmış iki
SimpleCache
oluşturucuyu kaldırın ve daha iyi performans için bunun yerineDatabaseProvider
alan, kullanımdan kaldırılmayan bir oluşturucu kullanın. DefaultBandwidthMeter
oluşturucuyu 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
oluşturucuyu kaldırın ve hata günlük kaydını geliştirmek için ek alanları(cause
,responseBody
) kabul eden, kullanımdan kaldırılmış bir kurucu kullanın. DownloadHelper.forProgressive
,DownloadHelper.forHls
,DownloadHelper.forDash
veDownloadHelper.forSmoothStreaming
öğelerini kaldırın, bunun yerineDownloadHelper.forMediaItem
kullanın.- Kullanımdan kaldırılan
DownloadService
oluşturucuyu kaldırın vechannelDescriptionResourceId
parametresi sağlama seçeneğini içeren, kullanımdan kaldırılmayan bir kurucu kullanın. - Karakter kümeleri için desteği sonlandırılmış Dize sabit değerlerini (
ASCII_NAME
,UTF8_NAME
,ISO88591_NAME
,UTF16_NAME
veUTF16LE_NAME
) kaldırın, bunun yerinekotlin.text
paketindeki,java.nio.charset.StandardCharsets
veyacom.google.common.base.Charsets
'daki Kotlin Karakter Kümelerini kullanın. - Kullanımdan kaldırılan
WorkManagerScheduler
oluşturucuyu kaldırın. Bunun yerine,Context
parametresi sağlama seçeneğine sahip, kullanımdan kaldırılmamış bir oluşturucu kullanın. Format
sınıfını örneklendirmek için kullanılan ve kullanımdan kaldırılancreateVideoSampleFormat
,createAudioSampleFormat
,createContainerFormat
vecreateSampleFormat
yöntemlerini kaldırın. Bunun yerine,Format
örnekleri oluşturmak içinFormat.Builder
kullanın.- Kullanımdan kaldırılan yöntemler olan
copyWithMaxInputSize
,copyWithSubsampleOffsetUs
,copyWithLabel
,copyWithManifestFormatInfo
,copyWithGaplessInfo
,copyWithFrameRate
,copyWithDrmInitData
,copyWithMetadata
,copyWithBitrate
vecopyWithVideoSize
yöntemlerini kaldırın. Bunların yerineFormat.buildUpon()
ve tanımlayıcı yöntemlerini kullanın. - Kullanımdan kaldırılan
ExoPlayer.retry()
uzantısını kaldırın, bunun yerineprepare()
kullanın. - Kullanımdan kaldırılan sıfır bağımsız değişkenli
DefaultTrackSelector
oluşturucuyu kaldırın, bunun yerineDefaultTrackSelector(Context)
kullanın. - Kullanımdan kaldırılan
OfflineLicenseHelper
oluşturucuyu kaldırın, bunun yerineOfflineLicenseHelper(DefaultDrmSessionManager, DrmSessionEventListener.EventDispatcher)
kullanın. - Kullanımdan kaldırılan
DownloadManager
oluşturucuyu kaldırın, bunun yerineExecutor
alan oluşturucuyu kullanın. - Kullanımdan kaldırılan
Cue
oluşturucularını kaldırın, bunun yerineCue.Builder
kullanın. - Kullanımdan kaldırılan
OfflineLicenseHelper
oluşturucuyu kaldırın, bunun yerineOfflineLicenseHelper(DefaultDrmSessionManager, DrmSessionEventListener.EventDispatcher)
kullanın. - Kullanımdan kaldırılan dört
AnalyticsListener
yöntemini kaldırın:onDecoderEnabled
, bunun yerineonAudioEnabled
ve/veyaonVideoEnabled
kullanın.onDecoderInitialized
, bunun yerineonAudioDecoderInitialized
ve/veyaonVideoDecoderInitialized
kullanın.onDecoderInputFormatChanged
, bunun yerineonAudioInputFormatChanged
ve/veyaonVideoInputFormatChanged
kullanın.onDecoderDisabled
, bunun yerineonAudioDisabled
ve/veyaonVideoDisabled
kullanın.
- Kullanımdan kaldırılan
Player.Listener.onSeekProcessed
veAnalyticsListener.onSeekProcessed
öğelerini kaldırın. Bunun yerineonPositionDiscontinuity
ileDISCONTINUITY_REASON_SEEK
kullanın. ExoPlayer.setHandleWakeLock(boolean)
öğesini kaldırın, bunun yerinesetWakeMode(int)
kullanın.- Kullanımdan kaldırılan
DefaultLoadControl.Builder.createDefaultLoadControl()
uzantısını kaldırın, bunun yerinebuild()
kullanın. - Kullanımdan kaldırılan
MediaItem.PlaybackProperties
uzantısını kaldırın, bunun yerineMediaItem.LocalConfiguration
kullanın. Kullanımdan kaldırılanMediaItem.playbackProperties
alanı artıkMediaItem.LocalConfiguration
türünde.
Sürüm 1.1.0-rc01
21 Haziran 2023
1.1.0 kararlı sürümünü kullanın.
Sürüm 1.1.0-beta01
7 Haziran 2023
1.1.0 kararlı sürümünü kullanın.
Sürüm 1.1.0-alpha01
10 Mayıs 2023
1.1.0 kararlı sürümünü kullanın.
Sürüm 1.0.0
Sürüm 1.0.2
18 Mayıs 2023
androidx.media3:media3-*:1.0.2
yayınlandı.
1.0.2 sürümü bu kayıtları içerir.
Bu sürüm, ExoPlayer 2.18.7 sürümüne karşılık gelir.
Bu sürüm 1.0.1 sürümünden beri aşağıdaki değişiklikleri içeriyor:
- Çekirdek kitaplık:
Buffer
öğesindeC.BUFFER_FLAG_LAST_SAMPLE
işareti olup olmadığını belirtenBuffer.isLastSample()
kodunu ekleyin.- Kare içeren son örnek, "akış sonu" örneği okunmadan sıraya alınırsa son karenin oluşturulamaması sorunu düzeltildi. (#11079).
- Ayıklayıcılar:
- Hâlihazırda RTSP ve MP4 ayıklayıcıları tarafından kullanılan ayrıştırma mantığını yeniden kullanarak, MPEG-TS dosyalarında H.265 SPS'nin ayrıştırılmasını düzeltin (#303).
- Metin:
- SSA: Bayt sırası işaretiyle başlayan UTF-16 dosyaları için destek ekleyin (#319).
- Oturum:
MediaController
hizmetinin, işlemlerini güncelleyen eski birMediaSessionCompat
bağlantısı olduğunda mevcut komutlarını güncellememesiyle ilgili sorun düzeltildi.- API 30'da (#355), Sistem kullanıcı arayüzünden
Callback.onGetLibraryRoot
'yeparams.isRecent == true
ile yapılan bir çağrı içinMediaLibraryService
değerinin null değerini döndürmesini engelleyen hata düzeltildi. MediaSessionService
veyaMediaLibraryService
bellek sızıntısını düzeltin (#346).- Bir
MediaSession
içinde birleşikTimeline
ve konum güncellemesinin,MediaController
öğesininIllegalStateException
döndürmesine neden olabileceği hata düzeltildi.
Sürüm 1.0.1
18 Nisan 2023
androidx.media3:media3-*:1.0.1
yayınlandı.
1.0.1 sürümü bu kayıtları içerir.
Bu sürüm, ExoPlayer 2.18.6 sürümüne karşılık gelir.
- Çekirdek kitaplık:
- Varsayılan konuma aranırken hedef canlı yayın geçersiz kılma değerini sıfırlayın (#11051).
- Medyadaki boş örnek akışların oynatmanın takılmasına neden olabileceği hata düzeltildi.
- Oturum:
- Eski bir
MediaSessionCompat
tarafından yayınlanan, birbirinin aynısı olan birden fazla sıra öğesininMediaController
özelliğinde istisnaya neden olduğu hatayı düzeltin (#290). MediaSession.broadcastCustomCommand
yönlendirmesinin eksik olan kısmını eskiMediaControllerCompat.Callback.onSessionEvent
öğesine ekleyin (#293).MediaSession.setPlayer
çağrısının, kullanılabilir komutları güncellememesi hatası düzeltildi.Format.metadata
(#296) içeren bir gruba referansta bulunan birMediaController
öğesinden gönderilenTrackSelectionOverride
örneklerinin yoksayılmasıyla ilgili sorunu düzeltin.- Eski
MediaSessionCompat
üzerinden meta verilere erişmek içinPlayer.COMMAND_GET_CURRENT_MEDIA_ITEM
öğesinin kullanılabilir olması gerektiği sorunu düzeltin. - Arka plan iş parçacığındaki
MediaSession
örneklerininMediaSessionService
öğesinde kullanıldığında kilitlenmeye neden olmasıyla ilgili sorunu düzeltin (#318). - Kitaplık tarafından, uygulamanın bunu amaçlamadığı bir medya düğmesi alıcısının bildirilmesi sorunu düzeltildi (#314).
- Eski bir
- DASH:
- Boş segment zaman çizelgelerinin işlenmesini düzeltin (#11014).
- RTSP:
- UDP ile RTSP Kurulumu RTSP Hatası 461 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ınlandı.
1.0.0 sürümü bu kayıtları 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ınlandı.
1.0.0-rc02 sürümü bu kayıtları içerir.
Bu sürüm, ExoPlayer 2.18.4 sürümüne karşılık gelir.
- Çekirdek kitaplık:
- İndirmeler:
SegmentDownloader
ve alt sınıflarda birleştirilecek iki segmentin başlangıç zamanı için maksimum farkı belirleyin (#248).
- Ses:
- Video:
- HEVC HDR10 biçimini
HEVCProfileMain10
yerineHEVCProfileMain10HDR10
ile eşleyin. - Google TV Yüklü Chromecast ve Lenovo M10 FHD Plus'ta, 60 fps AVC akışlarının desteklenmiyor olarak işaretlenmesine neden olan bir cihaz sorunu için geçici çözüm ekleyin (#10898).
- Ekran yenileme hızından çok daha yüksek bir kare hızına sahip medya oynatırken ortaya çıkan kare sürümü performans sorunlarını düzeltin.
- HEVC HDR10 biçimini
- Yayınlama:
- Medya öğeleri arasında geçiş yaparken geçici
STATE_IDLE
sorununu düzeltin (#245).
- Medya öğeleri arasında geçiş yaparken geçici
- RTSP:
- Geçersiz RTSP'nin ayrıştırılmasında oluşan Yasa DışıArgumentException hatasını yakalayın Yanıt mesajlarını açıklayın (#10971).
- Oturum:
- Bildirim oynatma/duraklatma düğmesinin oynatıcı durumunda güncellenmemesi hatası düzeltildi (#192).
- IMA uzantısı:
- İlk (ve reklam içermeyen)
LOADED
etkinliği alınmadığı için reklam içermeyen DAI akışlarının başlamasını engelleyen hata düzeltildi.
- İlk (ve reklam içermeyen)
Sürüm 1.0.0-rc01
16 Şubat 2023
androidx.media3:media3-*:1.0.0-rc01
yayınlandı.
1.0.0-rc01 sürümü bu kayıtları içerir.
Bu sürüm, ExoPlayer 2.18.3 sürümüne karşılık gelir.
- Çekirdek kitaplık:
- Kod çözücü medyayı performanslı bir şekilde oynatamayabileceğini bildirse bile,
MediaCodecSelector
ürününün tercihlerini korumak için oluşturucunun kod çözücü sıralama mantığını değiştirin. Örneğin, varsayılan seçici ile, biçimi (#10604) tamamen destekleyen yazılım kod çözücü yerine yalnızca işlevsel desteğe sahip donanım kod çözücü tercih edilir. - Yeni bir ExoPlayer örneği için önceden var olan bir oynatma iş parçacığı ayarlayan
ExoPlayer.Builder.setPlaybackLooper
ekleyin. - İndirme yöneticisi yardımcılarının silinmesine izin ver (#10776).
- Arama için kullanılan komutu da belirtmek için
BasePlayer.seekTo
parametresine ekleyin. - API 21 ve sonraki sürümlerde çekilebilir öğeleri yüklerken temayı kullanın (#220).
- Birden fazla medya öğesini tek bir pencerede birleştirmeye olanak tanıyan
ConcatenatingMediaSource2
ekleyin (#247).
- Kod çözücü medyayı performanslı bir şekilde oynatamayabileceğini bildirse bile,
- Ayıklayıcılar:
- Trak atomlarını ayrıştırırken örnek tabloda (stbl) gerekli bir örnek açıklama (stsd) eksikse
NullPointerException
yerineParserException
çalıştırın. - fMP4'te doğrudan bir senkronizasyon karesine arama yaparken örnekleri doğru şekilde atlayın (#10941).
- Trak atomlarını ayrıştırırken örnek tabloda (stbl) gerekli bir örnek açıklama (stsd) eksikse
- Ses:
- Doğrudan oynatmalarda
AudioTrack
için minimum arabellek boyutunu hesaplamak üzere sıkıştırılmış ses biçimi bit hızını kullanın (geçişin).
- Doğrudan oynatmalarda
- Metin:
- Bir altyazı dosyasında hiç işaret yoksa
TextRenderer
öğesinin geçersiz (negatif) dizindenSubtitle.getEventTime
parametresine geçmesi sorununu düzeltin. - SubRip: Bayt sırası işaretiyle başlayan UTF-16 dosyaları için destek ekleyin.
- Bir altyazı dosyasında hiç işaret yoksa
- Meta veri:
- ID3 v2.4 tarafından izin verildiği gibi, ID3 çerçevelerinden boş ayrılmış birden fazla 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
uygulamasını ekleyin. Bu klasör türü bir sonraki sürümde kullanımdan kaldırılacaktır.
- DASH:
- Parça sayıları dahil olmak üzere resim uyarlama grupları için tam ayrıştırma ekleyin (#3752).
- Kullanıcı arayüzü:
- Görünürlük değişikliklerinin kayıtlı işleyiciye iletildiğinden emin olmak için kullanımdan kaldırılan
PlayerView.setControllerVisibilityListener(PlayerControlView.VisibilityListener)
dosyasını düzeltin (#229). - Sağdan sola (RTL) düzeni kullanırken
PlayerView
içinde orta oynatıcı kontrollerinin sıralamasını düzeltin (#227).
- Görünürlük değişikliklerinin kayıtlı işleyiciye iletildiğinden emin olmak için kullanımdan kaldırılan
- Oturum:
- Özel oynatıcılar için
Player
arayüzünün uygulanmasına yardımcı olmak üzere soyutSimpleBasePlayer
ekleyin. - Platform oturum jetonunu Media3'e
SessionToken
dönüştürmek için yardımcı yöntem ekleyin (#171). - Platform medya oturumu 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 sabit listeler kullanın (#216). - Oynatıcı'yı ayarlamadan önce
MediaItem
listesini değiştirme/ayarlama, dizin başlatma ve oturum bazında konum sağlama yöntemlerini sağlamak içinonSetMediaItems
geri çağırma dinleyicisi ekleyin (#156). - Bluetooth olmayan medya düğmesi etkinlikleri için iki kez dokunma algılamasından kaçının (#233).
- Bilinmeyen bir eski oturum durumu durumunda
QueueTimeline
daha güçlü hale getirin (#241).
- Özel oynatıcılar için
- Meta veri:
- ID3 v2.4 tarafından izin verildiği gibi, ID3 çerçevelerinden boş ayrılmış birden fazla 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
uygulamasını ekleyin. Bu klasör türü bir sonraki sürümde kullanımdan kaldırılacaktır.
- Cast uzantısı:
- Bump Cast SDK'sı sürümünü 21.2.0'a yükseltin.
- IMA uzantısı:
- İleti dizisi sorunlarını önlemek için uygulama iş parçacığındaki
ImaServerSideAdInsertionMediaSource
oynatıcı dinleyicisini kaldırın. - TV cihazlarında atla düğmesine odaklanmayı istemek ve varsayılan olarak "true" değerine ayarlamak için
ImaServerSideAdInsertionMediaSource.AdsLoader.Builder
öğesine birfocusSkipButtonWhenAvailable
özelliği ekleyin. - Atla düğmesine odaklanmayı programatik olarak istemek için
ImaServerSideAdInsertionMediaSource.AdsLoader
öğesine birfocusSkipButton()
yöntemi ekleyin. - IMA SDK sürümünü 3.29.0'a yükseltin.
- İleti dizisi sorunlarını önlemek için uygulama iş parçacığındaki
- Demo uygulama:
- Çalışma zamanında bildirimleri indirme için bildirim izni isteyin (#10884).
Sürüm 1.0.0-beta03
22 Kasım 2022
androidx.media3:media3-*:1.0.0-beta03
yayınlandı.
1.0.0-beta03 sürümü bu kayıtları içerir.
Bu sürüm, ExoPlayer 2.18.2 sürümüne karşılık gelir.
- Çekirdek kitaplık:
- Şu anda seçili olan kanallarda tünellemenin etkin olup olmadığını kontrol etmek için
ExoPlayer.isTunnelingEnabled
ekleyin (#2518). - Tek bir
MediaSource
öğesini sarmalamayı kolaylaştırmak içinWrappingMediaSource
ekleyin (#7279). - Kullanılabilir bellek yetersiz olduğundan oynatma takılmadan önce geri arabelleği silin.
- Boşaltma etkinleştirildiğinde "doSomeWork" İzleme bloğunu kapatın.
PlaybackStatsListener
içinde hızlı aramalarla oturum izleme sorununu düzeltin (#180).- Tek öğeli bir oynatma listesinde
seekToNext
veyaseekToPrevious
çağırırken eksikonMediaItemTransition
geri çağırmasını gönderin (#10667). - Videonun oluşturulduğu yüzeyin boyutunu döndüren
Player.getSurfaceSize
işlevini ekleyin. - Oynatıcı sürümü sırasında dinleyicileri kaldırma işleminin
IllegalStateException
neden olabileceği hata düzeltildi (#10758).
- Şu anda seçili olan kanallarda tünellemenin etkin olup olmadığını kontrol etmek için
- Oluşturun:
- Derleme hatalarını önlemek için minimum
compileSdkVersion
değerini zorunlu kılın (#10684). - Başka bir gradle derlemesine dahil edildiğinde yayınlama blokunu kullanmaktan kaçının.
- Derleme hatalarını önlemek için minimum
- Kanal seçimi:
- Dolby Vision desteklenmiyorsa diğer parçaları tercih edin. (#8944).
- İndirmeler:
- Aynı
PriorityTaskManager
ile aynı anda indirme ve oynatmanın neden olduğuProgressiveDownloader
içinde olası sonsuz döngüyü düzeltin (#10570). - İndirme bildiriminin hemen görünmesini sağla (#183).
- Çok fazla iş parçacığı oluşturulmasını önlemek için paralel indirme kaldırma işlemlerini 1 ile sınırlayın (#10458).
- Aynı
- Video:
- Ekranı desteklemiyorsa Dolby Vision için alternatif kod çözücüyü deneyin. (#9794).
- Ses:
- Aynı anda birden fazla oynatıcıyı serbest bırakırken OutOfMemory hatalarından kaçınmak amacıyla
AudioTrack
örneklerini serbest bırakmak içinSingleThreadExecutor
kullanın (#10057). - AudioTrack boşaltma durumu için
AudioOffloadListener.onExperimentalOffloadedPlayback
ekler. (#134). AudioTrackBufferSizeProvider
öğesini herkese açık bir arayüz yap.- Tercih edilen ses çıkış cihazını ayarlamak için
ExoPlayer.setPreferredAudioDevice
kodunu ekleyin (#135). androidx.media3.exoplayer.audio.AudioProcessor
alanının adınıandroidx.media3.common.audio.AudioProcessor
olarak değiştirin.- 8 kanallı ve 12 kanallı sesi tüm Android sürümlerinde 7.1 ve 7.1.4 kanal maskeleriyle sırasıyla eşleyin (#10701).
- Aynı anda birden fazla oynatıcıyı serbest bırakırken OutOfMemory hatalarından kaçınmak amacıyla
- Meta veri:
MetadataRenderer
artık kullanılabilir hale gelir gelmez meta verileri oluşturacak şekilde yapılandırılabilir. Oluşturucunun meta verileri erken mi çıkaracağını yoksa oynatıcı konumuyla senkronize mi yapacağı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 hataya geçici çözüm bulun.
- Bir oynatma listesinde DRM şemaları arasında geçiş yaparken görülen
setMediaDrmSession failed: session not opened
hatasını düzeltin (ör. Widevine'den ClearKey'e).
- Metin:
- CEA-608: 2. alandaki hizmet anahtarı komutlarının doğru şekilde işlendiğinden emin olun (#10666).
- DASH:
- Manifestlerden
EventStream.presentationTimeOffset
ayrıştırmasını yapın (#10460).
- Manifestlerden
- Kullanıcı arayüzü:
- Oynatıcının mevcut geçersiz kılmalarını
TrackSelectionDialogBuilder
(#10429) içinde hazır ayar olarak kullanın.
- Oynatıcının mevcut geçersiz kılmalarını
- Oturum:
- Bazıları eşzamansız çözüm gerektirse bile komutların her zaman doğru sırada yürütüldüğünden emin olun (#85).
DefaultMediaNotificationProvider
örnek derlemek içinDefaultMediaNotificationProvider.Builder
ekleyin. Oluşturucu; bildirim kimliğini, bildirim kanalı kimliğini ve sağlayıcı tarafından kullanılan bildirim kanalı adını yapılandırabilir. Ayrıca, bildirimleri küçük simgesini ayarlamak içinDefaultMediaNotificationProvider.setSmallIcon(int)
yöntemini ekleyin. (#104).MediaController.release()
öncesinde gönderilen komutların bırakılmadığından emin olun (#99).SimpleBitmapLoader
,file://
URI'dan bit eşlem yükleyebilir (#108).MediaController
öğesinin belirli bir dönem içinde bir reklamı aramasını engelleyen onaylama işlemini düzeltin (#122).- Oynatma sona erdiğinde,
MediaSessionService
ön planda durdurulur ve son oynatılan medya öğesinin (#112) oynatılmasını yeniden başlatma bildirimi gösterilir. - Duraklatma için beklemede amacı olan bir ön plan hizmeti başlatmayın (#167).
DefaultNotificationProvider
tarafından API 26 ve API 27'de oluşturulan bildirimle ilişkili "rozeti" manuel olarak gizleyin (rozet API 28 ve sonraki sürümlerde otomatik olarak gizlenir) (#131).- Eski bir MediaSession'dan Media3 MediaController'a ikinci bir bağlayıcı bağlantısının IllegalStateExceptions(#49) neden olduğu hata düzeltildi.
- RTSP:
- IMA:
- IMA SDK'nın reklam yüklerken takıldığı durumları ele almak amacıyla reklam bilgilerini yükleme işlemi için zaman aşımı ekleyin (#10510).
- İçeriğin sonuna doğru ilerlerken videonun ortasında gösterilen reklamların atlanmasını önleyin (#10685).
- Sunucu tarafında eklenen reklamlar (ör. IMA DAI) ile canlı yayınlar için aralık süresini doğru şekilde hesaplayın (#10764).
- FFmpeg uzantısı:
- FFmpeg kitaplıklarını NDK 23.1.7779620 ve sonraki sürümlere bağlamak için yeni 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).
- Cast uzantısı:
- Oynatmayı bir
MediaController
ile kontrol ederkenCastPlayer
tanımlayabilmek içingetDeviceInfo()
uygulayın (#142).
- Oynatmayı bir
- Dönüştürücü:
- Çıkış örneği oluşturmanın çok yavaş olduğunu algılamak için muxer güvenlik zamanlayıcısı zamanlayıcı ekleyin.
- Kullanımdan kaldırılan sembolleri kaldırın:
Transformer.Builder.setOutputMimeType(String)
öğesini kaldır Bu özellik kaldırıldı. Varsayılan çoklayıcı kullanıldığında MIME türü her zaman MP4 olur.
Sürüm 1.0.0-beta02
21 Temmuz 2022
androidx.media3:media3-*:1.0.0-beta02
yayınlandı.
1.0.0-beta02 sürümü bu kayıtları içerir.
Bu sürüm, ExoPlayer 2.18.1 sürümüne karşılık gelir.
- Çekirdek kitaplık:
ShuffleOrder
öğesiniExoPlayer.setShuffleOrder
ile değiştirmeninreason=Player.TIMELINE_CHANGE_REASON_PLAYLIST_CHANGED
(#9889) ilePlayer.Listener#onTimelineChanged
çağrısıyla sonuçlandığından emin olun.- Progresif medya için yalnızca seçilen parçaları arabelleğe alınmış konuma dahil edin (#10361).
- Tüm ExoPlayer günlük çıkışları için özel günlükleyiciye izin ver (#9752).
DefaultMediaSourceFactory
içinde bazı durumlarda çalışmayansetDataSourceFactory
uygulanması düzeltildi (#116).
- Ayıklayıcılar:
- DASH:
- ClearKey lisans URL'sini manifest'lerden ayrıştırma (#10246).
- Kullanıcı arayüzü:
- TalkBack'in oynatma kontrolleri menüsünde o anki etkin hız seçeneğini duyurduğundan emin olun (#10298).
- RTSP:
- VP8 parçalanmış paket işleme ekleyin (#110).
- Leanback uzantısı:
LeanbackAdapter
kaynağındakiplayWhenReady
değişiklikleri dinleyin (10420).
- Yayınlama:
Sürüm 1.0.0-beta01
16 Haziran 2022
androidx.media3:media3-*:1.0.0-beta01
yayınlandı.
1.0.0-beta01 sürümü bu kayıtları içerir.
Bu, ExoPlayer 2.18.0 sürümüne karşılık gelir.
- Çekirdek kitaplık:
MediaMetricsManager
aracılığıyla Android platform teşhisi desteğini etkinleştirin. ExoPlayer, oynatma etkinliklerini ve performans verilerini platforma iletir. Bu da cihazda sistem performansı ve hata ayıklama bilgilerinin sağlanmasına yardımcı olur. Bu veriler ayrıca cihazın kullanıcısı tarafından kullanım ve teşhis verilerini paylaşma seçeneğini etkinleştirdiyse Google tarafından toplanabilir. Uygulamalar,ExoPlayer.Builder.setUsePlatformDiagnostics(false)
kullanarak ExoPlayer için platform teşhisine katkıda bulunmayı devre dışı bırakabilir.MergingMediaSource
kullanıldığında (ör. altyazıları başka cihazdan yükleme ve oynatma sırasında seçilen altyazıyı değiştirme) kanalların çok sık sıfırlanmasına neden olan hatayı düzeltin (#10248).- API 29 ve 30'da 5G-NSA ağ türünü algılamayı durdurun. Bu oynatmalarda 4G ağı olduğu varsayılır.
null
öğesininMediaSource.Factory.setDrmSessionManagerProvider
veMediaSource.Factory.setLoadErrorHandlingPolicy
öğelerine iletilmesine izin verme. GerekirseDefaultDrmSessionManagerProvider
veDefaultLoadErrorHandlingPolicy
örnekleri açık bir şekilde iletilebilir.- Tam
LocalConfiguration
bilinmediğinde medya oynatmak için gereken meta verileri temsil etmek üzereMediaItem.RequestMetadata
ekleyin. Ayrıca,MediaMetadata.mediaUrl
artıkRequestMetadata
içinde yer aldığı için bu öğeyi kaldırın. - Oyuncuların tek bir öğe ayarlamasına izin verebilmek için
Player.Command.COMMAND_SET_MEDIA_ITEM
ekleyin.
- Kanal seçimi:
TrackSelectionOverrides
sınıfınıTrackSelectionParameters
olarak birleştir veTrackSelectionOverride
sınıfını üst düzey sınıfa yükselt.TracksInfo
alan adınıTracks
,TracksInfo.TrackGroupInfo
adını daTracks.Group
olarak değiştirin.Player.getCurrentTracksInfo
vePlayer.Listener.onTracksInfoChanged
özellikleri dePlayer.getCurrentTracks
vePlayer.Listener.onTracksChanged
olarak yeniden adlandırıldı. Bu, farklı parametre türleriylePlayer.Listener.onTracksChanged
yöntem adının "kullanımdan kaldırılmasını" içerir.DefaultTrackSelector.buildUponParameters
veDefaultTrackSelector.Parameters.buildUpon
öğelerini, kullanımdan kaldırılanDefaultTrackSelector.ParametersBuilder
yerineDefaultTrackSelector.Parameters.Builder
değerini döndürecek şekilde değiştirin.- Varsayılan olarak etkinleştirilen
DefaultTrackSelector.Parameters.constrainAudioChannelCountToDeviceCapabilities
özelliğini ekleyin. EtkinleştirildiğindeDefaultTrackSelector
, kanal sayısı cihaz çıkış özelliklerini aşmayan ses parçalarını tercih eder. Avuç içi cihazlardaDefaultTrackSelector
, çoklu kanallı ses biçimi Spatialized (Android 12L+) veya Dolby surround ses biçimi olmadığı sürece çok kanallı ses biçimleri yerine stereo/mono tercih eder. AyrıcaDefaultTrackSelector
, sesi üç boyutlulaştırmayı destekleyen cihazlarda Spatializer özelliklerindeki değişiklikleri izler ve bunlara göre yeni bir parça seçimini tetikler.television
Kullanıcı arayüzü moduna sahip cihazlar bu kısıtlamaların dışında tutulur ve en yüksek kanal sayısına sahip biçim tercih edilir. Bu özelliği etkinleştirmek içinDefaultTrackSelector
örneği birContext
ile oluşturulmalıdır.
- Video:
DummySurface
alanının adınıPlaceholderSurface
olarak değiştirin.MediaCodecVideoRenderer.getCodecMaxInputSize
uygulamasına AV1 desteğini ekleyin.
- Ses:
- Standart olmayan MIME türünü tanıtan LG AC3 ses kod çözücüyü kullanın.
- API < 21'de yavaş ART doğrulamasını önlemek için
android.media.AudioAttributes
olanAudioAttributes.getAudioAttributesV21()
döndürme türünü yeniAudioAttributesV21
sarmalayıcı sınıfına değiştirin. - Platformu sorgulayın (API 29+) veya ses kanalı biçim sayısı ayarlanmadan bırakıldığında ses kodlama kanalı sayısını varsayın. Bu, HLS parçasız hazırlıkta (10204) gerçekleşir.
- Kod çözücü 12 kanallı PCM sesi çıkarıyorsa
AudioTrack
öğesini kanal maskesiyleAudioFormat.CHANNEL_OUT_7POINT1POINT4
yapılandırın (#10322).
- DRM
- Biçim değişikliğinden hemen sonra arama yaparken DRM oturumunun her zaman doğru şekilde güncellendiğinden (10274) emin olun.
- Metin:
List<Cue>
yerineCueGroup
değerini döndürmek içinPlayer.getCurrentCues()
değerini değiştirin.- SSA:
BorderStyle == 3
öğesi (ör.OutlineColour
, işaret arka planını ayarladığında) (#8435)OutlineColour
stil ayarını destekler. - CEA-708: Verileri birden fazla hizmet bloğuna ayrıştırın ve seçili hizmet numarasıyla ilişkili olmayan blokları yoksayın.
- Yalnızca Google dahili altyazı biçimini işlemek için kullanılan
RawCcExtractor
hizmetini kaldırın.
- Ayıklayıcılar:
- Kullanıcı arayüzü:
useController=false
(#9605) durumunda, etkinliklerinPlayerView
tarihinde ayarlananOnClickListener
öğelerine yayınlanmasını düzeltin. Ayrıca, tüm görünüm yapılandırmaları içinOnLongClickListener
ürününe etkinlik yayınlamasını da düzeltin.ACTION_UP
öncesindePlayerView
sınırlarından çıkan bir dokunma etkinlikleri dizisinin tıklama olarak ele alınmasıyla ilgili yanlış düzeltme (#9861).- Dokunmanın kontrolleri gizlemek yerine oynatmayı açıp kapatmasına yol açan
PlayerView
erişilebilirlik sorunu düzeltildi (#8627). TrackSelectionView
veTrackSelectionDialogBuilder
öğeleriniExoPlayer
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ünden ExoPlayer modülüne olan bağımlılığı kaldırır. Bu çok kırık bir değişim.PlayerView
kanal seçicide zorunlu metin parçalarını göstermeyin ve "Yok" seçeneği belirlenmişse uygun bir zorunlu metin kanalını seçili tutun (#9432).
- DASH:
- DTS
AudioChannelConfiguration
öğelerinden kanal sayısını ayrıştır. Bu, 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 bir şekilde aktarılabilir.
- DTS
- HLS:
- Oynatma listesi CODECS özelliği, ses codec'ini (#10065) içermiyorsa yığın hazırlamaya geri dönün.
null
öğesininHlsMediaSource.Factory.setCompositeSequenceableLoaderFactory
,HlsMediaSource.Factory.setPlaylistParserFactory
veHlsMediaSource.Factory.setPlaylistTrackerFactory
öğelerine iletilmesine izin verme. 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 geçirilebilir.
- RTSP:
- H263 için RTP okuyucu ekleyin (#63).
- MPEG4 için RTP okuyucu ekleyin (#35).
- HEVC için RTP okuyucu ekleyin (#36).
- AMR için RTP okuyucu ekleyin. Şu anda yalnızca tek kanallı, araya eklemesiz AMR akışları desteklenmektedir. Bileşik AMR RTP yükü desteklenmez. (#46)
- VP8 için RTP okuyucu ekleyin (#47).
- WAV için RTP okuyucu ekleyin (#56).
- RTSP temel yetkilendirme başlığını düzeltin. (#9544).
- ExoPlayer'ın bunlara ihtiyacı olmadığı için zorunlu SDP alanlarını kontrol etmeyi bırakın (#10049).
- RTSP zamanlaması ayrıştırılırken "kontrol edilen istisna" uygulayın (#10165).
- VP9 için RTP okuyucu ekleyin (#47).
- OPUS için RTP okuyucu ekleyin (#53).
- Veri kaynakları:
DummyDataSource
alanının adınıPlaceholderDataSource
olarak değiştirin.- Geçici OkHttp kesinti işleme.
- Oturum:
- İsteklerin eşzamansız olarak çözülmesini sağlamak için
MediaSession.MediaItemFiller
değeriniMediaSession.Callback.onAddMediaItems
ile değiştirin. MediaController
eski medya oturumuna bağlandığındasetMediaItems(s)
yöntemlerini destekleyin.MediaController.setMediaUri
veMediaSession.Callback.onSetMediaUri
öğelerini kaldırın. Aynı işleveMediaController.setMediaItem
veMediaSession.Callback.onAddMediaItems
kullanılarak ulaşılabilir.- Medya oynatmak için eski
MediaController
çağrılarınıonSetMediaUri
yerineMediaSession.Callback.onAddMediaItems
hedefine yönlendirin. - Bildirimin özelleştirilmesi için
MediaNotification.Provider
veDefaultMediaNotificationProvider
ekleyin. - Poster resimlerini indirmek için
BitmapLoader
veSimpleBitmapLoader
özelliklerini ekleyin. - Eski oturumla geriye dönük uyumluluk sağlamak için
MediaSession.setCustomLayout()
eklentisini ekleyin. - Eski oturumla özellik benzerliği sağlamak için
MediaSession.setSessionExtras()
ekleyin. MediaSession.MediaSessionCallback
adınıMediaSession.Callback
,MediaLibrarySession.MediaLibrarySessionCallback
adınıMediaLibrarySession.Callback
,MediaSession.Builder.setSessionCallback
adını dasetCallback
olarak değiştirin.MediaControllerImplLegacy
içindeki NPE'yi düzeltin (#59).- Zaman çizelgesi değişikliği olduğunda oturum konumu bilgilerini güncelleyin(#51).
- Denetleyiciyi serbest bıraktıktan sonra
MediaControllerImplBase
içinde NPE'yi düzeltin (#74).
- İsteklerin eşzamansız olarak çözülmesini sağlamak için
- Reklam oynatma / IMA:
- Medya Derecelendirme Konseyi (MRC) önerilerine uymak için reklam yoklama oranını 100 ms'den 200 ms'ye düşürün.
- FFmpeg uzantısı:
- AndroidStudio'nun gradle senkronizasyonunun başarısız olmasına yol açan bir CMake hatasını önlemek için CMake sürümünü
3.21.0+
olarak güncelleyin (#9933).
- AndroidStudio'nun gradle senkronizasyonunun başarısız olmasına yol açan bir CMake hatasını önlemek için CMake sürümünü
- Kullanımdan kaldırılan sembolleri kaldırın:
Player.Listener.onTracksChanged(TrackGroupArray, TrackSelectionArray)
öğesini kaldır Bunun yerinePlayer.Listener.onTracksChanged(Tracks)
politikasını kullanın.Player.getCurrentTrackGroups
vePlayer.getCurrentTrackSelections
öğelerini kaldırın. Bunun yerinePlayer.getCurrentTracks
politikasını kullanın. Ayrıca,ExoPlayer.getCurrentTrackGroups
veExoPlayer.getCurrentTrackSelections
kullanmaya devam edebilirsiniz, ancak bu yöntemler kullanımdan kaldırılmıştır.DownloadHelper
DEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_VIEWPORT
veDEFAULT_TRACK_SELECTOR_PARAMETERS
sabit değerlerini kaldırın. Mümkün olduğunda bunun yerinegetDefaultTrackSelectorParameters(Context)
, aksi haldeDEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_CONTEXT
kullanın.DefaultTrackSelector(ExoTrackSelection.Factory)
oluşturucuyu kaldırın. Bunun yerineDefaultTrackSelector(Context, ExoTrackSelection.Factory)
politikasını kullanın.Transformer.Builder.setContext
öğesini kaldırContext
, bunun yerineTransformer.Builder
oluşturucuya iletilmelidir.
Sürüm 1.0.0-alpha03
14 Mart 2022
androidx.media3:media3-*:1.0.0-alpha03
yayınlandı.
1.0.0-alpha03 sürümü bu kayıtları içerir.
Bu, ExoPlayer 2.17.1 sürümüne karşılık gelir.
- Ses:
- HLS'de Dolby Atmos (E-AC3-JOC) ses özelliklerini kontrol etme hatası düzeltildi.
- Ayıklayıcılar:
- FMP4: Hem v0 hem de v1 emsg atomlarını içeren akışlar için emsg örnek meta verilerinin yanlış sırada çıkışıyla ilgili sorun düzeltildi (#9996).
- Metin:
SubtitleConfiguration
alanına öncelik vermek ve ayarlanmamışsaFactory
değerine dönmek içinSingleSampleMediaSource.Factory.setTrackId
veMediaItem.SubtitleConfiguration.Builder.setId
etkileşimini düzeltin (#10016).
- Reklam oynatma:
- Canlı HLS SSAI akışlarında, reklam dönemleri arasında ses eksikliği sorunu düzeltildi.
Sürüm 1.0.0-alpha02
2 Mart 2022
androidx.media3:media3-*:1.0.0-alpha02
yayınlandı.
Sürüm 1.0.0-alpha02 bu kayıtları içerir.
Bu, ExoPlayer 2.17.0 sürümüne karşılık gelir.
- Çekirdek Kitaplık:
buildVideoRenderers()
veyabuildAudioRenderers()
öğelerini geçersiz kılanDefaultRenderersFactory
alt sınıflarının codec adaptörü fabrikasına erişebilmesi ve bunu oluşturduklarıMediaCodecRenderer
örneklerine geçirebilmesi için korumalıDefaultRenderersFactory.getCodecAdapterFactory()
yöntemini ekleyin.Player.Listener.onMediaMetadataChanged()
aracılığıyla uygulamaya ulaşmaları içinname
vegenre
ICY başlık alanlarını sırasıylaMediaMetadata.station
veMediaMetadata.genre
bölgelerine aktarın (#9677).DefaultHttpDataSource#getResponseHeaders
öğesinden boş anahtarları kaldırın.MediaCodec
örneği oluşturma işlemi başarısız olduğunda uyku modundan çıkar ve yeniden dene. Bu işlem, bir yüzeyi güvenli bir codec'ten başka bir codec'e (#8696) geçirirken bazı cihazlarda ortaya çıkan soruna geçici bir çözümdür.- Kullanıcıların
MediaCodec
kaynağından metrik verileri almasına izin vermek içinMediaCodecAdapter.getMetrics()
ekleyin. (#9766). - Maven bağımlılık çözümlemesini düzeltin (#8353).
- Düşük gecikme özelliklerine veya hızı belirleyen bir kullanıcı isteğine sahip olmayan canlı yayınlar için otomatik hız ayarlamasını devre dışı bırakın (#9329).
DecoderCounters#inputBufferCount
alanının adınıqueuedInputBufferCount
olarak değiştirin.SimpleExoPlayer.renderers
gizli olarak ayarlansın. OluşturucularaExoPlayer.getRenderer
üzerinden erişilebilir.- Bazı
AnalyticsListener.EventFlags
sabit değerleri,Player.EventFlags
öğesindeki değerlerle eşleşecek şekilde güncellendi. AnalyticsCollector
öğesini bir arayüze ve varsayılan uygulamaya bölün. Böylece, uygulama ihtiyacı olmadığında R8 tarafından sadeleştirilebilir.
- Kanal seçimi:
- Kanal seçiminde tercih edilen video rolü işaretlerini destekleme (#9402).
- Video kanalı seçim mantığını, uyarlama için birden fazla video kanalı seçerken tercih edilen MIME türlerini ve rol işaretlerini dikkate alacak şekilde güncelleyin(#9519).
- Video ve ses kanalı seçim mantığını, yalnızca aynı kod çözücü ve donanım desteğine sahip uyarlanabilir seçimlere yönelik biçimleri seçecek şekilde güncelleyin (#9565).
- Birincil donanım hızlandırmalı kod çözücüler tarafından birden fazla codec destekleniyorsa video kanalı seçim mantığını daha verimli codec'ler tercih etmek için güncelleyin (#4835).
- Teknik parça seçim kısıtlamalarına (örneğin, tercih edilen MIME türü veya maksimum kanal sayısı) kıyasla ses içeriği tercihlerini (ör. "varsayılan" ses parçası veya sistemin yerel ayarıyla eşleşen bir parça) tercih edin.
- Bir kanal grubu geçersiz kılındığında aynı türdeki diğer kanal gruplarının devre dışı bırakılmamasına neden olan kanal seçimi sorununu düzeltin (#9675).
- Boş olmayan ve boş kanal geçersiz kılmaları karışımının doğru bir şekilde uygulanmadığı kanal seçimi sorununu düzeltin (#9649).
TrackGroupArray
içinde yinelenenTrackGroup
öğelerini engelleyin.TrackGroup
oluşturucuda birid
ayarlanarakTrackGroup
öğeleri her zaman ayırt edilebilir hale getirilebilir. Bu değişiklik, uygulama etkin kanal geçersiz kılması ile arka plana alındıktan sonra oynatmaya devam edildiğinde meydana gelen kilitlenme sorununu düzeltir (#9718).- Oynatma canlı sınıra çok yakın olsa bile yeterli ağ bant genişliğinde kalite artışı sağlamak için
AdaptiveTrackSelection
özelliğindeki mantığı düzeltin (#9784).
- Video:
- Gerekirse uyumlu bir H264/H265 kod çözücü kullanmak için Dolby Vision için kod çözücü yedek mantığını düzeltin.
- Ses:
- Gerekirse uyumlu bir E-AC3 kod çözücü kullanmak amacıyla Dolby Atmos (E-AC3-JOC) için kod çözücü yedek mantığını düzeltin.
null
yerineAudioCapabilities.DEFAULT_AUDIO_CAPABILITIES
öğesinin açıkça iletilmesini gerektirecek şekildeAudioCapabilities
API'lerini değiştirin.DefaultAudioSink
öğesineAudioTrackBufferSizeProvider
ekleyerekAudioTrack
arabellek boyutu hesaplamasının özelleştirilmesine izin verin. (#8891).- İstenen arabellek boyutu 1 MB'tan büyükse
AudioTrack
oluşturmayı yeniden deneyin. (#9712).
- Ayıklayıcılar:
- Metin:
- Yapılandırmadan (#9673) oluşturulan altyazı parçasının
Format.id
alanına aktarılan birMediaItem.SubtitleConfiguration.id
alanı ekleyin. - Matroska kapsayıcılarında WebVTT altyazıları için temel destek ekleyin (#9886).
Cea708Decoder
yönergesinin, bir hizmet blokunun bildirilen boyutundan daha fazlasını okumasını önleyin.
- Yapılandırmadan (#9673) oluşturulan altyazı parçasının
- DRM:
playbackLooper
,DrmSessionManager.(pre)acquireSession
hesabından kaldırılsın mı?DrmSessionManager
, özel birMediaSource
içindeki bir uygulama tarafından kullanıldığında, bunun yerineplaybackLooper
öğesininDrmSessionManager.setPlayer
öğesine aktarılması gerekir.
- Reklam oynatma / IMA:
- IMA Dinamik Reklam Ekleme (DAI) desteği ekleyin (#8213).
- Tekrar oynatılabilmesi amacıyla bir reklam grubunun sıfırlanmasına olanak tanımak için
AdPlaybackState
öğesine bir yöntem ekleyin (#9615). - Reklam oynatma sırasında 1.0 oynatma hızını zorunlu kıl (#9018).
- Yüklenmeyen bir reklam grubunun anında oynatmanın sıfırlanmasına neden olduğu sorunu düzeltin (#9929).
- Kullanıcı arayüzü:
- DASH:
- Ayrıştırılmış temel ve ek özellikleri
Representation
öğesine ekleyin (#9579). forced-subtitle
izleme rolünü destekleyin (#9727).main
kanal rolünüC.SELECTION_FLAG_DEFAULT
olarak yorumlamayı bırakın.- DVB ad alanını (#9856) bildirmeyen manifestler için temel URL hariç tutma mantığını düzeltin.
- Göreli
MPD.Location
URL'lerini destekler (#9939).
- Ayrıştırılmış temel ve ek özellikleri
- HLS:
- Yalnızca ses HLS akışları için
Format.label
değerini doğru şekilde doldurun (#9608). - Başlangıç süresini iyileştirmek için varsayılan olarak parçalı hazırlık kullanın. Yaptığınız işlemler ana oynatma listesinde belirtilmemiş çok sayıda altyazılı parçalar içeriyorsa bunları oynatabilmek için ana oynatma listesine eklemeniz veya
HlsMediaSource.Factory.setAllowChunklessPreparation(false)
ile toplu hazırlama özelliğini kapatmanız gerekir. - HLS'de animasyon karesinde doğru arama desteği alın (#2882).
- Yalnızca ses HLS akışları için
- RTSP:
- Herhangi bir sunucu bağlantısı için kullanılan
SocketFactory
değerini geçersiz kılmak üzere bir istemci API'si sağlayın (#9606). - Her ikisi de mevcutsa DIGEST kimlik doğrulama yöntemini BASIC yerine tercih edin (#9800).
- RTSP izleme zamanlaması kullanılamadığında işler (#9775).
- Geçersiz RTP-Info üst bilgi değerlerini yoksayın (#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 bir dönüşüm sırasında oluşan hataları tanımlamak için kullanılmaktadır.- Dönüştürme seçeneklerini belirtmek için
TransformationRequest
ekleyin. - Birden çok işleyicinin kaydedilmesine izin ver.
- Codec çıkışı kısmen okunurken Transformer'ın takılması sorunu düzeltildi.
- Muxer atışlarını serbest bırakırken
Transformer.getProgress
içindeki potansiyel NPE'yi düzeltin. - Dönüşüm uygulamak için bir demo uygulama ekleyin.
- MediaSession uzantısı:
- Varsayılan olarak
MediaSessionConnector
durduğunda oynatma listesini temizler. Oynatma listesinin saklanmasını isteyen uygulamalar bağlayıcıdasetClearMediaItemsOnStop(false)
çağrısı yapabilir.
- Varsayılan olarak
- Cast uzantısı:
- FFmpeg uzantısı:
build_ffmpeg.sh
ürününün GNU'nun yerine LLVM'nin bin utils aracına bağımlı olmasını sağlayın (#9933).
- Android 12 uyumluluğu:
- Cast uzantısını,
com.google.android.gms:play-services-cast-framework:20.1.0
öğesine bağlı olacak şekilde yeni sürüme geçirin.play-services-cast-framework
uygulamasının önceki sürümleri Android 12'yi hedefleyen uygulamalarla uyumlu değildir vePendingIntent
oluşturulurkenIllegalArgumentException
nedeniyle kilitlenir (#9528).
- Cast uzantısını,
- Kullanımdan kaldırılan sembolleri kaldırın:
Player.EventListener
öğesini kaldır 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 Bunun yerineMediaItem.Builder#setStreamKeys
kullanın.MediaSourceFactory#createMediaSource(Uri)
öğesini kaldır Bunun yerineMediaSourceFactory#createMediaSource(MediaItem)
kullanın.setTag
kullanıcısınıDashMediaSource
,HlsMediaSource
veSsMediaSource
ağlarından kaldırın. Bunun yerineMediaItem.Builder#setTag
politikasını kullanın.DashMediaSource#setLivePresentationDelayMs(long, boolean)
öğesini kaldır Manifest'i geçersiz kılmak içinMediaItem.Builder#setLiveConfiguration
veMediaItem.LiveConfiguration.Builder#setTargetOffsetMs
öğelerini, bir yedek değer sağlamak içinDashMediaSource#setFallbackTargetLiveOffsetMs
kullanın.(Simple)ExoPlayer.setThrowsWhenUsingWrongThread
öğesini kaldır İş parçacığını zorunlu kılmayı 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
uygulamasını kullanmak üzere ExoPlayer 2.16.1 veya daha eski bir sürümü kullanın.ProgressiveMediaSource#setExtractorsFactory
öğesini kaldır Bunun yerineProgressiveMediaSource.Factory(DataSource.Factory, ExtractorsFactory)
oluşturucuyu kullanın.ProgressiveMediaSource.Factory#setTag
ve ileProgressiveMediaSource.Factory#setCustomCacheKey
öğelerini kaldırın. Bunun yerineMediaItem.Builder#setTag
veMediaItem.Builder#setCustomCacheKey
değerlerini kullanın.DefaultRenderersFactory(Context, @ExtensionRendererMode int)
veDefaultRenderersFactory(Context, @ExtensionRendererMode int, long)
kurucularını kaldırın. Bunun yerineDefaultRenderersFactory(Context)
oluşturucuyu (DefaultRenderersFactory#setExtensionRendererMode
veDefaultRenderersFactory#setAllowedVideoJoiningTimeMs
) kullanın.- Herkese açık tüm
CronetDataSource
oluşturucularını kaldırın. Bunun yerineCronetDataSource.Factory
kullanın.
- Aşağıdaki
IntDefs
değerini yalnızca@Target(TYPE_USE)
olarak değiştirin. Bu durum, Kotlin'deki kullanım derlemesini bozabilir. Bu durum, ek açıklamayı türe (Int
) ek açıklama olarak taşıyarak sorunu giderebilir.@AacAudioObjectType
@Ac3Util.SyncFrameInfo.StreamType
@AdLoadException.Type
@AdtsExtractor.Flags
@AmrExtractor.Flags
@AspectRatioFrameLayout.ResizeMode
@AudioFocusManager.PlayerCommand
@AudioSink.SinkFormatSupport
@BinarySearchSeeker.TimestampSearchResult.Type
@BufferReplacementMode
@C.BufferFlags
@C.ColorRange
@C.ColorSpace
@C.ColorTransfer
@C.CryptoMode
@C.Encoding
@C.PcmEncoding
@C.Projection
@C.SelectionReason
@C.StereoMode
@C.VideoOutputMode
@CacheDataSource.Flags
@CaptionStyleCompat.EdgeType
@DataSpec.Flags
@DataSpec.HttpMethods
@DecoderDiscardReasons
@DecoderReuseResult
@DefaultAudioSink.OutputMode
@DefaultDrmSessionManager.Mode
@DefaultTrackSelector.SelectionEligibility
@DefaultTsPayloadReaderFactory.Flags
@EGLSurfaceTexture.SecureMode
@EbmlProcessor.ElementType
@ExoMediaDrm.KeyRequest.RequestType
@ExtensionRendererMode
@Extractor.ReadResult
@FileTypes.Type
@FlacExtractor.Flags
(com.google.android.exoplayer2.ext.flac
paketinde)@FlacExtractor.Flags
(com.google.android.exoplayer2.extractor.flac
pakette)@FragmentedMp4Extractor.Flags
@HlsMediaPlaylist.PlaylistType
@HttpDataSourceException.Type
@IllegalClippingException.Reason
@IllegalMergeException.Reason
@LoadErrorHandlingPolicy.FallbackType
@MatroskaExtractor.Flags
@Mp3Extractor.Flags
@Mp4Extractor.Flags
@NotificationUtil.Importance
@PlaybackException.FieldNumber
@PlayerNotificationManager.Priority
@PlayerNotificationManager.Visibility
@PlayerView.ShowBuffering
@Renderer.State
@RendererCapabilities.AdaptiveSupport
@RendererCapabilities.Capabilities
@RendererCapabilities.DecoderSupport
@RendererCapabilities.FormatSupport
@RendererCapabilities.HardwareAccelerationSupport
@RendererCapabilities.TunnelingSupport
@SampleStream.ReadDataResult
@SampleStream.ReadFlags
@StyledPlayerView.ShowBuffering
@SubtitleView.ViewType
@TextAnnotation.Position
@TextEmphasisSpan.MarkFill
@TextEmphasisSpan.MarkShape
@Track.Transformation
@TrackOutput.SampleDataPart
@Transformer.ProgressState
@TsExtractor.Mode
@TsPayloadReader.Flags
@WebvttCssStyle.FontSizeUnit
Sürüm 1.0.0-alpha01
27 Ekim 2021
androidx.media3:media3-*:1.0.0-alpha01
yayınlandı.
1.0.0-alpha01 sürümü bu kayıtları içerir.
Yeni özellikler
Media3, ExoPlayer gibi medya destek kitaplıklarının yeni adresidir. İlk alfa, aşağıdakiler dahil olmak üzere medya kullanım alanlarını uygulamak için kitaplıkların erken, işlevsel uygulamalarını içerir:
- Özelleştirmesi ve genişletmesi kolay, Android için uygulama düzeyinde bir medya oynatıcı olan ExoPlayer.
- Oynatmaları göstermek ve kontrol etmek için medya oturumu işlevi. Bu yeni oturum modülü, ExoPlayer ile aynı
Player
arayüzünü kullanır. - Medya oynatma kullanıcı arayüzleri oluşturmaya yönelik kullanıcı arayüzü bileşenleri.
- ExoPlayer ile kullanmak üzere diğer kitaplıklardaki işlevleri sarmalayan modüller (ör. IMA SDK aracılığıyla reklam ekleme).
Daha fazla bilgi için Media3 GitHub projesine bakın.
ExoPlayer daha önce ayrı bir ExoPlayer GitHub projesinde barındırılıyordu. Media3'te paket adı androidx.media3.exoplayer
şeklindedir. Uygulamaların Media3'e geçmesi için zaman tanımak amacıyla ExoPlayer GitHub projesini bir süre daha sürdürüp yayınlamayı planlıyoruz. Media3'te, yeni media3-session
modülüyle değiştirilen eski media2 ve mediasession uzantıları dışında tüm ExoPlayer modüllerinin yerine kullanılan alternatifler bulunur. Bu, bağdaştırıcı/bağlayıcı sınıfı kullanmaya gerek kalmadan oynatıcılar ve medya oturumları arasında doğrudan entegrasyon sağlar.