באמצעות טרנספורמר אפשר לשלב כמה נכסי מדיה, כמו סרטונים,
תמונות וקובצי אודיו כדי ליצור Composition
.
ייצוא יצירה מוזיקלית
כדי להחיל טרנספורמציות
(כמו אפקטים או עריכות של חיתוכים) בMediaItem
, צריך ליצור
EditedMediaItem
כדי לייצג את הנכס שהוחלו עליו הטרנספורמציות.
אחר כך אפשר לחבר EditedMediaItem
אובייקטים כדי ליצור
EditedMediaItemSequence
.
לדוגמה, אפשר ליצור EditedMediaItemSequence
עם שני עריכות
סרטונים. פריטים בתוך EditedMediaItemSequence
מסודרים ברצף
אינן חופפות בזמן.
Composition
הוא שילוב של EditedMediaItemSequence
או יותר
אובייקטים. כל האובייקטים של EditedMediaItemSequence
ב-Composition
מעורבים
יחד, כך שתוכלו לשלב בין נכסי וידאו ואודיו.
אפשר לייצא Composition
אובייקטים באמצעות Transformer.
כאן מוצגת דוגמה ליצירה ולייצוא של נכס וידאו שכולל שני נכסים קליפים ערוכים, עם שכבת-על של טראק של אודיו:
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.