برای کنترل رفتار Transformer، میتوانید گزینهها را در سطح API پیکربندی کنید یا با نوشتن پیادهسازیهای سفارشی از میانهها و انتقال آنها، بخشهایی از عملکرد را بهطور کامل جایگزین کنید. این صفحه چند نمونه را شرح میدهد.
کنترل پیکربندی کدک
بهطور پیشفرض، اگر کدبند سختافزاری دستگاه، وضوح خروجی درخواستی را نپذیرد، Transformer به وضوح پشتیبانیشده برمیگردد. برای مثال، «ترانسفورماتور» میتواند عرض و ارتفاع برونداد را بهگونهای تراز کند که مضربی از ۲ یا ۱۶ باشد، همانطور که اغلب توسط کدبندهای سختافزاری موردنیاز است. میتوانید این رفتار را خاموش کنید تا اگر «ترانسفورماتور» نتواند وضوح برونداد موردنیاز را تولید کند، بهجای آن خطا ایجاد کند:
کاتلین
transformerBuilder.setEncoderFactory( DefaultEncoderFactory.Builder(context).setEnableFallback(false).build() )
جاوا
transformerBuilder.setEncoderFactory( new DefaultEncoderFactory.Builder(context).setEnableFallback(false).build());
بههمین ترتیب، DefaultEncoderFactory نیز از استفاده از تنظیمات کدبندی سفارشی با گزینه setRequestedVideoEncoderSettings پشتیبانی میکند.
همچنین میتوانید کارخانههای کدبندها و کدگشاها را بهطور کامل جایگزین کنید تا کنترل کامل بر نحوه تنظیم کدکها داشته باشید.
میکسکنندههای سفارشی
میتوانید با فراخوانی
Transformer.Builder.setMuxerFactory، یک ترکیبکننده سفارشی برای نوشتن محتویات رسانه تنظیم کنید. برای مثال، اگر در سطح برنامه از
میکسکننده خودتان استفاده میکنید، میتوانید یک بستهبندی بنویسید که رابط
Muxer را پیادهسازی کند و سپس از setMuxerFactory برای تزریق آن به
Transformer.Builder استفاده کنید.
اگر ترکیبکننده سفارشی شما از نوشتن مُهرهای زمان منفی در فهرستهای ویرایش MP4 پشتیبانی میکند، باید مطمئن شوید که
Muxer.Factory#supportsWritingNegativeTimestampsInEditList
true را برمیگرداند. این کار به «ترانسفورمر» امکان میدهد بهینهسازیهایی مانند ویرایشهای فقط برش بااستفاده از فهرستهای ویرایش MP4 را بدون نیاز به کدبندی مجدد ویدیو انجام دهد. برای
InAppMp4Muxer پیشفرض، این ویژگی ازقبل پشتیبانی میشود.