Media3 Transformer قيد التطوير بشكل نشط ونتطلّع إلى سماع رأيك. نرحب بملاحظاتك وطلبات الميزات وتقارير الأخطاء في
أداة تتبُّع المشاكل. يُرجى متابعة
مدونة ExoPlayer لمعرفة آخر المعلومات.
تعديل مواد عرض متعددة
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
باستخدام 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:
إنّ محتوى هذه الصفحة مرخّص بموجب ترخيص Creative Commons Attribution 4.0 ما لم يُنصّ على خلاف ذلك، ونماذج الرموز مرخّصة بموجب ترخيص Apache 2.0. للاطّلاع على التفاصيل، يُرجى مراجعة سياسات موقع Google Developers. إنّ Java هي علامة تجارية مسجَّلة لشركة Oracle و/أو شركائها التابعين.
تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["# Multi-asset editing\n\nUsing Transformer, you can combine multiple media assets, such as videos,\nimages, and audio files to create a `Composition`.\n\nExporting a Composition\n-----------------------\n\nTo apply [transformations](/media/media3/transformer/transformations)\n(such as effects or trimming edits) to a `MediaItem`, you should create an\n[`EditedMediaItem`](/reference/androidx/media3/transformer/EditedMediaItem)\nto represent the asset that has the transformations applied to it.\n\n`EditedMediaItem` objects can then be concatenated together to create an\n[`EditedMediaItemSequence`](/reference/androidx/media3/transformer/EditedMediaItemSequence).\nFor example, you can create an `EditedMediaItemSequence` with two edited\nvideos. Items inside an `EditedMediaItemSequence` are ordered sequentially and\ndon't overlap in time.\n\nA `Composition` is the combination of one or more `EditedMediaItemSequence`\nobjects. All `EditedMediaItemSequence` objects in the `Composition` are mixed\ntogether, allowing you to combine video and audio assets.\n\n`Composition` objects can be exported using Transformer.\n\nHere is an example of creating and exporting a video asset that consists of two\nedited video clips, overlaid with an audio track: \n\n### Kotlin\n\n```kotlin\nval transformer = ... // Set up Transformer instance\n\nval video1 = EditedMediaItem.Builder(\n MediaItem.fromUri(video1Uri))\n .build()\n\nval video2 = EditedMediaItem.Builder(\n MediaItem.fromUri(video2Uri))\n .build()\n\nval videoSequence = EditedMediaItemSequence(\n video1, video2)\n\nval backgroundAudio = EditedMediaItem.Builder(\n MediaItem.fromUri(audioUri))\n .build()\n\nval backgroundAudioSequence = EditedMediaItemSequence(\n ImmutableList.of(backgroundAudio),\n /* isLooping= */ true) // Loop audio track through duration of videoSequence\n\nval composition = Composition.Builder(\n videoSequence,\n backgroundAudioSequence)\n .build()\n\nval filePath = ... // Provide file path to save Composition\n\ntransformer.start(composition, filePath)\n```\n\n### Java\n\n```java\nTransformer transformer = ... // Set up Transformer instance\n\nEditedMediaItem video1 = new EditedMediaItem.Builder(\n MediaItem.fromUri(video1Uri))\n .build();\n\nEditedMediaItem video2 = new EditedMediaItem.Builder(\n MediaItem.fromUri(video2Uri))\n .build();\n\nEditedMediaItemSequence videoSequence = new EditedMediaItemSequence(\n video1, video2);\n\nEditedMediaItem backgroundAudio = new EditedMediaItem.Builder(\n MediaItem.fromUri(audioUri))\n .build();\n\nEditedMediaItemSequence backgroundAudioSequence = new EditedMediaItemSequence(\n ImmutableList.of(backgroundAudio),\n /* isLooping= */ true); // Loop audio track through duration of videoSequence\n\nString filePath = ... // Provide file path to save Composition\n\nComposition composition = new Composition.Builder(\n videoSequence,\n backgroundAudioSequence)\n .build();\n\ntransformer.start(composition, filePath);\n```\n\n\u003cbr /\u003e\n\nExamples of supported use cases\n-------------------------------\n\nThis is a non-exhaustive list of use cases that the Transformer API\nsupports with Compositions:\n\n- Sequentially combining audio, image, and video assets. However, all items in a sequence must have the same tracks. For example, you cannot have a sequence that contains an audio only file, followed by a video file.\n- Adding background audio to a video asset.\n- Adding effects to a Composition.\n- Tone mapping HDR input to SDR to generate better visual quality SDR output.\n\nCurrent limitations\n-------------------\n\nSequences within a Composition must meet the conditions outlined in\n[`Transformer.start()`](/reference/androidx/media3/transformer/Transformer#start(androidx.media3.transformer.Composition,java.lang.String)).\nFurthermore, the following operations are not yet supported when working with\nCompositions:\n\n- Starting playback of an `EditedMediaItemSequence` with an offset.\n- Crossfading video or audio tracks\n\nFeature requests\n----------------\n\nIf you have any feature requests for the Transformer API, file an issue on the\n[Media3 GitHub repository](https://github.com/androidx/media/issues)."]]