עריכה של נכסים מרובים

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