সমর্থিত ফরম্যাট

সাধারণভাবে মিডিয়া ফর্ম্যাটের ভূমিকার জন্য ExoPlayer সমর্থিত ফর্ম্যাট পৃষ্ঠাটি দেখুন। স্ট্রিম লোড করা, এক্সট্র্যাক্ট করা এবং ডিকোড করার ক্ষেত্রে একই সীমাবদ্ধতা ট্রান্সফরমারের ক্ষেত্রে প্রযোজ্য, যদিও ট্রান্সফরমার ExoPlayer এর বান্ডেল করা সফ্টওয়্যার ডিকোডার মডিউলগুলিকে সমর্থন করে না।

ট্রান্সফরমার এনকোডিংয়ের জন্য MediaCodec উপরও নির্ভর করে এবং মিডিয়া ফাইলগুলিকে মাল্টিপ্লেক্স বা mux আউটপুট করতে হয়, যা সমর্থিত আউটপুট ফর্ম্যাটগুলিকে সীমাবদ্ধ করে। এনকোডিং সীমাবদ্ধতা সম্পর্কে আরও তথ্যের জন্য MediaCodec ভিডিও কোডেক এবং আউটপুট মিডিয়া কন্টেইনারে প্রযোজ্য সীমাবদ্ধতা সম্পর্কে MediaMuxer দেখুন। ট্রান্সফরমার শুধুমাত্র MP4 ফাইল আউটপুট করে।

ডিফল্টরূপে, Transformer MediaMuxer ব্যবহার করে, কিন্তু রেফারেন্স ফ্রেম স্ট্রাকচার এবং সমর্থিত নমুনা ফর্ম্যাটের ক্ষেত্রে MediaMuxer এর কিছু সীমাবদ্ধতা এড়াতে ঐচ্ছিকভাবে একটি কাজ-অগ্রগতিশীল InAppMuxer উপলব্ধ। ভবিষ্যতের রিলিজে ডিফল্ট muxer ইন-অ্যাপ muxer হয়ে যাবে।

চিত্র সমর্থন

ট্রান্সফরমার সমস্ত ইমেজ অ্যাসেট লোড এবং ডিকোড করার জন্য BitmapFactory ব্যবহার করে, তাই ট্রান্সফরমার BitmapFactory এর সকল ফরম্যাট সমর্থন করে। সমর্থিত ইমেজ টাইপের জন্য ইমেজ সাপোর্ট দেখুন। মাল্টি-পিকচার ফরম্যাটের জন্য (যেমন gif), DefaultAssetLoaderFactory ব্যবহার করা হলে কন্টেইনার থেকে একটি একক ইমেজ ফ্রেম প্রদর্শিত হয়।

বিশেষ ফর্ম্যাট

ট্রান্সফরমার নতুন মিডিয়া ফর্ম্যাটে ইনপুট পরিচালনা সমর্থন করে যা প্রচলিত ফর্ম্যাটের তুলনায় বিশেষ বৈশিষ্ট্য প্রদান করে।

HDR ভিডিও পরিচালনা করা

এখন আরও বেশি সংখ্যক ডিভাইস HDR ভিডিও ক্যাপচার সমর্থন করে, যা আরও প্রাণবন্ত, নির্ভুল রঙ এবং আরও বেশি উজ্জ্বলতার পরিসর প্রদান করে।

ট্রান্সফরমার প্রয়োজনীয় এনকোডিং সাপোর্ট সহ ডিভাইসগুলিতে Android 13 (API লেভেল 33) থেকে HDR ভিডিও সম্পাদনা সমর্থন করে। HDR ভিডিও সম্পাদনা করার সময়, যেকোনো GL ভিডিও ইফেক্টকে 16-বিট ফ্লোটিং পয়েন্ট কালার কম্পোনেন্ট এবং BT.2020 কালার স্পেস পরিচালনা করতে হবে। Composition তৈরি করার সময় HDR_MODE_KEEP_HDR হল ডিফল্ট মোড। যদি HDR এডিটিং সমর্থিত না হয়, তাহলে ট্রান্সফরমার HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_OPEN_GL ব্যবহার করতে শুরু করে।

HDR-কে SDR-তে রূপান্তর করা, যা টোন-ম্যাপিং নামেও পরিচিত, প্রয়োজনীয় ডিকোডিং এবং OpenGL সমর্থন সহ ডিভাইসগুলিতে Android 10 (API লেভেল 29) থেকে সমর্থিত। HDR কন্টেন্ট ইনজেশন সমর্থন করে না এমন অন্যান্য অ্যাপ বা পরিষেবাগুলিতে HDR মিডিয়া শেয়ার করার সময় এটি কার্যকর। Composition তৈরি করার সময় OpenGL কল setHdrMode(HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_OPEN_GL) ব্যবহার করে টোন-ম্যাপিং সক্ষম করতে। Android 12 (API লেভেল 31) থেকে, MediaCodec কিছু ডিভাইসে টোন-ম্যাপিং সমর্থন করে, যার মধ্যে Android 13 বা তার বেশি চলমান সমস্ত ডিভাইস রয়েছে যা HDR ভিডিও ক্যাপচার করতে পারে। MediaCodec ব্যবহার করে টোন-ম্যাপিং সক্ষম করতে setHdrMode(HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_MEDIACODEC) কল করুন।

স্লো মোশন মিডিয়া পরিচালনা করা

স্লো-মোশন ভিডিওগুলিতে মেটাডেটা থাকে যা স্ট্রিমের প্রতিটি অংশ কত গতিতে চালানো উচিত তা নির্দেশ করে। ফ্ল্যাটেনিং হল স্লো-মোশন ভিডিওর উপর ভিত্তি করে একটি নতুন ভিডিও স্ট্রিম তৈরির প্রক্রিয়া, কিন্তু যেখানে মেটাডেটার উপর ভিত্তি করে বিভাগগুলির গতি বাড়ানো বা ধীর করা হয়, যাতে স্লো-মোশন মেটাডেটা প্রয়োগ না করা প্লেয়ারগুলিতেও সেগুলি সঠিকভাবে চালানো যায়।

স্লো-মোশন স্ট্রিমগুলিকে সমতল করতে, EditedMediaItemsetFlattenForSlowMotion বিল্ডার পদ্ধতি ব্যবহার করুন।

কোটলিন

val editedMediaItem =
    EditedMediaItem.Builder(inputMediaItem).setFlattenForSlowMotion(true).build()
val transformer =
    Transformer.Builder(context).addListener(transformerListener).build()
transformer.start(editedMediaItem, outputPath)

জাভা

EditedMediaItem editedMediaItem =
    new EditedMediaItem.Builder(inputMediaItem).setFlattenForSlowMotion(true).build();
Transformer transformer =
    new Transformer.Builder(context).addListener(transformerListener).build();
transformer.start(editedMediaItem, outputPath);

এর ফলে আপনি এই বিশেষ ফর্ম্যাটগুলি পরিচালনা করার চিন্তা না করেই স্লো-মোশন ভিডিওগুলি সমর্থন করতে পারবেন। আপনাকে যা করতে হবে তা হল আসলটির পরিবর্তে ভিডিওটির সমতল সংস্করণটি সংরক্ষণ এবং চালাতে হবে।