باستخدام Transformer، يمكنك الجمع بين عدة مواد عرض للوسائط، مثل الفيديوهات والصور والملفات الصوتية، لإنشاء Composition.
تصدير تركيبة
لتطبيق عمليات تحويل (مثل التأثيرات أو عمليات التعديل الخاصة بالاقتصاص) على MediaItem، عليك إنشاء EditedMediaItem لتمثيل مادة العرض التي تم تطبيق عمليات التحويل عليها.
يمكن بعد ذلك ربط عناصر EditedMediaItem معًا لإنشاء EditedMediaItemSequence.
على سبيل المثال، يمكنك إنشاء EditedMediaItemSequence يتضمّن فيديوَين معدَّلَين. يتم ترتيب العناصر داخل EditedMediaItemSequence بشكل تسلسلي ولا تتداخل في الوقت.
Composition هو مزيج من EditedMediaItemSequence واحد أو أكثر. يتم مزج كل عناصر EditedMediaItemSequence في Composition معًا، ما يتيح لك الجمع بين مواد عرض الفيديو والصوت.
يمكن تصدير عناصر Composition باستخدام Transformer.
في ما يلي مثال على إنشاء وتصدير مادة عرض فيديو تتألف من مقطعَي فيديو معدَّلَين، مع إضافة مقطع صوتي:
Kotlin
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() transformer.start(composition, filePath)
Java
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(); Composition composition = new Composition.Builder(videoSequence, backgroundAudioSequence).build(); transformer.start(composition, filePath);
أمثلة على حالات الاستخدام المتوافقة
في ما يلي قائمة غير شاملة بحالات الاستخدام التي تتيحها واجهة برمجة التطبيقات Transformer API مع التركيبات:
- الجمع بين مواد عرض الصوت والصورة والفيديو بالتسلسل
- إضافة مقطع صوتي في الخلفية إلى مادة عرض فيديو
- إضافة تأثيرات إلى التركيبة
- ربط درجات الألوان لمحتوى HDR إلى SDR لإنشاء محتوى SDR بجودة مرئية أفضل
القيود الحالية
يجب أن تستوفي التسلسلات ضِمن التركيبة الشروط الموضّحة في Transformer.start().
بالإضافة إلى ذلك، لا تتوفّر العمليات التالية بعد عند العمل باستخدام
التركيبات:
- تلاشي الفيديو أو المقاطع الصوتية
طلبات الميزات
إذا كانت لديك أي طلبات ميزات لواجهة برمجة التطبيقات Transformer API، يمكنك الإبلاغ عن مشكلة في مستودع Media3 على GitHub.