ব্যবহারকারীরা একসাথে একাধিক মিডিয়া অ্যাসেট এডিট করতে চাইতে পারেন, যাতে ফাইনাল ভিডিওতে একই সাথে একাধিক মিডিয়া আইটেম দেখা যায়। এর মধ্যে রয়েছে পিকচার-ইন-পিকচার, পাশাপাশি বা গ্রিডের মতো লেআউটে আইটেম সাজানো। এই ধরনের প্রোজেক্টের কিছু উদাহরণ এখানে দেওয়া হল:
আপনি কম্পোজিশন ডেমো অ্যাপে এইসব লেআউটের প্রয়োগ এক্সপ্লোর করতে পারবেন।
VideoCompositorSettings প্রয়োগ করুন
VideoCompositorSettings ইন্টারফেসে ২টি পদ্ধতি আছে:
getOutputSize(List<Size> inputSizes), যা আপনি প্রতিটি ইনপুটের সাইজ নির্দিষ্ট করতে ব্যবহার করতে পারবেনEditedMediaItemSequencegetOverlaySettings(int inputId, long presentationTimeUs), যেখানে আপনি নির্দিষ্ট করতে পারবেন যে প্রতিটি সিকোয়েন্স কীভাবে ফ্রেমে দেখানো হবে
OverlaySettings-এর মাধ্যমে কোনও সিকোয়েন্সের প্রেজেন্টেশন কনফিগার করা
আপনার getOverlaySettings()-এর প্রয়োগের ফলে আপনার প্রোজেক্টের প্রতিটি সিকোয়েন্সের জন্য
OverlaySettings ইন্টারফেসের একটি ইনস্ট্যান্স রিটার্ন করা উচিত। সেটিংস কোন সিকোয়েন্সে প্রয়োগ করা হবে তা
inputId প্যারামিটার শনাক্ত করে।
ইনস্ট্যান্স তৈরি করতে, আপনি Media3-এ অন্তর্ভুক্ত StaticOverlaySettings ক্লাস
ব্যবহার করতে পারবেন। কনফিগারেশন বিকল্পের সম্পূর্ণ তালিকার জন্য StaticOverlaySettings.Builderরেফারেন্স পৃষ্ঠা
দেখুন, এতে ভিজ্যুয়াল পরিবর্তন
যেমন আলফা ট্রান্সপারেন্সি ও HDR লুমিন্যান্স, পজিশনাল পরিবর্তন যেমন অ্যাঙ্কর
পয়েন্ট ও ফ্রেমের মধ্যে লোকেশন এবং ট্রান্সফর্মেশন যেমন রোটেশন ও
স্কেল অন্তর্ভুক্ত।
override fun getOverlaySettings(inputId: Int, presentationTimeUs: Long): OverlaySettings { return when (inputId) { // Position the first sequence in the top-left 0 -> { StaticOverlaySettings.Builder() // Scale the video down to 1/4th the size of the frame .setScale(0.5f, 0.5f) // Anchor the sequence in the middle of frame .setOverlayFrameAnchor(0f, 0f) // Position the video in the top-left section of the frame .setBackgroundFrameAnchor(-0.5f, 0.5f) .build() } // Add more cases for remaining input sequences else -> StaticOverlaySettings.Builder().build() } }
getOverlaySettings() পদ্ধতির presentationTimeUs প্যারামিটার ব্যবহার করে,
আপনি ভিডিওর পজিশনের উপর ভিত্তি করে এইসব সেটিংস পরিবর্তন করতে পারবেন, যেমন
এই পৃষ্ঠায় আগে দেখানো মুভিং পিকচার-ইন-পিকচার উদাহরণে দেখানো হয়েছে।
override fun getOverlaySettings(inputId: Int, presentationTimeUs: Long): OverlaySettings { return if (inputId == 0) { // Use the first sequence as the overlay val cycleRadians = 2 * PI * (presentationTimeUs.toDouble() / cycleTimeUs) StaticOverlaySettings.Builder() // Scale the overlay down .setScale(0.35f, 0.35f) // Anchor the overlay in the top-middle of the frame .setOverlayFrameAnchor(0f, 1f) // Move the overlay over time .setBackgroundFrameAnchor(sin(cycleRadians).toFloat() * 0.5f, -0.2f) // Rotate the overlay over time .setRotationDegrees(cos(cycleRadians).toFloat() * -10f) .build() } else { // Present the second sequence in the background as normal StaticOverlaySettings.Builder().build() } }
মতামত
ভিডিও কম্পোজিটিং ব্যবহারের ক্ষেত্রে আপনার কোনও মতামত বা ফিচারের অনুরোধ থাকলে, Media3 GitHub রিপোজিটরিতে একটি ইস্যু ফাইল করুন।