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 klibinden oluşan ve ü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.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() 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 = 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(); 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 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 ile ilgili özellik istekleriniz varsa Media3 GitHub deposunda sorun kaydı oluşturun.