التنسيقات المعتمدة

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

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

يستخدم Transformer تلقائيًا MediaMuxer، إلا أنّ InAppMuxer قيد التطوير متاح اختياريًا لتجنُّب فرض بعض القيود على MediaMuxer في ما يتعلّق ببُنى الإطارات المرجعية وتنسيقات النماذج المتوافقة. وسيكون أداة الاختيار التلقائية أداة الحظر داخل التطبيق في إصدار مستقبلي.

إتاحة الصور

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

أشكال خاصة

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

التعامل مع الفيديوهات ذات النطاق العالي الديناميكية

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

يتيح تطبيق Transformer تعديل الفيديوهات بالنطاق العالي الديناميكية بدءًا من Android 13 (المستوى 33 لواجهة برمجة التطبيقات) والإصدارات الأحدث على الأجهزة التي تتوافق مع الترميز المطلوب. عند تعديل فيديوهات بنطاق عالي الديناميكية، يجب أن تعالج أي تأثيرات فيديو في GL عناصر لون النقطة العائمة 16 بت ومساحة اللون BT.2020. يكون الوضع التلقائي هو HDR_MODE_KEEP_HDR عند إنشاء Composition. وفي حال عدم توفّر إمكانية تعديل النطاق العالي الديناميكية، يبدأ المحوِّل باستخدام السمة HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_OPEN_GL.

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

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