트랜스포머를 사용하면 동영상, 이미지, 오디오 파일과 같은 여러 미디어 애셋을 결합하여 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 저장소에 문제를 제출하세요.