Çok öğeli düzenleme

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.