एक से ज़्यादा ऐसेट में बदलाव करना

ट्रांसफ़ॉर्मर का इस्तेमाल करके, वीडियो, इमेज, और ऑडियो फ़ाइलों जैसी कई मीडिया ऐसेट को एक साथ जोड़ा जा सकता है. इससे Composition बनाया जा सकता है.

कंपोज़िशन एक्सपोर्ट करना

किसी MediaItem में ट्रांसफ़ॉर्मेशन (जैसे कि इफ़ेक्ट या ट्रिमिंग में बदलाव) लागू करने के लिए, आपको एक EditedMediaItem बनाना चाहिए. इससे उस ऐसेट को दिखाया जा सकेगा जिस पर ट्रांसफ़ॉर्मेशन लागू किए गए हैं.

इसके बाद, EditedMediaItem ऑब्जेक्ट को एक साथ जोड़कर EditedMediaItemSequence बनाया जा सकता है. उदाहरण के लिए, दो बदले गए वीडियो से EditedMediaItemSequence बनाया जा सकता है. EditedMediaItemSequence में मौजूद आइटम, क्रम से लगाए जाते हैं और एक साथ नहीं दिखते.

Composition एक या उससे ज़्यादा EditedMediaItemSequence ऑब्जेक्ट का कॉम्बिनेशन होता है. Composition में मौजूद सभी EditedMediaItemSequence ऑब्जेक्ट को एक साथ मिलाया जाता है. इससे आपको वीडियो और ऑडियो ऐसेट को एक साथ इस्तेमाल करने की सुविधा मिलती है.

Transformer का इस्तेमाल करके, Composition ऑब्जेक्ट एक्सपोर्ट किए जा सकते हैं.

यहां एक ऐसी वीडियो ऐसेट बनाने और एक्सपोर्ट करने का उदाहरण दिया गया है जिसमें दो एडिट की गई वीडियो क्लिप शामिल हैं. इन क्लिप पर एक ऑडियो ट्रैक ओवरले किया गया है:

Kotlin

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)

Java

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);

इस्तेमाल के उदाहरण

यहां इस्तेमाल के उन उदाहरणों की पूरी सूची दी गई है जिनके लिए Transformer API, कंपोज़िशन की सुविधा के साथ काम करता है:

  • ऑडियो, इमेज, और वीडियो ऐसेट को क्रम से जोड़ना.
  • वीडियो ऐसेट में बैकग्राउंड ऑडियो जोड़ना.
  • कंपोज़िशन में इफ़ेक्ट जोड़ना.
  • एसडीआर आउटपुट की विज़ुअल क्वालिटी को बेहतर बनाने के लिए, एचडीआर इनपुट को एसडीआर में टोन मैप करना.

मौजूदा सीमाएं

कंपोज़िशन में मौजूद सीक्वेंस को Transformer.start() में बताई गई शर्तों को पूरा करना होगा. इसके अलावा, कंपोज़िशन के साथ काम करते समय, फ़िलहाल ये कार्रवाइयाँ नहीं की जा सकतीं:

  • वीडियो या ऑडियो ट्रैक को क्रॉसफ़ेड करना

सुविधा के अनुरोध

अगर आपको Transformer API के लिए किसी सुविधा का अनुरोध करना है, तो Media3 GitHub रिपॉज़िटरी पर कोई समस्या दर्ज करें.