Media3 Transformer kitaplığı, medyayı düzenlemek ve değiştirmek için bir dizi araç sunar. Çoklu öğe düzenlemenin temel bileşeni Composition API'sidir. Bu API, video klipler, resimler ve ses parçaları gibi birden fazla giriş medya öğesini, işlenebilen, önizlenebilen veya dışa aktarılabilen tek ve tutarlı bir yapıda düzenlemenize olanak tanır. Composition, bir veya daha fazla medya dizisini içeren bir zaman çizelgesi olarak düşünülebilir. Her bir
dizi (EditedMediaItemSequence ile tanımlanır) ayrı
medya öğeleri (EditedMediaItem örnekleri olarak tanımlanır) içerir.
Dönüşümler ve efektler tek bir EditedMediaItem veya tüm Composition için uygulanabilir.
Composition, Media3
Transformer ile çeşitli kullanım alanlarına yönelik giriş noktanızdır. Örneğin:
- Ses, resim ve video öğelerini sırayla birleştirme.
- Bir videoyu başka bir videonun üzerine yerleştirme (pencere içinde pencere)
- Arka plan ses parçasını video dizisiyle karıştırma
- Düzenlenen bir içeriğin tamamına görsel veya ses efektleri uygulama
- HDR video işleme gibi karmaşık senaryoları işleme
Bu kılavuzda, Composition nesnelerinin nasıl tanımlanacağı ve oluşturulacağı (ilgili temel sınıflar, tek veya birden fazla sıralamayla temel ve daha karmaşık kompozisyonların nasıl oluşturulacağı ve efektlerin farklı seviyelerde nasıl uygulanacağı dahil) ele alınmaktadır.
Temel Kavramlar ve Sınıflar
Composition API'yi etkili bir şekilde kullanmak için medya kompozisyonu oluşturmayla ilgili temel sınıfları anlamak önemlidir:
Effects:
- Amaç:
Effectsnesnesi, ses işlemcileri ve video efektlerinden oluşan bir koleksiyondur. - Kullanım şekli:
Compositionbağlamında, belirli klipleri değiştirmek içinEffects, tek tekEditedMediaItemörneklerinde veyaComposition'nin tamamında (genellikle ekran çözünürlüğünü ya da kare hızını ayarlama gibi nihai çıktıyı etkileyenPresentationefektleri için) ayarlanabilir. - Önemi:
Effects, hem tek tek öğe düzeyinde hem de genel kompozisyon düzeyinde medyalarınıza dönüştürme, filtre ve diğer işlemlerin uygulanmasını sağlayan mekanizmadır. Daha fazla bilgi içinTransformationssayfasına bakın.
EditedMediaItem:
- Amaç: Bu sınıf, tek bir medya öğesini (ör. video, resim veya ses dosyası) ve bu öğeye uygulanacak düzenlemeleri temsil eder.
- Kullanım şekli: Bir
EditedMediaItem,EffectsnesnesiyleMediaItem(gerçek medya içeriğini gösterir) gruplandırır. - Önemi: Bu, kompozisyonunuzun temel yapı taşıdır. Bu özellik, hangi medyanın dahil edileceğini ve her bir parçanın bir dizide diğerleriyle birleştirilmeden önce nasıl görüneceğini ve duyulacağını tam olarak tanımlamanıza olanak tanır.
EditedMediaItemSequence:
- Amaç: Birbiri ardına oynatılması amaçlanan
EditedMediaItemnesnelerin doğrusal bir dizisini temsil eder. - Nasıl kullanılır:
EditedMediaItemSequence,EditedMediaItemnesnelerinin listesiyle oluşturulur.Compositioniçindeki her dizi, çok parçalı bir video düzenleme zaman çizelgesindeki bir parçaya veya katmana benzer. Örneğin, bir dizide ana video klipleriniz yer alırken zaman açısından çakışan başka bir dizide, ilk dizinin üzerine yerleştirilecek video klipler bulunabilir. Başka bir dizide ise yalnızca arka plan müziği için bir ses parçası yer alabilir. - Neden önemlidir?
EditedMediaItemSequence, doğrudan birbirini takip etmesi gereken ilgili medya öğelerini gruplandırır. Birden fazla sıra kullanarak ses katmanları oluşturma veya görsel yer paylaşımları oluşturma gibi daha karmaşık düzenlemeler yapabilirsiniz.
Composition:
- Amaç: Bu, işlenecek medyanın tüm zaman çizelgesini temsil eden en üst düzey nesnedir. Tüm medya dizileri ve çıkışın tamamı için geçerli olan genel ayarlar veya efektler için kapsayıcı görevi görür.
- Kullanım şekli:
Composition, bir veya daha fazlaEditedMediaItemSequencenesnesinden oluşur. Ayrıca, kompozisyon genelinde efektler uygulayabilir ve HDR modu gibi genel yapılandırmaları doğrudanCompositionüzerinde ayarlayabilirsiniz. BirCompositionbirden fazlaEditedMediaItemSequencenesne içeriyorsa bu diziler sırayla oynatılacak şekilde düzenlenebilir veya zaman içinde çakışabilir. Bu sayede, resim içinde resim gibi yer paylaşımlı düzenler ya da bir diziden diğerine geçişler yapılabilir. - Neden önemlidir?
Composition, işlenecek giriş medyasının genel yapısını tanımlar ve hemCompositionPlayerile düzenlemeleri önizlemek hem deTransformerkullanılarak uygulanan düzenlemelerle bir çıkış videosu dışa aktarmak için kullanabileceğiniz ortak bir nesnedir.
Composition oluşturma ve dışa aktarma
İki düzenlenmiş video klibinden oluşan, üzerine ses parçası eklenmiş bir video öğesi oluşturma ve dışa aktarma örneğini aşağıda bulabilirsiniz:
Kotlin
val video1 = EditedMediaItem.Builder(MediaItem.fromUri(video1Uri)).build() val video2 = EditedMediaItem.Builder(MediaItem.fromUri(video2Uri)).build() val videoSequence = EditedMediaItemSequence.withAudioAndVideoFrom(listOf(video1, video2)) val backgroundAudio = EditedMediaItem.Builder(MediaItem.fromUri(audioUri)).build() val backgroundAudioSequence = EditedMediaItemSequence.withAudioFrom(listOf(backgroundAudio)) .buildUpon() .setIsLooping(true) // Loop audio track through duration of videoSequence .build() val composition = Composition.Builder(videoSequence, backgroundAudioSequence).build() transformer.start(composition, filePath)
Java
EditedMediaItem video1 = new EditedMediaItem.Builder(MediaItem.fromUri(video1Uri)).build(); EditedMediaItem video2 = new EditedMediaItem.Builder(MediaItem.fromUri(video2Uri)).build(); EditedMediaItemSequence videoSequence = EditedMediaItemSequence.withAudioAndVideoFrom(ImmutableList.of(video1, video2)); EditedMediaItem backgroundAudio = new EditedMediaItem.Builder(MediaItem.fromUri(audioUri)).build(); EditedMediaItemSequence backgroundAudioSequence = EditedMediaItemSequence.withAudioFrom(ImmutableList.of(backgroundAudio)) .buildUpon() .setIsLooping(true) // Loop audio track through duration of videoSequence .build(); Composition composition = new Composition.Builder(videoSequence, backgroundAudioSequence).build(); transformer.start(composition, filePath);
Desteklenen kullanım alanlarına örnekler
Aşağıda, Transformer API'nin Composition ile desteklediği kullanım alanlarının eksiksiz olmayan bir listesi verilmiştir:
- Ses, resim ve video öğelerini sırayla birleştirme.
- Video öğesine arka plan sesi ekleme
- Kompozisyona efekt ekleme
- Daha iyi görsel kalitede SDR çıkışı oluşturmak için HDR girişini SDR'ye ton eşleme.
Mevcut sınırlamalar
Bir Kompozisyon içindeki adım sıraları, Transformer.start() bölümünde belirtilen koşulları karşılamalıdır.
Ayrıca, Kompozisyonlarla çalışırken aşağıdaki işlemler henüz desteklenmemektedir:
- Video veya ses parçaları arasında geçiş yapma
Özellik istekleri
Transformer API'leriyle ilgili özellik istekleriniz varsa Media3 GitHub deposunda sorun kaydı oluşturun.