সাধারণভাবে মিডিয়া ফরম্যাট সম্পর্কে জানতে ExoPlayer-এর সমর্থিত ফরম্যাট পৃষ্ঠাটি দেখুন। স্ট্রিম লোড, এক্সট্র্যাক্ট এবং ডিকোড করার ক্ষেত্রে একই সীমাবদ্ধতা Transformer-এর ক্ষেত্রেও প্রযোজ্য, যদিও Transformer, ExoPlayer-এর বান্ডেল করা সফটওয়্যার ডিকোডার মডিউলগুলোকে সমর্থন করে না।
এনকোডিংয়ের জন্য Transformer-ও MediaCodec উপর নির্ভর করে, যা সমর্থিত আউটপুট ফরম্যাটগুলোকে সীমিত করে। এনকোডিংয়ের সীমাবদ্ধতা সম্পর্কে আরও তথ্যের জন্য MediaCodec ভিডিও কোডেকগুলো দেখুন।
ডিফল্টরূপে, Transformer , InAppMp4Muxer ব্যবহার করে স্ট্যান্ডার্ড MP4 ফাইল আউটপুট করে। যদি আপনার অ্যাপের ফ্র্যাগমেন্টেড MP4 ফাইলের প্রয়োজন হয়, তবে আপনার Transformer ইনস্ট্যান্স ইনিশিয়ালাইজ করার সময় আপনি একটি InAppFragmentedMp4Muxer.Factory পাস করতে পারেন। Media3 এছাড়াও WebmMuxer , AacMuxer , OggMuxer , এবং WavMuxer এর মতো ডেডিকেটেড মাক্সার ব্যবহার করে WebM, AAC, Ogg, এবং WAV-এর মতো অন্যান্য ফরম্যাট সাপোর্ট করে। ইনজেক্ট করার জন্য এগুলিকে একটি কাস্টম Muxer.Factory এর মধ্যে র্যাপ করতে হবে, কিন্তু ভবিষ্যতের রিলিজগুলিতে এই প্রক্রিয়াটিকে সহজ করার জন্য রেডি-টু-ইউজ ফ্যাক্টরি ইমপ্লিমেন্টেশন অন্তর্ভুক্ত করা হবে।
ইমেজ সাপোর্ট
Transformer সমস্ত ইমেজ অ্যাসেট লোড এবং ডিকোড করার জন্য BitmapFactory ব্যবহার করে, তাই Transformer সেই সমস্ত ফরম্যাটই সাপোর্ট করে যা BitmapFactory করে। সমর্থিত ইমেজের প্রকার জানতে ইমেজ সাপোর্ট দেখুন। একাধিক ছবিযুক্ত ফরম্যাটের (যেমন gif) ক্ষেত্রে, DefaultAssetLoaderFactory ব্যবহার করা হলে কন্টেইনার থেকে একটিমাত্র ইমেজ ফ্রেম প্রদর্শিত হয়।
বিশেষ ফর্ম্যাট
ট্রান্সফর্মার এমন নতুন মিডিয়া ফরম্যাটের ইনপুট গ্রহণ করতে পারে, যেগুলো প্রচলিত ফরম্যাটের তুলনায় বিশেষ বৈশিষ্ট্য প্রদান করে।
HDR ভিডিও পরিচালনা করা
আরও বেশি সংখ্যক ডিভাইস HDR ভিডিও ক্যাপচার সমর্থন করছে, যা আরও প্রাণবন্ত ও নির্ভুল রঙ এবং বৃহত্তর উজ্জ্বলতার পরিসর প্রদান করে।
Transformer, Android 13 (API লেভেল 33) এবং তার পরবর্তী সংস্করণ থেকে প্রয়োজনীয় এনকোডিং সাপোর্টযুক্ত ডিভাইসগুলিতে HDR ভিডিও সম্পাদনা করতে পারে। HDR ভিডিও সম্পাদনা করার সময়, যেকোনো GL ভিডিও ইফেক্টকে অবশ্যই 16-বিট ফ্লোটিং পয়েন্ট কালার কম্পোনেন্ট এবং BT.2020 কালার স্পেস হ্যান্ডেল করতে হবে। Composition তৈরি করার সময় HDR_MODE_KEEP_HDR হলো ডিফল্ট মোড। যদি HDR সম্পাদনা সমর্থিত না হয়, তাহলে Transformer স্বয়ংক্রিয়ভাবে HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_OPEN_GL মোডটি ব্যবহার করে।
HDR-কে SDR-এ রূপান্তর করা, যা টোন-ম্যাপিং নামেও পরিচিত, প্রয়োজনীয় ডিকোডিং এবং OpenGL সাপোর্টযুক্ত ডিভাইসগুলিতে Android 10 (API লেভেল 29) থেকে সমর্থিত। এটি তখন কাজে আসে যখন এমন অ্যাপ বা পরিষেবাগুলিতে HDR মিডিয়া শেয়ার করা হয়, যেগুলি HDR কন্টেন্ট গ্রহণ করতে পারে না। OpenGL ব্যবহার করে টোন-ম্যাপিং চালু করতে, Composition তৈরি করার সময় 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) কল করুন।
ট্রান্সফরমার নিম্নলিখিত উন্নত ট্রান্সকোডিং পরিস্থিতিগুলোও সমর্থন করে:
- আল্ট্রা HDR থেকে HDR ভিডিও: আপনি আল্ট্রা HDR ইমেজ ইনপুটকে HDR ভিডিওতে রূপান্তর করতে পারেন, যা ছবির ডাইনামিক রেঞ্জ এবং ওয়াইড কালার গ্যামাট অক্ষুণ্ণ রাখে, ফলে মিক্সড টাইমলাইনে স্থির ছবিগুলো HDR ভিডিওর সর্বোচ্চ উজ্জ্বলতা এবং প্রাণবন্ততার সাথে মিলে যায়।
- ডলবি ভিশন ট্রান্সকোডিং এবং ট্রান্সমাক্সিং: ট্রান্সফর্মার ডলবি ভিশন (প্রোফাইল ৮) মিডিয়া থেকে রি-এনকোডিং ছাড়াই ব্যাকওয়ার্ড-কম্প্যাটিবল বেস লেয়ার (যেমন HEVC) ট্রান্সমাক্স করতে, অথবা টোন-ম্যাপিং সহ এটিকে স্ট্যান্ডার্ড SDR ফরম্যাটে ট্রান্সকোড করতে সমর্থন করে।
স্লো মোশন মিডিয়া পরিচালনা করা
স্লো-মোশন ভিডিওতে মেটাডেটা থাকে, যা নির্দেশ করে যে স্ট্রিমের প্রতিটি অংশ কোন গতিতে প্লে করা হবে। ফ্ল্যাটেনিং হলো স্লো-মোশন ভিডিওর উপর ভিত্তি করে একটি নতুন ভিডিও স্ট্রিম তৈরি করার প্রক্রিয়া, যেখানে মেটাডেটার উপর নির্ভর করে অংশগুলোর গতি বাড়ানো বা কমানো হয়, যাতে সেগুলো এমন প্লেয়ারেও সঠিকভাবে প্লে হয় যেগুলো স্লো-মোশন মেটাডেটা প্রয়োগ করে না।
স্লো-মোশন স্ট্রিমকে ফ্ল্যাট করতে, EditedMediaItem এর setFlattenForSlowMotion বিল্ডার মেথডটি ব্যবহার করুন।
কোটলিন
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);
এর ফলে, এই বিশেষ ফরম্যাটগুলো নিয়ে চিন্তা না করেই আপনি স্লো-মোশন ভিডিও সমর্থন করতে পারবেন। আপনাকে শুধু মূল ভিডিওটির পরিবর্তে এর ফ্ল্যাট করা সংস্করণটি সংরক্ষণ ও প্লে করতে হবে।