للتحكّم في سلوك أداة Transformer، يمكنك ضبط الخيارات في واجهة برمجة التطبيقات أو استبدال أجزاء من الوظائف بالكامل من خلال كتابة عمليات تنفيذ مخصّصة للواجهات وتمريرها. توضّح هذه الصفحة بعض الأمثلة.
التحكّم في إعدادات برنامج الترميز
تلقائيًا، ستلجأ أداة Transformer إلى دقة عرض متوافقة إذا لم يقبل برنامج الترميز للأجهزة دقة العرض المطلوبة. على سبيل المثال، يمكن لأداة Transformer ضبط عرض الإخراج وارتفاعه ليكون مضاعفًا للعدد 2 أو 16، كما هو مطلوب غالبًا من برامج الترميز للأجهزة. يمكنك إيقاف هذا السلوك لكي تعرض أداة Transformer خطأً بدلاً من ذلك إذا تعذّر عليها إنتاج دقة العرض المطلوبة:
Kotlin
transformerBuilder.setEncoderFactory( DefaultEncoderFactory.Builder(context).setEnableFallback(false).build() )
Java
transformerBuilder.setEncoderFactory( new DefaultEncoderFactory.Builder(context).setEnableFallback(false).build());
وبالمثل، تتيح السمة DefaultEncoderFactory أيضًا استخدام إعدادات ترميز مخصّصة مع الخيار setRequestedVideoEncoderSettings.
يمكنك أيضًا استبدال المصانع الخاصة ببرامج الترميز وبرامج فك الترميز بالكامل للتحكّم بشكل كامل في كيفية إعداد برامج الترميز.
برامج دمج مخصّصة
يمكنك ضبط برنامج دمج مخصّص لكتابة حاويات الوسائط من خلال استدعاء Transformer.setMuxerFactory. على سبيل المثال، إذا نفّذت برنامج دمج خاصًا بك على
مستوى التطبيق، يمكنك كتابة برنامج تضمين ينفّذ واجهة Muxer
ثم استخدام setMuxerFactory لإضافته إلى أداة Transformer.
إذا كان برنامج الدمج المخصّص يتيح كتابة الطوابع الزمنية السلبية في قوائم التعديل بتنسيق MP4، عليك التأكّد من أنّ
Muxer.Factory#supportsWritingNegativeTimestampsInEditList يعرض القيمة
true. يتيح ذلك لأداة Transformer إجراء عمليات تحسين، مثل عمليات التعديل التي تقتصر على القص باستخدام قوائم التعديل بتنسيق MP4، بدون الحاجة إلى إعادة ترميز الفيديو. بالنسبة إلى InAppMp4Muxer التلقائي، تتوفّر هذه الميزة حاليًا.