Chỉnh sửa nhiều thành phần

Khi sử dụng Transformer, bạn có thể kết hợp nhiều nội dung nghe nhìn, chẳng hạn như video, hình ảnh và tệp âm thanh để tạo Composition.

Xuất một Bản sáng tác

Cách áp dụng quy tắc chuyển đổi (chẳng hạn như hiệu ứng hoặc chỉnh sửa cắt bỏ) cho MediaItem, bạn nên tạo một EditedMediaItem để biểu thị thành phần đã áp dụng các phép biến đổi.

Sau đó, các đối tượng EditedMediaItem có thể được nối với nhau để tạo ra một EditedMediaItemSequence. Ví dụ: bạn có thể tạo EditedMediaItemSequence với hai thành phần video. Các mục bên trong EditedMediaItemSequence được sắp xếp theo tuần tự và không bị trùng lặp về thời gian.

Composition là sự kết hợp của một hoặc nhiều EditedMediaItemSequence . Tất cả đối tượng EditedMediaItemSequence trong Composition đều kết hợp giúp bạn kết hợp thành phần video và âm thanh.

Bạn có thể xuất đối tượng Composition bằng Bộ chuyển đổi.

Dưới đây là ví dụ về cách tạo và xuất một tài sản video bao gồm hai đoạn video đã chỉnh sửa, phủ bản âm thanh:

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

Ví dụ về trường hợp sử dụng được hỗ trợ

Đây là danh sách chưa đầy đủ gồm các trường hợp sử dụng mà Transformer API hỗ trợ với Cấu trúc:

  • Kết hợp tuần tự các thành phần âm thanh, hình ảnh và video. Tuy nhiên, tất cả các mục trong một trình tự phải có cùng bản nhạc. Ví dụ: bạn không thể có một trình tự có chứa tệp chỉ âm thanh, theo sau là tệp video.
  • Thêm âm thanh nền vào thành phần video.
  • Thêm hiệu ứng vào Thành phần kết hợp.
  • Ánh xạ tông màu đầu vào HDR sang SDR để tạo ra đầu ra SDR có chất lượng hình ảnh tốt hơn.

Hạn chế hiện tại

Trình tự trong một Thành phần phải đáp ứng các điều kiện nêu trong Transformer.start(). Ngoài ra, các thao tác sau chưa được hỗ trợ khi làm việc với Thành phần:

  • Bắt đầu phát một EditedMediaItemSequence có độ lệch.
  • Bản âm thanh hoặc video mờ

Yêu cầu về tính năng

Nếu bạn có yêu cầu về tính năng cho Transformer API, hãy báo cáo vấn đề về Kho lưu trữ GitHub Media3.