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