Desteklenen biçimler

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.