Media3 Transformer is actively under development and we are looking to hear from you! We welcome your feedback, feature requests and bug reports in the issue tracker. Follow the ExoPlayer blog for the latest updates.
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
برای آشنایی با فرمت های رسانه ای به طور کلی به صفحه فرمت های پشتیبانی شده ExoPlayer مراجعه کنید. همان محدودیتها در بارگیری، استخراج و رمزگشایی جریانها برای Transformer اعمال میشود، اگرچه Transformer از ماژولهای رمزگشای نرمافزار همراه ExoPlayer پشتیبانی نمیکند.
Transformer همچنین برای رمزگذاری به MediaCodec متکی است و باید فایل های رسانه ای را چندگانه یا mux کند که فرمت های خروجی پشتیبانی شده را محدود می کند. برای اطلاعات بیشتر درباره محدودیتهای رمزگذاری، به کدکهای ویدیویی MediaCodec و برای محدودیتهایی که در محفظه رسانه خروجی اعمال میشود، MediaMuxer را ببینید. Transformer فقط فایل های MP4 را خروجی می دهد.
بهطور پیشفرض، Transformer از MediaMuxer استفاده میکند، اما InAppMuxer در حال پیشرفت بهصورت اختیاری در دسترس است تا از برخی محدودیتهای MediaMuxer در مورد ساختارهای قاب مرجع و قالبهای نمونه پشتیبانیشده اجتناب شود. muxer پیشفرض در نسخه بعدی به muxer درون برنامهای تبدیل خواهد شد.
پشتیبانی از تصویر
Transformer از BitmapFactory برای بارگیری و رمزگشایی تمام دارایی های تصویر استفاده می کند، بنابراین Transformer از تمام فرمت هایی که BitmapFactory انجام می دهد پشتیبانی می کند. به پشتیبانی تصویر برای انواع تصاویر پشتیبانی شده مراجعه کنید. برای قالبهای چند تصویری (مثلاً گیف)، در صورت استفاده از DefaultAssetLoaderFactory ، یک فریم تصویر از ظرف نمایش داده میشود.
فرمت های خاص
Transformer از مدیریت ورودی در قالبهای رسانه جدیدتر پشتیبانی میکند که ویژگیهای خاصی را در مقایسه با فرمتهای معمولی ارائه میکند.
مدیریت ویدیوهای HDR
اکنون دستگاههای بیشتری از فیلمبرداری HDR پشتیبانی میکنند و رنگهای واضحتر، دقیقتر و محدوده روشنایی بیشتری را ارائه میدهند.
Transformer از ویرایش ویدیوهای HDR از Android 13 (سطح API 33) به بعد در دستگاه هایی با پشتیبانی از کدگذاری مورد نیاز پشتیبانی می کند. هنگام ویرایش ویدیوهای HDR، هر افکت ویدیویی GL باید از اجزای رنگی 16 بیتی شناور و فضای رنگی BT.2020 استفاده کند. HDR_MODE_KEEP_HDR حالت پیش فرض هنگام ساخت Composition است. اگر ویرایش HDR پشتیبانی نشود، ترانسفورماتور به استفاده از HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_OPEN_GL بازمی گردد.
تبدیل HDR به SDR، همچنین به عنوان نقشهبرداری صدا شناخته میشود، از Android 10 (سطح API 29) به بعد در دستگاههایی با رمزگشایی مورد نیاز و پشتیبانی OpenGL پشتیبانی میشود. این هنگام اشتراکگذاری رسانه HDR با سایر برنامهها یا سرویسهایی که از جذب محتوای HDR پشتیبانی نمیکنند، مفید است. برای فعال کردن نگاشت آهنگ با استفاده از OpenGL، هنگام ایجاد Composition ، با setHdrMode(HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_OPEN_GL) تماس بگیرید. از Android 12 (سطح API 31) به بعد، MediaCodec همچنین از نقشهبرداری صدا در برخی دستگاهها پشتیبانی میکند، از جمله همه دستگاههای دارای Android 13 یا بالاتر که میتوانند ویدیوهای HDR ضبط کنند. برای فعال کردن نگاشت آهنگ با استفاده از MediaCodec با setHdrMode(HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_MEDIACODEC) تماس بگیرید.
کار با رسانه های حرکت آهسته
ویدیوهای حرکت آهسته شامل ابرداده هایی هستند که سرعت پخش هر بخش از جریان را نشان می دهد. Flattening فرآیند تولید یک جریان ویدیویی جدید بر اساس ویدیوی اسلوموشن است، اما در آن بخش ها بر اساس ابرداده سرعت یا کاهش می یابند، به طوری که حتی در پخش کننده هایی که ابرداده حرکت آهسته را اعمال نمی کنند، به درستی پخش می شوند.
برای صاف کردن جریانهای آهسته، از روش سازنده setFlattenForSlowMotion در EditedMediaItem استفاده کنید.
این به شما امکان می دهد بدون نگرانی در مورد مدیریت این فرمت های خاص از فیلم های حرکت آهسته پشتیبانی کنید. تنها کاری که باید انجام دهید این است که به جای نسخه اصلی، نسخه صاف شده ویدیو را ذخیره و پخش کنید.
تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","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-29 بهوقت ساعت هماهنگ جهانی."],[],[],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."]]