برای آشنایی با فرمتهای رسانهای به طور کلی، به صفحه فرمتهای پشتیبانی شده توسط ExoPlayer مراجعه کنید. محدودیتهای مشابه در بارگیری، استخراج و رمزگشایی جریانها در Transformer نیز اعمال میشود، اگرچه Transformer از ماژولهای رمزگشای نرمافزاری همراه ExoPlayer پشتیبانی نمیکند.
ترنسفورمر همچنین برای رمزگذاری به MediaCodec متکی است و نیاز به مالتیپلکس یا mux کردن فایلهای رسانهای خروجی دارد که فرمتهای خروجی پشتیبانیشده را محدود میکند. برای اطلاعات بیشتر در مورد محدودیتهای رمزگذاری، به کدکهای ویدیویی MediaCodec و برای محدودیتهایی که در مورد ظرف رسانه خروجی اعمال میشود، به MediaMuxer مراجعه کنید. ترنسفورمر فقط فایلهای MP4 را خروجی میدهد.
به طور پیشفرض، Transformer از MediaMuxer استفاده میکند، اما یک InAppMuxer در حال توسعه به صورت اختیاری در دسترس است تا از برخی محدودیتهای MediaMuxer در مورد ساختارهای فریم مرجع و فرمتهای نمونه پشتیبانی شده جلوگیری شود. muxer پیشفرض در نسخههای آینده به muxer درون برنامه تبدیل خواهد شد.
پشتیبانی از تصویر
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);
این به شما امکان میدهد بدون نگرانی در مورد مدیریت این فرمتهای خاص، از ویدیوهای اسلوموشن پشتیبانی کنید. تنها کاری که باید انجام دهید این است که نسخه مسطحشده ویدیو را به جای نسخه اصلی ذخیره و پخش کنید.