Genel olarak medya biçimlerine giriş için ExoPlayer tarafından desteklenen biçimler sayfasına bakın. Akış yükleme, ayıklama ve kod çözme işlemleriyle ilgili aynı sınırlamalar Transformer için geçerlidir. Ancak Transformer, ExoPlayer'ın paket halinde sunulan yazılım kod çözücü modüllerini desteklemez.
Dönüştürücü, kodlama için de MediaCodec
'yi kullanır ve çıkış medya dosyalarını Multiplex'e veya mux'a dönüştürmesi gerekir. Bu da, desteklenen çıkış biçimlerini sınırlandırır. Kodlama sınırlamaları hakkında daha fazla bilgi için MediaCodec video codec'leri sayfasına ve çıkış medya kapsayıcısında geçerli olan sınırlamalar için MediaMuxer'a bakın. Yalnızca dönüştürücü MP4
dosyaları için çıkış yapar.
Transformer
, varsayılan olarak MediaMuxer
kullanır. Ancak referans çerçeve yapıları ve desteklenen örnek biçimlerle ilgili MediaMuxer
sınırlamalarından bazılarını önlemek için devam eden InAppMuxer
bir InAppMuxer
kullanılabilir. Varsayılan muxer, gelecekteki bir sürümde uygulama içi muxer olacaktır.
Resim desteği
Transformer, tüm resim öğelerini yüklemek ve kodunu çözmek için BitmapFactory
protokolünü kullanır. Böylece Transformer, BitmapFactory'nin tüm biçimlerini destekler. Desteklenen resim türleri için Resim desteği bölümüne bakın. Çok resimli biçimlerde (ör. GIF'ler) DefaultAssetLoaderFactory
kullanıldığında kapsayıcıdaki tek bir resim çerçevesi gösterilir.
Özel biçimler
Transformer, geleneksel biçimlere kıyasla özel özellikler sağlayan yeni medya biçimlerinde girişlerin işlenmesini destekler.
HDR videoları işleme
Artık daha fazla cihaz, HDR video çekimi özelliğini desteklediğinden daha canlı, doğru renkler ve daha geniş bir parlaklık aralığı sunuyor.
Transformer, gerekli kodlama desteğine sahip cihazlarda Android 13'ten (API düzeyi 33) itibaren HDR videoların düzenlenmesini destekler. HDR videoları düzenlerken GL video efektlerinin 16 bit kayan nokta renk bileşenlerini ve BT.2020 renk alanını işlemesi gerekir. Composition
oluşturulurken varsayılan mod HDR_MODE_KEEP_HDR
olur. HDR düzenleme desteklenmiyorsa Dönüştürücü, HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_OPEN_GL
kullanmaya devam eder.
Ton eşleme olarak da bilinen HDR'yi SDR'ye dönüştürme, gerekli kod çözme ve OpenGL desteği olan cihazlarda Android 10 (API düzeyi 29) ve sonrası için desteklenir. Bu, HDR medyayı, HDR içeriğin beslemesini desteklemeyen diğer uygulama veya hizmetlerle paylaşırken kullanışlıdır. Composition
oluştururken OpenGL çağrısını
kullanarak ton eşlemeyi
etkinleştirmek için.setHdrMode(HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_OPEN_GL)
MediaCodec
, Android 12'den (API düzeyi 31) itibaren Android 13 veya sonraki sürümleri çalıştıran ve HDR video çekebilen tüm cihazlarda da ton eşlemeyi destekler. Ton eşlemeyi MediaCodec
özelliğini
kullanarak etkinleştirmek için setHdrMode(HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_MEDIACODEC)
numaralı telefonu arayın.
Ağır çekim medyayı işleme
Ağır çekim videolar, akışın her bir bölümünün oynatılması gerektiğini gösteren meta veriler içerir. Düzleştirme, ağır çekim videoyu temel alan, ancak bölümlerin meta verilere göre hızlandırıldığı veya yavaşlatıldığı, böylece ağır çekim meta verileri uygulanmamış oynatıcılarda bile doğru şekilde oynatıldığı yeni bir video akışı oluşturma sürecidir.
Ağır çekim akışları düzeltmek için EditedMediaItem
üzerinde setFlattenForSlowMotion
oluşturucu yöntemini kullanın.
Kotlin
val editedMediaItem = EditedMediaItem.Builder(inputMediaItem).setFlattenForSlowMotion(true).build() val transformer = Transformer.Builder(context).addListener(transformerListener).build() transformer.start(editedMediaItem, outputPath)
Java
EditedMediaItem editedMediaItem = new EditedMediaItem.Builder(inputMediaItem).setFlattenForSlowMotion(true).build(); Transformer transformer = new Transformer.Builder(context).addListener(transformerListener).build(); transformer.start(editedMediaItem, outputPath);
Bu sayede, bu özel biçimleri kullanma konusunda endişelenmeden ağır çekim videoları destekleyebilirsiniz. Tek yapmanız gereken, videonun orijinali yerine birleştirilmiş sürümünü kaydedip oynatmaktır.