지원되는 형식

ExoPlayer 지원 형식 페이지에서 알아보겠습니다. 로드, 추출, 변환과 같은 제한사항은 Transformer는 디코딩 스트림을 지원하지만 Transformer는 ExoPlayer의 번들 소프트웨어 디코더 모듈

또한 Transformer는 인코딩을 위해 MediaCodec를 사용하며 다중화해야 합니다. mux는 지원되는 출력 형식을 제한하는 출력 미디어 파일입니다. 자세한 내용은 MediaCodec 동영상 코덱 자세한 내용은 인코딩 제한사항과 MediaMuxer 출력 미디어 컨테이너에 적용되는 제한사항을 참조하세요. Transformer 전용 출력됩니다.

기본적으로 TransformerMediaMuxer를 사용하지만 진행 중인 작업 InAppMuxer를 사용합니다. 는 선택적으로 사용할 수 있어 다음과 같은 MediaMuxer의 제한사항을 방지할 수 있습니다. 참조 프레임 구조 및 지원되는 샘플 형식을 지원합니다. 기본 Muxer는 인앱 Muxer가 될 수 있습니다.

이미지 지원

Transformer는 BitmapFactory를 사용하여 모든 이미지 애셋을 로드하고 디코딩하므로 Transformer는 BitmapFactory가 실행하는 모든 형식을 지원합니다. 자세한 내용은 이미지 지원 참조하세요. 다중 사진 형식 (예: gif)의 경우 단일 이미지 DefaultAssetLoaderFactory가 다음과 같은 경우 컨테이너의 프레임이 표시됩니다. 있습니다.

특수 형식

Transformer는 특수 API를 제공하는 최신 미디어 형식의 입력 처리를 기능을 크게 향상했습니다.

HDR 동영상 처리

점점 더 많은 기기에서 HDR 동영상 지원 더욱 선명하고 정확한 캡처 색상과 더 넓은 밝기 범위를 조정할 수 있습니다

Transformer는 Android 13 (API 수준 33)부터 HDR 동영상 편집을 지원합니다. 필요한 인코딩을 지원하는 기기 HDR 동영상을 편집할 때 모든 GL 동영상 효과는 16비트 부동 소수점 색상 구성요소 및 BT.2020을 처리해야 함 색 공간을 뜻합니다. HDR_MODE_KEEP_HDR는 빌드 시 Composition HDR 편집이 지원되지 않는 경우, Transformer는 HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_OPEN_GL 사용으로 대체됩니다.

HDR을 SDR로 변환(톤 매핑이라고도 함)은 Android에서 지원됩니다. 디코딩 및 OpenGL이 필요한 기기에서 10 (API 수준 29) 이상 도움이 될 수 있습니다 이 기능은 HDR 미디어를 지원하는 다른 앱이나 서비스에 HDR 콘텐츠 처리를 지원하지 않습니다. OpenGL 호출을 사용한 톤 매핑 사용 설정 setHdrMode(HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_OPEN_GL) Composition Android 12 (API 수준 31)부터 MediaCodec 디바이스에서 실행 중인 모든 기기 등 일부 기기에서 톤 매핑도 지원합니다. HDR 동영상을 캡처할 수 있는 Android 13 이상. 다음을 사용하여 톤 매핑을 사용 설정하려면 MediaCodecsetHdrMode(HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_MEDIACODEC)를 호출합니다.

슬로 모션 미디어 처리

슬로 모션 동영상에는 각 섹션의 속도를 나타내는 메타데이터가 포함되어 있습니다. 재생되어야 합니다. 평면화는 새로운 슬로 모션 동영상을 기반으로 하되 속도가 빠른 메타데이터에 따라 느려지므로 플레이어에서도 제대로 재생됩니다. 세 가지 옵션이 있습니다.

슬로 모션 스트림을 평면화하려면 setFlattenForSlowMotion 빌더를 사용합니다. EditedMediaItem의 메서드

Kotlin

val editedMediaItem =
    EditedMediaItem.Builder(inputMediaItem).setFlattenForSlowMotion(true).build()
val transformer =
    Transformer.Builder(context).addListener(transformerListener).build()
transformer.start(editedMediaItem, outputPath)

자바

EditedMediaItem editedMediaItem =
    new EditedMediaItem.Builder(inputMediaItem).setFlattenForSlowMotion(true).build();
Transformer transformer =
    new Transformer.Builder(context).addListener(transformerListener).build();
transformer.start(editedMediaItem, outputPath);

따라서 초인종에 대해 걱정할 필요 없이 슬로 모션 동영상을 지원할 수 있습니다. 처리할 수 있습니다. 여러분이 해야 할 일은 원본 동영상이 아닌 평면화된 버전의 동영상입니다.