Bearbeitung mehrerer Assets

Mit Transformer können Sie mehrere Medien-Assets kombinieren, z. B. Videos, Bilder und Audiodateien, um ein Composition zu erstellen.

Eine Komposition exportieren

So wenden Sie Transformationen an: (z. B. Effekte oder das Zuschneiden von Änderungen) auf ein MediaItem-Element zu übertragen, solltest du ein EditedMediaItem um das Asset darzustellen, auf das die Transformationen angewendet werden.

EditedMediaItem-Objekte können dann miteinander verkettet werden, um ein EditedMediaItemSequence Sie können beispielsweise ein EditedMediaItemSequence mit zwei bearbeiteten Videos. Elemente in einem EditedMediaItemSequence werden der Reihe nach sortiert und nicht zeitlich überlappen.

Eine Composition ist die Kombination aus einer oder mehreren EditedMediaItemSequence-Elementen Objekte. Alle EditedMediaItemSequence-Objekte in der Composition sind gemischt sodass Sie Video- und Audio-Assets kombinieren können.

„Composition“ Objekte können mit Transformer exportiert werden.

Hier sehen Sie ein Beispiel für das Erstellen und Exportieren eines Video-Assets, das aus zwei bearbeitete Videoclips mit einem Audiotrack:

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);

Beispiele für unterstützte Anwendungsfälle

Dies ist eine unvollständige Liste von Anwendungsfällen, unterstützt bei Kompositionen:

  • Sie können Audio-, Bild- und Video-Assets aufeinander abstimmen. Alle Elemente in einer Sequenz dieselben Tracks haben müssen. Es ist z. B. keine Sequenz zulässig, die eine reine Audiodatei enthält, gefolgt von einer Videodatei.
  • Hintergrund-Audio zu einem Video-Asset hinzufügen
  • Einer Komposition Effekte hinzufügen
  • Tone Mapping bei HDR-Eingabe für SDR für eine bessere SDR-Ausgabe in Bildqualität.

Aktuelle Einschränkungen

Sequenzen innerhalb einer Komposition müssen die Bedingungen erfüllen in: Transformer.start() Darüber hinaus werden die folgenden Vorgänge bei der Arbeit mit Kompositionen:

  • Wiedergabe von EditedMediaItemSequence mit Offset wird gestartet.
  • Video- oder Audiotracks überblenden

Funktionsanfragen

Wenn Sie Funktionsanfragen für die Transformer API haben, melden Sie ein Problem auf der Media3 GitHub-Repository.