Za pomocą Transformer możesz łączyć wiele zasobów multimedialnych, takich jak filmy,
plików graficznych i audio, aby utworzyć Composition.
Eksportowanie kompozycji
Aby zastosować przekształcenia,
 (np. efekty lub przycinanie) do elementu MediaItem, musisz utworzyć
  EditedMediaItem
   aby przedstawić zasób, do którego zastosowano przekształcenia.
Możesz połączyć EditedMediaItem obiektu, aby utworzyć
 EditedMediaItemSequence
 Można na przykład utworzyć EditedMediaItemSequence z 2 edytowanymi
filmy. Elementy w elemencie EditedMediaItemSequence są porządkowane kolejno
nie nakładają się w czasie.
Wartość Composition jest kombinacją co najmniej jednego elementu EditedMediaItemSequence
obiektów. Wszystkie obiekty EditedMediaItemSequence w Composition są wymieszane
co pozwala na łączenie zasobów wideo i audio.
Obiekty (Composition) można wyeksportować za pomocą Transformera.
Oto przykład tworzenia i eksportowania zasobu wideo, który składa się z 2 elementów wyedytowane klipy wideo z nałożonymi ścieżką dźwiękową:
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);
Przykłady obsługiwanych przypadków użycia
To niepełna lista przypadków użycia interfejsu Transformer API obsługuje kompozycje:
- Łączenie sekwencyjne z komponentami audio, wideo i graficznymi Jednak wszystkie elementy w sekwencji musi mieć te same ścieżki. Na przykład nie możesz mieć sekwencji który zawiera sam dźwięk, a po nim plik wideo.
- Dodaję dźwięk w tle do zasobu wideo.
- Dodawanie efektów do kompozycji.
- Mapowanie tonów wejściowych HDR na SDR pozwala uzyskać lepszą jakość obrazu wyjściowego SDR.
Obecne ograniczenia
Sekwencje w kompozycji muszą spełniać warunki opisane w
Transformer.start()
Następujące operacje nie są jeszcze obsługiwane podczas pracy z
Kompozycje:
- Rozpoczynam odtwarzanie filmu EditedMediaItemSequencez przesunięciem.
- Przenikanie ścieżek wideo lub audio
Prośby o dodanie funkcji
Jeśli masz jakieś prośby o dodanie funkcji do interfejsu Transformer API, zgłoś problem na Repozytorium Media3 GitHub.
