Media3 Transformer قيد التطوير بشكل نشط ونتطلّع إلى سماع رأيك. نرحب بملاحظاتك وطلبات الميزات وتقارير الأخطاء في
أداة تتبُّع المشاكل. يُرجى متابعة
مدونة ExoPlayer لمعرفة آخر المعلومات.
التخصيص
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
للتحكّم في سلوك المحوِّل، يمكنك ضبط الخيارات في مساحة عرض واجهة برمجة التطبيقات.
أو استبدال أجزاء من الوظائف كليًا من خلال كتابة عمليات تنفيذ مخصّصة
من الواجهات وتمريرها. تعرض هذه الصفحة بعض الأمثلة.
التحكّم في إعدادات برنامج الترميز
بشكل افتراضي، سيعود المحوِّل إلى درجة دقة مدعومة إذا كانت
برنامج الترميز الموجود بالجهاز لا يقبل درجة الإخراج المطلوبة. بالنسبة
على سبيل المثال، يمكن للمحول محاذاة عرض الإخراج وارتفاعه ليكون مضاعفًا في 2
أو 16 كما تتطلب برامج الترميز بالأجهزة غالبًا. يمكنك إيقاف هذا السلوك.
بحيث يعرض المحول وبدلاً من ذلك خطأ إذا لم يستطع تقديم
دقة الإخراج:
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
لإدخاله في المحول.
إنّ محتوى هذه الصفحة مرخّص بموجب ترخيص Creative Commons Attribution 4.0 ما لم يُنصّ على خلاف ذلك، ونماذج الرموز مرخّصة بموجب ترخيص Apache 2.0. للاطّلاع على التفاصيل، يُرجى مراجعة سياسات موقع Google Developers. إنّ Java هي علامة تجارية مسجَّلة لشركة Oracle و/أو شركائها التابعين.
تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["# Customization\n\nTo control Transformer's behavior, you can configure options in the API surface\nor replace pieces of functionality completely by writing custom implementations\nof interfaces and passing those in. This page describes some examples.\n\nControl codec configuration\n---------------------------\n\nBy default, Transformer will fall back to a supported resolution if the\ndevice's hardware encoder doesn't accept the requested output resolution. For\nexample, Transformer can align the output width and height to be a multiple of 2\nor 16 as is often required by hardware encoders. You can turn off this behavior\nso that Transformer instead throws an error if it can't produce the required\noutput resolution: \n\n### Kotlin\n\n```kotlin\ntransformerBuilder\n .setEncoderFactory(\n DefaultEncoderFactory.Builder(context)\n .setEnableFallback(false)\n .build())\n```\n\n### Java\n\n```java\ntransformerBuilder\n .setEncoderFactory(\n new DefaultEncoderFactory.Builder(context)\n .setEnableFallback(false)\n .build());\n```\n\n\u003cbr /\u003e\n\nSimilarly, the `DefaultEncoderFactory` also supports using custom encoding\nsettings with the `setRequestedVideoEncoderSettings` option.\n\nYou can also completely replace the factories for encoders and decoders to get\nfull control over how the codecs are set up.\n\nCustom muxers\n-------------\n\nYou can set a custom muxer for writing media containers by calling\n`Transformer.setMuxerFactory`. For example, if you implement your own muxer at\nthe application level, you can write a wrapper that implements the `Muxer`\ninterface and then use `setMuxerFactory` to inject it into Transformer."]]