Medya3

Medya kullanım alanları için destek kitaplıkları.
Son Güncelleme Kararlı Sürüm Serbest Bırakma Adayı Beta Sürümü Alfa Sürümü
7 Şubat 2024 1.2.1 - 1.3.0-beta01 1.3.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.2.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.2.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.3.0

Sürüm 1.3.0-beta01

7 Şubat 2024

androidx.media3:media3-*:1.3.0-beta01 yayınlandı. 1.3.0-beta01 sürümü bu kayıtları içerir.

  • Ortak Kitaplık:
    • En az biri null olmadığında hem artworkUri hem de artworkData değerlerini MediaMetadata.Builder.populate(MediaMetadata) içinde doldurun (#964).
  • ExoPlayer:
    • 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 bir CompositeSequenceableLoaderFactory uygulayarak yapılabilir.
    • Aynı saati tekrar yapmanın bu öğedeki meta verilerin silinmesine neden olduğu sorunu düzeltin (#1007).
    • BundledChunkExtractor.Factory ve DefaultHlsExtractorFactory üzerindeki experimentalSetSubtitleParserFactory yöntemlerini setSubtitleParserFactory olarak yeniden adlandırın ve null iletilmesine izin vermeyin. Ayrıştırma davranışını kontrol etmek için yeni experimentalParseSubtitlesDuringExtraction(boolean) yöntemlerini kullanın.
    • Çıkarma sırasında kullanılan SubtitleParser.Factory özelleştirme desteği ekleyin. Bunu, MediaSource.Factory.setSubtitleParserFactory() ile yapabilirsiniz.
  • Ayıklayıcılar:
    • 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 önce Info 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).
  • 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.
  • Oturum:
    • TV uygulamaları için çift tıklama algılamayı devre dışı bırakın (#962).

Sürüm 1.3.0-alpha01

15 Ocak 2024

  • Ortak Kitaplık:
    • package'nin mevcut uygulamanın paketinden farklı olduğu android.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 bir Uri yerine tam MediaItem 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.
  • ExoPlayer:
    • Uygulamaların bir içerik medya kaynağını oynatmadan önce belirli bir başlangıç konumunda önceden yüklemesine olanak tanıyan PreloadMediaSource ve PreloadMediaPeriod öğ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. Uygulamalar PreloadMediaSource.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ğlayan ExoPlayer.setImageOutput ekleyin.
    • DefaultRenderersFactory artık boş ImageOutput ve ImageDecoder.Factory.DEFAULT ile oynatıcıya varsayılan olarak bir ImageRenderer 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 olan HttpEngineDataSource uygulayın.
  • 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.
  • 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ğer false, yani video parçası seçimine öncelik verilir.
  • Ayıklayıcılar:
    • ColorInfo.colorSpace, ColorInfo.colorTransfer ve ColorInfo.colorRange değerlerini almak için MP4 ayıklayıcıya ek AV1C ayrıştırması ekleyin (#692).
  • Video:
    • VideoFrameProcessor.Factory bağımsız değişkeni alan MediaCodecVideoRenderer kurucusunu değiştirin ve bunu VideoSinkProvider bağımsız değişkeni alan bir kurucuyla değiştirin. Özel VideoFrameProcessor.Factory yerleştirmek isteyen uygulamalar, özel VideoFrameProcessor.Factory kullanan bir CompositingVideoSinkProvider örneği oluşturabilir ve video havuzu sağlayıcısını MediaCodecVideoRenderer öğesine iletebilir.
  • Metin:
    • DefaultExtractorsFactory.setTextTrackTranscodingEnabled kullanılırken Tried 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 olarak rowLock ve columnLock öğelerinin doğru olarak kabul edilmesi gerektiğini belirtir (columnLock desteği uygulanmadığından her zaman yanlış olduğu varsayılır).
  • DRM:
  • 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.
  • 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.
  • 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.

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 tekrar min/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ından bufferedDurationUs için negatif değerler alması ve bunun IllegalArgumentException (#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).
  • Ses:
    • Birden çok kez çağrıldığında SilenceSkippingAudioProcessor için EOS'nin işlenmesi düzeltildi (#712).
  • 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.
  • Oturum:
    • MediaMetadataCompat türündeki özel anahtarları ve değerleri MediaMetadata.extras öğesine ve MediaMetadata.extras öğesine MediaMetadataCompat (#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ü:
    • BottomSheetDialogFragment'te Materyal Tasarım ile kullanıldığında ileri ve geri sarma düğmelerinin görünür olmaması sorunu düzeltildi (#511).
    • PlayerControlView öğesinin ileri sarma düğmesindeki sayıların yanlış hizalanması (#547) sorununu düzeltin.
  • 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.):
    • MIDI: İleriye doğru aramayla Program Değişikliği etkinliklerini atlama sorunu düzeltildi (#704).
    • FFmpeg 6.0'a geçiş yapın ve desteklenen NDK'yı r26b olarak güncelleyin (#707, #867).
  • Cast Uzantısı:
    • Yayın cihazında medya yüklenemediğinde uygulamanın kilitlenmemesi için Timeline oluşturma işlemini sadeleştirin (#708).

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öntemlerin message parametresi artık Log.{d,i,w,e}() yöntemlerine geçirilen Throwable hakkında herhangi bir bilgi içermediğinden, uygulamaların istenirse bu bilgileri manuel olarak eklemesi gerekir (muhtemelen Logger.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 ve SimpleDecoder 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) veya MediaSession.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 öğesini Player 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 nedeni Player.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ılan MediaItem güncellemelerini kabul etmek için MediaSource.canUpdateMediaItem ve MediaSource.updateMediaItem öğelerini ekleyin.
    • Kitaplık tarafından Player.replaceMediaItem(s) aracılığıyla sağlanan tüm MediaSource sınıfları için MediaItem 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 okuyan PngExtractor özelliğini tek bir örnek olarak ekleyin.
    • SequenceableLoader arayüzündeki SequenceableLoader.continueLoading(long) yöntemini SequenceableLoader.continueLoading(LoadingInfo loadingInfo) olarak iyileştirin. LoadingInfo, mevcut playbackPositionUs parametresine ek olarak playbackSpeed ve lastRebufferRealtimeMs dahil olmak üzere ek parametreler içerir.
    • ChunkSource arayüzündeki ChunkSource.getNextChunk(long, long, List, ChunkHolder) yöntemini ChunkSource.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çindeki ConcurrentModificationException sorununu düzeltin (#612).
    • CompositeMediaSource.getMediaTimeForChildMediaTime hedefine MediaPeriodId parametresini ekleyin.
    • ConcatenatingMediaSource2 içinde ClippingMediaSource (ve dönem/aralık zaman farkları olan diğer kaynaklar) desteklensin (#11226).
    • MediaPeriodId bağımsız değişkeni de almak için BaseRenderer.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 yerine Composition.HdrMode ve ilişkili sabit değerlerini kullanın.
    • Rotasyon sorunlarını düzeltmek için OverlaySettings basitleştirin.
    • SampleConsumer.queueInputBitmap kapsamındaki frameRate ve durationUs parametreleri TimestampIterator 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, mevcut true davranışında kalır.
  • 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 örneklerinin instanceof ile doğrudan incelenebileceği varsayımını ortadan kaldırın. Bir Extractor öğesinin uygulama ayrıntılarına çalışma zamanı erişimi istiyorsanız önce Extractor.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 alan AudioSink.getFormatOffloadSupport(Format) ekleyin. isFormatSupported, isGaplessSupported ve isSpeedChangeSupported değerlerini içeren yeni AudioOffloadSupport 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çindeki setAudioOffloadPreference 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ırsa DefaultTrackSelector 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ından enableOffload 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 ve AudioOffloadListener.onExperimentalOffloadSchedulingEnabledChanged verilerini silin.
    • onExperimentalSleepingForOffloadChanged yeniden onSleepingForOffloadChanged ve onExperimentalOffloadedPlayback, onOffloadedPlayback olarak yeniden adlandırıldı.
    • Ses boşaltma moduyla ilgili TrackSelectionParameters arayüzlerini ve tanımlarını bir dahili AudioOffloadPreferences sınıfına taşıyın.
    • AnalyticsListener, AudioRendererEventListener ve AudioSink.Listener kampanyalarına onAudioTrackInitialized ve onAudioTrackReleased 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.
  • Video:
    • MediaCodecVideoRenderer uygulamasının özel bir VideoFrameProcessor.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ır sampleMimeType = application/x-media3-cues ile metin kanalları artık SubtitleDecoder örneğine gerek kalmadan doğrudan TextRenderer 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.
  • 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. Uygulamalar VideoFrameProcessor.Listener#onInputStreamRegistered()'yi kullanmalıdır.
    • VideoFrameProcessor.queueInputBitmap kapsamındaki frameRate ve durationUs parametreleri TimestampIterator olarak değiştirildi.
  • 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ıyken MediaController.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çin notifyChildrenChanged() ç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ündeki queue düğmesi gösterilmez (#339).
    • SimpleBitmapLoader yerine varsayılan olarak DataSourceBitmapLoader 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 bir Player.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).
  • İ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ıca dataSync iznini manifest dosyasına foregroundServiceType olarak eklemesi ve FOREGROUND_SERVICE_DATA_SYNC iznini (#11239) eklemesi gerekir.
  • 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).
  • 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 olan C.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 ve SimpleDecoder.isAtLeastOutputStartTimeUs ekleyin. Kullanımdan kaldırılacak olan Buffer.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).
  • Test Yardımcı Programları:
    • TestExoPlayerBuilder ve FakeClock öğ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) ve TransformationRequest.Builder.experimental_setEnableHdrEditing(boolean) öğelerini kaldırın. Bunun yerine Composition.Builder.setHdrMode(int) kullanın ve Composition değerini Transformer.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).
  • ExoPlayer:
    • PlaybackStatsListener uygulamasında, oynatma listesi temizlendikten sonra sahte PlaybackStats 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ün STATE_ENDED ürününe hiç geçiş yapmamasına neden olan hata düzeltildi (#538).
  • 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 bunu MediaSession.Callback.onConnect üzerinde AcceptedResultBuilder kullanarak yapabilir.
    • MediaLibraryServiceLegacyStub ürününün bunu desteklemeyen bir Result öğesine hata gönderdiği ve UnsupportedOperationException (#78) hatasına neden olduğu durumları düzeltin.
    • Hem eski komutlar (COMMAND_ADJUST_DEVICE_VOLUME ve COMMAND_SET_DEVICE_VOLUME) hem de yeni komutlar (COMMAND_ADJUST_DEVICE_VOLUME_WITH_FLAGS ve COMMAND_SET_DEVICE_VOLUME_WITH_FLAGS) (#554) üzerinden volumeControlType belirleyerek PlayerWrapper ürününün VolumeProviderCompat oluşturma şeklini düzeltin.

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çin Builder 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) ve setDeviceVolume(int, int)
      • increaseDeviceVolume(int) ve increaseDeviceVolume(int, int)
      • decreaseDeviceVolume(int) ve decreaseDeviceVolume(int, int)
    • Kullanılabilir kanal türlerini bir MediaSource'dan filtrelemek için FilteringMediaSource 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 ve sid) 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.
    • 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çin ExoPlayer.setVideoEffects() ekleyin.
    • sourceId öğesini int yerine long olarak depolamak için SampleQueue uygulamasını güncelleyin. Bu işlem, herkese açık yöntemlerin SampleQueue.sourceId ve SampleQueue.peekSourceId imzalarını değiştirir.
    • LoadControl yöntemlerine, shouldStartPlayback ve onTracksSelected yöntemlerinin ilgili MediaPeriod 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) ve BaseMediaSource.createEventDispatcher(..., long mediaTimeOffsetMs) öğelerini kullanımdan kaldırın. Bunun yerine, yöntemlerin mediaTimeOffsetUs içermeyen varyantı çağrılabilir. Kullanımdan kaldırılan varyantlarda bile ofsetin, görev dağıtıcı tarafından gönderilen MediaLoadData nesnelerinin startTimeUs ve endTimeUs öğelerine eklenmediğini unutmayın.
    • ExoTrackSelection.blacklist öğesinin adını excludeTrack, isBlacklisted adını ise isTrackExcluded olarak değiştirin.
    • Boş bir oynatma listesinden çağrıldığında ExoPlayer.setMediaItem(s) ile addMediaItem(s) arasındaki tutarsız davranış düzeltildi.
  • Dönüştürücü:
    • Transformer.Builder.setMediaSourceFactory(MediaSource.Factory) öğesini kaldır Bunun yerine ExoPlayerAssetLoader.Factory(MediaSource.Factory) ve Transformer.Builder.setAssetLoaderFactory(AssetLoader.Factory) kullanın.
    • Transformer.startTransformation(MediaItem, ParcelFileDescriptor) öğesini kaldır
    • Bir giriş karesinin işlenmeyi beklediği sırada video akışı sonu sinyali veriliyorsa dönüşümün takılabileceği (muxer'ın zaman aşımına uğramasına neden olan) hata düzeltmesi.
    • Desteği genişletmek için findDecoder/EncoderForFormat yardımcı programları kullanmak yerine MediaCodecList 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ğinde DefaultTrackSelector yeni bir kanal seçimini tetikler.
  • Ayıklayıcılar:
    • Ogg: Uzun süreli dosyalarda arama yaparken karşılaşılan hata düzeltildi (#391).
    • FMP4: TimestampAdjuster öğesinin, emsg atomundan meta veri örnek zamanı ile yanlış bir zaman damgası aralığı başlatması sorununu düzeltin (#356).
  • 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() ve AudioSink.release() ekleyin.
    • DefaultAudioSink ses özellikleri değişikliklerini dinleyin. DefaultAudioSink oluşturucuya, DefaultAudioSink öğesinin AudioCapabilitiesReceiver için işleyici olarak kaydedileceği gerekli bir context parametresini ekleyin ve bir özellik değişikliğiyle bilgilendirildiğinde audioCapabilities özelliğini güncelleyin.
    • Ses özelliklerindeki değişiklikleri AudioSink.Listener arayüzünde yeni bir etkinlik onAudioCapabilitiesChanged ve onRendererCapabilitiesChanged etkinliklerini tetikleyen yeni bir arayüz RendererCapabilities.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).
  • Video:
    • Oluşturucu devre dışı bırakıldığında MediaCodecVideoRenderer ürününün genişliği ve yüksekliği 0 olan bir VideoSize raporu yapın. Player.getVideoSize() değiştiğinde Player.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.
  • 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çin MediaSession.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ı durumunda Player öğesine iletilmesine izin vermek için MediaSession.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ı durumunda Player öğesine iletilmesine izin vermek için MediaSession.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).
  • Kullanıcı arayüzü:
    • Oynat/duraklat düğmesiyle özel kullanıcı arayüzü öğeleri yazmak için shouldShowPlayButton ve handlePlayPauseButtonAction Util yöntemlerini ekleyin.
  • RTSP Uzantısı:
    • MPEG4-LATM için Yanıt SDP mesajını açıklama alanında yoksa varsayılan profil düzeyi kimlik değerini kullanın (#302).
    • AÇIKLAMA yanıt başlığında (#11160) varsa RTSP oturumundan göreli yol çözümü için temel Uri'yi kullanın.
  • DASH Uzantısı:
    • Çok dönemli DASH akışları için MediaLoadData.startTimeMs ve MediaLoadData.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.
  • HLS Uzantısı:
    • Yükleme iş parçacığının TimestampAdjuster öğesinin başlatılmasını beklemesi için zaman aşımı ayarlamak üzere HlsMediaSource.Factory.setTimestampAdjusterInitializationTimeoutMs(long) ekleyin. Başlatma, zaman aşımına uğramadan önce tamamlanmazsa oynatmanın sonsuza kadar durmasını önlemek için bir PlaybackException gönderilir. Zaman aşımı varsayılan olarak sıfıra ayarlanır (#323).
  • 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 yerine DefaultAudioSink.Builder kullanın.
    • HlsMasterPlaylist öğesini kaldırın, bunun yerine HlsMultivariantPlaylist kullanın.
    • Player.stop(boolean) öğesini kaldır Bunun yerine Player.stop() ve Player.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 yerine DatabaseProvider alan, kullanımdan kaldırılmayan bir oluşturucu kullanın.
    • DefaultBandwidthMeter oluşturucuyu kaldırın, bunun yerine DefaultBandwidthMeter.Builder kullanın.
    • DefaultDrmSessionManager kurucularını kaldırın, bunun yerine DefaultDrmSessionManager.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 ve DownloadHelper.forSmoothStreaming öğelerini kaldırın, bunun yerine DownloadHelper.forMediaItem kullanın.
    • Kullanımdan kaldırılan DownloadService oluşturucuyu kaldırın ve channelDescriptionResourceId 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 ve UTF16LE_NAME) kaldırın, bunun yerine kotlin.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ılan createVideoSampleFormat, createAudioSampleFormat, createContainerFormat ve createSampleFormat yöntemlerini kaldırın. Bunun yerine, Format örnekleri oluşturmak için Format.Builder kullanın.
    • Kullanımdan kaldırılan yöntemler olan copyWithMaxInputSize, copyWithSubsampleOffsetUs, copyWithLabel, copyWithManifestFormatInfo, copyWithGaplessInfo, copyWithFrameRate, copyWithDrmInitData, copyWithMetadata, copyWithBitrate ve copyWithVideoSize yöntemlerini kaldırın. Bunların yerine Format.buildUpon() ve tanımlayıcı yöntemlerini kullanın.
    • Kullanımdan kaldırılan ExoPlayer.retry() uzantısını kaldırın, bunun yerine prepare() kullanın.
    • Kullanımdan kaldırılan sıfır bağımsız değişkenli DefaultTrackSelector oluşturucuyu kaldırın, bunun yerine DefaultTrackSelector(Context) kullanın.
    • Kullanımdan kaldırılan OfflineLicenseHelper oluşturucuyu kaldırın, bunun yerine OfflineLicenseHelper(DefaultDrmSessionManager, DrmSessionEventListener.EventDispatcher) kullanın.
    • Kullanımdan kaldırılan DownloadManager oluşturucuyu kaldırın, bunun yerine Executor alan oluşturucuyu kullanın.
    • Kullanımdan kaldırılan Cue oluşturucularını kaldırın, bunun yerine Cue.Builder kullanın.
    • Kullanımdan kaldırılan OfflineLicenseHelper oluşturucuyu kaldırın, bunun yerine OfflineLicenseHelper(DefaultDrmSessionManager, DrmSessionEventListener.EventDispatcher) kullanın.
    • Kullanımdan kaldırılan dört AnalyticsListener yöntemini kaldırın:
      • onDecoderEnabled, bunun yerine onAudioEnabled ve/veya onVideoEnabled kullanın.
      • onDecoderInitialized, bunun yerine onAudioDecoderInitialized ve/veya onVideoDecoderInitialized kullanın.
      • onDecoderInputFormatChanged, bunun yerine onAudioInputFormatChanged ve/veya onVideoInputFormatChanged kullanın.
      • onDecoderDisabled, bunun yerine onAudioDisabled ve/veya onVideoDisabled kullanın.
    • Kullanımdan kaldırılan Player.Listener.onSeekProcessed ve AnalyticsListener.onSeekProcessed öğelerini kaldırın. Bunun yerine onPositionDiscontinuity ile DISCONTINUITY_REASON_SEEK kullanın.
    • ExoPlayer.setHandleWakeLock(boolean) öğesini kaldırın, bunun yerine setWakeMode(int) kullanın.
    • Kullanımdan kaldırılan DefaultLoadControl.Builder.createDefaultLoadControl() uzantısını kaldırın, bunun yerine build() kullanın.
    • Kullanımdan kaldırılan MediaItem.PlaybackProperties uzantısını kaldırın, bunun yerine MediaItem.LocalConfiguration kullanın. Kullanımdan kaldırılan MediaItem.playbackProperties alanı artık MediaItem.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 öğesinde C.BUFFER_FLAG_LAST_SAMPLE işareti olup olmadığını belirten Buffer.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 bir MediaSessionCompat 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'ye params.isRecent == true ile yapılan bir çağrı için MediaLibraryService değerinin null değerini döndürmesini engelleyen hata düzeltildi.
    • MediaSessionService veya MediaLibraryService bellek sızıntısını düzeltin (#346).
    • Bir MediaSession içinde birleşik Timeline ve konum güncellemesinin, MediaController öğesinin IllegalStateException 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 öğesinin MediaController özelliğinde istisnaya neden olduğu hatayı düzeltin (#290).
    • MediaSession.broadcastCustomCommand yönlendirmesinin eksik olan kısmını eski MediaControllerCompat.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 bir MediaController öğesinden gönderilen TrackSelectionOverride örneklerinin yoksayılmasıyla ilgili sorunu düzeltin.
    • Eski MediaSessionCompat üzerinden meta verilere erişmek için Player.COMMAND_GET_CURRENT_MEDIA_ITEM öğesinin kullanılabilir olması gerektiği sorunu düzeltin.
    • Arka plan iş parçacığındaki MediaSession örneklerinin MediaSessionService öğ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).
  • 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:
    • API 33'teki ağ türü algılamasını düzeltin (#10970).
    • ExoPlayer.isTunnelingEnabled aranırken NullPointerException sorunu düzeltildi (#10977).
  • İndirmeler:
    • SegmentDownloader ve alt sınıflarda birleştirilecek iki segmentin başlangıç zamanı için maksimum farkı belirleyin (#248).
  • Ses:
    • Samsung cihazlarda bozuk aralıksız MP3 çalma sorununu düzeltme (#8594).
    • Sesi devre dışı bıraktıktan hemen sonra ayarlanan oynatma hızlarının, önceki bir hız değişikliğiyle geçersiz kılınmasına yol açan hata düzeltildi (#10882).
  • Video:
    • HEVC HDR10 biçimini HEVCProfileMain10 yerine HEVCProfileMain10HDR10 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.
  • Yayınlama:
    • Medya öğeleri arasında geçiş yaparken geçici STATE_IDLE sorununu düzeltin (#245).
  • 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.

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).
  • Ayıklayıcılar:
    • Trak atomlarını ayrıştırırken örnek tabloda (stbl) gerekli bir örnek açıklama (stsd) eksikse NullPointerException yerine ParserException çalıştırın.
    • fMP4'te doğrudan bir senkronizasyon karesine arama yaparken örnekleri doğru şekilde atlayın (#10941).
  • 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).
  • Metin:
    • Bir altyazı dosyasında hiç işaret yoksa TextRenderer öğesinin geçersiz (negatif) dizinden Subtitle.getEventTime parametresine geçmesi sorununu düzeltin.
    • SubRip: Bayt sırası işaretiyle başlayan UTF-16 dosyaları için destek ekleyin.
  • 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 yerine MediaMetadata.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).
  • Oturum:
    • Özel oynatıcılar için Player arayüzünün uygulanmasına yardımcı olmak üzere soyut SimpleBasePlayer 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 öğesinin getMediaButtons() 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çin onSetMediaItems 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).
  • 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 yerine MediaMetadata.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 bir focusSkipButtonWhenAvailable özelliği ekleyin.
    • Atla düğmesine odaklanmayı programatik olarak istemek için ImaServerSideAdInsertionMediaSource.AdsLoader öğesine bir focusSkipButton() yöntemi ekleyin.
    • IMA SDK sürümünü 3.29.0'a yükseltin.
  • 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çin WrappingMediaSource 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 veya seekToPrevious çağırırken eksik onMediaItemTransition 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).
  • 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.
  • 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ğu ProgressiveDownloader 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).
  • 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çin SingleThreadExecutor 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).
  • 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çin MetadataRenderer(MetadataOutput, Looper, MetadataDecoderFactory, boolean) ile bir örnek oluşturun.
  • DRM:
    • Android 13 ClearKey uygulamasında, boş olmayan ancak geçersiz bir lisans URL'si döndüren bir 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).
  • Kullanıcı arayüzü:
    • Oynatıcının mevcut geçersiz kılmalarını TrackSelectionDialogBuilder (#10429) içinde hazır ayar olarak kullanı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çin DefaultMediaNotificationProvider.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çin DefaultMediaNotificationProvider.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:
    • H263 parçalı paket işleme ekleyin (#119).
    • MP4A-LATM desteği ekleyin (#162).
  • 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 ederken CastPlayer tanımlayabilmek için getDeviceInfo() uygulayın (#142).
  • 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 öğesini ExoPlayer.setShuffleOrder ile değiştirmenin reason=Player.TIMELINE_CHANGE_REASON_PLAYLIST_CHANGED(#9889) ile Player.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ışmayan setDataSourceFactory uygulanması düzeltildi (#116).
  • Ayıklayıcılar:
    • H265 kısa süreli referans resim kümelerinin ayrıştırılması düzeltildi (#10316).
    • esds kutularındaki bit hızlarının ayrıştırmasını düzeltin (#10381).
  • 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ğındaki playWhenReady değişiklikleri dinleyin (10420).
  • Yayınlama:
    • Oynatma listesi yöntemlerine CastTimeline içinde Window.mediaItem olarak iletilen MediaItem kodunu (#25, #8212) kullanın.
    • Player.getMetadata() ve Listener.onMediaMetadataChanged() hizmetlerini CastPlayer ile destekleyin (#25).

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 öğesinin MediaSource.Factory.setDrmSessionManagerProvider ve MediaSource.Factory.setLoadErrorHandlingPolicy öğelerine iletilmesine izin verme. Gerekirse DefaultDrmSessionManagerProvider ve DefaultLoadErrorHandlingPolicy örnekleri açık bir şekilde iletilebilir.
    • Tam LocalConfiguration bilinmediğinde medya oynatmak için gereken meta verileri temsil etmek üzere MediaItem.RequestMetadata ekleyin. Ayrıca, MediaMetadata.mediaUrl artık RequestMetadata 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 ve TrackSelectionOverride sınıfını üst düzey sınıfa yükselt.
    • TracksInfo alan adını Tracks, TracksInfo.TrackGroupInfo adını da Tracks.Group olarak değiştirin. Player.getCurrentTracksInfo ve Player.Listener.onTracksInfoChanged özellikleri de Player.getCurrentTracks ve Player.Listener.onTracksChanged olarak yeniden adlandırıldı. Bu, farklı parametre türleriyle Player.Listener.onTracksChanged yöntem adının "kullanımdan kaldırılmasını" içerir.
    • DefaultTrackSelector.buildUponParameters ve DefaultTrackSelector.Parameters.buildUpon öğelerini, kullanımdan kaldırılan DefaultTrackSelector.ParametersBuilder yerine DefaultTrackSelector.Parameters.Builder değerini döndürecek şekilde değiştirin.
    • Varsayılan olarak etkinleştirilen DefaultTrackSelector.Parameters.constrainAudioChannelCountToDeviceCapabilities özelliğini ekleyin. Etkinleştirildiğinde DefaultTrackSelector, kanal sayısı cihaz çıkış özelliklerini aşmayan ses parçalarını tercih eder. Avuç içi cihazlarda DefaultTrackSelector, ç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ıca DefaultTrackSelector, 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çin DefaultTrackSelector örneği bir Context 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 olan AudioAttributes.getAudioAttributesV21() döndürme türünü yeni AudioAttributesV21 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 maskesiyle AudioFormat.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> yerine CueGroup değerini döndürmek için Player.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:
    • AVI için destek ekleyin (#2092).
    • Matroska: Opus parçaları için DiscardPadding ayrıştırma
    • MP4: esds kutulardan bit hızlarını ayrıştırın.
    • Ogg: Yinelenen Opus kimliğine ve yorum başlıklarına izin ver (#10038).
  • Kullanıcı arayüzü:
    • useController=false (#9605) durumunda, etkinliklerin PlayerView tarihinde ayarlanan OnClickListener öğelerine yayınlanmasını düzeltin. Ayrıca, tüm görünüm yapılandırmaları için OnLongClickListener ürününe etkinlik yayınlamasını da düzeltin.
    • ACTION_UP öncesinde PlayerView 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 ve TrackSelectionDialogBuilder öğelerini ExoPlayer yerine Player arayüzüyle çalışacak şekilde yeniden yazın. Bu, görünümlerin diğer Player 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 öğesinin DashMediaSource.Factory.setCompositeSequenceableLoaderFactory öğesine iletilmesine izin vermeyin. Gerekirse DefaultCompositeSequenceableLoaderFactory örnekleri açık bir şekilde aktarılabilir.
  • HLS:
    • Oynatma listesi CODECS özelliği, ses codec'ini (#10065) içermiyorsa yığın hazırlamaya geri dönün.
    • null öğesinin HlsMediaSource.Factory.setCompositeSequenceableLoaderFactory, HlsMediaSource.Factory.setPlaylistParserFactory ve HlsMediaSource.Factory.setPlaylistTrackerFactory öğelerine iletilmesine izin verme. Gerekirse DefaultCompositeSequenceableLoaderFactory, DefaultHlsPlaylistParserFactory örnekleri veya DefaultHlsPlaylistTracker.FACTORY referansı açıkça iletilebilir.
  • Sorunsuz Yayın:
    • null öğesinin SsMediaSource.Factory.setCompositeSequenceableLoaderFactory öğesine iletilmesine izin vermeyin. Gerekirse DefaultCompositeSequenceableLoaderFactory ö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ğerini MediaSession.Callback.onAddMediaItems ile değiştirin.
    • MediaController eski medya oturumuna bağlandığında setMediaItems(s) yöntemlerini destekleyin.
    • MediaController.setMediaUri ve MediaSession.Callback.onSetMediaUri öğelerini kaldırın. Aynı işleve MediaController.setMediaItem ve MediaSession.Callback.onAddMediaItems kullanılarak ulaşılabilir.
    • Medya oynatmak için eski MediaController çağrılarını onSetMediaUri yerine MediaSession.Callback.onAddMediaItems hedefine yönlendirin.
    • Bildirimin özelleştirilmesi için MediaNotification.Provider ve DefaultMediaNotificationProvider ekleyin.
    • Poster resimlerini indirmek için BitmapLoader ve SimpleBitmapLoader ö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ı da setCallback 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).
  • 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).
  • Kullanımdan kaldırılan sembolleri kaldırın:
    • Player.Listener.onTracksChanged(TrackGroupArray, TrackSelectionArray) öğesini kaldır Bunun yerine Player.Listener.onTracksChanged(Tracks) politikasını kullanın.
    • Player.getCurrentTrackGroups ve Player.getCurrentTrackSelections öğelerini kaldırın. Bunun yerine Player.getCurrentTracks politikasını kullanın. Ayrıca, ExoPlayer.getCurrentTrackGroups ve ExoPlayer.getCurrentTrackSelections kullanmaya devam edebilirsiniz, ancak bu yöntemler kullanımdan kaldırılmıştır.
    • DownloadHelper DEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_VIEWPORT ve DEFAULT_TRACK_SELECTOR_PARAMETERS sabit değerlerini kaldırın. Mümkün olduğunda bunun yerine getDefaultTrackSelectorParameters(Context), aksi halde DEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_CONTEXT kullanın.
    • DefaultTrackSelector(ExoTrackSelection.Factory) oluşturucuyu kaldırın. Bunun yerine DefaultTrackSelector(Context, ExoTrackSelection.Factory) politikasını kullanın.
    • Transformer.Builder.setContext öğesini kaldır Context, bunun yerine Transformer.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ışsa Factory değerine dönmek için SingleSampleMediaSource.Factory.setTrackId ve MediaItem.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() veya buildAudioRenderers() öğelerini geçersiz kılan DefaultRenderersFactory 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çin name ve genre ICY başlık alanlarını sırasıyla MediaMetadata.station ve MediaMetadata.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çin MediaCodecAdapter.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şturuculara ExoPlayer.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 yinelenen TrackGroup öğelerini engelleyin. TrackGroup oluşturucuda bir id ayarlanarak TrackGroup öğ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 yerine AudioCapabilities.DEFAULT_AUDIO_CAPABILITIES öğesinin açıkça iletilmesini gerektirecek şekilde AudioCapabilities API'lerini değiştirin.
    • DefaultAudioSink öğesine AudioTrackBufferSizeProvider ekleyerek AudioTrack 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:
    • WAV: RF64 akışları için destek ekleyin (#9543).
    • H.265 SPS NAL birimlerinin yanlış ayrıştırılması düzeltildi (#9719).
    • Ogg Opus ve Ogg Vorbis dosyalarında Vorbis yorumlarını (METADATA_BLOCK_PICTURE dahil) ayrıştırma.
  • Metin:
    • Yapılandırmadan (#9673) oluşturulan altyazı parçasının Format.id alanına aktarılan bir MediaItem.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.
  • DRM:
    • playbackLooper, DrmSessionManager.(pre)acquireSession hesabından kaldırılsın mı? DrmSessionManager, özel bir MediaSource içindeki bir uygulama tarafından kullanıldığında, bunun yerine playbackLooper öğesinin DrmSessionManager.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ü:
    • Belirli temaları kullanırken StyledPlayerView geri veya ileri sarma düğmelerindeki sayıların rengini düzeltin (#9765).
    • Oynatma hızı dizelerini doğru çevirin (#9811).
  • 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).
  • 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).
  • 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).
  • 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ıda setClearMediaItemsOnStop(false) çağrısı yapabilir.
  • Cast uzantısı:
    • CastPlayer ürününün onIsPlayingChanged yöntemini doğru şekilde çağırmasını engelleyen hatayı düzeltin (#9792).
    • Poster de dahil olmak üzere ses meta verilerini DefaultMediaItemConverter (#9663) ile destekleyin.
  • 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 ve PendingIntent oluşturulurken IllegalArgumentException nedeniyle kilitlenir (#9528).
  • Kullanımdan kaldırılan sembolleri kaldırın:
    • Player.EventListener öğesini kaldır Bunun yerine Player.Listener politikasını kullanın.
    • MediaSourceFactory#setDrmSessionManager, MediaSourceFactory#setDrmHttpDataSourceFactory ve MediaSourceFactory#setDrmUserAgent öğelerini kaldırın. Bunun yerine MediaSourceFactory#setDrmSessionManagerProvider kullanın.
    • MediaSourceFactory#setStreamKeys öğesini kaldır Bunun yerine MediaItem.Builder#setStreamKeys kullanın.
    • MediaSourceFactory#createMediaSource(Uri) öğesini kaldır Bunun yerine MediaSourceFactory#createMediaSource(MediaItem) kullanın.
    • setTag kullanıcısını DashMediaSource, HlsMediaSource ve SsMediaSource ağlarından kaldırın. Bunun yerine MediaItem.Builder#setTag politikasını kullanın.
    • DashMediaSource#setLivePresentationDelayMs(long, boolean) öğesini kaldır Manifest'i geçersiz kılmak için MediaItem.Builder#setLiveConfiguration ve MediaItem.LiveConfiguration.Builder#setTargetOffsetMs öğelerini, bir yedek değer sağlamak için DashMediaSource#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 ve ActionFileUpgradeUtil öğelerini kaldırın. Eski işlem dosyalarını DefaultDownloadIndex ile birleştirmek için ActionFileUpgradeUtil uygulamasını kullanmak üzere ExoPlayer 2.16.1 veya daha eski bir sürümü kullanın.
    • ProgressiveMediaSource#setExtractorsFactory öğesini kaldır Bunun yerine ProgressiveMediaSource.Factory(DataSource.Factory, ExtractorsFactory) oluşturucuyu kullanın.
    • ProgressiveMediaSource.Factory#setTag ve ile ProgressiveMediaSource.Factory#setCustomCacheKey öğelerini kaldırın. Bunun yerine MediaItem.Builder#setTag ve MediaItem.Builder#setCustomCacheKey değerlerini kullanın.
    • DefaultRenderersFactory(Context, @ExtensionRendererMode int) ve DefaultRenderersFactory(Context, @ExtensionRendererMode int, long) kurucularını kaldırın. Bunun yerine DefaultRenderersFactory(Context) oluşturucuyu (DefaultRenderersFactory#setExtensionRendererMode ve DefaultRenderersFactory#setAllowedVideoJoiningTimeMs) kullanın.
    • Herkese açık tüm CronetDataSource oluşturucularını kaldırın. Bunun yerine CronetDataSource.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.