멀티 애셋 수정

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

컴포지션 내보내기

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

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

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

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

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

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)

자바

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

지원되는 사용 사례의 예

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

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

현재 제한사항

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

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

기능을 요청함

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