التنسيقات المتوافقة

يمكنك الاطّلاع على صفحة التنسيقات المتوافقة مع ExoPlayer للحصول على مقدّمة حول تنسيقات الوسائط بشكل عام. تنطبق القيود نفسها على تحميل واستخراج وفك ترميز البيانات مع Transformer، مع العلم أنّ Transformer لا يتوافق مع وحدات فك الترميز المضمّنة في ExoPlayer.

يعتمد Transformer أيضًا على MediaCodec في الترميز، ما يحدّ من تنسيقات الإخراج المتوافقة. يمكنك الاطّلاع على برامج ترميز الفيديو في MediaCodec للحصول على مزيد من المعلومات حول قيود الترميز.

تنتج Transformer تلقائيًا ملفات MP4 عادية باستخدام InAppMp4Muxer. إذا كان تطبيقك يتطلّب تنسيق MP4 مجزّأ، يمكنك تمرير InAppFragmentedMp4Muxer.Factory عند تهيئة مثيل Transformer. تتوافق Media3 أيضًا مع تنسيقات أخرى، مثل WebM والترميز المتقدّم للصوت وOgg، باستخدام أدوات دمج مخصّصة، مثل WebmMuxer وAacMuxer وOggMuxer. يجب أن تكون هذه العناصر مضمّنة في Muxer.Factory مخصّص ليتم إدخالها، ولكن ستتضمّن الإصدارات المستقبلية عمليات تنفيذ جاهزة للاستخدام لتسهيل هذه العملية.

إتاحة استخدام الصور

يستخدم Transformer BitmapFactory لتحميل جميع مواد عرض الصور وفك ترميزها، وبالتالي، يتوافق Transformer مع جميع التنسيقات التي يتوافق معها BitmapFactory. راجِع مقالة توافق الصور للتعرّف على أنواع الصور المتوافقة. بالنسبة إلى تنسيقات الصور المتعددة (مثل صور GIF)، يتم عرض إطار صورة واحد من الحاوية إذا تم استخدام DefaultAssetLoaderFactory.

تنسيقات خاصة

تتيح أداة Transformer معالجة الإدخال بتنسيقات وسائط أحدث توفّر ميزات خاصة مقارنةً بالتنسيقات التقليدية.

التعامل مع فيديوهات HDR

تتوافق المزيد من الأجهزة مع تسجيل الفيديو بدقة HDR، ما يتيح عرض ألوان أكثر حيوية ودقة ونطاق سطوع أكبر.

يتيح تطبيق Transformer تعديل فيديوهات النطاق عالي الديناميكية على أجهزة 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.

تتوفّر ميزة تحويل النطاق العالي الديناميكية إلى النطاق العادي الديناميكية، المعروفة أيضًا باسم ربط درجات الألوان، على الأجهزة التي تعمل بالإصدار 10 من نظام التشغيل Android (مستوى واجهة برمجة التطبيقات 29) والإصدارات الأحدث والتي تتوافق مع متطلبات فك الترميز وOpenGL. يكون ذلك مفيدًا عند مشاركة وسائط HDR مع تطبيقات أو خدمات أخرى لا تتيح استيعاب محتوى HDR. لتفعيل عملية ربط الدرجات اللونية باستخدام طلب OpenGL setHdrMode(HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_OPEN_GL) عند إنشاء Composition. بدءًا من الإصدار 12 من نظام التشغيل Android (مستوى واجهة برمجة التطبيقات 31)، تتيح MediaCodec أيضًا إمكانية ربط درجات الألوان على بعض الأجهزة، بما في ذلك جميع الأجهزة التي تعمل بالإصدار 13 من نظام التشغيل Android أو الإصدارات الأحدث التي يمكنها تسجيل فيديو بنطاق عالي الديناميكية. لتفعيل ميزة "مطابقة الألوان" باستخدام 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);

يتيح لك ذلك عرض فيديوهات بالحركة البطيئة بدون الحاجة إلى القلق بشأن التعامل مع هذه التنسيقات الخاصة. كل ما عليك فعله هو تخزين وتشغيل النسخة المسطّحة من الفيديو بدلاً من النسخة الأصلية.