Transformer'ı kullanarak videolar, resimler ve ses dosyaları gibi birden fazla medya öğesini birleştirip Composition oluşturabilirsiniz.
Kompozisyonu dışa aktarma
MediaItem öğesine dönüşümler (ör. efektler veya kırpma düzenlemeleri) uygulamak için, dönüşümlerin uygulandığı öğeyi temsil eden bir EditedMediaItem oluşturmanız gerekir.
EditedMediaItem nesneleri daha sonra birleştirilerek EditedMediaItemSequence oluşturulabilir.
Örneğin, düzenlenmiş iki videonun yer aldığı bir EditedMediaItemSequence oluşturabilirsiniz. EditedMediaItemSequence içindeki öğeler sırayla sipariş edilir ve zaman içinde çakışmaz.
Composition, bir veya daha fazla EditedMediaItemSequence nesnesinin birleşimidir. EditedMediaItemSequence içindeki tüm Composition nesneler karıştırılır. Böylece video ve ses öğelerini birleştirebilirsiniz.
Composition nesneleri Transformer kullanılarak dışa aktarılabilir.
İki düzenlenmiş video klibi içeren ve üzerine ses parçası eklenmiş bir video öğesi oluşturup dışa aktarma örneğini aşağıda bulabilirsiniz:
Kotlin
val transformer = ... // Set up Transformer instance val video1 = EditedMediaItem.Builder( MediaItem.fromUri(video1Uri)) .build() val video2 = EditedMediaItem.Builder( MediaItem.fromUri(video2Uri)) .build() val videoSequence = EditedMediaItemSequence.Builder( setOf(C.TRACK_TYPE_AUDIO, C.TRACK_TYPE_VIDEO)) .addItems(video1, video2) .build() val backgroundAudio = EditedMediaItem.Builder( MediaItem.fromUri(audioUri)) .build() val backgroundAudioSequence = EditedMediaItemSequence.Builder( setOf(C.TRACK_TYPE_AUDIO)) .addItem(backgroundAudio) .setIsLooping(true) // Loop audio track through duration of videoSequence .build() val composition = Composition.Builder( videoSequence, backgroundAudioSequence) .build() val filePath = ... // Provide file path to save Composition transformer.start(composition, filePath)
Java
Transformer transformer = ... // Set up Transformer instance EditedMediaItem video1 = new EditedMediaItem.Builder( MediaItem.fromUri(video1Uri)) .build(); EditedMediaItem video2 = new EditedMediaItem.Builder( MediaItem.fromUri(video2Uri)) .build(); EditedMediaItemSequence videoSequence = new EditedMediaItemSequence.Builder( ImmutableSet.of(C.TRACK_TYPE_AUDIO, C.TRACK_TYPE_VIDEO)) .addItems(video1, video2) .build(); EditedMediaItem backgroundAudio = new EditedMediaItem.Builder( MediaItem.fromUri(audioUri)) .build(); EditedMediaItemSequence backgroundAudioSequence = new EditedMediaItemSequence.Builder( ImmutableSet.of(C.TRACK_TYPE_AUDIO)) .addItem(backgroundAudio) .setIsLooping(true) // Loop audio track through duration of videoSequence .build(); String filePath = ... // Provide file path to save Composition Composition composition = new Composition.Builder( videoSequence, backgroundAudioSequence) .build(); transformer.start(composition, filePath);
Desteklenen kullanım alanlarına örnekler
Aşağıda, Transformer API'nin Compositions ile desteklediği kullanım alanlarının olası her örneğe yer vermeyen 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 Bileşen 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 ile ilgili özellik istekleriniz varsa Media3 GitHub deposunda sorun bildirin.