Media3 Transformer는 현재 개발 중이며 여러분의 의견을 기다리고 있습니다.
Issue Tracker에서 의견, 기능 요청, 버그 신고를 보내주시기 바랍니다.
ExoPlayer 블로그를 팔로우하여 최신 업데이트를 확인하세요.
지원되는 형식
컬렉션을 사용해 정리하기
내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.
ExoPlayer 지원 형식
페이지에서
알아보겠습니다. 로드, 추출, 변환과 같은 제한사항은
Transformer는 디코딩 스트림을 지원하지만 Transformer는
ExoPlayer의 번들 소프트웨어 디코더 모듈
또한 Transformer는 인코딩을 위해 MediaCodec
를 사용하며 다중화해야 합니다.
mux는 지원되는 출력 형식을 제한하는 출력 미디어 파일입니다. 자세한 내용은
MediaCodec 동영상 코덱
자세한 내용은 인코딩 제한사항과
MediaMuxer
출력 미디어 컨테이너에 적용되는 제한사항을 참조하세요. Transformer 전용
출력됩니다.
기본적으로 Transformer
는 MediaMuxer
를 사용하지만 진행 중인 작업 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 이상. 다음을 사용하여 톤 매핑을 사용 설정하려면
MediaCodec
는 setHdrMode(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);
따라서 초인종에 대해 걱정할 필요 없이 슬로 모션 동영상을 지원할 수 있습니다.
처리할 수 있습니다. 여러분이 해야 할 일은
원본 동영상이 아닌 평면화된 버전의 동영상입니다.
달리 명시되지 않는 한 이 페이지의 콘텐츠에는 Creative Commons Attribution 4.0 라이선스에 따라 라이선스가 부여되며, 코드 샘플에는 Apache 2.0 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 Google Developers 사이트 정책을 참조하세요. 자바는 Oracle 및/또는 Oracle 계열사의 등록 상표입니다.
최종 업데이트: 2025-07-27(UTC)
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["필요한 정보가 없음","missingTheInformationINeed","thumb-down"],["너무 복잡함/단계 수가 너무 많음","tooComplicatedTooManySteps","thumb-down"],["오래됨","outOfDate","thumb-down"],["번역 문제","translationIssue","thumb-down"],["샘플/코드 문제","samplesCodeIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2025-07-27(UTC)"],[],[],null,["# Supported formats\n\nSee the [ExoPlayer supported formats\npage](/guide/topics/media/exoplayer/media-items) for an introduction to\nmedia formats in general. The same limitations on loading, extracting, and\ndecoding streams apply with Transformer, though Transformer does not support\nExoPlayer's bundled software decoder modules.\n\nTransformer also relies on `MediaCodec` for encoding, and needs to multiplex, or\n*mux* , output media files, which limits the output formats supported. See\n[MediaCodec video codecs](https://developer.android.com/guide/topics/media/media-formats#video-codecs)\nfor more information about encoding limitations and\n[MediaMuxer](https://developer.android.com/reference/android/media/MediaMuxer)\nfor limitations that apply to the output media container. Transformer only\noutputs MP4 files.\n\nBy default, `Transformer` uses `MediaMuxer`, but a work-in-progress `InAppMuxer`\nis optionally available to avoid some of `MediaMuxer`'s limitations around\nreference frame structures and supported sample formats. The default muxer will\nbecome the in-app muxer in a future release.\n\nImage support\n-------------\n\nTransformer uses `BitmapFactory` to load and decode all image assets, so\nTransformer supports all the formats BitmapFactory does. See\n[Image support](/guide/topics/media/media-formats#image-formats)\nfor supported image types. For multi-picture formats (e.g. gifs), a single image\nframe from the container is displayed if the `DefaultAssetLoaderFactory` is\nused.\n\nSpecial formats\n---------------\n\nTransformer supports handling input in newer media formats that provide special\nfeatures compared to conventional formats.\n\n### Handling HDR videos\n\nMore and more devices now support [HDR video\ncapture](/training/camera2/hdr-video-capture), giving more vivid, accurate\ncolors and a greater brightness range.\n\nTransformer supports editing HDR videos from Android 13 (API level 33) onwards\non devices with the required encoding support. When editing HDR videos, any GL\nvideo effects need to handle 16-bit floating point color components and BT.2020\ncolor space. `HDR_MODE_KEEP_HDR` is the default mode when building the\n`Composition`. If HDR editing is not supported, the Transformer\nfalls back to using `HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_OPEN_GL`.\n\nConverting HDR to SDR, also known as *tone-mapping* , is supported from Android\n10 (API level 29) onwards on devices with the required decoding and OpenGL\nsupport. This is useful when sharing HDR media to other apps or services that\ndon't support ingestion of HDR content. To enable tone-mapping using OpenGL call\n`setHdrMode(HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_OPEN_GL)` when creating the\n`Composition`. From Android 12 (API level 31) onwards, `MediaCodec`\nalso supports tone-mapping on some devices, including all devices running\nAndroid 13 or higher that can capture HDR video. To enable tone-mapping using\n`MediaCodec` call `setHdrMode(HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_MEDIACODEC)`.\n\n### Handling slow motion media\n\nSlow-motion videos include metadata indicating the speed at which each section\nof the stream should be played. *Flattening* is the process of producing a new\nvideo stream based on the slow-motion video but where the sections are sped up\nor slowed down based on metadata, so that they play correctly even on players\nthat don't apply slow motion metadata.\n\nTo flatten slow-motion streams, use the `setFlattenForSlowMotion` builder\nmethod on `EditedMediaItem`. \n\n### Kotlin\n\n```kotlin\nval editedMediaItem =\n EditedMediaItem.Builder(inputMediaItem).setFlattenForSlowMotion(true).build()\nval transformer =\n Transformer.Builder(context).addListener(transformerListener).build()\ntransformer.start(editedMediaItem, outputPath)\n```\n\n### Java\n\n```java\nEditedMediaItem editedMediaItem =\n new EditedMediaItem.Builder(inputMediaItem).setFlattenForSlowMotion(true).build();\nTransformer transformer =\n new Transformer.Builder(context).addListener(transformerListener).build();\ntransformer.start(editedMediaItem, outputPath);\n```\n\n\u003cbr /\u003e\n\nThis allows you to support slow-motion videos without having to worry about\nhandling these special formats. All you need to do is to store and play the\nflattened version of the video instead of the original one.\n| **Note:** Only Samsung's slow motion format is supported."]]