ট্রান্সফরমার ব্যবহার করে, আপনি একাধিক মিডিয়া সম্পদ, যেমন ভিডিও, ছবি এবং অডিও ফাইল একত্রিত করে একটি Composition তৈরি করতে পারেন।
একটি রচনা রপ্তানি করা
MediaItem এ রূপান্তর (যেমন প্রভাব বা সম্পাদনা ছাঁটাই) প্রয়োগ করতে, আপনার একটি EditedMediaItem তৈরি করা উচিত যা সেই সম্পদকে উপস্থাপন করবে যেখানে রূপান্তরগুলি প্রয়োগ করা হয়েছে।
EditedMediaItem অবজেক্টগুলিকে একত্রিত করে একটি EditedMediaItemSequence তৈরি করা যেতে পারে। উদাহরণস্বরূপ, আপনি দুটি সম্পাদিত ভিডিও দিয়ে একটি EditedMediaItemSequence তৈরি করতে পারেন। EditedMediaItemSequence এর ভিতরের আইটেমগুলি ক্রমানুসারে সাজানো থাকে এবং সময়ের সাথে সাথে ওভারল্যাপ হয় না।
একটি Composition হল এক বা একাধিক EditedMediaItemSequence অবজেক্টের সমন্বয়। Composition সমস্ত EditedMediaItemSequence অবজেক্ট একসাথে মিশ্রিত করা হয়, যার ফলে আপনি ভিডিও এবং অডিও সম্পদ একত্রিত করতে পারেন।
ট্রান্সফরমার ব্যবহার করে Composition অবজেক্ট এক্সপোর্ট করা যেতে পারে।
দুটি সম্পাদিত ভিডিও ক্লিপ, একটি অডিও ট্র্যাক দিয়ে আবৃত করে একটি ভিডিও সম্পদ তৈরি এবং রপ্তানি করার একটি উদাহরণ এখানে দেওয়া হল:
কোটলিন
val transformer = ... // Set up Transformer instance val video1 = EditedMediaItem.Builder( MediaItem.fromUri(video1Uri)) .build() val video2 = EditedMediaItem.Builder( MediaItem.fromUri(video2Uri)) .build() val videoSequence = EditedMediaItemSequence.Builder( setOf(C.TRACK_TYPE_AUDIO, C.TRACK_TYPE_VIDEO)) .addItems(video1, video2) .build() val backgroundAudio = EditedMediaItem.Builder( MediaItem.fromUri(audioUri)) .build() val backgroundAudioSequence = EditedMediaItemSequence.Builder( setOf(C.TRACK_TYPE_AUDIO)) .addItem(backgroundAudio) .setIsLooping(true) // Loop audio track through duration of videoSequence .build() val composition = Composition.Builder( videoSequence, backgroundAudioSequence) .build() val filePath = ... // Provide file path to save Composition transformer.start(composition, filePath)
জাভা
Transformer transformer = ... // Set up Transformer instance EditedMediaItem video1 = new EditedMediaItem.Builder( MediaItem.fromUri(video1Uri)) .build(); EditedMediaItem video2 = new EditedMediaItem.Builder( MediaItem.fromUri(video2Uri)) .build(); EditedMediaItemSequence videoSequence = new EditedMediaItemSequence.Builder( ImmutableSet.of(C.TRACK_TYPE_AUDIO, C.TRACK_TYPE_VIDEO)) .addItems(video1, video2) .build(); EditedMediaItem backgroundAudio = new EditedMediaItem.Builder( MediaItem.fromUri(audioUri)) .build(); EditedMediaItemSequence backgroundAudioSequence = new EditedMediaItemSequence.Builder( ImmutableSet.of(C.TRACK_TYPE_AUDIO)) .addItem(backgroundAudio) .setIsLooping(true) // Loop audio track through duration of videoSequence .build(); String filePath = ... // Provide file path to save Composition Composition composition = new Composition.Builder( videoSequence, backgroundAudioSequence) .build(); transformer.start(composition, filePath);
সমর্থিত ব্যবহারের উদাহরণ
এটি ট্রান্সফরমার API কম্পোজিশনের সাথে যে ব্যবহারের ক্ষেত্রে সমর্থন করে তার একটি অ-সম্পূর্ণ তালিকা:
- ধারাবাহিকভাবে অডিও, ছবি এবং ভিডিও সম্পদ একত্রিত করা।
- একটি ভিডিও অ্যাসেটে ব্যাকগ্রাউন্ড অডিও যোগ করা।
- একটি রচনায় প্রভাব যুক্ত করা।
- উন্নত ভিজ্যুয়াল মানের SDR আউটপুট তৈরি করতে SDR-তে HDR ইনপুট টোন ম্যাপিং।
বর্তমান সীমাবদ্ধতা
একটি কম্পোজিশনের মধ্যে সিকোয়েন্সগুলিকে Transformer.start() এ বর্ণিত শর্তগুলি পূরণ করতে হবে। তদুপরি, কম্পোজিশনের সাথে কাজ করার সময় নিম্নলিখিত ক্রিয়াকলাপগুলি এখনও সমর্থিত নয়:
- ক্রসফেডিং ভিডিও বা অডিও ট্র্যাক
বৈশিষ্ট্য অনুরোধ
ট্রান্সফরমার API-এর জন্য যদি আপনার কোনও বৈশিষ্ট্যের অনুরোধ থাকে, তাহলে Media3 GitHub সংগ্রহস্থলে একটি সমস্যা দায়ের করুন।