برای آشنایی با فرمتهای رسانهای به طور کلی، به صفحه فرمتهای پشتیبانی شده توسط ExoPlayer مراجعه کنید. محدودیتهای مشابه در بارگیری، استخراج و رمزگشایی جریانها در Transformer نیز اعمال میشود، اگرچه Transformer از ماژولهای رمزگشای نرمافزاری همراه ExoPlayer پشتیبانی نمیکند.
ترنسفورمر همچنین برای کدگذاری به MediaCodec متکی است که فرمتهای خروجی پشتیبانیشده را محدود میکند. برای اطلاعات بیشتر در مورد محدودیتهای کدگذاری ، به کدکهای ویدیویی MediaCodec مراجعه کنید.
به طور پیشفرض، Transformer فایلهای MP4 استاندارد را با استفاده از InAppMp4Muxer خروجی میدهد. اگر برنامه شما به MP4 تکهتکه نیاز دارد، میتوانید هنگام مقداردهی اولیه نمونه Transformer خود، یک InAppFragmentedMp4Muxer.Factory ارسال کنید. Media3 همچنین از فرمتهای دیگری مانند WebM، AAC، Ogg با استفاده از muxerهای اختصاصی مانند WebmMuxer ، AacMuxer و OggMuxer پشتیبانی میکند. این فرمتها باید برای تزریق در یک Muxer.Factory سفارشی قرار گیرند، اما نسخههای آینده شامل پیادهسازیهای آماده برای استفاده از factory برای سادهسازی این فرآیند خواهند بود.
پشتیبانی از تصویر
Transformer BitmapFactory برای بارگذاری و رمزگشایی تمام فایلهای تصویری استفاده میکند، بنابراین Transformer از تمام فرمتهای BitmapFactory پشتیبانی میکند. برای انواع تصاویر پشتیبانیشده، به پشتیبانی از تصویر مراجعه کنید. برای فرمتهای چندتصویری (مثلاً gif)، در صورت استفاده از DefaultAssetLoaderFactory ، یک فریم تصویر از کانتینر نمایش داده میشود.
قالبهای ویژه
ترنسفورمر از مدیریت ورودی در قالبهای رسانهای جدیدتر پشتیبانی میکند که در مقایسه با قالبهای مرسوم، ویژگیهای ویژهای ارائه میدهند.
مدیریت ویدیوهای HDR
دستگاههای بیشتر و بیشتری از ضبط ویدیوی HDR پشتیبانی میکنند که رنگهای واضحتر و دقیقتر و محدوده روشنایی بیشتری را ارائه میدهد.
ترنسفورمر از ویرایش ویدیوهای HDR از اندروید ۱۳ (سطح API ۳۳) به بعد در دستگاههایی که از کدگذاری مورد نیاز پشتیبانی میکنند، پشتیبانی میکند. هنگام ویرایش ویدیوهای HDR، هرگونه جلوه ویدیویی GL باید اجزای رنگ ممیز شناور ۱۶ بیتی و فضای رنگی BT.2020 را مدیریت کند. HDR_MODE_KEEP_HDR حالت پیشفرض هنگام ساخت Composition است. اگر ویرایش HDR پشتیبانی نشود، ترنسفورمر به استفاده از HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_OPEN_GL روی میآورد.
تبدیل HDR به SDR، که با نام نگاشت تُن (tone-mapping ) نیز شناخته میشود، از اندروید ۱۰ (API سطح ۲۹) به بعد در دستگاههایی با رمزگشایی مورد نیاز و پشتیبانی از OpenGL پشتیبانی میشود. این قابلیت هنگام اشتراکگذاری رسانههای HDR با سایر برنامهها یا سرویسهایی که از دریافت محتوای HDR پشتیبانی نمیکنند، مفید است. برای فعال کردن نگاشت تُن با استفاده از OpenGL، هنگام ایجاد Composition ، setHdrMode(HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_OPEN_GL) فراخوانی کنید. از اندروید ۱۲ (API سطح ۳۱) به بعد، MediaCodec همچنین از نگاشت تُن در برخی دستگاهها، از جمله تمام دستگاههایی که اندروید ۱۳ یا بالاتر دارند و میتوانند ویدیوی HDR ضبط کنند، پشتیبانی میکند. برای فعال کردن نگاشت تُن با استفاده از MediaCodec setHdrMode(HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_MEDIACODEC) را فراخوانی کنید.
مدیریت رسانههای حرکت آهسته
ویدیوهای اسلوموشن شامل فرادادههایی هستند که سرعت پخش هر بخش از استریم را نشان میدهند. مسطحسازی فرآیند تولید یک استریم ویدیویی جدید بر اساس ویدیوی اسلوموشن است، اما در آن بخشها بر اساس فرادادهها سرعتشان افزایش یا کاهش مییابد، به طوری که حتی در پخشکنندههایی که فرادادههای اسلوموشن را اعمال نمیکنند، به درستی پخش شوند.
برای مسطح کردن جریانهای اسلوموشن، از متد سازندهی setFlattenForSlowMotion در EditedMediaItem استفاده کنید.
کاتلین
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);
این به شما امکان میدهد بدون نگرانی در مورد مدیریت این فرمتهای خاص، از ویدیوهای اسلوموشن پشتیبانی کنید. تنها کاری که باید انجام دهید این است که نسخه مسطحشده ویدیو را به جای نسخه اصلی ذخیره و پخش کنید.