বহু-সম্পদ সম্পাদনা

ট্রান্সফরমার ব্যবহার করে, আপনি একটি 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(
  video1, video2)

val backgroundAudio = EditedMediaItem.Builder(
  MediaItem.fromUri(audioUri))
  .build()

val backgroundAudioSequence = EditedMediaItemSequence(
  ImmutableList.of(backgroundAudio),
  /* isLooping= */ true) // Loop audio track through duration of videoSequence

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(
  video1, video2);

EditedMediaItem backgroundAudio = new EditedMediaItem.Builder(
  MediaItem.fromUri(audioUri))
  .build();

EditedMediaItemSequence backgroundAudioSequence = new EditedMediaItemSequence(
  ImmutableList.of(backgroundAudio),
  /* isLooping= */ true); // Loop audio track through duration of videoSequence

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() এ বর্ণিত শর্তগুলি পূরণ করতে হবে। উপরন্তু, রচনাগুলির সাথে কাজ করার সময় নিম্নলিখিত ক্রিয়াকলাপগুলি এখনও সমর্থিত নয়:

  • একটি অফসেট সহ একটি EditedMediaItemSequence এর প্লেব্যাক শুরু হচ্ছে৷
  • ক্রসফেডিং ভিডিও বা অডিও ট্র্যাক

বৈশিষ্ট্য অনুরোধ

ট্রান্সফরমার API-এর জন্য আপনার কাছে কোনো বৈশিষ্ট্যের অনুরোধ থাকলে, Media3 GitHub সংগ্রহস্থলে একটি সমস্যা ফাইল করুন।