للاطّلاع على مقدّمة عن تنسيقات الوسائط بشكل عام، يُرجى الانتقال إلى صفحةتنسيقات ExoPlayer المتوافقة. تنطبق القيود نفسها على تحميل البث واستخراجه وفك ترميزه باستخدام Transformer، على الرغم من أنّ Transformer لا يتيح استخدام وحدات فك الترميز البرمجية المجمّعة في ExoPlayer.
يعتمد Transformer أيضًا على MediaCodec للترميز، ما يحدّ من تنسيقات الإخراج المتوافقة. لمزيد من المعلومات عن قيود الترميز، يُرجى الاطّلاع على برامج ترميز الفيديو في MediaCodec.
تُخرِج Transformer تلقائيًا ملفات MP4 عادية باستخدام
InAppMp4Muxer. إذا كان تطبيقك يتطلّب ملفات MP4 مجزّأة، يمكنك تمرير
InAppFragmentedMp4Muxer.Factory عند
تهيئة مثيل Transformer. تتيح Media3 أيضًا تنسيقات أخرى
مثل WebM وAAC وOgg وWAV، باستخدام برامج دمج مخصّصة، مثل
WebmMuxer وAacMuxer وOggMuxer و
WavMuxer. يجب تضمين هذه التنسيقات في
Muxer.Factory مخصّص ليتم إدخالها، ولكن ستتضمّن الإصدارات المستقبلية
عمليات تنفيذ جاهزة للاستخدام في المصنع لتبسيط هذه العملية.
دعم الصور
يستخدم Transformer السمة BitmapFactory لتحميل جميع مواد عرض الصور وفك ترميزها، لذا يتيح Transformer جميع التنسيقات التي تتيحها BitmapFactory. لمعرفة أنواع الصور المتوافقة، يُرجى الاطّلاع على
دعم الصور. بالنسبة إلى التنسيقات المتعدّدة الصور (مثل صور GIF)، يتم عرض إطار صورة واحد من الحاوية إذا تم استخدام DefaultAssetLoaderFactory.
تنسيقات خاصة
يتيح Transformer معالجة الإدخال بتنسيقات الوسائط الأحدث التي توفّر ميزات خاصة مقارنةً بالتنسيقات التقليدية.
معالجة فيديوهات HDR
تتيح المزيد من الأجهزة تسجيل فيديوهات HDR ، ما يوفّر ألوانًا أكثر حيوية ودقة ونطاق سطوع أكبر.
يتيح Transformer تعديل فيديوهات HDR بدءًا من Android 13 (مستوى واجهة برمجة التطبيقات 33) على الأجهزة التي تتوافق مع الترميز المطلوب. عند تعديل فيديوهات 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
10 (مستوى واجهة برمجة التطبيقات 29) على الأجهزة التي تتوافق مع فك الترميز وOpenGL
المطلوبَين. يكون ذلك مفيدًا عند مشاركة وسائط HDR مع تطبيقات أو خدمات أخرى لا تتيح إدخال محتوى HDR. لتفعيل تحديد درجة اللون باستخدام OpenGL، يُرجى استدعاء setHdrMode(HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_OPEN_GL) عند إنشاء Composition. بدءًا من Android 12 (مستوى واجهة برمجة التطبيقات 31)، يتيح MediaCodec أيضًا ربط درجات الألوان على بعض الأجهزة، بما في ذلك جميع الأجهزة التي تعمل بالإصدار 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)
Java
EditedMediaItem editedMediaItem = new EditedMediaItem.Builder(inputMediaItem).setFlattenForSlowMotion(true).build(); Transformer transformer = new Transformer.Builder(context).addListener(transformerListener).build(); transformer.start(editedMediaItem, outputPath);
يتيح ذلك إمكانية تشغيل الفيديوهات التي تم تسجيلها باستخدام ميزة "التصوير البطيء" بدون الحاجة إلى معالجة هذه التنسيقات الخاصة. ما عليك سوى تخزين وتشغيل النسخة المسطّحة من الفيديو بدلاً من النسخة الأصلية.