באמצעות טרנספורמר אפשר לשלב כמה נכסי מדיה, כמו סרטונים,
תמונות וקובצי אודיו כדי ליצור 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.