تعديل مواد عرض متعددة

باستخدام Transformer، يمكنك دمج مواد عرض متعددة للوسائط، مثل الفيديوهات والصور والملفات الصوتية لإنشاء Composition.

تصدير مقطوعة موسيقية

تطبيق عمليات تحويل (مثل التأثيرات أو قطع التعديلات) إلى MediaItem، عليك إنشاء EditedMediaItem لتمثيل مادة العرض التي تمّ تطبيق الإحالات الناجحة عليها.

يمكن بعد ذلك تسلسل EditedMediaItem من الكائنات مع بعضها لإنشاء EditedMediaItemSequence على سبيل المثال، يمكنك إنشاء EditedMediaItemSequence باستخدام ملفين مقاطع الفيديو. يتمّ طلب السلع داخل EditedMediaItemSequence بترتيب تسلسلي مع مرور الوقت.

السمة Composition هي تركيبة من عنصر EditedMediaItemSequence واحد أو أكثر. الأخرى. يتم مزج كل العناصر البالغ عددها EditedMediaItemSequence في Composition. معًا، ما يسمح لك بدمج مواد عرض الفيديو والصوت.

يمكن تصدير 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(
  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)

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

أمثلة على حالات الاستخدام المتوافقة

هذه قائمة غير شاملة بحالات الاستخدام التي تتيح واجهة برمجة التطبيقات Transformer API. مع "المقطوعات الموسيقية":

  • دمج مواد عرض الصوت والصور والفيديوهات بالتتابع ومع ذلك، فإنّ جميع العناصر في التسلسل يجب أن يكون لها نفس المسارات. على سبيل المثال، لا يمكن أن يكون لديك تسلسل يحتوي على ملف صوتي فقط، يليه ملف فيديو.
  • جارٍ إضافة صوت الخلفية إلى مادة عرض فيديو.
  • إضافة تأثيرات إلى مقطوعة موسيقية.
  • يتم ربط إدخال النطاق العالي الديناميكية (HDR) بنطاق SDR للحصول على نتائج SDR ذات جودة مرئية أفضل.

القيود الحالية

يجب أن تستوفي التسلسلات ضمن المقطوعة الموسيقية الشروط الموضّحة في Transformer.start() بالإضافة إلى ذلك، لا تتوفر العمليات التالية حتى الآن عند التعامل مع المقطوعات الموسيقية:

  • بدء تشغيل EditedMediaItemSequence باستخدام إزاحة.
  • تضاؤل متداخل للمقاطع الصوتية أو الفيديوهات

طلبات الميزات

إذا كانت لديك أي طلبات ميزات في Transformer API، يُرجى الإبلاغ عن مشكلة على مستودع Media3 GitHub: