Transformer-এর আচরণ নিয়ন্ত্রণ করতে, আপনি API সারফেসে অপশন কনফিগার করতে পারেন অথবা ইন্টারফেসের কাস্টম ইমপ্লিমেন্টেশন লিখে এবং সেগুলো পাস করার মাধ্যমে কার্যকারিতার অংশবিশেষ সম্পূর্ণরূপে প্রতিস্থাপন করতে পারেন। এই পৃষ্ঠায় কিছু উদাহরণ বর্ণনা করা হয়েছে।
কোডেক কনফিগারেশন নিয়ন্ত্রণ করুন
ডিফল্টরূপে, যদি ডিভাইসের হার্ডওয়্যার এনকোডার অনুরোধ করা আউটপুট রেজোলিউশনটি গ্রহণ না করে, তাহলে Transformer একটি সমর্থিত রেজোলিউশনে ফিরে যাবে। উদাহরণস্বরূপ, Transformer আউটপুটের প্রস্থ এবং উচ্চতাকে ২ বা ১৬-এর গুণিতক হিসেবে অ্যালাইন করতে পারে, যা প্রায়শই হার্ডওয়্যার এনকোডারগুলোর জন্য প্রয়োজন হয়। আপনি এই আচরণটি বন্ধ করতে পারেন, যাতে Transformer প্রয়োজনীয় আউটপুট রেজোলিউশন তৈরি করতে না পারলে একটি এরর (error) দেখায়।
কোটলিন
transformerBuilder.setEncoderFactory( DefaultEncoderFactory.Builder(context).setEnableFallback(false).build() )
জাভা
transformerBuilder.setEncoderFactory( new DefaultEncoderFactory.Builder(context).setEnableFallback(false).build());
একইভাবে, DefaultEncoderFactory ও setRequestedVideoEncoderSettings অপশনটির মাধ্যমে কাস্টম এনকোডিং সেটিংস ব্যবহার করা সমর্থন করে।
কোডেকগুলো কীভাবে সেট আপ করা হবে তার উপর সম্পূর্ণ নিয়ন্ত্রণ পেতে আপনি এনকোডার এবং ডিকোডারের ফ্যাক্টরিগুলোও পুরোপুরি প্রতিস্থাপন করতে পারেন।
কাস্টম মাক্সার
Transformer.setMuxerFactory কল করে আপনি মিডিয়া কন্টেইনার লেখার জন্য একটি কাস্টম মাক্সার সেট করতে পারেন। উদাহরণস্বরূপ, যদি আপনি অ্যাপ্লিকেশন লেভেলে আপনার নিজস্ব মাক্সার ইমপ্লিমেন্ট করেন, তাহলে আপনি Muxer ইন্টারফেস ইমপ্লিমেন্ট করে একটি র্যাপার লিখতে পারেন এবং তারপরে এটিকে Transformer-এ ইনজেক্ট করার জন্য setMuxerFactory ব্যবহার করতে পারেন।
আপনার কাস্টম মাক্সার যদি MP4 এডিট লিস্টে নেগেটিভ টাইমস্ট্যাম্প লেখা সমর্থন করে, তবে আপনাকে নিশ্চিত করতে হবে যে Muxer.Factory#supportsWritingNegativeTimestampsInEditList true রিটার্ন করে। এটি Transformer-কে ভিডিওটি পুনরায় এনকোড না করেই MP4 এডিট লিস্ট ব্যবহার করে অপটিমাইজেশন, যেমন শুধু ট্রিম করার মতো সম্পাদনা, সম্পাদন করতে সক্ষম করে। ডিফল্ট InAppMp4Muxer ক্ষেত্রে, এটি ইতিমধ্যেই সমর্থিত।