멀티 애셋 수정

트랜스포머를 사용하면 동영상, 이미지, 오디오 파일과 같은 여러 미디어 애셋을 결합하여 Composition를 만들 수 있습니다.

컴포지션 내보내기

MediaItem변환(예: 효과 또는 자르기 수정)을 적용하려면 변환이 적용된 애셋을 나타내는 EditedMediaItem을 만들어야 합니다.

그런 다음 EditedMediaItem 객체를 연결하여 EditedMediaItemSequence를 만들 수 있습니다. 예를 들어 수정된 동영상 두 개로 EditedMediaItemSequence을 만들 수 있습니다. EditedMediaItemSequence 내의 항목은 순차적으로 정렬되며 시간이 겹치지 않습니다.

Composition은 하나 이상의 EditedMediaItemSequence 객체의 조합입니다. Composition의 모든 EditedMediaItemSequence 객체가 함께 믹싱되므로 동영상 및 오디오 애셋을 결합할 수 있습니다.

Composition 객체는 트랜스포머를 사용하여 내보낼 수 있습니다.

다음은 편집된 두 개의 동영상 클립으로 구성되고 오디오 트랙이 오버레이된 동영상 애셋을 만들고 내보내는 예입니다.

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)

자바

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);

지원되는 사용 사례의 예

다음은 Transformer API가 컴포지션과 함께 지원하는 사용 사례의 일부 목록입니다.

  • 오디오, 이미지, 동영상 애셋을 순차적으로 결합합니다.
  • 동영상 애셋에 배경 오디오를 추가합니다.
  • 컴포지션에 효과 추가
  • HDR 입력을 SDR로 톤 매핑하여 더 나은 시각적 품질의 SDR 출력을 생성합니다.

현재 제한사항

컴포지션 내 시퀀스는 Transformer.start()에 설명된 조건을 충족해야 합니다. 또한 컴포지션을 사용할 때는 다음 작업이 아직 지원되지 않습니다.

  • 동영상 또는 오디오 트랙 크로스페이드

기능을 요청함

트랜스포머 API에 대한 기능 요청이 있는 경우 Media3 GitHub 저장소에 문제를 제출하세요.