Medya3

Medya kullanım alanları için kitaplıkları destekleyin.
Son Güncelleme Kararlı Sürüm Sürüm Adayı Beta Sürümü Alfa Sürümü
20 Aralık 2024 1.5.1 - - 1.6.0-alpha01

Bağımlılıkları beyan etme

Media3'e bağımlı 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ün build.gradle dosyasına ihtiyacınız olan yapıların bağımlılıklarını ekleyin:

Eski

dependencies {
    def media3_version = "1.4.1"

    // For media playback using ExoPlayer
    implementation "androidx.media3:media3-exoplayer:$media3_version"

    // For DASH playback support with ExoPlayer
    implementation "androidx.media3:media3-exoplayer-dash:$media3_version"
    // For HLS playback support with ExoPlayer
    implementation "androidx.media3:media3-exoplayer-hls:$media3_version"
    // For SmoothStreaming playback support with ExoPlayer
    implementation "androidx.media3:media3-exoplayer-smoothstreaming:$media3_version"
    // For RTSP playback support with ExoPlayer
    implementation "androidx.media3:media3-exoplayer-rtsp:$media3_version"
    // For MIDI playback support with ExoPlayer (see additional dependency requirements in
    // https://github.com/androidx/media/blob/release/libraries/decoder_midi/README.md)
    implementation "androidx.media3:media3-exoplayer-midi:$media3_version"
    // For ad insertion using the Interactive Media Ads SDK with ExoPlayer
    implementation "androidx.media3:media3-exoplayer-ima:$media3_version"

    // For loading data using the Cronet network stack
    implementation "androidx.media3:media3-datasource-cronet:$media3_version"
    // For loading data using the OkHttp network stack
    implementation "androidx.media3:media3-datasource-okhttp:$media3_version"
    // For loading data using librtmp
    implementation "androidx.media3:media3-datasource-rtmp:$media3_version"

    // For building media playback UIs
    implementation "androidx.media3:media3-ui:$media3_version"
    // For building media playback UIs for Android TV using the Jetpack Leanback library
    implementation "androidx.media3:media3-ui-leanback:$media3_version"

    // For exposing and controlling media sessions
    implementation "androidx.media3:media3-session:$media3_version"

    // For extracting data from media containers
    implementation "androidx.media3:media3-extractor:$media3_version"

    // For integrating with Cast
    implementation "androidx.media3:media3-cast:$media3_version"

    // For scheduling background operations using Jetpack Work's WorkManager with ExoPlayer
    implementation "androidx.media3:media3-exoplayer-workmanager:$media3_version"

    // For transforming media files
    implementation "androidx.media3:media3-transformer:$media3_version"

    // For applying effects on video frames
    implementation "androidx.media3:media3-effect:$media3_version"

    // For muxing media files
    implementation "androidx.media3:media3-muxer:$media3_version"

    // Utilities for testing media components (including ExoPlayer components)
    implementation "androidx.media3:media3-test-utils:$media3_version"
    // Utilities for testing media components (including ExoPlayer components) via Robolectric
    implementation "androidx.media3:media3-test-utils-robolectric:$media3_version"

    // Common functionality for reading and writing media containers
    implementation "androidx.media3:media3-container:$media3_version"
    // Common functionality for media database components
    implementation "androidx.media3:media3-database:$media3_version"
    // Common functionality for media decoders
    implementation "androidx.media3:media3-decoder:$media3_version"
    // Common functionality for loading data
    implementation "androidx.media3:media3-datasource:$media3_version"
    // Common functionality used across multiple media libraries
    implementation "androidx.media3:media3-common:$media3_version"
    // Common Kotlin-specific functionality
    implementation "androidx.media3:media3-common-ktx:$media3_version"
}

Kotlin

dependencies {
    val media3_version = "1.4.1"

    // For media playback using ExoPlayer
    implementation("androidx.media3:media3-exoplayer:$media3_version")

    // For DASH playback support with ExoPlayer
    implementation("androidx.media3:media3-exoplayer-dash:$media3_version")
    // For HLS playback support with ExoPlayer
    implementation("androidx.media3:media3-exoplayer-hls:$media3_version")
    // For SmoothStreaming playback support with ExoPlayer
    implementation("androidx.media3:media3-exoplayer-smoothstreaming:$media3_version")
    // For RTSP playback support with ExoPlayer
    implementation("androidx.media3:media3-exoplayer-rtsp:$media3_version")
    // For MIDI playback support with ExoPlayer (see additional dependency requirements in
    // https://github.com/androidx/media/blob/release/libraries/decoder_midi/README.md)
    implementation("androidx.media3:media3-exoplayer-midi:$media3_version")
    // For ad insertion using the Interactive Media Ads SDK with ExoPlayer
    implementation("androidx.media3:media3-exoplayer-ima:$media3_version")

    // For loading data using the Cronet network stack
    implementation("androidx.media3:media3-datasource-cronet:$media3_version")
    // For loading data using the OkHttp network stack
    implementation("androidx.media3:media3-datasource-okhttp:$media3_version")
    // For loading data using librtmp
    implementation("androidx.media3:media3-datasource-rtmp:$media3_version")

    // For building media playback UIs
    implementation("androidx.media3:media3-ui:$media3_version")
    // For building media playback UIs for Android TV using the Jetpack Leanback library
    implementation("androidx.media3:media3-ui-leanback:$media3_version")

    // For exposing and controlling media sessions
    implementation("androidx.media3:media3-session:$media3_version")

    // For extracting data from media containers
    implementation("androidx.media3:media3-extractor:$media3_version")

    // For integrating with Cast
    implementation("androidx.media3:media3-cast:$media3_version")

    // For scheduling background operations using Jetpack Work's WorkManager with ExoPlayer
    implementation("androidx.media3:media3-exoplayer-workmanager:$media3_version")

    // For transforming media files
    implementation("androidx.media3:media3-transformer:$media3_version")

    // For applying effects on video frames
    implementation("androidx.media3:media3-effect:$media3_version")

    // For muxing media files
    implementation("androidx.media3:media3-muxer:$media3_version")

    // Utilities for testing media components (including ExoPlayer components)
    implementation("androidx.media3:media3-test-utils:$media3_version")
    // Utilities for testing media components (including ExoPlayer components) via Robolectric
    implementation("androidx.media3:media3-test-utils-robolectric:$media3_version")

    // Common functionality for reading and writing media containers
    implementation("androidx.media3:media3-container:$media3_version")
    // Common functionality for media database components
    implementation("androidx.media3:media3-database:$media3_version")
    // Common functionality for media decoders
    implementation("androidx.media3:media3-decoder:$media3_version")
    // Common functionality for loading data
    implementation("androidx.media3:media3-datasource:$media3_version")
    // Common functionality used across multiple media libraries
    implementation("androidx.media3:media3-common:$media3_version")
    // Common Kotlin-specific functionality
    implementation("androidx.media3:media3-common-ktx:$media3_version")
}

Bağımlılıklar hakkında daha fazla bilgi için Derleme Bağımlılıkları Ekleme başlıklı makaleyi inceleyin.

Geri bildirim

Geri bildiriminiz Jetpack'in iyileştirilmesine yardımcı olur. Sorulara, bilinen sorunlara ve özellik isteklerine yanıt bulmak ve yeni sorunlar bildirmek için Media3 sorun izleyicisini kullanabilirsiniz.

1.6.0 sürümü

Sürüm 1.6.0-alpha01

20 Aralık 2024

androidx.media3:media3-*:1.6.0-alpha01 yayınlanır. 1.6.0-alpha01 sürümü bu taahhütleri içerir.

  • Ortak Kitaplık:
    • Format.toBundle(boolean excludeMetadata) yöntemini kaldırın, bunun yerine Format.toBundle() yöntemini kullanın.
    • androidx.media içindeki eşdeğer sınıfları değiştirmek için AudioManagerCompat ve AudioFocusRequestCompat ekleyin.
  • ExoPlayer:
    • Video parçasını seçerken dili göz önünde bulundurun. Varsayılan olarak, varsa seçili ses parçasının diliyle eşleşen bir "ana" video parçası seçin. Videonun uygunsuz dil tercihleri TrackSelectionParameters.Builder.setPreferredVideoLanguage(s) ile ifade edilebilir.
    • DefaultTrackSelector.selectVideoTrack() yöntemine selectedAudioLanguage parametresini ekleyin.
    • MediaSourceEventListener.onLoadStarted ve ilgili MediaSourceEventListener.EventDispatcher yöntemlerine retryCount parametresini ekleyin.
    • Oynatma listesi öğelerinin veya çok dönemli DASH akışlarındaki süreleri gerçek içerikle eşleşmeyen dönemlerin, öğenin sonunda kare donmasına neden olabileceği hatayı düzeltme (#1698).
    • DefaultLoadControl'deki bufferForPlaybackMs ve bufferForPlaybackAfterRebufferMs için varsayılan değerleri sırasıyla 1.000 ve 2.000 ms olarak azaltın.
    • MediaExtractor platformuna eşdeğer özellikler sunan yeni bir sınıf olan MediaExtractorCompat'ü ekleyin.
    • BasePreloadManager.Listener öğesini üst düzey bir PreloadManagerListener'e taşıyın.
    • RenderersFactory.createSecondaryRenderer, ön ısıtma için ikincil oluşturucular sağlamak üzere uygulanabilir. Ön ısıtma, oynatma sırasında medya öğeleri arasında daha hızlı geçiş yapılmasını sağlar.
    • DASH, HLS ve SmoothStreaming adaptif akış biçimlerinde manifest istekleri için CmcdData göndermeyi etkinleştirin (#1951).
    • MediaCodecRenderer.onReadyToInitializeCodec bölümünde başlatılacak codec'in MediaCodecInfo değerini sağlayın (#1963).
    • Reklam grupları ekleyerek AdPlaybackStates'un büyümesine izin vermek için AdsMediaSource değerini değiştirin. Geçersiz değişiklikler algılanır ve istisna atılır.
  • Dönüştürücü:
    • VideoFrameProcessor.registerInputStream ve VideoFrameProcessor.Listener.onInputStreamRegistered parametrelerini Format kullanacak şekilde güncelleyin.
    • Alternatif geriye dönük uyumlu biçimlere dönüştürme desteği eklendi.
    • DefaultEncoderFactory kullanırken HDR statik meta verileri oluşturun.
  • Ayıklayıcılar:
    • AVI: Akış başlığının, paket sayısı yerine bayt sayısını depoladığı sabit bit hızı sıkıştırılmış ses içeren dosyaların işlenmesi düzeltildi.
  • Ses:
    • onAudioPositionAdvancing işlevinin, oynatma devam ettiğinde çağrılması için düzeltin (daha önce oynatma duraklatıldığında çağrılıyordu).
  • Video:
    • MediaCodecVideoRenderer'ü, Surface olmadığında oluşturucunun yalnızca VideoFrameReleaseControl.getFrameReleaseAction FRAME_RELEASE_TRY_AGAIN_LATER olmadığında ilk kareleri atlayacağı şekilde düzeltin.
  • Metin:
    • MediaItem.Builder.setSubtitleConfigurations ile yapılandırılmış tüm altyazı dosyalarını yüklemeyi durdurun ve bunun yerine parça seçimiyle seçilirse yalnızca bir altyazı dosyası yükleyin (#1721).
  • Etki:
    • OverlaySettings işlevleri StaticOverlaySettings'a taşındı. OverlaySettings, dinamik yer paylaşımı ayarlarına izin vermek için alt sınıfa ayrılabilir.
  • Birleştiriciler:
    • Çok uzun bir tam nitelikli ad kullanmaktan kaçınmak için MuxerException, Muxer arayüzünden kaldırıldı.
  • Oturum:
    • "MediaButtonReceiver.shouldStartForegroundService" yöntemine parametre olarak "Context" değerini ekleyin (#1887).
  • Kullanıcı Arayüzü:
    • PlayerSurface Composable'ı media3-ui-compose modülüne ekleyin.
    • PlayPauseButtonState, NextButtonState, PreviousButtonState, RepeatButtonState, ShuffleButtonState sınıflarını ve bunlara karşılık gelen rememberPlayPauseButtonState, rememberNextButtonState, rememberPreviousButtonState, rememberRepeatButtonState, rememberShuffleButtonState bileşenleri media3-ui-compose modülüne ekleyin.
  • HLS Uzantısı:
    • HlsInterstitialsAdsLoader için ilk sürümü ekleyin. Reklam yükleyici, bir HLS medya oynatma listesinin HLS geçiş reklamlarını okur ve bunları AdsMediaSource'a iletilen AdPlaybackState ile eşler. Bu ilk sürüm yalnızca X-ASSET-URI özelliklerine sahip HLS seç-izle akışlarını destekler.
    • HlsInterstitialsAdsLoader.AdsMediaSourceFactory ekleyin. Uygulamalar, HlsInterstitialsAdsLoader öğesini kullanıp AdsMediaSource örnekleri kolay ve güvenli bir şekilde oluşturmak için bu API'yi kullanabilir.
  • DASH Uzantısı:
    • DASH için AC-4 4. Seviye biçim desteği ekleyin (#1898).
  • Kod Çözücü Uzantılar (FFmpeg, VP9, AV1 vb.):
    • MPEG-H sesin kodunu çözmek için yerel MPEG-H kod çözücü modülünü kullanan MPEG-H kod çözücü modülünü ekleyin (#1826).
  • Demo uygulama:
    • PlayPauseButtonState, NextButtonState, PreviousButtonState, RepeatButtonState, ShuffleButtonState öğelerini kullanarak demo-compose'e MinimalControls (PlayPauseButton, NextButton, PreviousButton) ve ExtraControls (RepeatButton, ShuffleButton) Birleştirilebilir Kullanıcı Arayüzü öğeleri ekleyin.
  • Desteği sonlandırılan sembolleri kaldırın:
    • Desteği sonlandırılan AudioMixer.create() yöntemini kaldırın. Bunun yerine DefaultAudioMixer.Factory().create() kullanın.
    • Aşağıdaki desteği sonlandırılmış Transformer.Builder yöntemlerini kaldırın:
      • setTransformationRequest() yerine setAudioMimeType(), setVideoMimeType() ve setHdrMode()'i kullanın.
      • setAudioProcessors(), ses işleyiciyi bir EditedMediaItem.Builder.setEffects() olarak ayarlayın ve bunun yerine Transformer.start()'ye iletin.
      • setVideoEffects(), video efektini bir EditedMediaItem.Builder.setEffects() içinde ayarlayın ve bunun yerine Transformer.start()'ye iletin.
      • setRemoveAudio(), Transformer.start()'a iletilen EditedMediaItem öğesinden sesi kaldırmak için EditedMediaItem.Builder.setRemoveAudio()'u kullanın.
      • setRemoveVideo(), videoyu Transformer.start()'a iletilen EditedMediaItem'den kaldırmak için EditedMediaItem.Builder.setRemoveVideo()'u kullanın.
      • setFlattenForSlowMotion(), Transformer.start()'a iletilen EditedMediaItem öğesini düzleştirmek için EditedMediaItem.Builder.setFlattenForSlowMotion()'u kullanın.
      • setListener() yerine addListener(), removeListener() veya removeAllListeners()'i kullanın.
    • Aşağıdaki desteği sonlandırılmış Transformer.Listener yöntemlerini kaldırın:
      • onTransformationCompleted(MediaItem) yerine onCompleted(Composition, ExportResult)'ü kullanın.
      • onTransformationCompleted(MediaItem, TransformationResult) yerine onCompleted(Composition, ExportResult)'ü kullanın.
      • onTransformationError(MediaItem, Exception) yerine onError(Composition, ExportResult, ExportException)'ü kullanın.
      • onTransformationError(MediaItem, TransformationException) yerine onError(Composition, ExportResult, ExportException)'ü kullanın.
      • onTransformationError(MediaItem, TransformationResult, TransformationException), bunun yerine onError(Composition, ExportResult, ExportException)'u kullanın.
      • onFallbackApplied(MediaItem, TransformationRequest, TransformationRequest), bunun yerine onFallbackApplied(Composition, TransformationRequest, TransformationRequest)'u kullanın.
    • Desteği sonlandırılan TransformationResult sınıfını kaldırın. Bunun yerine ExportResult kullanın.
    • Desteği sonlandırılan TransformationException sınıfını kaldırın. Bunun yerine ExportException kullanın.
    • Desteği sonlandırılan Transformer.PROGRESS_STATE_NO_TRANSFORMATION öğesini kaldırın. Bunun yerine Transformer.PROGRESS_STATE_NOT_STARTED kullanın.
    • Desteği sonlandırılan Transformer.setListener() öğesini kaldırın. Bunun yerine Transformer.addListener(), Transformer.removeListener() veya Transformer.removeAllListeners() kullanın.
    • Desteği sonlandırılan Transformer.startTransformation() öğesini kaldırın. Bunun yerine Transformer.start(MediaItem, String) kullanın.
    • Desteği sonlandırılan SingleFrameGlShaderProgram öğesini kaldırın. Bunun yerine BaseGlShaderProgram kullanın.
    • Transformer.flattenForSlowMotion öğesini kaldırın. Bunun yerine EditedMediaItem.flattenForSlowMotion kullanın.

Sürüm 1.5

Sürüm 1.5.1

19 Aralık 2024

androidx.media3:media3-*:1.5.1 yayınlanır. 1.5.1 sürümü bu taahhütleri içerir.

  • ExoPlayer:
    • Bu platform API'sinde bildirilen codec zaman aşımı sorunlarını (#1641) önlemek için MediaCodec'te eşzamansız şifre çözme kullanımını devre dışı bırakın.
  • Ayıklayıcılar:
    • MP3: VBRI çerçevesinin içindekiler tablosu, dosyadaki tüm MP3 verilerini kapsamıyorsa oynatmayı erken durdurmayın (#1904).
  • Video:
    • onOutputFormatChanged işlenirken sağlandığında MediaCodecAdapter tarafından sağlanan piksel en boy oranı değerlerinin kullanılmasının geri alınması (#1371).
  • Metin:
    • ReplacingCuesResolver.discardCuesBeforeTimeUs zamanında etkin olan (daha önce başlatılmış ancak henüz sona ermemiş) işaretin yanlışlıkla atılmasına neden olan hata düzeltildi (#1939).timeUs
  • Meta veriler:
    • Vorbis yorumlarından disk/parça numarasını ve türünü MediaMetadata içine aktarın (#1958).

1.5.0 sürümü

27 Kasım 2024

androidx.media3:media3-*:1.5.0 yayınlanır. 1.5.0 sürümü bu taahhütleri içerir.

  • Ortak Kitaplık:
    • Tam tutarlılık ve dinleyicinin işlenmesini sağlarken küçük ayarlamalarla başka bir oynatıcıya yönlendirmeye olanak tanıyan ForwardingSimpleBasePlayer ekleyin (#1183).
    • SimpleBasePlayer.State.playlist yerine getPlaylist() yöntemini kullanın.
    • Oynatma listesi yapısı oluşturmak yerine doğrudan bir Timeline ve mevcut Tracks ve Metadata belirtmek için SimpleBasePlayer.State.Builder.setPlaylist() için geçersiz kılma ekleyin.
    • minSdk değerini 21'e (Android Lollipop) yükseltin. Bu, diğer tüm AndroidX kitaplıklarıyla uyumludur.
    • Ortak kitaplığın üzerine inşa edilmiş Kotlin'e özel işlevler sağlayan androidx.media3:media3-common-ktx yapısını ekleyin
    • media3-common-ktx kitaplığına, Player.Events'u dinlemek için bir coroutine döndürmek üzere Player.listen askıya alma uzantı işlevini ekleyin.
    • Çalışma zamanında sınıf doğrulama hatalarını önlemek için tasarlanmış, manuel olarak satır dışı bırakılmış iç sınıflardan @DoNotInline ek açıklamalarını kaldırın. R8'in son sürümleri artık çalışma zamanındaki hataları önlemek için bu tür satır dışı çağrıları otomatik olarak satır dışına çıkarır (bu nedenle manuel satır dışı çıkarma işlemi artık gerekli değildir). Kitaplığın tüm Gradle kullanıcıları, compileSdk = 35 nedeniyle, Android Gradle eklentisinin bu işlemi yapan bir R8 sürümünü kullanan bir sürümünü zaten kullanıyor olmalıdır. Gradle dışında bir derleme sistemi kullanan kitaplık kullanıcılarının, çalışma zamanında sınıf doğrulama hatalarını önlemek için R8 eşdeğeri küçültme/karartma adımlarının benzer bir otomatik satır dışı bırakma işlemi gerçekleştirdiğinden emin olmaları gerekir. Bu değişiklik diğer AndroidX kitaplıklarında zaten yapılmıştır.
  • ExoPlayer:
    • MediaCodecRenderer.onProcessedStreamChange() artık her medya öğesi için çağrılabilir. Daha önce ilk için çağrılmadı. Bunu etkinleştirmek için MediaCodecRenderer.experimentalEnableProcessedStreamChangedAtStart() simgesini kullanın.
    • Hata oluştuğunda PreloadMediaSource.PreloadControl uygulamalarının işlem yapmasına izin vermek için PreloadMediaSource.PreloadControl.onPreloadError ekleyin.
    • Ön yükleme etkinliklerini uygulamalara dağıtmak için BasePreloadManager.Listener ekleyin.
    • SNTP istemci zaman aşımının değiştirilmesine izin verin ve zaman aşımı durumunda alternatif adresleri yeniden deneyin (#1540).
    • Alan her zaman sıfır olduğu için MediaCodecAdapter.Configuration.flags değerini kaldırın.
    • Kullanıcının, Wear OS API 35 ve sonraki sürümlerde (cihazın bu özelliği desteklediğini belirttiği durumlarda) oynatma için yerleşik hoparlörü seçmesine izin verin.
    • Ses odak işleme etkinleştirilene kadar Context.getSystemService(Context.AUDIO_SERVICE) numaralı telefona yapılan engelleme çağrısını erteleyin. Bu, ses odak işleme etkinleştirilmemişse engelleme çağrısının yapılmamasını sağlar (#1616).
    • Yükleme başarısız olduğunda arabelleğe alınan süreye bakılmaksızın oynatmaya izin verin (#1571).
    • Ayrı ayrı oluşturma araçları oynatmanın hazır olmasına izin verdiğinde AnalyticsListener.onRendererReadyChanged() ekleyin.
    • MediaCodec, asenkron modda çalıştırıldığında MediaCodec.CryptoException bazen "beklenmeyen çalışma zamanı hatası" olarak raporlanıyordu (API 31 ve sonraki sürümlerde varsayılan davranış). Bu sorun düzeltildi.
    • PreloadMediaSource.PreloadControl.onContinueLoadingRequested() ile bufferedPositionUs yerine bufferedDurationUs gönderin. Ayrıca DefaultPreloadManager.Status.STAGE_LOADED_TO_POSITION_MS, DefaultPreloadManager.Status.STAGE_LOADED_FOR_DURATION_MS olarak değiştirilir. Ardından uygulamaların, varsayılan başlangıç konumundan belirli bir süreyi temsil eden bir değer iletmesi gerekir. Bu durumda, ilgili medya kaynağının konum yerine bu IntDef ile önceden yüklenmesi gerekir.
    • Tüm yöntem çağrılarını başka bir oluşturma aracına yönlendiren ForwardingRenderer uygulamasını ekleyin (1703).
    • Oynatma listesindeki bir sonraki öğe için oynatma listesi ön yükleme özelliğini ekleyin. Uygulamalar, ExoPlayer.setPreloadConfiguration(PreloadConfiguration) işlevini uygun şekilde çağırarak önceden yüklemeyi etkinleştirebilir. Önceden yükleme varsayılan olarak devre dışıdır. Etkinleştirildiğinde ve oynatma işlemini etkilememesi için DefaultLoadControl, ön yüklemenin yalnızca oynatıcı oynatma için yüklenmediği durumlarda başlatılmasını ve devam etmesini kısıtlar. Uygulamalar, LoadControl.shouldContinuePreloading()'ü uygun şekilde uygulayarak (ör. DefaultLoadControl'te bu yöntemi geçersiz kıldığında) bu davranışı değiştirebilir. LoadControl'nin varsayılan uygulaması, bir uygulama LoadControl'nin özel bir uygulamasını kullanıyorsa ön yüklemeyi devre dışı bırakır.
    • Alt sınıf dinleyicilerinin etkinliklerinin çağrılmasına izin vermek için MediaSourceEventListener.EventDispatcher.dispatchEvent() yöntemini ekleyin (1736).
    • DefaultPreloadManager ve ExoPlayer örneklerini tutarlı bir şekilde paylaşılan yapılandırmalarla oluşturan DefaultPreloadManager.Builder öğesini ekleyin.
    • DefaultLoadControl uygulaması akış türlerini ExoTrackSelection[]'ten alabileceğinden Renderer[] parametresini LoadControl.onTracksSelected()'ten kaldırın.
    • DefaultLoadControl.calculateTargetBufferBytes(Renderer[], ExoTrackSelection[]) desteği sonlandırıldı ve geçersiz kılma işlemlerini önlemek için yöntem nihai olarak işaretlendi. Bunun yerine yeni DefaultLoadControl.calculateTargetBufferBytes(ExoTrackSelection[]) kullanılmalıdır.
    • MergingMediaSource'te ikincil kaynaklardan gelen MediaSourceEventListener etkinliklerini bildirme. Bu işlem, yan taraftan yüklenen altyazılar (MediaItem.LocalConfiguration.subtitleConfigurations ile eklenen altyazılar) için yükleme başlangıcı/hata/iptal/tamamlanma etkinliklerinin raporlanmasına neden olur. Bu etkinlikler, AnalyticsListener tarafından yayınlanan yinelenen yükleme etkinlikleri olarak görünebilir.
    • Altyazı ve meta veri hatalarının oynatmayı tamamen durdurmasını önler. Bunun yerine, sorunlu parça devre dışı bırakılır ve kalan parçaların oynatılması devam eder (#1722).
      • Yeni altyazı işleme sürecinde (ayrıştırma sırasında), ilişkili ayrıştırma (ör. geçersiz altyazı verileri) ve yükleme hataları (ör. HTTP 404) onLoadError geri çağırma işlevleri aracılığıyla yayınlanır.
      • Eski altyazı işleme sürecinde (oluşturma sırasında), yalnızca ilişkili yükleme hataları onLoadError geri çağırma işlevleri aracılığıyla yayınlanırken ayrıştırma hataları sessizce yoksayılır (bu, önceden var olan bir davranıştır).
    • Oynatma listesi öğelerinin veya çok dönemli DASH akışlarındaki süreleri gerçek içerikle eşleşmeyen dönemlerin, öğenin sonunda kare donmasına neden olabileceği hatayı düzeltme (#1698).
    • Son güncellemeden sonra geçen maksimum süreyi ayarlamak için SntpClient öğesine bir ayarlayıcı ekleyin. Bu sürenin sonunda istemci yeniden başlatılır (#1794).
  • Dönüştürücü:
    • Surface aracılığıyla video verilerinin Transformer'a sıraya eklenmesini destekleyen SurfaceAssetLoader öğesini ekleyin.
    • ImageAssetLoader, IllegalStateException atma yerine AssetLoader.onError aracılığıyla desteklenmeyen girişi bildirir.
    • Resim dışa aktarma işlemi için MediaItem.Builder.setImageDurationMs kullanarak resim süresini ayarlamayı zorunlu kılın.
    • EditedMediaItems ses dizilerindeki boşluklar için dışa aktarma desteği eklendi.
  • Parça Seçimi:
    • DefaultTrackSelector: Diğer faktörler eşit olduğunda kanal tabanlı ses yerine nesne tabanlı sesi tercih edin.
  • Ayıklayıcılar:
    • Mp4Extractor ve FragmentedMp4Extractor'nin, sonraki örnekler tarafından referans olarak kullanılmayan H264 örneklerini tanımlamasına izin verin.
    • AmrExtractor'te dizin tabanlı aramayı etkinleştirme seçeneği ekleyin.
    • Geçerli kareler arasında 128 KB'den uzun MP3 dosyalarını "geçersiz" yerine "kesilmiş" olarak değerlendirin. Bu, MP3 baytlarının uzunluğunu belirten başka bir meta verisi olmayan ve sonunda MP3 olmayan veriler içeren dosyaların artık ParserException: Searched too many bytes.{contentIsMalformed=true, dataType=1} (#1563) hatasıyla başarısız olmak yerine MP3 verilerinin sonunda oynatmayı durduracağı anlamına geliyor.
    • MP4 dosyalarındaki düzenleme listelerini işlerken anahtar kare dışı medya başlangıç konumları için önizleme örneği işlemeyi düzeltin (#1659).
    • Mp4Extractor ve FragmentedMp4Extractor bölümündeki mdhd kutusundaki medya süresinden yararlanarak kare hızı hesaplaması iyileştirildi (#1531).
    • MP4 düzenleme listelerinde media_time öğesinin yanlış ölçeklendirilmesi düzeltildi. segment_duration, film zaman ölçeği kullanılarak zaten doğru şekilde ölçeklendirilmişken media_time, MP4 biçim standardında (#1792) belirtildiği gibi parça zaman ölçeği kullanılarak doğru şekilde ölçeklendirilir.
    • Düzenleme listesi ile MP4 için endIndices hesaplamasında sıra dışı kareleri ele alın (#1797).
    • -1 değerlerini işlemek için MP4 dosyalarının mdhd kutusunda medya süresi ayrıştırmasını düzeltin (#1819).
    • H.263 video için MP4 dosyalarında h263 kutusunu tanımlama desteği eklendi (#1821).
    • AC-4 4. Katman ISO temel medya dosyası biçimi desteği eklendi (#1265).
  • Veri Kaynağı:
    • HttpEngineDataSource'ü, API düzeyi 34 yerine S uzantısı 7 sürümünden itibaren kullanıma izin verecek şekilde güncelleyin (#1262).
    • DataSourceContractTest: DataSource.getUri()'un çözümlenmiş URI'yi (belgelerde belirtildiği gibi) döndürdüğünü doğrulayın. Bu, istenen URI'den farklıysa testler yeni DataSourceContractTest.TestResource.Builder.setResolvedUri() yöntemini kullanarak bunu belirtebilir.
    • DataSourceContractTest: DataSource.getUri() ve getResponseHeaders()'nin, open()'a yapılan bir çağrının başarısız olmasından ("bulunamadı" kaynağı nedeniyle) sonra ve sonraki bir close() çağrısından önce "açık" değerini döndürdüğünü doğrulayın.
      • DataSourceContractTest.getNotFoundResources()'ü geçersiz kılmak, test alt sınıflarının birden fazla "bulunamadı" kaynağı sağlamasına ve beklenen tüm üstbilgileri sağlamasına olanak tanır. Bu sayede HTTP 404 (başlıklarla) ile "sunucu bulunamadı" (başlık yok) arasında ayrım yapılabilir.
  • Ses:
    • Medyada varsa codec'te CTA-2075 ses seviyesi meta verilerini otomatik olarak yapılandırın.
    • Sarma sırasında sesin kademeli olarak azaldığından emin olun.
    • Arama sırasında oluşabilecek pop seslerini düzeltme
    • Sonic'in zaman uzatma/ton değiştirme algoritması için kesme hatası birikmesini düzeltin.
    • SpeedChangingAudioProcessor'te çıkış karelerinin atlanmasına neden olan hata düzeltildi.
  • Video:
    • MediaCodecVideoRenderer, oluşturulmayan veya diğer örnekler tarafından referans olarak kullanılmayan örneklerin kodunu çözmez.
    • API 35 ve sonraki sürümlerde MediaCodecAdapter artık configure içinde bir null Surface alabilir ve codec bunu destekliyorsa (MediaCodecInfo.detachedSurfaceSupported) daha önce ayarlanmış bir Surface'yi kaldırmak için yeni bir yöntem detachOutputSurface çağırır.
    • onOutputFormatChanged işlenirken sağlanmışsa MediaCodecAdapter tarafından sağlanan piksel en boy oranı değerlerini kullanın (#1371).
    • Galaxy Tab S7 FE'de 60 fps güvenli H264 akışlarının desteklenmiyor olarak işaretlenmesine neden olan cihaz sorunu için geçici çözüm eklendi (#1619).
    • Son örnekten sonra yayın sonu sinyali döndürmeden takılan codec'ler için geçici çözüm ekleyin.
  • Metin:
    • Özel bir VoiceSpan ekleyin ve WebVTT ses aralıkları için doldurun (#1632).
    • HLS'de çok büyük altyazı zaman damgalarına (mikrosaniye olarak gösterildiğinde ve 90,000 MPEG zaman tabanıyla çarpıldığında 64 bitlik bir long'yi aşan) sahip WebVTT'nin gösterildiğinden emin olun (#1763).
    • Dolby Vision içeriklerinde CEA-608 altyazı desteği (#1820).
    • CEA-608 altyazılar etkinleştirildiğinde DASH çok dönemli akışlarda oynatma işleminin takılmasını düzeltin (#1863).
  • Meta veriler:
    • icy veya vnd.dvb.ait içeriği içeren parçalara C.TRACK_TYPE_METADATA türünü atayın.
  • Resim:
    • Glide veya Coil gibi harici resim yükleme kitaplıklarıyla basitleştirilmiş entegrasyon için ExternallyLoadedImageDecoder ekleyin.
  • Veri Kaynağı:
    • FileDescriptor'den okumak için kullanılabilecek yeni bir DataSource olan FileDescriptorDataSource'ü ekleyin (#3757).
  • Etki:
    • Küçük SurfaceTexture ölçeklendirmesi için DefaultVideoFrameProcessor geçici çözümü ekleyin. SurfaceTexture, kırpılmış bir arabelleğin kenarında 1 piksellik bir kenar boşluğu kesen küçük bir ölçeklendirme içerebilir. Bu durum artık çıktının beklenen değere daha yakın olması için ele alınmaktadır.
    • Hızlandırma DefaultVideoFrameProcessor.queueInputBitmap(). Sonuç olarak, Transformer ile resimleri videoya aktarma işlemi daha hızlıdır.
  • IMA uzantısı:
    • Oynatma listesinin temizlenmesinin ImaServerSideAdInsertionMediaSource'da ArrayIndexOutOfBoundsException'ye neden olabileceği hata düzeltildi.
    • Sunucu tarafına önceden yerleştirilmiş DAI akışlarının, son orta reklamdan sonra oynatıldığında ArrayIndexOutOfBoundsException hatasına neden olabileceği hatayı düzeltme (#1741).
  • Oturum:
    • Uygulamaların bu yöntemi geçersiz kılarak oynatmaya devam etmek için gelen bir oynatma komutunu bastırmasına izin vermek üzere MediaButtonReceiver.shouldStartForegroundService(Intent) ekleyin. Varsayılan olarak hizmet her zaman başlatılır ve sistem bir ForegroundServiceDidNotStartInTimeException ile hizmeti kilitlemeden oynatma durdurulamaz (#1528).
    • Eski bir hizmete bağlanıldığında MediaBrowser'ten gönderilen özel komutların yöntemin MediaBrowserServiceCompat varyantı yerine MediaSessionCompat.Callback varyantına gönderilmesine neden olan hata düzeltildi. Bu durum, MediaBrowser'ün eski hizmet tarafından geri gönderilen gerçek döndürülen değeri almasını engelledi (#1474).
    • Medya düğmesi intent'leri için yayın alıcısını ayarlarken belirli üreticilerin cihazları tarafından oluşturulan IllegalArgumentException değerini işleyin (#1730).
    • Medya öğeleri için komut düğmeleri ekleyin. Bu işlem, Custom browse actions olarak bilinen eski kitaplığa MediaBrowserCompat ile Media3 API'yi ekler. Media3 ile medya öğeleri için komut düğmelerinin hem MediaBrowser hem de MediaController için kullanılabileceğini unutmayın. AAOS'un özel Göz atma işlemleri başlıklı makaleyi inceleyin.
    • Media3 denetleyicisinin bazen play() isteğinde bulunduktan sonra oturum uygulamasının ön plan hizmetini başlatmasına izin vermediği hata düzeltildi.
    • CommandButton.Builder.setIconUri'ü yalnızca içerik Uri'lerini kabul edecek şekilde kısıtlayın.
    • Eski bir MediaBrowserCompat'e bağlanırken Media3 tarayıcısının bağlantı ipuçlarını ilk MediaBrowserCompat'e iletin. Hizmet, onGetRoot() çağrısına yapılan ilk çağrıda kök ipucu olarak iletilen bağlantı ipuçlarını alabilir.
    • Eski bir tarayıcı hizmetine bağlı bir MediaBrowser'nin, tarayıcı bir parentid'a abone olduktan sonra hizmet tarafından gönderilen hatayı almamasına neden olan hata düzeltildi.
    • Eski bir MediaBrowserService'e bağlı bir Media3 tarayıcısının, bir üst öğeye abone olurken parentId'un çocuklarını iki kez istememesi için birlikte çalışabilirlik davranışını iyileştirin.
  • Kullanıcı Arayüzü:
    • XML tabanlı paylaşılan geçişlerle ilgili sorunlar nedeniyle PlayerView-in-Compose-AndroidView geçici çözümünde, videoyu uzatılmış/kırpılmış olarak oluşturun. AndroidView içinde PlayerView kullanan uygulamaların etkinleştirmek için PlayerView.setEnableComposeSurfaceSyncWorkaround'yi çağırması gerekir (#1237, #1594).
    • Tam ekran düğmesinin simgesinin isteğe bağlı olarak güncellenmesine (ör. tıklama etkileşimine tepki olarak değil, bant dışı olarak) izin vermek için setFullscreenButtonState öğesini PlayerView öğesine ekleyin (#1590, #184).
    • Uygulama tanımlı metin parçası seçim tercihleri varsa metin seçiminde "Yok" seçeneğinin çalışmadığı hata düzeltildi.
  • DASH Uzantısı:
    • Bir segmentin ortasından başlayan dönemler için destek ekleyin (#1440).
  • Sorunsuz Yayın Uzantısı:
    • Metin parçaları içeren SmoothStreaming yayınlarını oynatırken Bad magic number for Bundle hatası düzeltildi (#1779).
  • RTSP Uzantısı:
    • Kodlanmış @ karakterleri içeren URL'lerde kullanıcı bilgilerinin kaldırılması sorunu düzeltildi (#1138).
    • Başlık uzantılarıyla RTP paketleri ayrıştırılırken kilitlenme sorunu düzeltildi (#1225).
  • Kod Çözücü Uzantılar (FFmpeg, VP9, AV1 vb.):
    • Ses sentezlemek için libiamf yerel kitaplığını kullanan IAMF parçaları içeren MP4 dosyalarının oynatılmasına destek sağlayan IAMF kod çözücü modülünü ekleyin.
      • Oynatma, stereo düzenin yanı sıra isteğe bağlı kafa hareketi izleme özelliği etkinleştirildiğinde uzamsallaştırmayla 5.1 olarak etkinleştirilir ancak binaural oynatma desteği şu anda kullanılamamaktadır.
    • Android 15'te kod çözücü uzantıları için 16 KB sayfa desteği ekleyin (#1685).
  • Cast Uzantısı:
    • CastSession bağlantısı kesildikten sonra zaman çizelgesini temizlemeyi durdurur. Bu sayede gönderen uygulama, bağlantı kesildikten sonra oynatmayı yerel olarak devam ettirebilir.
    • Bir Context sağlandığında CastPlayer'ın DeviceInfo değerini doldurun. Bu, MediaSession öğesinin bir RoutingSession öğesine bağlanmasını sağlar. Bu, Çıkış Değiştirici'nin (#1056) entegrasyonu için gereklidir.
  • Test Yardımcı Programları:
    • DataSourceContractTest artık aşağıdakileri doğrulamak için testler içerir:
      • Giriş akışı read position güncellendi.
      • Çıkış arabelleği offset doğru şekilde uygulanır.
  • Demo uygulama
    • Demo kısa video uygulamasındaki bellek sızıntısını giderin (#1839).
  • Desteği sonlandırılan sembolleri kaldırın:
    • Desteği sonlandırılan Player.hasPrevious, Player.hasPreviousWindow() öğelerini kaldırın. Bunun yerine Player.hasPreviousMediaItem() politikasını kullanın.
    • Desteği sonlandırılan Player.previous() yöntemini kaldırın. Bunun yerine Player.seekToPreviousMediaItem() kullanın.
    • Desteği sonlandırılan DrmSessionEventListener.onDrmSessionAcquired yöntemini kaldırın.
    • Desteği sonlandırılan DefaultEncoderFactory kurucularını kaldırın. Bunun yerine DefaultEncoderFactory.Builder kullanın.

Sürüm 1.5.0-rc02

19 Kasım 2024

1.5.0 kararlı sürümünü kullanın.

Sürüm 1.5.0-rc01

13 Kasım 2024

1.5.0 kararlı sürümünü kullanın.

Sürüm 1.5.0-beta01

30 Ekim 2024

1.5.0 kararlı sürümünü kullanın.

Sürüm 1.5.0-alpha01

10 Eylül 2024

1.5.0 kararlı sürümünü kullanın.

1.4.0 sürümü

Sürüm 1.4.1

27 Ağustos 2024

androidx.media3:media3-*:1.4.1 yayınlanır. 1.4.1 sürümü bu taahhütleri içerir.

  • ExoPlayer:
    • PreloadMediaSource (#1568) içinde ön yükleme geri çağırma işlevlerini eşzamansız olarak ele alma.
    • Yükleme başarısız olduğunda arabelleğe alınan süreye bakılmaksızın oynatmaya izin verin (#1571).
  • Ayıklayıcılar:
    • MP3: Info çerçevesindeki uzunluk alanına göre MP3 olmayan son verileri doğru şekilde yoksayarak Searched too many bytes hatasını düzeltin (#1480).
  • Metin:
    • TTML: tts:fontSize yüzde değerlerinin, tts:fontSize yüzde değerlerine sahip üst düğümlerden doğru şekilde devralınmasını sağlamak için bu değerlerin işlenmesi düzeltildi.
    • İstenilen çıkış başlangıç zamanının Subtitle'deki son etkinlik zamanından büyük veya eşit olması durumunun yanlış ele alınması nedeniyle LegacySubtitleUtil'teki IndexOutOfBoundsException hatası düzeltildi (#1516).
  • DRM:
    • L1 Widevine içeriği oynatan API 31 ve sonraki sürümlerin cihazlarında android.media.MediaCodec$CryptoException: Operation not supported in this configuration: ERROR_DRM_CANNOT_HANDLE hatasını düzeltin. Bu hata, çerçeve MediaDrm.requiresSecureDecoder yönteminin eksik uygulanmasından kaynaklanır (#1603).
  • Etki:
    • GlObjectsProvider'a release() yöntemi ekleyin.
  • Oturum:
    • KEYCODE_HEADSETHOOK simgesine iki kez dokunma işlemini, belgelendiği gibi "sonrakiye git" işlemine dönüştürün (#1493).
    • KEYCODE_HEADSETHOOK değerini, MediaButtonReceiver içinde "play" komutu olarak işleyin. Böylece, ForegroundServiceDidNotStartInTimeException değerini atlayıp atlamamaya karar verebilirsiniz (#1581).
  • RTSP Uzantısı:
    • SDP ayrıştırmasında geçersiz medya açıklamalarını atlama (#1087).

1.4.0 sürümü

25 Temmuz 2024

androidx.media3:media3-*:1.4.0 yayınlanır. 1.4.0 sürümü bu taahhütleri içerir.

  • Ortak Kitaplık:
    • İşlemsiz olduğu varsayılan arama çağrılarını yoksaymak yerine korumalı BasePlayer.seekTo() ve SimpleBasePlayer.handleSeek() yöntemlerine yönlendirin. Bu yöntemleri özel bir oynatıcıda uyguluyorsanız bu ek çağrıları mediaItemIndex == C.INDEX_UNSET ile işlemeniz gerekebilir.
    • Geliştirilmiş Java 8 şekerleme kaldırma özelliğine yönelik derleme bağımlılığını kaldırın (#1312).
    • MediaItem.Builder.setImageDurationMs() parametresine iletilen sürenin, resim olmayan MediaItem için yoksayıldığından emin olun (belgelerde belirtildiği gibi).
    • Format örnekleri hakkında uygulama tarafından sağlanan özel bilgileri depolamak için Format.customData ekleyin.
  • ExoPlayer:
    • Birden fazla kaynağın ön yüklemesini, rankingData tarafından tanımlanan önceliklere göre koordine eden BasePreloadManager öğesini ekleyin. Bu sınıfı genişleterek özelleştirme yapabilirsiniz. Kaynakların medya örneklerini belleğe ön yüklemek için PreloadMediaSource kullanan ve kullanıcı arayüzündeki bir öğenin dizesini belirten bir tam sayı rankingData kullanan DefaultPreloadManager ekleyin.
    • LoadControl uygulamalarının birden fazla oyuncuyu desteklemesini sağlamak için LoadControl yöntemlerinin çoğuna PlayerId ekleyin.
    • Buffer.isDecodeOnly() ve C.BUFFER_FLAG_DECODE_ONLY öğelerini kaldırın. Oluşturucular ve kod çözücüler, zaman damgasına göre arabellekleri atlamaya karar vereceğinden bu işareti ayarlamaya gerek yoktur. Özel Renderer uygulamaları, bir örneğin gösterilip gösterilmeyeceğine karar vermek için arabellek süresinin en az BaseRenderer.getLastResetPositionUs() olup olmadığını kontrol etmelidir. Özel SimpleDecoder uygulamaları, gerekirse isAtLeastOutputStartTimeUs() değerini kontrol edebilir veya diğer arabellekleri atlamak için DecoderOutputBuffer.shouldBeSkipped ile işaretleyebilir.
    • Belirtilen rankingData ile bir MediaSource'yi önceden yüklememeyi belirtmek için TargetPreloadStatusControl.getTargetPreloadStatus(T) tarafından döndürülen boş değere izin verin.
    • remove(MediaSource)BasePreloadManager'a ekleyin.
    • Önyükleme yöneticisi örneğini korurken tüm bekletme kaynaklarını serbest bırakmak için reset() öğesini BasePreloadManager öğesine ekleyin.
    • PriorityTaskManager'de kullanılan öncelik değerini ve API 35'ten itibaren MediaCodec önemini tanımlamak için ExoPlayer.setPriority() (ve Builder.setPriority()) ekleyin.
    • Son yeniden arabelleğe alma süresinin güncellenmesiyle ilgili sorunu düzeltin. Bu sorun, CMCD'de yanlış bs (arabellek açlığı) anahtarına neden oluyordu (#1124).
    • Kaynağın sonuna kadar yüklendiğini belirtmek için PreloadMediaSource.PreloadControl.onLoadedToTheEndOfSource(PreloadMediaSource) ekleyin. Bu sayede DefaultPreloadManager ve özel PreloadMediaSource.PreloadControl uygulamaları, sonraki kaynağı önceden yükleyebilir veya başka işlemler yapabilir.
    • Öğelerin sonunda sessiz bölümleri atlama işleminin oynatma istisnası tetiklemesine yol açan hata düzeltildi.
    • Önceden yükleme süresini silmek için clear öğesini PreloadMediaSource'e ekleyin.
    • Daha yüksek öncelikli görevler için codec kaynakları yeniden kullanıldığında kullanılan yeni hata kodu PlaybackException.ERROR_CODE_DECODING_RESOURCES_RECLAIMED ekleyin.
    • İlk içerik medya hazırlığı tamamlanmadan önce AdsMediaSource'ün videodan önce gösterilen reklamları yüklemesine izin verin (#1358).
    • Orijinal dönem manifestten kaldırıldıktan sonra çok dönemli bir DASH canlı yayını yeniden hazırlanırken oynatma işleminin STATE_ENDED'e taşınmasına neden olan hata düzeltildi.
    • PreloadMediaSource.PreloadControl'te onTimelineRefreshed()onSourcePrepared(), onPrepared()'yi onTracksSelected() olarak yeniden adlandırın. DefaultPreloadManager.Stage içindeki IntDefs'leri de uygun şekilde yeniden adlandırın.
    • Çalışmayı CPU uyanma döngüleriyle daha iyi uyumlu hale getirmek ve uyanma işlemini oluşturucuların ilerleyebileceği zamana ertelemek için dinamik planlama için deneysel destek ekleyin. ExoPlayer örneğinizi ayarlarken experimentalSetDynamicSchedulingEnabled() simgesini kullanarak bu özelliği etkinleştirebilirsiniz.
    • Renderer.getDurationToProgressUs() ekleyin. Bir Renderer, ExoPlayer'a oynatmanın, oluşturma işleminin ilerlemesi için ilerlemesi gereken süreyi döndürmek üzere bu yöntemi uygulayabilir. ExoPlayer, experimentalSetDynamicSchedulingEnabled() ile ayarlanırsa ExoPlayer, iş görevini planlama zamanını hesaplarken bu yöntemi çağırır.
    • Giriş ve çıkış arabellekleri MediaCodecRenderer tarafından kullanılabilir olduğunda uyarı almak için MediaCodecAdapter#OnBufferAvailableListener ekleyin. MediaCodecRenderer bu geri çağırma çağrılarını aldığında ExoPlayer'e sinyal gönderir ve ExoPlayer, experimentalSetDynamicSchedulingEnabled() ile ayarlanmışsa oluşturucular ilerleme kaydedebileceğinden çalışma döngüsünü planlar.ExoPlayer
    • Ayrı parametreler yerine LoadControl yöntemleri için veri sınıfını kullanın.
    • Exoplayer.release() işlevinin çağrılıp çağrılmadığını kontrol etmek için ExoPlayer.isReleased() ekleyin.
    • seekToPrevious()'nin önceki öğeye bakacağı maksimum konumu yapılandırmak için ExoPlayer.Builder.setMaxSeekToPreviousPositionMs() ekleyin (#1425).
    • Oynatıcı duraklatıldığında tam veya geçici odak kaybının raporlanmaması (#1436) gibi bazı ses odak tutarsızlıkları düzeltildi.
    • İlk hazırlık adımı sonrasında ek parçalar bildiren ayıklayıcılar nedeniyle oluşabilecek IndexOutOfBoundsException sorununu düzeltin (#1476).
    • ExoPlayer.setVideoEffect() içindeki Effects, zaman damgalarını oluşturucu ofseti kaldırılmış şekilde alır (#1098).
    • Başka bir oynatma listesi öğesinde ileriye doğru okuma yapılırken ortaya çıkan oynatıcı hatasını ele alırken olası IllegalArgumentException hatasını düzeltin (#1483).
  • Dönüştürücü:
    • Çıkış dosyasındaki ilgili parçanın nasıl oluşturulduğunu belirten audioConversionProcess ve videoConversionProcess öğelerini ExportResult içine ekleyin.
    • Kırpma optimizasyonu H.264 düzeyindeki kontrolleri gevşetin.
    • SDR ve HDR giriş medyaları arasında sırayla geçiş yapma desteği eklendi.
    • Beste düzeyinde ses efektleri desteği eklendi.
    • Ultra HDR resimleri HDR videolara kodlama desteği eklendi.
    • DefaultAudioMixer'ün sıfırlanıp yeniden kullanıldıktan sonra doğru bayt miktarını döndürmemesi sorunu düzeltildi.
    • PCM girişi işlenirken ses kanallarının sayısının stereo ile sınırlandığı bir kod çözücü hatası için geçici çözüm.
    • ExoPlayerAssetLoader içinde parça seçerken yalnızca oynatma için geçerli olduklarından ses kanalı sayısı kısıtlamalarını yoksayabilirsiniz.
    • androidx.media3.transformer.Muxer arayüzünü androidx.media3.muxer.Muxer ile değiştirin ve androidx.media3.transformer.Muxer'ü kaldırın.
    • İçerik URI şemalarından HEIC resim yükleme sorununu düzeltin. (#1373).
    • AV senkronizasyonunu iyileştirmek için AudioGraphInput bölümünde ses parçası süresini ayarlayın.
    • ExportResult.processedInputs alanını kaldırın. Bu alanı codec ayrıntıları için kullanıyorsanız bunun yerine DefaultDecoderFactory.listener kullanın. Codec istisnası olması durumunda codec ayrıntıları ExportException.codecInfo'te yer alır.
  • Ayıklayıcılar:
    • MPEG-TS: Bir yayının son erişim birimini örnek kuyruğuna aktararak son karenin oluşturulmasını sağlayarak değişikliği ileriye dönük olarak uygulayın (#7909). Yalnızca I-kare HLS akışlarında(#1150) ve H.262 HLS akışlarında (#1126) ortaya çıkan sorunları çözmek için düzeltmeler dahil edildi.
    • MP3: Temel akış tarafından bildirilen boyut yerine Info çerçevesindeki veri boyutunu tercih edin (ör. dosya boyutu veya HTTP Content-Length başlığı). Bu, oynatılamayan fragman verilerini (ör. albüm kapağı) sabit bit hızı arama hesaplamalarından hariç tutarak aramaları daha doğru hale getirir (#1376).
    • MP3: Sabit bit hızı arama için ortalama bit hızını hesaplamak üzere Info karesindeki kare sayısını ve diğer verileri (varsa) kullanın. Bu, Info karesinden sonraki karenin bit hızından (ör. PCUT karesi) ekstrapolasyon yapmak yerine yapılır. Bu işlem, yapay olarak küçük olabilir (#1376).
    • AVI kapsayıcılarında PCM ses biçimi ayıklama sorunu düzeltildi.
  • Ses:
    • Geçiş oynatma için DTS:X Profil 2 kodlama özelliklerini düzeltin (#1299).
    • Aktarılan oynatma için AudioTrack.stop() çağrısı yapılmadan önce DefaultAudioSink'te akış tamamlama izleme alanını sıfırlayın. Böylece AudioTrack.StreamEventCallback#onPresentationEnded, bekleyen tüm verilerin ne zaman oynatıldığını doğru şekilde tanımlayabilir.
    • SilenceSkippingAudioProcessor'te farklı ses biçimleri arasındaki geçişlerin (ör. stereodan monoya) işlemcinin istisna atmasına neden olabileceği hata düzeltildi (#1352).
    • ExoPlayer'ın ana çalışma döngüsünü MediaCodecAudioRenderer'ın ilerleme kaydedebileceği zamana dinamik olarak planlaması için MediaCodecAudioRenderer.getDurationToProgressUs()'ü uygulayın.
  • Video:
    • Oynatma sırasında yüzey değiştirirken Listener.onRenderedFirstFrame()'ün çok erken gelmesi sorunu düzeltildi.
    • Dolby Vision'un gerektiğinde uyumlu bir AV1 kod çözücüsü kullanması için kod çözücü yedek mantığını düzeltin (#1389).
    • Oynatma sırasında video oluşturma aracının etkinleştirilmesinden kaynaklanabilecek codec istisnası düzeltildi.
  • Metin:
    • Bir arama konumundan önce başlayan altyazıları atlama sorunu düzeltildi. Bu sorun yalnızca Media3 1.4.0-alpha01 sürümünde ortaya çıktı.
    • Varsayılan altyazı ayrıştırma davranışını, oluşturma yerine ayıklama sırasında gerçekleşecek şekilde değiştirin (ayıklama ve oluşturma arasındaki fark için ExoPlayer'ın mimari şemasına bakın).
      • Bu değişiklik, MediaSource.Factory.experimentalParseSubtitlesDuringExtraction(false) ve TextRenderer.experimentalSetLegacyDecodingEnabled(true)'in ikisi de çağrılarak geçersiz kılınabilir. Bu bileşenlerin bir ExoPlayer örneğine nasıl bağlanacağı hakkında bilgi edinmek için özelleştirmeyle ilgili belgelere göz atın. Bu yöntemler (ve eski altyazı kod çözmeyle ilgili tüm destek) gelecekteki bir sürümde kaldırılacaktır.
      • Özel SubtitleDecoder uygulamaları olan uygulamaların, SubtitleParser (ve SubtitleDecoderFactory yerine SubtitleParser.Factory) uygulamak için bunları güncellemesi gerekir.
    • PGS: 0 değerini gerçek renk değeri yerine renk dizini olarak çözmek için satır uzunluğunu kod çözme işlemini düzeltin (#1367).
    • CEA-708: rowLock değerini yoksay. CEA-708-E S-2023 spesifikasyonunda, akıştaki değerlerden bağımsız olarak rowLock ve columnLock değerlerinin her ikisinin de doğru olduğu varsayılır (columnLock desteği uygulanmadığından her zaman yanlış olduğu varsayılır).
      • Bu değişiklik başlangıçta 1.3.0-alpha01 sürüm notlarına dahil edilmişti ancak 1.3.0-rc01 sürümünden önce yanlışlıkla geri alındı. Bu sorun düzeltildi ve değişiklik tekrar uygulandı.
    • CEA-708: ExoPlayer'ın "kalem konumunu ayarla" komutunu basit bir şekilde ele almasından dolayı yinelenen yeni satırların eklenmesini önleyin (#1315).
    • WebVTT altyazı örneğinde işaret yoksa (ör. DASH yayınının bir parçası olarak) IllegalArgumentException'ten LegacySubtitleUtil'e bir düzeltme yapın (#1516).
  • Meta veriler:
    • MP4 ile ID3 sıralama etiketlerinin eşlenmesi düzeltildi. Daha önce MP4'teki "albüm sıralaması" (soal), "sanatçı sıralaması" (soar) ve "albüm sanatçısı sıralaması" (soaa) etiketleri yanlışlıkla TSO2, TSOA ve TSOP ID3 etiketleriyle eşleniyordu (#1302).
    • Değer bir bayttan uzun olduğunda MP4 (/iTunes) sayısal gnre (tür) ve tmpo (tempo) etiketlerinin okunması düzeltildi.
    • ID3 TCON çerçevesini MediaMetadata.genre'a aktarın (#1305).
  • Resim:
    • Kare olmayan DASH küçük resim ızgaraları için destek ekleyin (#1300).
    • API 34 ve sonraki sürümler için AVIF desteği eklendi.
    • Daha önce ayarlanmış bir ImageOutput değerini temizlemek için ExoPlayer.setImageOutput() parametresi olarak null değerine izin verin.
  • Veri Kaynağı:
    • package'ın mevcut uygulamanın paketinden farklı olduğu android.resource://package/id ham kaynak URI'leri için destek uygulayın. Bu yöntemin daha önce çalıştığının belirtilmediği halde, başka bir paketteki kaynaklara ada göre erişmekten daha verimli bir yöntemdir.
    • DataSpec yapıcılarında url değerinin null olmadığından emin olun. Bu parametre zaten boş olmayan olarak ek açıklamaya sahipti.
    • ByteArrayDataSource'ün, URI'yi oluşturma sırasında sabit kodlanmış olarak kullanmak yerine open() sırasında bir bayt dizisi olarak çözmesine izin verin (#1405).
  • DRM:
    • DefaultDrmSessionManagerProvider üzerinde LoadErrorHandlingPolicy ayarlamaya izin verin (#1271).
  • Etki:
    • SpeedChangeEffect'de aynı EditedMediaItem veya Composition içinde birden fazla hız değişikliğini destekler.
    • Ultra HDR bitmap girişinden HLG ve PQ çıkışı desteği.
    • ExoPlayer.setVideoEffect ve Transformer'ın Debug SurfaceView'ında HLG yüzey çıkışını iyileştiren EGL_GL_COLORSPACE_BT2020_HLG_EXT desteği eklendi.
    • setOverlayFrameAnchor() içinde uygulanan x ve y değerlerini çevirerek yer paylaşımı matrisi uygulamasını dokümanlarla tutarlı olacak şekilde güncelleyin. OverlaySettings.Builder.setOverlayFrameAnchor() kullanıyorsanız x ve y değerlerini -1 ile çarparak tersine çevirin.
    • TimestampWrapper'ün ExoPlayer#setVideoEffects ile birlikte kullanıldığında kilitlenmesine yol açan hata düzeltildi (#821).
    • Varsayılan SDR renk çalışma alanını doğrusal renklerden elektrik BT 709 SDR videosuna değiştirin. Ayrıca orijinal renk alanını korumak için üçüncü bir seçenek de sunun.
    • EditedMediaItemSequences için belirsiz z-sırasının tanımlanmasına izin verin (#1055).
    • Farklı HDR içerik parçalarında tutarlı bir parlaklık aralığı kullanın (HLG aralığı kullanılır).
    • HDR içeriklerde Ultra HDR (bit eşleme) yer paylaşımları için destek ekleme.
    • API 26'dan önce SeparableConvolution efektlerinin kullanılmasına izin verin.
    • Yer paylaşımının ve çerçevenin dinamik aralığı eşleşmesi gerektiğinden kullanılmayan OverlaySettings.useHdr öğesini kaldırın.
    • TextOverlay için HDR desteği ekleyin. Metin yer paylaşımının parlaklığı OverlaySettings.Builder.setHdrLuminanceMultiplier() ile ayarlanabilir.
  • IMA uzantısı:
    • Uygulamaların DAI reklam akışlarını oynatması için gereken API'yi kararlı sürüme geçirin.
    • Reklam etiketi parametrelerinin çalışma zamanında değiştirilmesine olanak tanıyan replaceAdTagParameters(Map <String, String>) öğesini ImaServerSideAdInsertionMediaSource.AdLoader içine ekleyin.
    • Reklam oynatma sırasında bir oynatıcı hatası oluştuğunda VideoAdPlayer.VideoAdPlayerCallback.onError() işlevinin çağrılmadığı hata düzeltildi (#1334).
    • data:// reklam etiketi URI'leri kullanılırken ortaya çıkan NullPointerException hatasını düzeltmek için IMA SDK sürümünü 3.33.0'a yükseltin (#700).
  • Oturum:
    • CommandButton.enabled değerinin varsayılan değerini true olarak değiştirin ve ilişkili komut mevcut olsa bile değerin kontrolörler için yanlış olarak kalmasını sağlayın.
    • Özel simge kaynakları yerine kullanılacak CommandButton için simge sabitleri ekleyin.
    • Uygulamaların, hizmetin onTaskRemoved()'te durdurulup durdurulmayacağını sorgulamasına izin vermek için MediaSessionService.isPlaybackOngoing() değerini ekleyin (#1219).
    • Tüm oturumların oynatılmasını duraklatmayı kolaylaştıran MediaSessionService.pauseAllPlayersAndStopSelf()'ü ekleyin ve MediaSessionService'nin yaşam döngüsünü sonlandırmak için stopSelf()'ı çağırın.
    • Oynatma devam ediyorsa hizmeti ön planda çalıştıran veya aksi takdirde durduran güvenli bir varsayılan uygulama sağlamak için MediaSessionService.onTaskRemoved(Intent) değerini geçersiz kılın.
    • Platform oturumu meta verilerine süreyi ayarlayarak canlı yayınların medya bildirimindeki ilerleme çubuğunu gizleme (#1256).
    • Meta veri özelliklerini seçerken media1'de olduğu gibi aynı tercih edilen sırayı ve mantığı kullanmak için MediaMetadata dönüşümünü MediaDescriptionCompat ile uyumlu hale getirin.
    • Media3 denetleyicisine önemli olmayan hataların gönderilmesine izin veren MediaSession.sendError() öğesini ekleyin. Bildirim denetleyicisi kullanıldığında (MediaSession.getMediaNotificationControllerInfo() bölümüne bakın), özel hata, platform oturumunun PlaybackState değerini belirli hata bilgileriyle hata durumuna güncellemek için kullanılır (#543).
    • Belirli bir kumandadaki bir dizi oyuncu etkileşimi sona erdiğinde oturumları bilgilendirmek için MediaSession.Callback.onPlayerInteractionFinished() ekleyin.
    • Hata ve mümkünse hatanın nasıl çözüleceği hakkında daha fazla bilgi sağlamak için SessionError ekleyin ve hata kodu yerine SessionResult ve LibraryResult içinde kullanın.
    • Medya oturumu yayınlayan uygulamalarla etkileşimleri test etmek için kullanılabilecek media3 denetleyici test uygulamasının kodunu yayınlayın.
    • media3'ün MediaSession[Builder].setSessionExtras() özelliğine iletilen ekstraları media1 denetleyicisinin PlaybackStateCompat.getExtras() özelliğine iletin.
    • Önemli ve önemsiz hataları platform oturumuyla eşleyin. Bir PlaybackException, PlaybackStateCompat'un kritik hata durumuyla eşlenir. Medya bildirim denetleyicisine MediaSession.sendError(ControllerInfo, SessionError) ile gönderilen bir SessionError, PlaybackStateCompat'de kritik olmayan bir hatayla eşlenir. Bu, hata kodu ve mesajın ayarlandığı ancak platform oturumunun durumunun STATE_ERROR'tan farklı kaldığı anlamına gelir.
    • Genel oturum etkinliğini geçersiz kılmak için oturum etkinliğinin kontrol cihazı başına ayarlanmasına izin verin. Oturum etkinliği, AcceptedResultBuilder.setSessionActivivty(PendingIntent) ile ConnectionResult oluşturarak bağlantı sırasında bir kontrolör için tanımlanabilir. Bağlantı kurulduktan sonra oturum etkinliği MediaSession.setSessionActivity(ControllerInfo, PendingIntent) ile güncellenebilir.
    • MediaLibrarySession.Callback'e yapılan çağrıların hata kopyalama işlemi iyileştirildi. Hata çoğaltma özelliği artık hata türünü seçmek veya varsayılan olarak etkin olan hata çoğaltmayı devre dışı bırakmak için MediaLibrarySession.Builder.setLibraryErrorReplicationMode() kullanılarak yapılandırılabilir.
  • Kullanıcı Arayüzü:
    • ExoPlayer'a bağlıyken PlayerView'e resim görüntüleme desteği ekleyin (#1144).
    • XML özellikleri aracılığıyla PlayerControlView'teki çeşitli simgelerin özelleştirmesini ekleyin. Böylece, genel geçersiz kılma yerine (#1200) PlayerView örneği başına farklı çizilebilir öğelere izin verebilirsiniz.
    • API 34'te bir Oluştur AndroidView içinde SurfaceView kullanıldığında videonun uzatılmasına/kırpılmasına neden olan platform hatasını giderme (#1237).
  • İndirilenler:
    • DownloadHelper'ün, yayınlanmamış Renderer örneklerini sızdırmadığından emin olun. Bu durum, uygulamanın IllegalStateException: Too many receivers, total of 1000, registered for pid ile kilitlenmesine neden olabilir (#1224).
  • Cronet Uzantısı:
    • CronetDataSource'te SocketTimeoutException sorununu düzeltin. Cronet'in bazı sürümlerinde geri çağırma işlevi tarafından sağlanan istek her zaman aynı değildir. Bu durum, geri çağırma işleminin tamamlanmamasına ve isteğin zaman aşımına uğramasına neden olur (https://issuetracker.google.com/328442628).
  • HLS Uzantısı:
    • Kesintiyi bekleyen bekleyen EMSG örneklerinin, HlsSampleStreamWrapper içinde yanlış bir ofsetle atanması ve bunun sonucunda IndexOutOfBoundsException veya IllegalArgumentException oluşmasına yol açan hata düzeltildi (#1002).
    • Birincil olmayan oynatma listelerinin LL-HLS yayınları için sürekli yeniden yüklenmesine neden olan hata düzeltildi (#1240).
    • Başlatma segmentleriyle HLS için CMCD'nin etkinleştirilmesinin Source Error ve IllegalArgumentException ile sonuçlandığı hatayı düzeltin.
    • Canlı oynatma sırasında birincil olmayan oynatma listelerinin yenilenmemesi hatası düzeltildi (#1240).
    • HLS canlı yayınları için CMCD'nin etkinleştirilmesinin ArrayIndexOutOfBoundsException (#1395) hatasına neden olduğu sorun düzeltildi.
  • DASH Uzantısı:
    • Çok dönemli canlı yayını yeniden hazırlamanın hata oluşturmasına yol açan hata düzeltildiIndexOutOfBoundsException (#1329).
    • dashif:Laurl lisans URL'leri için destek eklendi (#1345).
  • Cast Uzantısı:
    • MediaQueueItem albüm başlığını Media3 medya öğesindeki sanatçıya dönüştüren hatayı düzeltin (#1255).
  • Test Yardımcı Programları:
    • FakeRenderer'de onInit() ve onRelease() işaretlemelerini uygulayın.
    • TestPlayerRunHelper.runUntil()/playUntil() yöntemlerini, önemli olmayan hatalarda (ör. AnalyticsListener.onVideoCodecError()'a bildirilenler) başarısız olacak şekilde değiştirin. Bu davranışı devre dışı bırakmak için yeni TestPlayerRunHelper.run(player).ignoringNonFatalErrors().untilXXX() yöntem zincirini kullanın.
  • Demo uygulama:
    • Kısa form demo uygulamasında DefaultPreloadManager kullanın.
    • Tekrar modunu komut satırından Intent bağımsız değişkenleriyle ayarlamaya izin verin (#1266).
    • Cihaz tarafından destekleniyorsa HttpDataSource olarak HttpEngineDataSource kullanın.
  • Desteği sonlandırılan sembolleri kaldırın:
    • CronetDataSourceFactory öğesini kaldırın. Bunun yerine CronetDataSource.Factory kullanın.
    • Bazı DataSpec kurucularını kaldırın. Bunun yerine DataSpec.Builder politikasını kullanın.
    • setContentTypePredicate(Predicate) yöntemini DefaultHttpDataSource, OkHttpDataSource ve CronetDataSource'ten kaldırın. Bunun yerine her XXXDataSource.Factory için eşdeğer yöntemi kullanın.
    • OkHttpDataSource kurucularını ve OkHttpDataSourceFactory'ı kaldırın. Bunun yerine OkHttpDataSource.Factory politikasını kullanın.
    • PlayerMessage.setHandler(Handler) öğesini kaldırın. Bunun yerine setLooper(Looper) kullanın.
    • Timeline.Window.isLive alanını kaldırın. Bunun yerine isLive() yöntemini kullanın.
    • DefaultHttpDataSource kurucularını kaldırın. Bunun yerine DefaultHttpDataSource.Factory kullanın.
    • DashMediaSource.DEFAULT_LIVE_PRESENTATION_DELAY_MS öğesini kaldırın. Bunun yerine DashMediaSource.DEFAULT_FALLBACK_TARGET_LIVE_OFFSET_MS kullanın.
    • MediaCodecInfo.isSeamlessAdaptationSupported(Format, Format, boolean) öğesini kaldırın. Bunun yerine MediaCodecInfo.canReuseCodec(Format, Format) politikasını kullanın.
    • DrmSessionManager.DUMMY ve getDummyDrmSessionManager() yöntemini kaldırın. Bunun yerine DrmSessionManager.DRM_UNSUPPORTED politikasını kullanın.
    • AnalyticsListener.onAudioInputFormatChanged(EventTime, Format), AnalyticsListener.onVideoInputFormatChanged(EventTime, Format), AudioRendererEventListener.onAudioInputFormatChanged(Format), VideoRendererEventListener.onVideoInputFormatChanged(Format) öğelerini kaldırın. Bunun yerine DecoderReuseEvaluation alan adı alan aşırı yüklemeleri kullanın.
    • RendererSupport.FormatSupport IntDef ve FORMAT_HANDLED, FORMAT_EXCEEDS_CAPABILITIES, FORMAT_UNSUPPORTED_DRM, FORMAT_UNSUPPORTED_SUBTYPE, FORMAT_UNSUPPORTED_TYPE sabitlerini kaldırın. Bunun yerine androidx.media3.common.C'teki eşdeğer IntDef ve sabitleri kullanın (ör. C.FORMAT_HANDLED).
    • Bundleable arayüzünü kaldırın. Buna tüm Bundleable.Creator<Foo> CREATOR sabit alanlarının kaldırılması da dahildir. Arama yapanlar bunun yerine her türde Bundle toBundle() ve static Foo fromBundle(Bundle) yöntemlerini kullanmalıdır.

Sürüm 1.4.0-rc01

10 Temmuz 2024

1.4.0 kararlı sürümünü kullanın.

Sürüm 1.4.0-beta01

26 Haziran 2024

1.4.0 kararlı sürümünü kullanın.

Sürüm 1.4.0-alpha02

7 Haziran 2024

1.4.0 kararlı sürümünü kullanın.

Sürüm 1.4.0-alpha01

17 Nisan 2024

1.4.0 kararlı sürümünü kullanın.

1.3.0 sürümü

1.3.1 sürümü

11 Nisan 2024

androidx.media3:media3-*:1.3.1 yayınlanır. 1.3.1 sürümü bu taahhütleri içerir.

  • Ortak Kitaplık:
    • Yerelleştirilmiş veya diğer alternatif etiketlere izin vermek için Format.labels ekleyin.
  • ExoPlayer:
    • PreloadMediaPeriod'ün yeniden önceden yüklendiğinde akışları koruyamamasına neden olan sorun düzeltildi.
    • Parçayı yeniden seçerken oynatma dönemine doğru TrackSelectionResult değerini uygulayın.
    • Erken etkinleştirilen oluşturucular, medya öğeleri arasında geçiş yaparken yalnızca oynatma süresini ilerlettikten sonra başlatılmalıdır (#1017).
    • DefaultVideoFrameProcessor.Factory.Builder.build() için proguard -keepclasseswithmembers kuralına eksik döndürme türünü ekleyin (#1187).
  • Dönüştürücü:
    • API 30'dan önce MediaMuxer negatif sunum zaman damgalarını desteklemediği için istisna atılması sorununa geçici çözüm ekleyin.
  • Parça Seçimi:
    • DefaultTrackSelector: Daha düşük veya ayarlanmamış kare hızına sahip video parçalarına kıyasla "makul" kare hızına (>=10 fps) sahip video parçalarını tercih edin. Bu sayede oynatıcı, hareketli fotoğraflardan ayıklanan MP4'lerde "gerçek" video parçasını seçer. Bu MP4'ler, biri daha yüksek çözünürlükte ancak çok az sayıda kare içeren iki HEVC parçası içerebilir (#1051).
  • Ayıklayıcılar:
    • WAV dosyalarından tek sayılı boyutlarda parçalar okunurken dolgunun atlanmamasına neden olan sorun düzeltildi (#1117).
    • MP3: Format.averageBitrate öğesini XING ve VBRI gibi meta veri çerçevelerinden doldurun.
    • MPEG-TS: Bir akıştaki son erişim birimini örnek kuyruğuna aktararak son karenin oluşturulmasını sağlamayı amaçlayan bir değişikliği geri alın (#7909). Bunun nedeni, yalnızca I-frame HLS yayınlarında (#1150) ve H.262 HLS yayınlarında (#1126) yeni sorunlara neden olan değişikliktir.
  • Ses:
    • Ses parçası, aktarma modunda başlatılamazsa aktarma işlemini devre dışı bırakarak oluşturma aracının kurtarılmasına izin verin.
  • Video:
    • Galaxy Tab S7 FE, Google TV Yüklü Chromecast ve Lenovo M10 FHD Plus'ta 60 fps H265 yayınlarının desteklenmiyor olarak işaretlenmesine neden olan cihaz sorunu için geçici çözüm ekleme
    • Cihaz, API tarafından gerektiği gibi bunu otomatik olarak yapmasa bile tünel oluşturma sırasında ilk karenin her zaman oluşturulmasını sağlayan geçici çözümü ekleyin (#1169). (#966).
    • HDR renk bilgisinin işlenmesi nedeniyle codec'in yanlış davranmasına ve SDR video parçaları için uyarlanabilir biçim geçişlerinin yapılmasına engel olan sorunu düzeltin (#1158).
  • Metin:
    • WebVTT: Doğrudan art arda gelen işaretçilerin, WebvttParser.parse öğesinden CuesWithTiming öğesi oluşturmasını engelleyin (#1177).
  • DRM:
    • Bazı Android 14 cihazlarda ResourceBusyException veya NotProvisionedException yerine MediaDrm çerçevesi tarafından atılabilen NoSuchMethodError sorununu giderme (#1145).
  • Etki:
    • Renk alanlarını dönüştürerek PQ'den SDR'ye ton eşleme özelliği iyileştirildi.
  • Oturum:
    • Denetleyici mevcut öğeyi değiştirdiğinde mevcut konumun geri sıçraması sorunu düzeltildi (#951).
    • Yalnızca null olmayan extras içeren MediaMetadata öğesinin medya denetleyicileri ve oturumlar arasında iletilmemesine neden olan sorun düzeltildi (#1176).
  • Kullanıcı Arayüzü:
    • Locale görünen ad tanımlayamazsa ses parçasının dil adını eklemek için yedek (#988).
  • DASH Uzantısı:
    • Manifest'teki tüm Label öğelerini Format.labels ile doldurun (#1054).
  • RTSP Uzantısı:
    • SDP ayrıştırmasında boş oturum bilgileri değerlerini (i-etiketleri) atlama (#1087).
  • Kod Çözücü Uzantıları (FFmpeg, VP9, AV1, MIDI vb.):
    • MIDI uzantısı, yapılandırılmak için ek bir Maven deposu gerektirdiğinden varsayılan olarak yerel bağımlılık olarak devre dışı bırakılır. Yerel bir bağımlılıktan bu modüle ihtiyaç duyan kullanıcılar modülü yeniden etkinleştirebilir.

1.3.0 sürümü

6 Mart 2024

androidx.media3:media3-*:1.3.0 yayınlanır. 1.3.0 sürümü bu taahhütleri içerir.

  • Ortak Kitaplık:
    • package'ın mevcut uygulamanın paketinden farklı olduğu android.resource://package/[type/]name ham kaynak URI'leri için destek uygulayın. Bu yöntemin her zaman çalışacağı belirtilmiş olsa da bugüne kadar doğru şekilde uygulanmamıştır.
    • Uygulama kodu tarafından ayarlanan veya medyadan okunan MIME türlerini tamamen küçük harf olacak şekilde normalleştirin.
    • AdPlaybackState dosyasında reklamları tek bir Uri yerine tam MediaItem ile tanımlayın.
    • minSdk değerini 19'a yükseltin (Android KitKat). Bu, diğer tüm AndroidX kitaplıklarıyla uyumludur ve AndroidX bağımlılıklarımızın en son sürümlerine yükseltmemiz için gereklidir.
    • Bunlardan en az biri boş olmadığında MediaMetadata.Builder.populate(MediaMetadata) içinde hem artworkUri hem de artworkData doldurulur (#964).
  • ExoPlayer:
    • Uygulamaların oynatmadan önce belirli bir başlangıç konumunda bir içerik medya kaynağını önceden yüklemesine olanak tanıyan PreloadMediaSource ve PreloadMediaPeriod öğelerini ekleyin. PreloadMediaSource, içerik medya kaynağını Timeline'ü alacak şekilde hazırlama, belirtilen başlangıç konumunda dönemi hazırlama ve önbelleğe alma, parçaları seçme ve döneme ait medya verilerini yükleme işlemlerini gerçekleştirir. Uygulamalar, PreloadMediaSource.PreloadControl uygulayarak önceden yükleme ilerleme durumunu kontrol eder ve önceden yüklenmiş kaynağı oynatıcıya ayarlayarak oynatır.
    • Uygulamaların ImageRenderer.ImageOutput ayarlarına izin veren ExoPlayer.setImageOutput ekleyin.
    • DefaultRenderersFactory artık varsayılan olarak boş ImageOutput ve ImageDecoder.Factory.DEFAULT ile birlikte oynatıcıya bir ImageRenderer sağlar.
    • Sessiz mod atlandığında Player.Listener.onPositionDiscontinuity etkinliği yayınlama (#765).
    • Ayıklama sırasında altyazı ayrıştırma için deneysel destek ekleme. Bu özelliği MediaSource.Factory.experimentalParseSubtitlesDuringExtraction() kullanarak etkinleştirebilirsiniz.
    • PreloadMediaSource ile uyarlanabilir medya kaynaklarını destekleyin.
    • HttpEngine API'sini kullanarak HttpDataSource olan HttpEngineDataSource'ü uygulayın.
    • CompositeSequenceableLoader alt sınıflandırmasını önleyin. Bu bileşen daha önce genişletilebilir hale getirilmişti ancak kitaplıkta hiçbir zaman alt sınıfa ayrılmamıştı. Özelleştirmeler, süsleyici kalıbı kullanılarak bir örneği sarmalayarak ve özel bir CompositeSequenceableLoaderFactory uygulayarak yapılabilir.
    • Aynı zamanın tekrarlanmasının, bu öğenin meta verilerinin temizlenmesine neden olduğu sorun düzeltildi (#1007).
    • BundledChunkExtractor.Factory ve DefaultHlsExtractorFactory üzerindeki experimentalSetSubtitleParserFactory yöntemlerini setSubtitleParserFactory olarak yeniden adlandırın ve null iletme işlemine izin vermeyin. Ayrıştırma davranışını kontrol etmek için yeni experimentalParseSubtitlesDuringExtraction(boolean) yöntemlerini kullanın.
    • Ayıklama sırasında kullanılan SubtitleParser.Factory öğesini özelleştirme desteği eklendi. Bunu MediaSource.Factory.setSubtitleParserFactory() ile yapabilirsiniz.
    • MergingMediaSource kaynağından oluşturulan tüm Format.id alanlarına kaynak ön ek ekleyin. Bu, hangi kaynağın Format (#883) oluşturduğunu belirlemenize yardımcı olur.
    • Özel Common Media Client Data (CMCD) anahtar adlarını doğrulamak için kullanılan normal ifadeyi, yalnızca kısa çizgi olup olmadığını kontrol edecek şekilde değiştirerek düzeltin (#1028).
    • CMCD sorgu parametrelerinin çift kodlamasını durdurun (#1075).
  • Dönüştürücü:
    • H.265/HEVC SEF ağır çekim videolarını düzleştirme desteği eklendi.
    • Özellikle "videoyu kaldırma" düzenlemeleri için kod dönüştürme hızını artırın.
    • Çıkış dosyasının bir video karesiyle başlamasını sağlamak için API ekleyin. Bu, kırpma işlemlerinin çıktısını, ilk video karesini sunum zaman damgasına kadar göstermeyen oynatıcı uygulamalarıyla daha uyumlu hale getirebilir (#829).
    • Tek öğe MP4 kırpma işlemlerini optimize etme desteği eklendi.
    • Video karesinde çıkış dosyasında ilk zaman damgasının bulunduğundan emin olmak için destek ekleyin. iOS tabanlı oynatıcılarda siyah çerçeveyle başlayan çıkış dosyalarını düzeltir (#829).
  • Parça Seçimi:
    • Resim parçası seçimini etkinleştirmek için DefaultTrackSelector.selectImageTrack ekleyin.
    • Hem resim parçası hem de video parçası varsa resim parçasının seçilip seçilmeyeceğini belirlemek için TrackSelectionParameters.isPrioritizeImageOverVideoEnabled ekleyin. Varsayılan değer false'tür. Bu, video parçasının seçilmesine öncelik verildiği anlamına gelir.
  • Ayıklayıcılar:
    • ColorInfo.colorSpace, ColorInfo.colorTransfer ve ColorInfo.colorRange değerlerini almak için MP4 çıkarıcıya ek AV1C ayrıştırma ekleyin (#692).
    • MP3: Info başlığı (Xing başlığının CBR eşdeğeri) olan dosyalar için sabit bit hızı (CBR) araması kullanın. Daha önce Info başlığındaki arama tablosunu kullanıyorduk ancak bu, tabloyu yok sayıp dosyanın CBR olduğunu varsaydığımızdan daha az hassas arama sonuçlarına neden oluyordu.
    • MPEG2-TS: DTS, DTS-LBR ve DTS:X Profile2 desteği ekleyin (#275).
    • TS tanımlayıcılarından ses türlerini ayıklayın ve bunları rol işaretleriyle eşleyin. Böylece kullanıcılar daha bilinçli ses parçası seçimleri yapabilir (#973).
  • Ses:
    • Sessizliği atlama algoritması, ses düzeyinde yumuşak bir artışla iyileştirildi. Minimum sessizlik ve daha doğal sessizlik süreleri korundu (#7423).
    • Atlanan sessizliği daha kesin bir şekilde bildirme (#1035).
  • Video:
    • VideoFrameProcessor.Factory bağımsız değişkeni alan MediaCodecVideoRenderer oluşturucuyu değiştirip VideoSinkProvider bağımsız değişkeni alan bir oluşturucuyla değiştirin. Özel bir VideoFrameProcessor.Factory eklemek isteyen uygulamalar, özel VideoFrameProcessor.Factory kullanan bir CompositingVideoSinkProvider örneği oluşturabilir ve video alıcı sağlayıcıyı MediaCodecVideoRenderer'ye iletebilir.
  • Metin:
    • DefaultExtractorsFactory.setTextTrackTranscodingEnabled kullanılırken Tried to marshall a Parcel that contained Binder objects hatasını çözmek için bitmap ipuçlarının serileştirilmesini düzeltin (#836).
    • CEA-708: rowLock değerini yoksay. CEA-708-E S-2023 spesifikasyonunda, akıştaki değerlerden bağımsız olarak rowLock ve columnLock değerlerinin her ikisinin de doğru olduğu varsayılır (columnLock desteği uygulanmadığından her zaman yanlış olduğu varsayılır).
  • Resim:
    • DASH küçük resimleri için destek eklendi. Grid resimleri kırpılır ve sunum zamanlarına yakın ImageOutput ayrı küçük resimler sağlanır.
  • DRM:
  • IMA uzantısı:
    • Uygun dosya uzantısı olmayan DASH ve HLS reklamların oynatılamama sorunu düzeltildi.
  • Oturum:
    • TV uygulamaları için çift tıklama algılamayı devre dışı bırakma (#962).
    • Yalnızca null olmayan ekstralar içeren MediaItem.RequestMetadata öğesinin medya denetleyicileri ve oturumlar arasında iletilmemesi sorunu düzeltildi.
    • MediaLibrarySession.Builder sınıfına, MediaLibraryService yerine yalnızca Context alan bir kurucu ekleyin.
  • HLS Uzantısı:
    • HlsMediaPeriod değerini pakete özel görünürlük olarak azaltın. Bu tür, HLS paketinin dışından doğrudan bağımlı olmamalıdır.
    • Çözüm, bir segmentin başlangıcını daha verimli bir şekilde bulmaya çalışır (#1031).
  • Kod Çözücü Uzantıları (FFmpeg, VP9, AV1, MIDI vb.):
    • MIDI kod çözücü: SysEx etkinlik mesajlarını yoksay (#710).
  • Test Yardımcı Programları:
    • TestPlayerRunHelper.playUntilPosition'te oynatmayı duraklatmayın. Test, oynatmayı oynatma durumunda tutar ancak test, iddialar ve başka işlemler ekleyene kadar ilerlemeyi askıya alır.
  • Demo uygulama:
    • Kısa içerik kullanım alanında PreloadMediaSource'ün kullanımını göstermek için kısa bir demo modülü ekleyin.

Sürüm 1.3.0-rc01

22 Şubat 2024

1.3.0 kararlı sürümünü kullanın.

Sürüm 1.3.0-beta01

7 Şubat 2024

1.3.0 kararlı sürümünü kullanın.

Sürüm 1.3.0-alpha01

15 Ocak 2024

1.3.0 kararlı sürümünü kullanın.

Sürüm 1.2.0

Sürüm 1.2.1

9 Ocak 2024

  • ExoPlayer:
    • LiveConfiguration.min/maxOffset aralığının dışında manuel arama yapıldığında ofsetin min/maxOffset değerine geri ayarlanmaya devam etmesiyle ilgili sorun düzeltildi.
    • 3, 5, 6, 7 ve 8 kanal için OPUS ve VORBIS kanal düzenlerinin yanlış olması sorunu düzeltildi (#8396).
    • Canlı yayında sıfıra ilerleme yapıldıktan sonra parça seçimlerinin, yayının varsayılan konumda başlatılmasına neden olduğu sorun düzeltildi (#9347).
    • Yeni CmcdData.Factory örneklerinin, bufferedDurationUs için parça kaynaklarından negatif değerler alması ve bunun sonucunda IllegalArgumentException (#888) oluşması sorunu düzeltildi.
  • Dönüştürücü:
    • Kodlayıcının, yüksek çalışma hızı ayarlanmasından dolayı yapılandırma sırasında hata vermesine yol açan sorunu giderme
  • Ayıklayıcılar:
    • JPEG hareketli fotoğraflardaki ikincil (oynatılamayan) HEVC parçalarını, daha yüksek çözünürlükleri nedeniyle oynatılmak üzere otomatik olarak seçilmelerini önlemek için ROLE_FLAG_ALTERNATE olarak işaretleyin.
    • TS H264 akışları için yanlış animasyon karesi algılama sorununu düzeltin (#864).
    • 47.721 saniyeden uzun TS akışlarının süre tahminini düzeltin (#855).
  • Ses:
    • Birden çok kez çağrıldığında SilenceSkippingAudioProcessor için EOS'un 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 cihaz sorunu için geçici çözüm eklendi (#693).
  • Meta veriler:
    • MediaMetadata değerinin yalnızca büyük harfli anahtarlarla Vorbis yorumlarından doldurulduğu hatayı düzeltin (#876).
    • Çok büyük ID3 çerçeveleri ayrıştırılırken OutOfMemoryError yakalanır. Bu durumda, oynatma tamamen başarısız olmak yerine etiket bilgileri olmadan devam edebilir.
  • DRM:
    • Sahte ClearKey https://default.url lisans URL'si için geçici çözümü API 33 ve sonraki sürümlere genişletin (eskiden geçici çözüm yalnızca API 33'te uygulanıyordu) (#837).
    • Oynatıcıya bağlı bir yüzey olmadan şifrelenmiş içerikten net içeriğe geçiş yaparken ERROR_DRM_SESSION_NOT_OPENED hatası düzeltildi. Hata, net içeriği oynatmak için güvenli bir kod çözücünün yanlış kullanılmasından kaynaklanıyordu.
  • Oturum:
    • Özel anahtarları ve değerleri MediaMetadataCompat ile MediaMetadata.extras arasına, MediaMetadata.extras ile MediaMetadataCompat arasına yerleştirin (#756, #802).
    • Eski kontrolörler için notifyChildrenChanged yayını düzeltme (#644).
    • Bildirimin devre dışı bırakılmış setWhen zamanlayıcısı için negatif bir zaman ayarlandığında bazı cihazlarda kilitlenmeye neden olan hata düzeltildi (#903).
    • İlk bildirim güncellemesi istendiğinde medya bildirimi denetleyicisi bağlantıyı tamamlamamışsa IllegalStateException hatasını düzeltin (#917).
  • Kullanıcı Arayüzü:
    • Bir BottomSheetDialogFragment'te Material Design ile kullanıldığında ileri ve geri düğmelerinin görünmemesiyle ilgili sorun düzeltildi (#511).
    • PlayerControlView cihazının ileri sarma düğmesindeki sayıların yanlış hizalanması sorunu düzeltildi (#547).
  • DASH Uzantısı:
    • DASH manifestinde Dolby için "f800" değerini 5 kanal sayısı olarak ayrıştırın (#688).
  • Kod Çözücü Uzantıları (FFmpeg, VP9, AV1, MIDI vb.):
    • MIDI: İleri sarma işleminin Program Değiştirme etkinliklerini atladığı sorunu düzeltin (#704).
    • FFmpeg 6.0'a geçin ve desteklenen NDK'yı r26b olarak güncelleyin (#707, #867).
  • Cast Uzantısı:
    • Yayın cihazında medya yükleme başarısız olduğunda uygulamanın kilitlenmemesi için Timeline oluşturma işlemini temizleyin (#708).

Sürüm 1.2.0

15 Kasım 2023

  • Ortak Kitaplık:
    • Log.Logger arayüzündeki yöntemlere @Nullable Throwable parametresi ekleyin. Bu yöntemlerin message parametresi artık Log.{d,i,w,e}() yöntemlerine iletilen Throwable hakkında herhangi bir bilgi içermiyor. Bu nedenle, isterseniz uygulamalarınızın bu bilgileri manuel olarak eklemesi gerekir (muhtemelen Logger.appendThrowableString(String, Throwable) kullanılarak).
    • Boş değer atanabilir genel tür parametrelerinin ve boş değer atanabilir dizi öğesi türlerinin boş değer atanabilir olarak algılanmamasına neden olan Kotlin uyumluluğu sorunu düzeltildi. Örnekler TrackSelectorResult ve SimpleDecoder yöntem parametreleridir (#6792).
    • Oynatma geçici olarak engellenirken (ör. geçici ses odak kaybı nedeniyle) Util.shouldShowPlayButton'te varsayılan kullanıcı arayüzü ve bildirim davranışını "çal" düğmesi gösterecek şekilde değiştirin. Eski davranış, PlayerView.setShowPlayButtonIfPlaybackIsSuppressed(false) veya MediaSession.Builder.setShowPlayButtonIfPlaybackIsSuppressed(false) kullanılarak sürdürülebilir (#11213).
    • https://issuetracker.google.com/251172715 sorununu düzeltmek için androidx.annotation:annotation-experimental sürümünü 1.3.1 sürümüne yükseltin.
    • ExoPlayer.setAudioAttributes öğesini Player arayüzüne taşıyın.
  • ExoPlayer:
    • AC4 yayınlarında, yalnızca kod çözme amaçlı örneklerin doğru şekilde tanımlanmamasından kaynaklanan arama sorunlarını düzeltin (#11000).
    • ExoPlayer.Builder.setSuppressPlaybackOnUnsuitableOutput aracılığıyla bu özellik etkinleştirildiğinde, uygun olmayan ses çıkış cihazlarında (ör. Wear OS cihazlardaki yerleşik hoparlör) oynatma işleminin engellenmesini ekleyin. Uygun ses çıkışı olmadığında veya uygun çıkışların tümü oynatma sırasında bağlantısını kestikten sonra oynatma denemesi yapılırsa oynatma engelleme nedeni Player.PLAYBACK_SUPPRESSION_REASON_UNSUITABLE_AUDIO_OUTPUT olarak güncellenir. Uygun bir çıkış bağlandığında engelleme nedeni kaldırılır.
    • Player.replaceMediaItem(s) üzerinden oluşturulduktan sonra MediaItem güncellemelerini kabul etmek için MediaSource.canUpdateMediaItem ve MediaSource.updateMediaItem ekleyin.
    • Kitaplığın Player.replaceMediaItem(s) üzerinden sağladığı tüm MediaSource sınıfları için MediaItem güncellemelerine izin verin (#33, #9978).
    • MimeTypes.TEXT_EXOPLAYER_CUESMimeTypes.APPLICATION_MEDIA3_CUES olarak yeniden adlandırın.
    • Bir PNG dosyasının tamamını gönderip okuyan PngExtractor işlevini TrackOutput içine tek bir örnek olarak ekleyin.
    • SequenceableLoader arayüzündeki SequenceableLoader.continueLoading(long) yöntemini SequenceableLoader.continueLoading(LoadingInfo loadingInfo) olarak geliştirin. LoadingInfo, mevcut playbackPositionUs'a ek olarak playbackSpeed ve lastRebufferRealtimeMs gibi ek parametreler içerir.
    • ChunkSource arayüzündeki ChunkSource.getNextChunk(long, long, List, ChunkHolder) yöntemini ChunkSource.getNextChunk(LoadingInfo, long, List, ChunkHolder) olarak iyileştirin.
    • Common Media Client Data (CMCD) günlük kaydına ek alanlar ekleyin: arabelleğe alma açlığı (bs), son tarih (dl), oynatma hızı (pr) ve başlatma (su) (#8699).
    • ColorInfo (#491) özelliğine parlaklık ve renk bit derinliği ekleyin.
    • Ortak Medya İstemci Verileri (CMCD) günlük kaydına ek alanlar ekleyin: sonraki nesne isteği (nor) ve sonraki aralık isteği (nrr) (#8699).
    • Sorgu parametrelerini kullanarak Common Media Client Data (CMCD) verilerini iletme işlevi ekleyin (#553).
    • ExperimentalBandwidthMeter'teki ConcurrentModificationException sorununu düzeltin (#612).
    • CompositeMediaSource.getMediaTimeForChildMediaTime parametresini MediaPeriodId alanına ekleyin.
    • ConcatenatingMediaSource2'te ClippingMediaSource (ve dönem/pencere zaman ofsetleri olan diğer kaynaklar) desteği (#11226).
    • BaseRenderer.onStreamChanged() işlevini, MediaPeriodId bağımsız değişkenini de alacak şekilde değiştirin.
  • Dönüştürücü:
    • Resim girişleri için EXIF döndürme verilerini ayrıştırın.
    • TransformationRequest.HdrMode ek açıklama türünü ve ilişkili sabitlerini kaldırın. Bunun yerine Composition.HdrMode ve ilişkili sabitleri kullanın.
    • Döndürme sorunlarını düzeltmek için OverlaySettings öğesini basitleştirin.
    • SampleConsumer.queueInputBitmap için frameRate ve durationUs parametreleri TimestampIterator olarak değiştirildi.
  • Parça Seçimi:
    • Sorunsuz olmayan uyarlamaya açıkça izin vermek veya izin vermemek için DefaultTrackSelector.Parameters.allowAudioNonSeamlessAdaptiveness ekleyin. Varsayılan değer, true olan mevcut davranışında kalır.
  • Ayıklayıcılar:
    • MPEG-TS: Bir yayının son erişim birimini örnek kuyruğuna aktararak son karenin oluşturulmasını sağlayın (#7909).
    • rotationDegrees değerini belirlerken yazım hatası düzeltildi. projectionPosePitch yerine projectionPoseRoll kullanıldı (#461).
    • Extractor örneklerinin instanceof ile doğrudan denetlenebileceği varsayımını kaldırın. Bir Extractor'ün uygulama ayrıntılarına çalışma zamanında erişmek istiyorsanız önce Extractor.getUnderlyingInstance işlevini çağırmanız gerekir.
    • BmpExtractor ekleyin.
    • WebpExtractor ekleyin.
    • HeifExtractor ekleyin.
    • Mp4Extractor'ye QuickTime classic desteği ekleyin.
  • Ses:
    • MP4 ve Matroska'da 24/32 bit büyük endian PCM desteği eklendi ve MP4'te lpcm için PCM kodlaması ayrıştırıldı.
    • MP4'te Vorbis seslerini ayıklamak için destek eklendi.
    • DefaultAudioOffloadSupportProvider aracılığıyla, alıcının biçim için sağlayabileceği aktarma desteği düzeyini alan AudioSink.getFormatOffloadSupport(Format) ekleyin. isFormatSupported, isGaplessSupported ve isSpeedChangeSupported içeren yeni AudioOffloadSupport öğesini döndürür.
    • Ses alıcısında aktarma yapılandırmasının yapılandırıldığı AudioSink.setOffloadMode() öğesini ekleyin. Varsayılan değer AudioSink.OFFLOAD_MODE_DISABLED'tir.
    • Boşaltma işlemi, TrackSelectionParameters'teki setAudioOffloadPreference üzerinden etkinleştirilebilir. Ayarlanan tercih etkinse cihaz, biçim için aktarmayı destekliyorsa ve parça seçimi tek bir ses parçasıysa ses aktarma etkinleştirilir.
    • audioOffloadModePreference, AUDIO_OFFLOAD_MODE_PREFERENCE_REQUIRED olarak ayarlanırsa DefaultTrackSelector yalnızca bir ses parçası seçer ve bu parçanın biçimi, aktarma işleminde destekleniyorsa seçer. İndirme işleminde ses parçası desteklenmiyorsa hiçbir parça seçilmez.
    • Parça geçişinden sonra oynatma konumu sorunu nedeniyle API düzeyi 33'ten önceki sürümlerde aktarma için kesintisiz oynatma desteği devre dışı bırakılıyor.
    • enableOffload parametresini DefaultRenderersFactory.buildAudioSink yöntem imzasından kaldırın.
    • DefaultAudioSink.Builder.setOffloadMode yöntemini kaldırın.
    • intdef değerini DefaultAudioSink.OffloadMode.OFFLOAD_MODE_ENABLED_GAPLESS_DISABLED kaldırın.
    • Aktarılan oynatma sırasında Opus ses aralığı olmayan meta verileri destekleme
    • İlk yazma işleminde başarısız olursa aktarma işlemini devre dışı bırakarak oluşturma aracının kurtarılmasına izin verin (#627).
    • Yalnızca sesli oynatma için varsayılan olarak Aktarmayı Planla'yı etkinleştirin.
    • ExoPlayer.experimentalSetOffloadSchedulingEnabled ve AudioOffloadListener.onExperimentalOffloadSchedulingEnabledChanged öğelerini silin.
    • onExperimentalSleepingForOffloadChanged onSleepingForOffloadChanged, onExperimentalOffloadedPlayback ise onOffloadedPlayback olarak yeniden adlandırıldı.
    • Ses aktarma moduyla ilgili TrackSelectionParameters arayüzlerini ve tanımlarını bir iç AudioOffloadPreferences sınıfına taşıyın.
    • AnalyticsListener, AudioRendererEventListener ve AudioSink.Listener için onAudioTrackInitialized ve onAudioTrackReleased geri aramaları ekleyin.
    • DTS Express ses arabelleğinin alt akış sorunu düzeltildi (#650).
    • E-AC3-JOC için özellikler kontrolünün IllegalArgumentException hatası vermesine yol açan hata düzeltildi (#677).
  • Video:
    • MediaCodecVideoRenderer'in özel VideoFrameProcessor.Factory kullanmasına izin verin.
    • Ses akışı negatif zaman damgalarıyla başlarsa ilk karenin oluşturulamadığı hata düzeltildi (#291).
  • Metin:
    • ExoplayerCuesDecoder öğesini kaldırın. sampleMimeType = application/x-media3-cues içeren metin parçaları artık SubtitleDecoder örneğine gerek kalmadan doğrudan TextRenderer tarafından işlenir.
  • Meta veriler:
    • Uygulamanın zaten null döndürmesi gerektiğinden, MetadataDecoder.decode artık "yalnızca kod çözme" örnekleri için çağrılmayacak.
  • Etki:
    • Zaman damgasına göre bitmap girişini sıraya eklemek için VideoFrameProcessor.queueInputBitmap(Bitmap, Iterator<Long>)
    • VideoFrameProcessor.registerInputStream() değerini engellemeyen olarak değiştirin. Uygulamalar VideoFrameProcessor.Listener#onInputStreamRegistered()'ü uygulamalıdır.
    • VideoFrameProcessor.queueInputBitmap için frameRate ve durationUs parametreleri TimestampIterator olarak değiştirildi.
  • IMA uzantısı:
    • Oynatma listesinde ilk öğe olmayan çok dönemli DASH canlı yayınlarının istisna atmasına neden olan hata düzeltildi (#571).
    • AdsLoader.destroy()'ü çağırmadan önce StreamManager'ı serbest bırakma
    • IMA SDK sürümünü 3.31.0'a yükseltin.
  • Oturum:
    • Bildirimler ön plan hizmet davranışını DefaultMediaNotificationProvider'te FOREGROUND_SERVICE_IMMEDIATE olarak ayarlayın (#167).
    • Samsung cihazlarda desteği sonlandırılan API'lerle ilgili sorunları önlemek için yalnızca API 31 ve sonraki sürümleri kullanın (#167).android.media.session.MediaSession.setMediaButtonBroadcastReceiver()
    • Bildirimi ve platform oturumunu doldurmak için kullanılan mevcut komutları ve özel düzeni ayarlamak üzere medya bildirim denetleyicisini proxy olarak kullanın.
    • Platform oturumuna ve ardından Media3'e yönlendirmek yerine, Media3 içinde MediaSessionService.onStartCommand() tarafından alınan medya düğmesi etkinliklerini dönüştürün. Bu sayede, arayan denetleyicisi her zaman medya bildirimi denetleyicisidir ve uygulamalar, desteklenen tüm API düzeylerinde bildirim üzerinden gelen aramaları kolayca aynı şekilde tanıyabilir.
    • Eski bir MediaSessionCompat'a bağlıyken MediaController.getCurrentPosition()'ün ilerlememesi sorunu düzeltildi.
    • Kolaylık için MediaLibrarySession.getSubscribedControllers(mediaId) ekleyin.
    • Denetleyicinin abone olduğu üst kimliğin kullanılabilirliğini doğrulamak için MediaLibrarySession.Callback.onSubscribe() değerini geçersiz kılın. İşlem başarılı olursa abonelik kabul edilir ve tarayıcıya bilgi vermek için notifyChildrenChanged() hemen çağrılır (#561).
    • Automotive OS için oturum tanıtım modülü ekleyin ve Android Auto için oturum tanıtımını etkinleştirin.
    • Medya bildirim denetleyicisi için COMMAND_GET_TIMELINE kullanılamadığında çerçeve oturumunun sırasını ayarlamayın. Android Auto, istemci denetleyici olarak çerçeve oturumundan veri okuyor. Bu durum, Android Auto kullanıcı arayüzündeki queue düğmesinin gösterilmemesine neden oluyor (#339).
    • Varsayılan olarak SimpleBitmapLoader yerine DataSourceBitmapLoader kullanın (#271, #327).
    • Uygulamaların varsayılan medya düğmesi etkinlik işlemesini geçersiz kılmasına olanak tanıyan MediaSession.Callback.onMediaButtonEvent(Intent) öğesini ekleyin.
  • Kullanıcı Arayüzü:
    • Kullanıcının uygun bir ses çıkışı (ör. Bluetooth kulaklık) bağlamasına izin veren bir sistem iletişim kutusu açarak Wear OS cihazlar için Player.PLAYBACK_SUPPRESSION_REASON_UNSUITABLE_AUDIO_OUTPUT nedeniyle oynatma engellemesini ele alan bir Player.Listener uygulaması ekleyin. Uygun bir cihaz, yapılandırılabilir bir zaman aşımı içinde (varsayılan olarak 5 dakika) bağlanırsa dinleyici oynatmayı otomatik olarak devam ettirir.
  • İndirilenler:
    • Android 14 uyumluluğu için DownloadService için "data sync" ön plan hizmet türünü bildirin. Bu hizmeti kullanırken uygulamanın manifest dosyasına dataSync'yi foregroundServiceType olarak eklemesi ve FOREGROUND_SERVICE_DATA_SYNC iznini (#11239) eklemesi de gerekir.
  • HLS Uzantısı:
    • HLS canlı oynatma listesini, son yükleme tamamlanma zamanından değil, son yükleme başlangıç zamanından hesaplanan bir aralıkla yenileyin (#663).
  • DASH Uzantısı:
    • Segment şablonu URL'sinde aynı DASH tanımlayıcının birden fazlasına izin veriliyor.
    • Ayıklama sırasında altyazı ayrıştırma için deneysel destek ekleme. Bu sürüm, altyazı segmentleri arasında geçiş yaparken titremeyi çözme de dahil olmak üzere çakışık altyazıların birleştirilmesi için daha iyi destek sunar. Bu özelliği DashMediaSource.Factory.experimentalParseSubtitlesDuringExtraction()'i kullanarak etkinleştirebilirsiniz (#288).
  • RTSP Uzantısı:
    • TCP'ye geri dönüldüğünde IndexOutOfBoundsException'e veya bazı durumlarda oynatmanın takılmasına neden olabilecek bir yarış koşulu düzeltildi.
    • RtspMediaPeriod durumunu döndürürken RTSP kurulumunda durumu kontrol edin (#577).
    • Seçenekler yanıtının herkese açık üstbilgisinde özel Rtsp istek yöntemlerini yoksayma (#613).
    • Canlı tutma RTSP seçenekleri isteklerinin gönderildiği zaman aralığında RTSP kurulum yanıtı zaman aşımı değerini kullanın (#662).
  • Kod Çözücü Uzantıları (FFmpeg, VP9, AV1, MIDI vb.):
    • Ses sentezlemek için Jsyn kitaplığını kullanan standart MIDI dosyalarının oynatılmasına destek sağlayan MIDI kod çözücü modülünü kullanıma sunuyoruz.
    • Gösterilmesi gerekmeyen çıkış arabelleklerini doğrudan işaretlemek için DecoderOutputBuffer.shouldBeSkipped ekleyin. Bu, desteği sonlandırılacak C.BUFFER_FLAG_DECODE_ONLY yerine tercih edilir.
    • Çözücülerin başlangıç zamanından önce yalnızca kod çözme örneklerinin bırakılmasına izin vermek için Decoder.setOutputStartTimeUs ve SimpleDecoder.isAtLeastOutputStartTimeUs ekleyin. Bu, desteği sonlandırılacak Buffer.isDecodeOnly yerine tercih edilmelidir.
    • MIDI kod çözücü yapısını Maven deposuna yayınlarken oluşan hatayı düzeltme. Artefakt, media3-exoplayer-midi olarak yeniden adlandırıldı (#734).
  • Leanback uzantısı:
    • Bir yüzeyin devre dışı bırakılmasının Leanback kodunda ArithmeticException değerine neden olabileceği hatayı düzeltme (#617).
  • Test Yardımcı Programları:
    • TestExoPlayerBuilder ve FakeClock'ü Espresso kullanıcı arayüzü testleriyle ve Compose kullanıcı arayüzü testleriyle uyumlu hale getirin. Bu, Espresso veya Oluştur görüntüleme etkileşimleri sırasında oynatma işleminin rastgele ilerlediği bir hatayı düzeltir.
  • Desteği sonlandırılan sembolleri kaldırın:
    • TransformationRequest.Builder.setEnableRequestSdrToneMapping(boolean) ve TransformationRequest.Builder.experimental_setEnableHdrEditing(boolean)'ı kaldırın. Composition.Builder.setHdrMode(int) kullanın ve Composition değerini Transformer.start(Composition, String)'ye iletin.
    • Desteği sonlandırılan DownloadNotificationHelper.buildProgressNotification yöntemini kaldırın, bunun yerine notMetRequirements parametresi alan, desteği sonlandırılmamış bir yöntem kullanın.

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

1.1.1 sürümü

16 Ağustos 2023

  • Ortak Kitaplık:
    • Yanlışlıkla eklenen multidex bağımlılığını tüm modüllerden kaldırın (#499).
  • ExoPlayer:
    • Oynatma listesi temizlendikten sonra PlaybackStatsListener içinde sahte PlaybackStats oluşturulmasına neden olan sorun düzeltildi.
    • Ortak Medya İstemcisi Verileri (CMCD) günlük kaydına ek alanlar ekleyin: yayın biçimi (sf), yayın türü (st), sürüm (v), en yüksek bit hızı (tb), nesne süresi (d), ölçülen aktarım hızı (mtp) ve nesne türü (ot) (#8699).
  • Ses:
    • Çok kısa dosyalar oynatıldığında Player.getState()'ün hiçbir zaman STATE_ENDED'a geçmediği hata düzeltildi (#538).
  • Ses aktarma:
    • RFC 7845'e uygun olarak aktarılan Opus oynatma için bit akışına Ogg kimliği üstbilgisini ve yorum üstbilgi sayfalarını ekleyin.
  • Video:
    • H.265/HEVC: SPS kısa ve uzun vadeli referans resim bilgilerinin ayrıştırılması düzeltildi.
  • Metin:
    • CEA-608: İşaretçi kısaltma mantığını yalnızca görünür metni dikkate alacak şekilde değiştirin. Daha önce, işaret uzunluğu 32 karakterle sınırlandığında girinti ve sekme kaydırma dahil edilirdi (teknik olarak spesifikasyona göre doğrudur) (#11019).
  • IMA uzantısı:
    • IMA SDK sürümünü 3.30.3'e yükseltin.
  • Oturum:
    • Denetleyicinin durumuna özel düzen ekleyin ve buna erişmek için bir alıcı sağlayın. Özel düzen değiştiğinde MediaController.Listener.onCustomLayoutChanged çağrılır. Farklı Media3 denetleyicilerine farklı özel düzenler göndermek isteyen uygulamalar, bağlantı tamamlandığında özel düzenin denetleyici tarafından kullanılabilmesi için MediaSession.Callback.onConnect içinde AcceptedResultBuilder kullanarak bunu yapabilir.
    • MediaLibraryServiceLegacyStub'ün, bunu desteklemeyen bir Result'e hata gönderdiği ve UnsupportedOperationException'nin oluştuğu durumlar düzeltildi (#78).
    • 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) aracılığıyla volumeControlType değerini belirleyerek PlayerWrapper'ün VolumeProviderCompat oluşturma şeklini düzeltin (#554).

Sürüm 1.1.0

5 Temmuz 2023

  • Ortak Kitaplık:
    • Uygun olmayan ses yolu için engelleme nedeni ekleyin ve hazır olduğunda çaldırın. Çok uzun süre engelleme nedeni değiştirildi. (#15).
    • Oynatıcıya komut ekleme:
      • COMMAND_GET_METADATA
      • COMMAND_SET_PLAYLIST_METADATA
      • COMMAND_SET_DEVICE_VOLUME_WITH_FLAGS
      • COMMAND_ADJUST_DEVICE_VOLUME_WITH_FLAGS
    • Player'a, kullanıcıların ses işaretlerini belirtmesine olanak tanıyan aşırı yüklenmiş yöntemler ekleyin:
      • void setDeviceVolume(int, int)
      • void increaseDeviceVolume(int)
      • void decreaseDeviceVolume(int)
      • void setDeviceMuted(boolean, int)
    • DeviceInfo için Builder ekleyin ve mevcut kurucunun desteğini sonlandırın.
    • Uzaktan oynatmalar için yönlendirme denetleyici kimliğini belirtmek üzere DeviceInfo.routingControllerId ekleyin.
    • Aynı konuma öğe eklemek ve kaldırmak için Player.replaceMediaItem(s) kısayolunu ekleyin (#8046).
  • ExoPlayer:
    • ExoPlayer'ın cihaz ses seviyesi yöntemlerini kontrol etmesine yalnızca açıkça etkinleştirildiyse izin verin. Aşağıdakilere erişmek için ExoPlayer.Builder.setDeviceVolumeControlEnabled'ü kullanın:
      • getDeviceVolume()
      • isDeviceMuted()
      • setDeviceVolume(int) ve setDeviceVolume(int, int)
      • increaseDeviceVolume(int) ve increaseDeviceVolume(int, int)
      • decreaseDeviceVolume(int) ve decreaseDeviceVolume(int, int)
    • MediaSource'dan kullanılabilen parça türlerini filtrelemenize olanak tanıyan FilteringMediaSource ekleyin.
    • DASH, HLS ve SmoothStreaming uyarlanabilir akış biçimlerinin giden isteklerine Common Media Client Data (CMCD) ekleme desteği eklendi. br, bl, cid, rtp ve sid alanları eklendi (#8699). API yapısı ve API yöntemleri:
      • CMCD günlük kaydı varsayılan olarak devre dışıdır. Etkinleştirmek için MediaSource.Factory.setCmcdConfigurationFactory(CmcdConfiguration.Factory cmcdConfigurationFactory) simgesini kullanın.
      • Tüm anahtarlar varsayılan olarak etkindir. Günlüğe hangi anahtarların kaydedileceğini filtrelemek için CmcdConfiguration.RequestConfig.isKeyAllowed(String key)'ü geçersiz kılın.
      • Özel anahtar günlüğü kaydını etkinleştirmek için CmcdConfiguration.RequestConfig.getCustomData() değerini geçersiz kılın.
    • 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 değerini int yerine long olarak depolamak için SampleQueue değerini güncelleyin. Bu işlem, SampleQueue.sourceId ve SampleQueue.peekSourceId herkese açık yöntemlerinin imzalarını değiştirir.
    • LoadControl yöntemlerine shouldStartPlayback ve onTracksSelected, bu yöntemleri alakalı MediaPeriod ile ilişkilendirmeye olanak tanıyan parametreler ekleyin.
    • Haritadaki anahtarlar olarak kullanılan UID'leri içeren dönemleri içeren bir zaman çizelgesi parametresi ekleyerek ServerSideAdInsertionMediaSource.setAdPlaybackStates(Map<Object, AdPlaybackState>) imzasını değiştirin. Bu, çok dönemli canlı yayınlarda eşzamanlılık sorunlarını önlemek için gereklidir.
    • EventDispatcher.withParameters(int windowIndex, @Nullable MediaPeriodId mediaPeriodId, long mediaTimeOffsetMs) ve BaseMediaSource.createEventDispatcher(..., long mediaTimeOffsetMs) özelliklerini kullanımdan kaldırın. Bunun yerine, mediaTimeOffsetUs içermeyen yöntem varyantı çağrılabilir. Desteği sonlandırılan varyantlar için bile, dağıtıcı tarafından dağıtılan MediaLoadData nesnelerinin startTimeUs ve endTimeUs değerlerine artık ofset eklenmediğini unutmayın.
    • ExoTrackSelection.blacklistexcludeTrack, isBlacklisted'yi ise isTrackExcluded olarak yeniden adlandırın.
    • Boş bir oynatma listesinde çağrıldığında ExoPlayer.setMediaItem(s) ile addMediaItem(s) arasındaki tutarsız davranışı düzeltin.
  • Dönüştürücü:
    • Transformer.Builder.setMediaSourceFactory(MediaSource.Factory) öğesini kaldırın. Bunun yerine ExoPlayerAssetLoader.Factory(MediaSource.Factory) ve Transformer.Builder.setAssetLoaderFactory(AssetLoader.Factory) özelliklerini kullanın.
    • Transformer.startTransformation(MediaItem, ParcelFileDescriptor) öğesini kaldırın.
    • Giriş karesi işlenmeyi beklerken video akışının sonu sinyali gönderilirse dönüşümün takılmasına (birleştirici zaman aşımına neden olur) yol açan hata düzeltildi.
    • Desteği genişletmek için findDecoder/EncoderForFormat yardımcı programlarını kullanmak yerine MediaCodecList üzerinden codec'leri sorgulayın.
    • Bazı cihazlarda çalışmadığı için DefaultEncoderFactory'teki B çerçevesi yapılandırmasını kaldırın.
  • Parça seçimi:
    • Varsayılan olarak devre dışı olan DefaultTrackSelector.Parameters.allowInvalidateSelectionsForRendererCapabilitiesChange ekleme seçeneğini belirleyin. Etkinleştirildiğinde DefaultTrackSelector, oluşturma aracı özellikleri değiştiğinde yeni bir parça seçimini tetikler.
  • Ayıklayıcılar:
    • Ogg: Uzun süreli dosyalarda arama yaparken oluşan hata düzeltildi (#391).
    • FMP4: TimestampAdjuster'ün, emsg atomundan alınan meta veri örnek zamanıyla yanlış bir zaman damgası ofseti başlattığı sorunu düzeltin (#356).
  • Ses:
    • Tünel oluşturma etkinleştirildiğinde ve AudioProcessors etkin olduğunda (ör. kesintisiz kırpma için) bazı oynatma işlemlerinin başarısız olmasına neden olan hata düzeltildi (#10847).
    • Doğrudan oynatmalarda Opus karelerini Ogg paketlerine yerleştirin (yük aktarma).
    • Boşaltma planlamasıyla uyku sırasındaki mevcut konumu tahmin edin.
    • Oyuncu yaşam döngüsünün sonunda kaynakları serbest bırakmak için Renderer.release() ve AudioSink.release() ekleyin.
    • DefaultAudioSink'teki ses özellikleriyle ilgili değişiklikleri dinleyin. DefaultAudioSink sınıfının kurucusuna, DefaultAudioSink'un AudioCapabilitiesReceiver için dinleyici olarak kaydolacağı ve bir özellik değişikliği hakkında bilgilendirildiğinde audioCapabilities mülkünü güncelleyeceği zorunlu bir context parametresi ekleyin.
    • Ses özellikleriyle ilgili değişiklikleri AudioSink.Listener arayüzündeki yeni bir etkinlik onAudioCapabilitiesChanged ve onRendererCapabilitiesChanged etkinliklerini tetikleyen yeni bir arayüz RendererCapabilities.Listener aracılığıyla yayınlayın.
    • Ses kanallarına ölçeklendirme/karıştırma uygulamak için ChannelMixingAudioProcessor ekleyin.
    • İşitsel özellikler değiştikten sonra bypass modu mümkün olduğunda işitsel kod çözücüyü atmak için DecoderDiscardReasons değerine yeni bir int değeri DISCARD_REASON_AUDIO_BYPASS_POSSIBLE ekleyin.
    • DTS Express ve DTS:X için doğrudan oynatma desteği eklendi (#335).
  • Video:
    • Oluşturucu devre dışıyken MediaCodecVideoRenderer'ün genişliği ve yüksekliği 0 olan bir VideoSize raporlamasını sağlayın. Player.getVideoSize() değiştiğinde Player.Listener.onVideoSizeChanged buna göre çağrılır. Bu değişiklikle birlikte, Player.getCurrentTracks videoyu desteklemediği veya desteklenen video kanalının boyutu henüz belirlenmediği zaman ExoPlayer'ın MediaCodecVideoRenderer ile video boyutu 0 genişlik ve yüksekliğe sahip olur.
  • DRM:
    • DefaultDrmSession üzerinde, DRM paketinin dışından çağrılması beklenmeyen ve yalnızca dahili olarak kullanılabilen çeşitli yöntemlerin görünürlüğünü azaltın:
      • void onMediaDrmEvent(int)
      • void provision()
      • void onProvisionCompleted()
      • onProvisionError(Exception, boolean)
  • Birleştirici:
    • MP4 kapsayıcı dosyası oluşturmak için kullanılabilecek yeni bir birleştirici kitaplığı ekleyin.
  • IMA uzantısı:
    • DAI için çok dönemli canlı DASH yayınlarını etkinleştirin. Mevcut uygulamada canlı yayınlarda ileri sarma özelliği henüz desteklenmiyor (#10912).
    • Art arda gelen zaman çizelgelerinde hesaplanan içerik konumu biraz değiştiği için canlı yayınlara yeni bir reklam grubunun eklendiği bir hatayı düzeltin.
  • Oturum:
    • Şu anda Player yöntemini çağıran denetleyici hakkında bilgi edinmek için yardımcı yöntem MediaSession.getControllerForCurrentRequest ekleyin.
    • Uygulamaların, örneğin Bluetooth kulaklık tarafından gönderilen medya düğmesi etkinlikleriyle oynatma işlemini devam ettirmesini sağlamak için androidx.media3.session.MediaButtonReceiver ekleyin (#167).
    • İstenilen MediaItems'un LocalConfiguration (ör. URI) varsa Player'ye iletilmesine izin vermek için MediaSession.Callback.onAddMediaItems'e varsayılan uygulama ekleyin (#282).
    • Android 12 ve önceki sürümlerde varsayılan olarak kompakt medya bildirimi görünümüne "önceki oynat" ve "sonraki oynat" komut düğmeleri ekleyin (#410).
    • İstenilen MediaItems'un LocalConfiguration (ör. URI) varsa Player'ye iletilmesine izin vermek için MediaSession.Callback.onAddMediaItems'e varsayılan uygulama ekleyin (#282).
    • Android 12 ve önceki sürümlerde varsayılan olarak kompakt medya bildirimi görünümüne "önceki oynat" ve "sonraki oynat" komut düğmeleri ekleyin (#410).
  • Kullanıcı Arayüzü:
    • Oynat/duraklat düğmesi içeren özel kullanıcı arayüzü öğeleri yazmak için Util yöntemleri shouldShowPlayButton ve handlePlayPauseButtonAction ekleyin.
  • RTSP Uzantısı:
    • MPEG4-LATM için, Describe Response SDP mesajında (#302) yoksa varsayılan profile-level-id değerini kullanın.
    • DESCRIBE yanıt üstbilgisinde varsa (#11160) 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 medya zaman kaydırmasını MediaLoadData.startTimeMs ve MediaLoadData.endTimeMs öğesinden kaldırın.
    • Çok dönemli canlı Dash medya kaynağının yeniden hazırlanmasının IndexOutOfBoundsException oluşturmasına yol açan hata düzeltildi (#10838).
  • HLS Uzantısı:
    • Yükleme iş parçacığının TimestampAdjuster'un başlatılmasını beklemesi için bir zaman aşımı belirlemek üzere HlsMediaSource.Factory.setTimestampAdjusterInitializationTimeoutMs(long) ekleyin. İlklendirme, zaman aşımı süresinden önce tamamlanmazsa oynatmanın sonsuz bir şekilde duraklamasını önlemek için bir PlaybackException atılır. Zaman aşımı varsayılan olarak sıfıra ayarlanmıştır (#323).
  • Test Yardımcı Programları:
    • DataSourceContractTest konumunda URI şemasının büyük/küçük harf duyarlılığını kontrol edin.
  • Desteği sonlandırılan sembolleri kaldırın:
    • DefaultAudioSink kurucularını kaldırın, bunun yerine DefaultAudioSink.Builder kullanın.
    • HlsMasterPlaylist'ü kaldırın, bunun yerine HlsMultivariantPlaylist kullanın.
    • Player.stop(boolean) öğesini kaldırın. Bunun yerine Player.stop() ve Player.clearMediaItems() (reset true ise) kullanın.
    • Desteği sonlandırılan iki SimpleCache kurucuyu kaldırın, daha iyi performans için bunun yerine DatabaseProvider alan, desteği sonlandırılmamış bir kurucu kullanın.
    • DefaultBandwidthMeter kurucusunu 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 yapıcıyı kaldırın, hata günlüğüne ekleme yapmak için ek alanları(cause, responseBody) kabul eden, kullanımdan kaldırılmamış bir yapıcı kullanın.
    • DownloadHelper.forProgressive, DownloadHelper.forHls, DownloadHelper.forDash ve DownloadHelper.forSmoothStreaming'i kaldırın, bunun yerine DownloadHelper.forMediaItem'i kullanın.
    • Desteği sonlandırılan DownloadService kurucusunu kaldırın, channelDescriptionResourceId parametresi sağlama seçeneğini içeren, desteği sonlandırılmamış bir kurucu kullanın.
    • Desteği sonlandırılan karakter kümesi (ASCII_NAME, UTF8_NAME, ISO88591_NAME, UTF16_NAME ve UTF16LE_NAME) dize sabitlerini kaldırın. Bunun yerine kotlin.text paketindeki Kotlin karakter kümelerini, java.nio.charset.StandardCharsets veya com.google.common.base.Charsets'ı kullanın.
    • Desteği sonlandırılan WorkManagerScheduler kurucusunu kaldırın, bunun yerine Context parametresi sağlama seçeneğini içeren, desteği sonlandırılmayan bir kurucu kullanın.
    • Format sınıfını örneklemek için kullanılan ve desteği sonlandırılan createVideoSampleFormat, createAudioSampleFormat, createContainerFormat ve createSampleFormat yöntemlerini kaldırın. Bunun yerine, Format örnekleri oluşturmak için Format.Builder kullanın.
    • Desteği sonlandırılan copyWithMaxInputSize, copyWithSubsampleOffsetUs, copyWithLabel, copyWithManifestFormatInfo, copyWithGaplessInfo, copyWithFrameRate, copyWithDrmInitData, copyWithMetadata, copyWithBitrate ve copyWithVideoSize yöntemlerini kaldırın, bunun yerine Format.buildUpon() ve ayarlayıcı yöntemlerini kullanın.
    • Desteği sonlandırılan ExoPlayer.retry()'ü kaldırın, bunun yerine prepare() kullanın.
    • Desteği sonlandırılan sıfır bağımsız değişkenli DefaultTrackSelector yapıcısını kaldırın, bunun yerine DefaultTrackSelector(Context) kullanın.
    • Desteği sonlandırılan OfflineLicenseHelper kurucusunu kaldırın, bunun yerine OfflineLicenseHelper(DefaultDrmSessionManager, DrmSessionEventListener.EventDispatcher) kullanın.
    • Desteği sonlandırılan DownloadManager kurucusunu kaldırın, bunun yerine Executor alan kurucuyu kullanın.
    • Desteği sonlandırılan Cue kurucularını kaldırın, bunun yerine Cue.Builder kullanın.
    • Desteği sonlandırılan OfflineLicenseHelper kurucusunu kaldırın, bunun yerine OfflineLicenseHelper(DefaultDrmSessionManager, DrmSessionEventListener.EventDispatcher) kullanın.
    • Desteği sonlandırılan dört AnalyticsListener yöntemini kaldırın:
      • onDecoderEnabled yerine onAudioEnabled ve/veya onVideoEnabled
      • onDecoderInitialized yerine onAudioDecoderInitialized ve/veya onVideoDecoderInitialized kullanın.
      • onDecoderInputFormatChanged, bunun yerine onAudioInputFormatChanged ve/veya onVideoInputFormatChanged kullanın.
      • onDecoderDisabled yerine onAudioDisabled ve/veya onVideoDisabled kullanın.
    • Desteği sonlandırılan Player.Listener.onSeekProcessed ve AnalyticsListener.onSeekProcessed işlemlerini kaldırın, bunun yerine DISCONTINUITY_REASON_SEEK ile onPositionDiscontinuity kullanın.
    • ExoPlayer.setHandleWakeLock(boolean)'ü kaldırın, bunun yerine setWakeMode(int) kullanın.
    • Desteği sonlandırılan DefaultLoadControl.Builder.createDefaultLoadControl()'ü kaldırın, bunun yerine build() kullanın.
    • Desteği sonlandırılan MediaItem.PlaybackProperties'ü kaldırın, bunun yerine MediaItem.LocalConfiguration kullanın. Kullanımdan kaldırılan MediaItem.playbackProperties alanı artık MediaItem.LocalConfiguration türüne sahip.

Sürüm 1.1.0-rc01

21 Haziran 2023

1.1.0 kararlı sürümünü kullanın.

Sürüm 1.1.0-beta01

7 Haziran 2023

1.1.0 kararlı sürümünü kullanın.

Sürüm 1.1.0-alpha01

10 Mayıs 2023

1.1.0 kararlı sürümünü kullanın.

Sürüm 1.0.0

Sürüm 1.0.2

18 Mayıs 2023

androidx.media3:media3-*:1.0.2 yayınlanır. 1.0.2 sürümü bu taahhütleri içerir.

Bu sürüm, ExoPlayer 2.18.7 sürümüne karşılık gelir.

Bu sürüm, 1.0.1 sürümünden bu yana yapılan aşağıdaki değişiklikleri içerir:

  • Temel kitaplık:
    • Buffer'un C.BUFFER_FLAG_LAST_SAMPLE işaretini içerip içermediğini belirten Buffer.isLastSample() değerini ekleyin.
    • Kare içeren son örnek, "akış sonu" örneği okunmadan sıra dışı bırakılırsa son karenin oluşturulamaması sorunu düzeltildi. (#11079).
  • Ayıklayıcılar:
    • RTSP ve MP4 çıkarıcıları tarafından kullanılan ayrıştırma mantığını yeniden kullanarak MPEG-TS dosyalarındaki H.265 SPS'nin ayrıştırılmasını düzeltin (#303).
  • Metin:
    • SSA: UTF-16 dosyaları bayt sırası işaretiyle başlıyorsa bu dosyalar için destek eklendi (#319).
  • Oturum:
    • İşlemlerini güncelleyen eski bir MediaSessionCompat'e bağlıyken MediaController'ün mevcut komutlarını güncellememesiyle ilgili sorun düzeltildi.
    • API 30'da params.isRecent == true ile Sistem Kullanıcı Arayüzü'nden Callback.onGetLibraryRoot'a yapılan bir çağrı için MediaLibraryService'ün null döndürmesini engelleyen hata düzeltildi (#355).
    • MediaSessionService veya MediaLibraryService bellek sızıntısını düzeltin (#346).
    • MediaSession'da birleştirilmiş Timeline ve konum güncellemesinin MediaController'nin IllegalStateException atmasına neden olabileceği hatayı düzeltme

1.0.1 sürümü

18 Nisan 2023

androidx.media3:media3-*:1.0.1 yayınlanır. 1.0.1 sürümü bu taahhütleri içerir.

Bu sürüm, ExoPlayer 2.18.6 sürümüne karşılık gelir.

  • Temel kitaplık:
    • Varsayılan konuma giderken hedef canlı yayın geçersiz kılma ayarını sıfırlama (#11051).
    • Medyadaki boş örnek akışlarının oynatmanın takılmasına neden olabileceği hata düzeltildi.
  • Oturum:
    • Eski bir MediaSessionCompat tarafından yayınlanan birden fazla aynı sıra öğesinin MediaController'da istisna oluşturmasına yol açan hata düzeltildi (#290).
    • Eski MediaControllerCompat.Callback.onSessionEvent'e MediaSession.broadcastCustomCommand yönlendirme özelliği eklendi (#293).
    • MediaSession.setPlayer çağrıldığında kullanılabilir komutların güncellenmemesine yol açan hata düzeltildi.
    • MediaController ile gönderilen TrackSelectionOverride örneklerinin, Format.metadata içeren bir gruba referans vermeleri durumunda yoksayılması sorunu düzeltildi (#296).
    • Eski MediaSessionCompat aracılığıyla meta verilere erişmek için Player.COMMAND_GET_CURRENT_MEDIA_ITEM'ün kullanılabilir olması gerektiği sorunu düzeltildi.
    • Arka plan iş parçacığındaki MediaSession örnekleri MediaSessionService'te kullanıldığında kilitlenmelere neden olan sorunu düzeltin (#318).
    • Uygulamanın bunu amaçlamaması durumunda kitaplığın medya düğmesi alıcısını tanımlaması sorunu düzeltildi (#314).
  • DASH:
    • Boş segment zaman çizelgelerinin işlenmesi düzeltildi (#11014).
  • RTSP:
    • UDP ile RTSP Kurulumu, 461 UnsupportedTransport (#11069) RTSP Hatası nedeniyle başarısız olursa TCP ile tekrar deneyin.

Sürüm 1.0.0

22 Mart 2023

androidx.media3:media3-*:1.0.0 yayınlanır. 1.0.0 sürümü bu taahhütleri içerir.

Bu sürüm, ExoPlayer 2.18.5 sürümüne karşılık gelir.

1.0.0-rc02 sürümünden bu yana herhangi bir değişiklik yapılmamıştır.

Sürüm 1.0.0-rc02

2 Mart 2023

androidx.media3:media3-*:1.0.0-rc02 yayınlanır. 1.0.0-rc02 sürümü bu taahhütleri içerir.

Bu sürüm, ExoPlayer 2.18.4 sürümüne karşılık gelir.

  • Temel kitaplık:
    • API 33'te ağ türü algılamasını düzeltin (#10970).
    • ExoPlayer.isTunnelingEnabled'u ararken NullPointerException sorununu düzeltin (#10977).
  • İndirilenler:
    • Birleştirilecek iki segmentin başlangıç süresi arasındaki maksimum farkı SegmentDownloader ve alt sınıflarda yapılandırılabilir hale getirin (#248).
  • Ses:
    • Samsung cihazlarda kesintisiz MP3 oynatma sorununu düzeltme (#8594).
    • Ses devre dışı bırakıldıktan hemen sonra ayarlanan oynatma hızlarının önceki bir hız değişikliği tarafından geçersiz kılınabileceği 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 yayınlarının desteklenmiyor olarak işaretlenmesine neden olan cihaz sorunu için geçici çözüm eklendi (#10898).
    • Ekran yenileme hızından çok daha yüksek kare hızına sahip medya oynatırken kare yayınlama performansıyla ilgili sorunları düzeltme
  • Yayınla:
    • Medya öğeleri arasında geçiş yaparken geçici STATE_IDLE sorunu düzeltildi (#245).
  • RTSP:
    • Geçersiz RTSP Describe yanıt mesajlarının ayrıştırılmasında oluşturulan IllegalArgumentException'ı yakalama (#10971).
  • Oturum:
    • Bildirim oynatma/duraklatma düğmesinin oynatıcı durumuna göre güncellenmemesine neden olan hata düzeltildi (#192).
  • IMA uzantısı:
    • İlk (ve reklamsız durumda tek) LOADED etkinliği alınmadığı için reklamsız DAI akışlarının başlatılmasını engelleyen bir hata düzeltildi.

Sürüm 1.0.0-rc01

16 Şubat 2023

androidx.media3:media3-*:1.0.0-rc01 yayınlanır. 1.0.0-rc01 sürümü bu taahhütleri içerir.

Bu sürüm, ExoPlayer 2.18.3 sürümüne karşılık gelir.

  • Temel kitaplık:
    • Bir kod çözücü, medyayı etkili bir şekilde oynatamayacağı konusunda rapor verse bile, oluşturma aracının kod çözücü sıralama mantığını MediaCodecSelector'nin tercihlerini destekleyecek şekilde değiştirin. Örneğin, varsayılan seçicide, biçimi tam olarak destekleyen yazılım kod çözücünün yerine yalnızca işlevsel destek sunan donanım kod çözücüsü tercih edilir (#10604).
    • Yeni bir ExoPlayer örneği için önceden var olan bir oynatma iş parçacığı ayarlayan ExoPlayer.Builder.setPlaybackLooper öğesini ekleyin.
    • İndirme yöneticisi yardımcılarının temizlenmesine izin verin (#10776).
    • Arama için kullanılan komutu da belirtmek üzere BasePlayer.seekTo parametresini ekleyin.
    • API 21 ve sonraki sürümlerde drawable'ları yüklerken tema kullanın (#220).
    • Birden fazla medya öğesinin tek bir pencerede birleştirilmesine olanak tanıyan ConcatenatingMediaSource2 öğesini ekleyin (#247).
  • Ayıklayıcılar:
    • Trak atomları ayrıştırılırken örnek tabloda (stbl) gerekli bir örnek açıklaması (stsd) eksikse NullPointerException yerine ParserException atayın.
    • fMP4'te doğrudan bir senkronizasyon karesine sarma sırasında örnekleri doğru şekilde atlama (#10941).
  • Ses:
    • Doğrudan oynatmalarda (geçiş) AudioTrack için minimum arabellek boyutunu hesaplamak üzere sıkıştırılmış ses biçimi bit hızını kullanın.
  • Metin:
    • Altyazı dosyası işaret içermiyorsa TextRenderer'ün Subtitle.getEventTime'e geçersiz (negatif) bir dizin iletmesi sorunu düzeltildi.
    • SubRip: UTF-16 dosyaları için bayt sırası işaretiyle başlayan dosyalar için destek ekleyin.
  • Meta veriler:
    • ID3 v2.4'e izin verildiği şekilde, ID3 çerçevelerinden birden çok boşlukla ayrılmış değeri ayrıştırın.
    • Meta veriler tarafından açıklanan içerik veya klasör türünü belirtmek için MediaMetadata.mediaType ekleyin.
    • MediaMetadata.folderType yerine MediaMetadata.isBrowsable ekleyin. Klasör türünün desteği sonraki sürümde sonlandırılacak.
  • DASH:
    • Kutu sayıları da dahil olmak üzere resim uyarlama setleri için tam ayrıştırma ekleyin (#3752).
  • Kullanıcı Arayüzü:
    • Görünürlük değişikliklerinin kayıtlı dinleyiciye iletilmesini sağlamak için desteği sonlandırılan PlayerView.setControllerVisibilityListener(PlayerControlView.VisibilityListener) özelliğini düzeltin (#229).
    • Sağdan sola (RTL) düzen kullanıldığında PlayerView'teki orta oynatıcı kontrollerinin sırasını düzeltin (#227).
  • Oturum:
    • Özel oyuncular için Player arayüzünü uygulamaya yardımcı olması amacıyla soyut SimpleBasePlayer ekleyin.
    • Platform oturum jetonunu Media3'e dönüştürmek için yardımcı yöntem ekleyinSessionToken (#171).
    • Platform medya oturumunun 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 değişmez listeler kullanın (#216).
    • Oynatıcıya ayarlamadan önce MediaItem listesini, başlangıç dizini ve konumunu oturuma göre değiştirme/ayarlama olanağı sağlamak için onSetMediaItems geri çağırma dinleyicisi ekleyin (#156).
    • Bluetooth olmayan medya düğmesi etkinlikleri için iki kez dokunma algılamasını önleyin (#233).
    • Şüpheli eski oturum durumu olması durumunda QueueTimeline'ü daha sağlam hale getirin (#241).
  • Meta veriler:
    • ID3 v2.4'e izin verildiği şekilde, ID3 çerçevelerinden birden çok boşlukla ayrılmış değeri ayrıştırın.
    • Meta veriler tarafından açıklanan içerik veya klasör türünü belirtmek için MediaMetadata.mediaType ekleyin.
    • MediaMetadata.folderType yerine MediaMetadata.isBrowsable ekleyin. Klasör türünün desteği sonraki sürümde sonlandırılacak.
  • Yayın uzantısı:
    • Cast SDK sürümünü 21.2.0'a yükseltin.
  • IMA uzantısı:
    • Konu dizisi sorunlarını önlemek için uygulama iş akışındaki ImaServerSideAdInsertionMediaSource için oynatıcı dinleyicisini kaldırın.
    • TV cihazlarında atlama düğmesinin odaklanmasını istemek için ImaServerSideAdInsertionMediaSource.AdsLoader.Builder özelliğini ImaServerSideAdInsertionMediaSource.AdsLoader.Builder öğesine ekleyin ve varsayılan olarak true olarak ayarlayın.focusSkipButtonWhenAvailable
    • Atlama düğmesine odaklanmayı programatik olarak istemek için ImaServerSideAdInsertionMediaSource.AdsLoader sınıfına focusSkipButton() yöntemi ekleyin.
    • IMA SDK sürümünü 3.29.0'a yükseltin.
  • Demo uygulama:
    • Çalışma zamanında indirme bildirimleri için bildirim izni isteyin (#10884).

Sürüm 1.0.0-beta03

22 Kasım 2022

androidx.media3:media3-*:1.0.0-beta03 yayınlanır. 1.0.0-beta03 sürümü bu taahhütleri içerir.

Bu sürüm, ExoPlayer 2.18.2 sürümüne karşılık gelir.

  • Temel kitaplık:
    • Şu anda seçili olan parçalar için tünel oluşturmanın etkin olup olmadığını kontrol etmek üzere ExoPlayer.isTunnelingEnabled ekleyin (#2518).
    • Tek bir MediaSource'ı sarma işlemini basitleştirmek için WrappingMediaSource ekleyin (#7279).
    • Yeterli bellek olmadığı için oynatma takılmadan önce geri arabelleği atma.
    • Yük aktarma etkinleştirildiğinde İzleme "doSomeWork" bloğunu kapatın.
    • PlaybackStatsListener (#180) sürümünde hızlı aramalarla ilgili oturum izleme sorunu düzeltildi.
    • Tek öğeli bir oynatma listesinde seekToNext veya seekToPrevious'yi çağırırken eksik onMediaItemTransition geri araması gönderme (#10667).
    • Videonun oluşturulduğu yüzeyin boyutunu döndüren Player.getSurfaceSize değerini ekleyin.
    • Oynatıcının yayınlanması sırasında dinleyicilerin kaldırılmasının IllegalStateException hatasına neden olabileceği hata düzeltildi (#10758).
  • Derleme:
    • Derleme hatalarını önlemek için minimum compileSdkVersion'ü zorunlu kılın (#10684).
    • Başka bir Gradle derlemesine dahil edildiğinde yayınlama bloğunu engelleyin.
  • Parça seçimi:
    • Ekran Dolby Vision'ı desteklemiyorsa diğer parçaları tercih edin. (#8944).
  • İndirilenler:
    • Aynı PriorityTaskManager ile aynı anda indirme ve oynatma işleminin yapılmasından kaynaklanan ProgressiveDownloader'te olası sonsuz döngü düzeltildi (#10570).
    • İndirme bildiriminin hemen görünmesini sağlayın (#183).
    • Çok fazla ileti dizisi oluşturulmasını önlemek için paralel indirme kaldırma işlemlerini 1 ile sınırlayın (#10458).
  • Video:
    • Ekran Dolby Vision'ı desteklemiyorsa alternatif Dolby Vision kod çözücüyü deneyin. (#9794).
  • Ses:
    • Aynı anda birden fazla oynatıcıyı serbest bırakırken OutOfMemory hatalarını önlemek için AudioTrack örneklerini serbest bırakmak üzere SingleThreadExecutor kullanın (#10057).
    • AudioTrack aktarma durumu için AudioOffloadListener.onExperimentalOffloadedPlayback değerini ekler. (#134).
    • AudioTrackBufferSizeProvider'ü herkese açık bir arayüz haline getirin.
    • Tercih edilen ses çıkış cihazını ayarlamak için ExoPlayer.setPreferredAudioDevice ekleyin (#135).
    • androidx.media3.exoplayer.audio.AudioProcessorandroidx.media3.common.audio.AudioProcessor olarak yeniden adlandırın.
    • Tüm Android sürümlerinde 8 kanallı ve 12 kanallı sesi sırasıyla 7.1 ve 7.1.4 kanal maskelerine eşleme (#10701).
  • Meta veriler:
    • MetadataRenderer artık meta veriler mevcut olduğu anda oluşturulacak şekilde yapılandırılabilir. Oluşturucunun meta verileri erken mi yoksa oynatıcı konumuyla senkronize mi yayınlayacağını belirtmek iç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 hatayı giderme
    • Oynatma listesinde DRM şemaları arasında geçiş yaparken (ör. Widevine'den ClearKey'e) setMediaDrmSession failed: session not opened hatası düzeltildi.
  • Metin:
    • CEA-608: 2. alandaki hizmet anahtarı komutlarının doğru şekilde işlendiğinden emin olun (#10666).
  • DASH:
    • Manifestlerden EventStream.presentationTimeOffset ayrıştırma (#10460).
  • Kullanıcı Arayüzü:
    • Oynatıcının mevcut geçersiz kılma işlemlerini TrackSelectionDialogBuilder'te ön ayar olarak kullanın (#10429).
  • Oturum:
    • Bazıları eşzamansız çözüm gerektirse bile komutların her zaman doğru sırayla yürütüldüğünden emin olun (#85).
    • DefaultMediaNotificationProvider örnekleri oluşturmak için DefaultMediaNotificationProvider.Builder ekleyin. Oluşturucu, sağlayıcı tarafından kullanılan bildirim kimliğini, bildirim kanalı kimliğini ve bildirim kanalı adını yapılandırabilir. Ayrıca, bildirimlerin küçük simgesini ayarlamak için DefaultMediaNotificationProvider.setSmallIcon(int) yöntemini ekleyin. (#104).
    • MediaController.release()'ten önce gönderilen komutların atlanmadığından emin olun (#99).
    • SimpleBitmapLoader, file:// URI'lerinden bitmap yükleyebilir (#108).
    • MediaController'ün bir dönemde bir reklamı aramasını engelleyen iddiayı düzeltin (#122).
    • Oynatma sona erdiğinde MediaSessionService ön planda durdurulur ve son oynatılan medya öğesinin oynatılmasını yeniden başlatan bir bildirim gösterilir (#112).
    • Duraklatma için bekleyen bir intent içeren bir ön plan hizmeti başlatmayın (#167).
    • API 26 ve API 27'de DefaultNotificationProvider tarafından oluşturulan bildirimle ilişkili "rozeti" manuel olarak gizleme (rozet, API 28 ve sonraki sürümlerde otomatik olarak gizlenir) (#131).
    • Eski bir MediaSession'dan Media3 MediaController'a ikinci bir bağlayıcı bağlantısının IllegalStateExceptions'e neden olduğu hata düzeltildi (#49).
  • RTSP:
    • H263 parçalanmış paket işleme eklendi (#119).
    • MP4A-LATM desteği eklendi (#162).
  • IMA:
    • IMA SDK'sının reklam yüklerken takıldığı durumları (#10510) ele almak için reklam bilgilerini yükleme zaman aşımı ekleyin.
    • İçeriğin sonuna giderken videonun ortasında gösterilen reklamların atlamasını önleme (#10685).
    • Sunucu tarafı yerleştirilmiş reklamlar (ör. IMA DAI) içeren canlı yayınlar için aralığın süresini doğru hesaplama (#10764).
  • FFmpeg uzantısı:
    • FFmpeg kitaplıklarını NDK 23.1.7779620 ve sonraki sürümlerle bağlamak için yeni gerekli işaretleri ekleyin (#9933).
  • AV1 uzantısı:
    • En son Android Studio sürümleriyle uyumsuzlukları önlemek için CMake sürümünü güncelleyin (#9933).
  • Yayın uzantısı:
    • MediaController ile oynatmayı kontrol ederken CastPlayer'ı tanımlayabilmek için getDeviceInfo()'ü uygulayın (#142).
  • Dönüştürücü:
    • Çıkış örneğinin çok yavaş oluşturulduğunu algılamak için bir birleştirici gözetleyici zamanlayıcısı ekleyin.
  • Desteği sonlandırılan sembolleri kaldırın:
    • Transformer.Builder.setOutputMimeType(String) öğesini kaldırın. Bu özellik kaldırıldı. Varsayılan birleştirici kullanıldığında MIME türü her zaman MP4 olur.

Sürüm 1.0.0-beta02

21 Temmuz 2022

androidx.media3:media3-*:1.0.0-beta02 yayınlanır. 1.0.0-beta02 sürümü bu taahhütleri içerir.

Bu sürüm, ExoPlayer 2.18.1 sürümüne karşılık gelir.

  • Temel kitaplık:
    • ShuffleOrder yerine ExoPlayer.setShuffleOrder yazıldığında reason=Player.TIMELINE_CHANGE_REASON_PLAYLIST_CHANGED ile Player.Listener#onTimelineChanged numaralı telefon arandığından emin olun (#9889).
    • İlerleyen medya için yalnızca seçili parçaları arabelleğe alınmış konumda ekleyin (#10361).
    • Tüm ExoPlayer günlük çıkışı için özel günlükleyiciye izin verin (#9752).
    • DefaultMediaSourceFactory içinde setDataSourceFactory'ün uygulanmasını düzeltin. Bu, bazı durumlarda çalışmazdı (#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ırılması düzeltildi (#10381).
  • DASH:
    • Manifestlerden ClearKey lisans URL'sini ayrıştırma (#10246).
  • Kullanıcı Arayüzü:
    • TalkBack'in, oynatma kontrolleri menüsünde etkin olan hız seçeneğini duyurmasını sağlayın (#10298).
  • RTSP:
    • VP8 parçalanmış paket işleme eklendi (#110).
  • Leanback uzantısı:
    • LeanbackAdapter için playWhenReady değişikliklerini dinleyin (10420).
  • Yayınla:
    • Oynatma listesi yöntemlerine iletilen MediaItem değerini CastTimeline'de Window.mediaItem olarak kullanın (#25, #8212).
    • Player.getMetadata() ve Listener.onMediaMetadataChanged()'i CastPlayer (#25) ile destekleyin.

Sürüm 1.0.0-beta01

16 Haziran 2022

androidx.media3:media3-*:1.0.0-beta01 yayınlanır. 1.0.0-beta01 sürümü bu taahhütleri içerir.

Bu, ExoPlayer 2.18.0 sürümüne karşılık gelir.

  • Temel kitaplık:
    • MediaMetricsManager üzerinden Android platform teşhisi desteğini etkinleştirin. ExoPlayer, oynatma etkinliklerini ve performans verilerini platforma iletir. Bu sayede cihazdaki sistem performansı ve hata ayıklama bilgileri sağlanabilir. Bu veriler, cihazın kullanıcısı tarafından kullanım ve teşhis verilerinin paylaşımı etkinleştirildiyse Google tarafından da toplanabilir. Uygulamalar, ExoPlayer.Builder.setUsePlatformDiagnostics(false) ile ExoPlayer için platform teşhislerine katkıda bulunmayı devre dışı bırakabilir.
    • MergingMediaSource kullanılırken parçaların çok sık sıfırlanması (ör. altyazılar harici olarak yüklenirken ve oynatma sırasında seçili altyazı değiştirilirken) ile ilgili hata düzeltildi (#10248).
    • API 29 ve 30'da 5G-NSA ağ türünü algılama işlemi durduruldu. Bu oynatmalarda 4G ağı varsayılır.
    • null'ün MediaSource.Factory.setDrmSessionManagerProvider ve MediaSource.Factory.setLoadErrorHandlingPolicy'ye iletilmesine izin vermeyin. Gerekirse DefaultDrmSessionManagerProvider ve DefaultLoadErrorHandlingPolicy örnekleri açıkça iletilebilir.
    • Tam LocalConfiguration bilinmediğinde medyayı oynatmak için gereken meta verileri temsil etmek üzere MediaItem.RequestMetadata ekleyin. Ayrıca MediaMetadata.mediaUrl artık RequestMetadata'a dahil edildiği için MediaMetadata.mediaUrl'yi de kaldırın.
    • Oyuncuların tek bir öğe ayarlamalarına izin vermek için Player.Command.COMMAND_SET_MEDIA_ITEM ekleyin.
  • Parça seçimi:
    • TrackSelectionOverrides sınıfını TrackSelectionParameters olarak düzleştirin ve TrackSelectionOverride sınıfını üst düzey bir sınıfa yükseltin.
    • TracksInfoTracks, TracksInfo.TrackGroupInfo'yi ise Tracks.Group olarak yeniden adlandırın. Player.getCurrentTracksInfo ve Player.Listener.onTracksInfoChanged da Player.getCurrentTracks ve Player.Listener.onTracksChanged olarak yeniden adlandırıldı. Bu, Player.Listener.onTracksChanged yöntem adının "desteklenmesini sonlandırmayı" içerir ancak farklı parametre türleri vardır.
    • Desteği sonlandırılan DefaultTrackSelector.ParametersBuilder yerine DefaultTrackSelector.buildUponParameters ve DefaultTrackSelector.Parameters.buildUponDefaultTrackSelector.Parameters.Builder döndürecek şekilde değiştirin.
    • Varsayılan olarak etkin olan DefaultTrackSelector.Parameters.constrainAudioChannelCountToDeviceCapabilities Ekle'yi seçin. Etkinleştirildiğinde DefaultTrackSelector, kanal sayısı cihaz çıkış özelliklerini aşmayan ses parçalarını tercih eder. El cihazlarında DefaultTrackSelector, çok kanallı ses biçimi uzamsallaştırılabilir (Android 12L+) veya Dolby surround ses biçimi olmadığı sürece çok kanallı ses biçimlerine kıyasla stereo/mono ses biçimlerini tercih eder. Ayrıca, ses uzamsallaştırmayı destekleyen cihazlarda DefaultTrackSelector, uzamsallaştırıcı özelliklerinde yapılan değişiklikleri izler ve bu değişikliklere göre yeni bir parça seçimi tetikler. television UI modu olan cihazlar bu kısıtlamalardan hariç tutulur ve en yüksek kanal sayısına sahip biçim tercih edilir. Bu özelliği etkinleştirmek için DefaultTrackSelector örneğinin bir Context ile oluşturulması gerekir.
  • Video:
    • DummySurfacePlaceholderSurface olarak yeniden adlandırın.
    • MediaCodecVideoRenderer.getCodecMaxInputSize'e AV1 desteği ekleyin.
  • Ses:
    • Standart olmayan MIME türü reklamı yapan LG AC3 ses kodlayıcısı kullanın.
    • API 21 ve önceki sürümlerde yavaş ART doğrulamasını önlemek için AudioAttributes.getAudioAttributesV21() değerinin döndürme türünü android.media.AudioAttributes yerine yeni bir AudioAttributesV21 sarmalayıcı sınıfına değiştirin.
    • Platformu sorgulayın (API 29 ve üzeri) veya biçim ses kanal sayısı ayarlanmamışken ses aktarımı için ses kodlama kanal sayısını varsayın. Bu durum, HLS'nin parçalara ayrılmadan hazırlanmasıyla (10204) ortaya çıkar.
    • Kod çözücü 12 kanallı PCM ses çıkışı veriyorsa AudioTrack'ü kanal maskesi AudioFormat.CHANNEL_OUT_7POINT1POINT4 ile yapılandırın (#10322).
  • DRM
    • DRM oturumunun, bir biçim değişikliğinden hemen sonra aranırken her zaman doğru şekilde güncellendiğinden emin olun (10274).
  • Metin:
    • Player.getCurrentCues() değerini, List<Cue> yerine CueGroup döndürecek şekilde değiştirin.
    • SSA: BorderStyle == 3 olduğunda OutlineColour stil ayarını destekleyin (ör. OutlineColour işaretin arka planını ayarlar) (#8435).
    • CEA-708: Verileri birden fazla hizmet bloğuna ayırın ve şu anda seçili hizmet numarasıyla ilişkili olmayan blokları yoksayın.
    • Yalnızca Google'ın dahili altyazı biçimini işlemek için kullanılan RawCcExtractor öğesini kaldırın.
  • Ayıklayıcılar:
    • AVI desteği eklendi (#2092).
    • Matroska: Opus parçaları için DiscardPadding'ü ayrıştırın.
    • MP4: esds kutularındaki bit hızlarını ayrıştırın.
    • Ogg: Yinelenen Opus kimliğine ve yorum üstbilgilerine izin verin (#10038).
  • Kullanıcı Arayüzü:
    • useController=false durumunda PlayerView üzerinde ayarlanan OnClickListener'lere etkinliklerin yayınını düzeltin (#9605). Ayrıca, tüm görünüm yapılandırmaları için etkinliklerin OnLongClickListener adresine teslim edilmesini düzeltin.
    • ACTION_UP'ten önce PlayerView'ün sınırlarını terk eden bir dokunma etkinliği dizisinin tıklama olarak yanlış şekilde ele alınması düzeltildi (#9861).
    • Dokunulduğunda kontrolleri gizlemek yerine oynatmayı değiştirebilen PlayerView erişilebilirlik sorunu düzeltildi (#8627).
    • TrackSelectionView ve TrackSelectionDialogBuilderExoPlayer 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, önemli bir değişikliktir.
    • PlayerView kanal seçicide zorunlu metin kanalları gösterilmez ve "Yok" seçiliyse uygun bir zorunlu metin kanalı seçili kalır (#9432).
  • DASH:
    • DTS AudioChannelConfiguration öğelerinden kanal sayısını ayrıştırma Bu işlem, DTS akışları için ses geçişini yeniden etkinleştirir (#10159).
    • null öğesinin DashMediaSource.Factory.setCompositeSequenceableLoaderFactory öğesine iletilmesine izin vermeyin. Gerekirse DefaultCompositeSequenceableLoaderFactory örnekleri açıkça iletilebilir.
  • HLS:
    • Oynatma listesi CODECS özelliği ses codec'ini içermiyorsa parçalara ayırarak hazırlamaya geçin (#10065).
    • null'ün HlsMediaSource.Factory.setCompositeSequenceableLoaderFactory, HlsMediaSource.Factory.setPlaylistParserFactory ve HlsMediaSource.Factory.setPlaylistTrackerFactory'e iletilmesine izin vermeyin. 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 iletilebilir.
  • RTSP:
    • H263 için RTP okuyucu eklendi (#63).
    • MPEG4 için RTP okuyucu ekleyin (#35).
    • HEVC için RTP okuyucu ekleyin (#36).
    • AMR için RTP okuyucu ekleyin. Şu anda yalnızca tek kanallı, ardışık olmayan AMR akışları desteklenmektedir. Karma AMR RTP yükü desteklenmez. (#46)
    • VP8 için RTP okuyucu eklendi (#47).
    • WAV için RTP okuyucu ekleyin (#56).
    • RTSP temel yetkilendirme üstbilgisini düzeltin. (#9544).
    • ExoPlayer'ın bunlara ihtiyacı olmadığından zorunlu SDP alanlarının kontrolünü durdurun (#10049).
    • RTSP zamanlaması ayrıştırılırken kontrollü istisna atma (#10165).
    • VP9 için RTP okuyucu eklendi (#47).
    • OPUS için RTP okuyucu ekleyin (#53).
  • Veri kaynakları:
    • DummyDataSourcePlaceholderDataSource olarak yeniden adlandırın.
    • OkHttp kesinti işleme geçici çözümü.
  • Oturum:
    • İstekleri eşzamansız olarak çözmek için MediaSession.MediaItemFiller yerine MediaSession.Callback.onAddMediaItems yazın.
    • MediaController eski bir medya oturumuna bağlandığında setMediaItems(s) yöntemlerini destekler.
    • MediaController.setMediaUri ve MediaSession.Callback.onSetMediaUri öğelerini kaldırın. Aynı işlevler MediaController.setMediaItem ve MediaSession.Callback.onAddMediaItems kullanılarak da elde edilebilir.
    • Medya oynatmak için eski MediaController aramalarını onSetMediaUri yerine MediaSession.Callback.onAddMediaItems'e yönlendirin.
    • Bildirimi özelleştirmek için MediaNotification.Provider ve DefaultMediaNotificationProvider ekleyin.
    • Poster resimlerini indirmek için BitmapLoader ve SimpleBitmapLoader öğelerini ekleyin.
    • Eski oturumla geriye dönük uyumluluk sağlamak için MediaSession.setCustomLayout() ekleyin.
    • Eski oturumla özellik eşleşmesi sağlamak için MediaSession.setSessionExtras() ekleyin.
    • MediaSession.MediaSessionCallbackMediaSession.Callback, MediaLibrarySession.MediaLibrarySessionCallback'yi MediaLibrarySession.Callback ve MediaSession.Builder.setSessionCallback'i setCallback olarak yeniden adlandırın.
    • MediaControllerImplLegacy bölümünde NPE düzeltildi (#59).
    • Zaman çizelgesi değişikliğinde oturum konumu bilgilerini güncelleme(#51).
    • Denetleyiciyi yayınladıktan sonra MediaControllerImplBase'te NPE'yi düzeltin (#74).
  • Reklam oynatma / IMA:
    • Medya Derecelendirme Konseyi (MRC) önerilerine uygun olması için reklam anketi hızını 100 ms'den 200 ms'ye düşürün.
  • FFmpeg uzantısı:
    • Android Studio'nun gradle senkronizasyonunun başarısız olmasına neden olan bir CMake hatasını önlemek için CMake sürümünü 3.21.0+ olarak güncelleyin (#9933).
  • Desteği sonlandırılan sembolleri kaldırın:
    • Player.Listener.onTracksChanged(TrackGroupArray, TrackSelectionArray) öğesini kaldırın. Bunun yerine Player.Listener.onTracksChanged(Tracks) kullanın.
    • Player.getCurrentTrackGroups ve Player.getCurrentTrackSelections öğelerini kaldırın. Bunun yerine Player.getCurrentTracks kullanın. Desteği sonlandırılmış olsa da ExoPlayer.getCurrentTrackGroups ve ExoPlayer.getCurrentTrackSelections yöntemlerini kullanmaya devam edebilirsiniz.
    • DownloadHelper DEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_VIEWPORT ve DEFAULT_TRACK_SELECTOR_PARAMETERS sabitlerini kaldırın. Mümkün olduğunda bunun yerine getDefaultTrackSelectorParameters(Context), aksi takdirde DEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_CONTEXT kullanın.
    • DefaultTrackSelector(ExoTrackSelection.Factory) yapıcısını kaldırın. Bunun yerine DefaultTrackSelector(Context, ExoTrackSelection.Factory) politikasını kullanın.
    • Transformer.Builder.setContext öğesini kaldırın. Context, bunun yerine Transformer.Builder oluşturucuya aktarılmalıdır.

Sürüm 1.0.0-alpha03

14 Mart 2022

androidx.media3:media3-*:1.0.0-alpha03 yayınlanır. 1.0.0-alpha03 sürümü bu taahhütleri içerir.

Bu, ExoPlayer 2.17.1 sürümüne karşılık gelir.

  • Ses:
    • HLS'de Dolby Atmos (E-AC3-JOC) için ses özelliklerini kontrol ederken oluşan hatayı düzeltme
  • Ayıklayıcılar:
    • FMP4: Hem v0 hem de v1 emsg atomları içeren akışlar için emsg örnek meta verilerinin yanlış sırada yayınlanabileceği sorun düzeltildi (#9996).
  • Metin:
    • SingleSampleMediaSource.Factory.setTrackId ve MediaItem.SubtitleConfiguration.Builder.setId arasındaki etkileşimi düzelterek SubtitleConfiguration alanına öncelik verin ve ayarlanmamışsa Factory değerine geri dönün (#10016).
  • Reklam oynatma:
    • Canlı HLS SSAI yayınlarında reklam dönemleri arasındaki ses eksikliklerini düzeltin.

Sürüm 1.0.0-alpha02

2 Mart 2022

androidx.media3:media3-*:1.0.0-alpha02 yayınlanır. 1.0.0-alpha02 sürümü bu taahhütleri içerir.

Bu, ExoPlayer 2.17.0 sürümüne karşılık gelir.

  • Temel Kitaplık:
    • buildVideoRenderers() veya buildAudioRenderers()'ı geçersiz kılan DefaultRenderersFactory alt sınıflarının codec bağdaştırıcısı fabrikasına erişebilmesi ve bunu oluşturdukları MediaCodecRenderer örneklerine iletebilmesi için korunan DefaultRenderersFactory.getCodecAdapterFactory() yöntemini ekleyin.
    • ICY üstbilgi alanları name ve genre'u sırasıyla MediaMetadata.station ve MediaMetadata.genre'a iletin. Böylece, Player.Listener.onMediaMetadataChanged() üzerinden uygulamaya ulaşabilirler (#9677).
    • DefaultHttpDataSource#getResponseHeaders öğesinden boş anahtarları kaldırın.
    • MediaCodec örneği oluşturma işlemi başarısız olduğunda uyku moduna geçip tekrar deneyin. Bu, bir yüzey güvenli bir codec'ten başka bir codec'e geçirilirken bazı cihazlarda ortaya çıkan bir sorunu (#8696) giderir.
    • Kullanıcıların MediaCodec'ten metrik verileri almasına izin vermek için MediaCodecAdapter.getMetrics() ekleyin. (#9766).
    • Maven bağımlılık çözümü düzeltildi (#8353).
    • Düşük gecikmeli özelliklere sahip olmayan veya kullanıcının hızı ayarlama isteği bulunmayan canlı yayınlarda otomatik hız ayarını devre dışı bırakın (#9329).
    • DecoderCounters#inputBufferCountqueuedInputBufferCount olarak yeniden adlandırın.
    • SimpleExoPlayer.renderers'ü gizli hale getirin. Oluşturuculara ExoPlayer.getRenderer üzerinden erişilebilir.
    • Bazı AnalyticsListener.EventFlags sabit değerleri, Player.EventFlags'daki değerlerle eşleşecek şekilde güncellendi.
    • Bir uygulamanın ihtiyaç duymadığı durumlarda R8 tarafından kaldırılmasına izin vermek için AnalyticsCollector'ü bir arayüz ve varsayılan uygulamaya bölün.
  • Parça seçimi:
    • Parça seçiminde tercih edilen video rolü işaretlerini destekleyin (#9402).
    • Uyarlama için birden fazla video parçası seçerken tercih edilen MIME türlerini ve rol işaretlerini dikkate alacak şekilde video parçası seçim mantığını güncelleyin (#9519).
    • Video ve ses parçası seçim mantığını, yalnızca aynı düzeyde kod çözücü ve donanım desteğine sahip uyarlanabilir seçimler için biçimler seçecek şekilde güncelleyin (#9565).
    • Birincil, donanım hızlandırmalı kod çözücüler birden fazla codec'i destekliyorsa video kanalı seçim mantığını, daha verimli codec'leri tercih edecek şekilde güncelleyin (#4835).
    • Teknik parça seçim kısıtlamalarına (ör. tercih edilen MIME türü veya maksimum kanal sayısı) kıyasla ses içeriği tercihlerini ("varsayılan" ses parçası veya sistem yerel dili ile eşleşen bir parça) tercih edin.
    • Bir parça grubunun geçersiz kılınmasının, aynı türdeki diğer parça gruplarını devre dışı bırakmamasına neden olan parça seçimi sorunu düzeltildi (#9675).
    • Boş olmayan ve boş parça geçersiz kılmalarının bir karışımının doğru şekilde uygulanmadığı parça seçimi sorunu düzeltildi (#9649).
    • TrackGroupArray içinde yinelenen TrackGroup'leri yasaklayın. TrackGroups, TrackGroup oluşturucuda bir id ayarlayarak her zaman ayırt edilebilir hale getirilebilir. Bu, etkin bir kanal geçersiz kılma özelliğiyle uygulamayı arka plana aldıktan sonra oynatmayı devam ettirirken yaşanan kilitlenmeyi düzeltir (#9718).
    • Oynatma canlı yayına çok yakın olsa bile yeterli ağ bant genişliğinde kalite artışına izin vermek için AdaptiveTrackSelection'teki mantığı düzeltin (#9784).
  • Video:
    • Gerekirse Dolby Vision'un uyumlu bir H.264/H.265 kod çözücüsü kullanması için kod çözücünün yedek mantığını düzeltin.
  • Ses:
    • Gerekirse uyumlu bir E-AC3 kod çözücüsü kullanmak için Dolby Atmos (E-AC3-JOC) için kod çözücü yedek mantığını düzeltin.
    • AudioCapabilities API'lerini, null yerine açıkça AudioCapabilities.DEFAULT_AUDIO_CAPABILITIES ile iletmeyi zorunlu kılacak şekilde değiştirin.
    • DefaultAudioSink içine bir 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ındaki Vorbis yorumlarını (METADATA_BLOCK_PICTURE dahil) ayrıştırın.
  • Metin:
    • Yapılandırmadan oluşturulan altyazı parçasının Format.id alanına aktarılan bir MediaItem.SubtitleConfiguration.id alanı ekleyin (#9673).
    • Matroska kapsayıcılarında WebVTT altyazılar için temel destek ekleyin (#9886).
    • Cea708Decoder'ün, hizmet bloğunun beyan edilen boyutundan fazlasını okumasını engelleyin.
  • DRM:
    • playbackLooper, DrmSessionManager.(pre)acquireSession hesabından kaldırılsın mı? Bir DrmSessionManager, özel bir MediaSource'ta bir uygulama tarafından kullanıldığında bunun yerine playbackLooper'nin DrmSessionManager.setPlayer'e iletilmesi gerekir.
  • Reklam oynatma / IMA:
    • IMA Dinamik Reklam Ekleme (DAI) desteği eklendi (#8213).
    • Bir reklam grubunun tekrar oynatılabilmesi için sıfırlanmasına izin vermek üzere AdPlaybackState işlevine bir yöntem ekleyin (#9615).
    • Reklam oynatma sırasında 1,0 oynatma hızını zorunlu kılma (#9018).
    • Yüklenemeyen bir reklam grubunun oynatmanın hemen sıfırlanmasına neden olduğu sorun düzeltildi (#9929).
  • Kullanıcı Arayüzü:
    • Belirli temalar kullanılırken StyledPlayerView geri sar ve ileri sar düğmelerindeki sayıların rengini düzeltme (#9765).
    • Oynatma hızı dizelerini doğru şekilde çevirin (#9811).
  • DASH:
    • Ayrıştırılmış temel ve ek özellikleri Representation'e ekleyin (#9579).
    • forced-subtitle parça rolü için destek (#9727).
    • main kanal rolünün C.SELECTION_FLAG_DEFAULT olarak yorumlanmasını durdurun.
    • DVB ad alanını tanımlamayan manifest'ler için temel URL hariç tutma mantığını düzeltin (#9856).
    • Göreli MPD.Location URL'leri desteklenir (#9939).
  • HLS:
    • Yalnızca ses içeren HLS akışları için Format.label parametresini doğru şekilde doldurun (#9608).
    • Başlangıç süresini iyileştirmek için varsayılan olarak parçalara ayrılmamış hazırlığı kullanın. Yorumlarınız, ana oynatma listesinde belirtilmemiş, birleştirilmiş altyazı parçaları içeriyorsa oynatılabilmesi için bunları ana oynatma listesine eklemeniz veya HlsMediaSource.Factory.setAllowChunklessPreparation(false) ile parçalara ayrılmadan hazırlama özelliğini devre dışı bırakmanız gerekir.
    • HLS'de anahtar kare doğru aramayı destekleyin (#2882).
  • RTSP:
    • Herhangi bir sunucu bağlantısı için kullanılan SocketFactory değerini geçersiz kılacak bir istemci API'si sağlayın (#9606).
    • Her ikisi de mevcutsa BASIC yerine DIGEST kimlik doğrulama yöntemini tercih edin (#9800).
    • RTSP parça zamanlaması kullanılamadığında işlem yapın (#9775).
    • Geçersiz RTP-Info başlık değerlerini yoksay (#9619).
  • 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ılır.
    • Dönüşüm seçeneklerini belirtmek için TransformationRequest ekleyin.
    • Birden fazla dinleyicinin kaydolmasına izin verin.
    • Kodek çıkışı kısmen okunduğunda Dönüştürücü'nün takılmasını düzeltme
    • Birleştiricinin yayını sonlandırırken Transformer.getProgress'te olası NPE'yi düzeltin.
    • Dönüşümleri uygulamak için bir demo uygulama ekleyin.
  • MediaSession uzantısı:
    • MediaSessionConnector artık varsayılan olarak durdurulduğunda oynatma listesini temizliyor. Oynatma listesinin korunmasını isteyen uygulamalar, bağlayıcıda setClearMediaItemsOnStop(false) işlevini çağırabilir.
  • Yayın uzantısı:
    • CastPlayer'ün onIsPlayingChanged'u doğru şekilde aramasını engelleyen hata düzeltildi (#9792).
    • Poster dahil olmak üzere ses meta verilerini DefaultMediaItemConverter ile destekleme (#9663).
  • FFmpeg uzantısı:
    • build_ffmpeg.sh'ü GNU yerine LLVM'in bin utils'ine bağlayın (#9933).
  • Android 12 uyumluluğu:
    • Cast uzantısını com.google.android.gms:play-services-cast-framework:20.1.0'e bağlı olacak şekilde yükseltin. play-services-cast-framework'ın önceki sürümleri Android 12'yi hedefleyen uygulamalarla uyumlu değildir ve PendingIntent oluştururken IllegalArgumentException hatasıyla kilitlenir (#9528).
  • Desteği sonlandırılan sembolleri kaldırın:
    • Player.EventListener öğesini kaldırın. 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ın. Bunun yerine MediaItem.Builder#setStreamKeys kullanın.
    • MediaSourceFactory#createMediaSource(Uri) öğesini kaldırın. Bunun yerine MediaSourceFactory#createMediaSource(MediaItem) kullanın.
    • setTag, DashMediaSource, HlsMediaSource ve SsMediaSource'ten kaldırılsın mı? Bunun yerine MediaItem.Builder#setTag politikasını kullanın.
    • DashMediaSource#setLivePresentationDelayMs(long, boolean) öğesini kaldırın. Manifesti geçersiz kılmak için MediaItem.Builder#setLiveConfiguration ve MediaItem.LiveConfiguration.Builder#setTargetOffsetMs'ü, yedek değer sağlamak için DashMediaSource#setFallbackTargetLiveOffsetMs'i kullanın.
    • (Simple)ExoPlayer.setThrowsWhenUsingWrongThread öğesini kaldırın. İleti dizisi yaptırımını devre dışı bırakmak artık mümkün değildir.
    • ActionFile ve ActionFileUpgradeUtil öğelerini kaldırın. Eski işlem dosyalarını DefaultDownloadIndex ile birleştirmek için ActionFileUpgradeUtil'ü kullanmak üzere ExoPlayer 2.16.1 veya önceki bir sürümü kullanın.
    • ProgressiveMediaSource#setExtractorsFactory öğesini kaldırın. Bunun yerine ProgressiveMediaSource.Factory(DataSource.Factory, ExtractorsFactory) sınıf oluşturucusunu kullanın.
    • ProgressiveMediaSource.Factory#setTag ve ProgressiveMediaSource.Factory#setCustomCacheKey öğelerini kaldırın. Bunun yerine MediaItem.Builder#setTag ve MediaItem.Builder#setCustomCacheKey politikalarını kullanın.
    • DefaultRenderersFactory(Context, @ExtensionRendererMode int) ve DefaultRenderersFactory(Context, @ExtensionRendererMode int, long) sınıf oluşturucularını kaldırın. Bunun yerine DefaultRenderersFactory(Context) kurucusunu, DefaultRenderersFactory#setExtensionRendererMode ve DefaultRenderersFactory#setAllowedVideoJoiningTimeMs kullanın.
    • Tüm herkese açık CronetDataSource kurucuları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, Kotlin'de kullanımların derlenmesini bozabilir. Bu sorun, türü ek açıklamaya (Int) taşımak için ek açıklamayı taşıyarak düzeltilebilir.
    • @AacAudioObjectType
    • @Ac3Util.SyncFrameInfo.StreamType
    • @AdLoadException.Type
    • @AdtsExtractor.Flags
    • @AmrExtractor.Flags
    • @AspectRatioFrameLayout.ResizeMode
    • @AudioFocusManager.PlayerCommand
    • @AudioSink.SinkFormatSupport
    • @BinarySearchSeeker.TimestampSearchResult.Type
    • @BufferReplacementMode
    • @C.BufferFlags
    • @C.ColorRange
    • @C.ColorSpace
    • @C.ColorTransfer
    • @C.CryptoMode
    • @C.Encoding
    • @C.PcmEncoding
    • @C.Projection
    • @C.SelectionReason
    • @C.StereoMode
    • @C.VideoOutputMode
    • @CacheDataSource.Flags
    • @CaptionStyleCompat.EdgeType
    • @DataSpec.Flags
    • @DataSpec.HttpMethods
    • @DecoderDiscardReasons
    • @DecoderReuseResult
    • @DefaultAudioSink.OutputMode
    • @DefaultDrmSessionManager.Mode
    • @DefaultTrackSelector.SelectionEligibility
    • @DefaultTsPayloadReaderFactory.Flags
    • @EGLSurfaceTexture.SecureMode
    • @EbmlProcessor.ElementType
    • @ExoMediaDrm.KeyRequest.RequestType
    • @ExtensionRendererMode
    • @Extractor.ReadResult
    • @FileTypes.Type
    • @FlacExtractor.Flags (com.google.android.exoplayer2.ext.flac paketinde)
    • @FlacExtractor.Flags (com.google.android.exoplayer2.extractor.flac paketinde)
    • @FragmentedMp4Extractor.Flags
    • @HlsMediaPlaylist.PlaylistType
    • @HttpDataSourceException.Type
    • @IllegalClippingException.Reason
    • @IllegalMergeException.Reason
    • @LoadErrorHandlingPolicy.FallbackType
    • @MatroskaExtractor.Flags
    • @Mp3Extractor.Flags
    • @Mp4Extractor.Flags
    • @NotificationUtil.Importance
    • @PlaybackException.FieldNumber
    • @PlayerNotificationManager.Priority
    • @PlayerNotificationManager.Visibility
    • @PlayerView.ShowBuffering
    • @Renderer.State
    • @RendererCapabilities.AdaptiveSupport
    • @RendererCapabilities.Capabilities
    • @RendererCapabilities.DecoderSupport
    • @RendererCapabilities.FormatSupport
    • @RendererCapabilities.HardwareAccelerationSupport
    • @RendererCapabilities.TunnelingSupport
    • @SampleStream.ReadDataResult
    • @SampleStream.ReadFlags
    • @StyledPlayerView.ShowBuffering
    • @SubtitleView.ViewType
    • @TextAnnotation.Position
    • @TextEmphasisSpan.MarkFill
    • @TextEmphasisSpan.MarkShape
    • @Track.Transformation
    • @TrackOutput.SampleDataPart
    • @Transformer.ProgressState
    • @TsExtractor.Mode
    • @TsPayloadReader.Flags
    • @WebvttCssStyle.FontSizeUnit

Sürüm 1.0.0-alpha01

27 Ekim 2021

androidx.media3:media3-*:1.0.0-alpha01 yayınlanır. 1.0.0-alpha01 sürümü bu taahhütleri içerir.

Yeni özellikler

Media3, ExoPlayer dahil olmak üzere medya destek kitaplıklarının yeni adresidir. İlk alfa sürümünde, aşağıdakiler dahil olmak üzere medya kullanım alanlarını uygulamak için kitaplıkların erken ve işlevsel uygulamaları yer alır:

  • Android için uygulama düzeyinde bir medya oynatıcı olan ExoPlayer'ı özelleştirmek ve genişletmek kolaydır.
  • Oynatma işlemlerini göstermek ve kontrol etmek için medya oturumu işlevi. Bu yeni oturum modülü, ExoPlayer ile aynı Player arayüzünü kullanır.
  • Medya oynatma kullanıcı arayüzleri oluşturmaya yönelik kullanıcı arayüzü bileşenleri.
  • ExoPlayer ile kullanılmak üzere diğer kitaplıklardaki işlevleri sarmalayan modüller (ör. IMA SDK üzerinden reklam ekleme).

Daha fazla bilgi için Media3 GitHub projesine göz atın.

ExoPlayer daha önce ayrı bir ExoPlayer GitHub projesinde barındırılıyordu. Media3'te paket adı androidx.media3.exoplayer. Uygulamaların Media3'e geçiş yapması için ExoPlayer GitHub projesini bir süre daha sürdürmeye ve yayınlamaya devam etmeyi planlıyoruz. Media3, eski media2 ve mediasession uzantıları dışındaki tüm ExoPlayer modüllerinin yerini alan yeni media3-session modülüne sahiptir. Bu sayede, adaptör/konnektör sınıfı kullanmaya gerek kalmadan oynatıcılar ile medya oturumları arasında doğrudan entegrasyon sağlanır.