Định dạng được hỗ trợ

Hãy xem trang các định dạng được hỗ trợ của ExoPlayer để biết thông tin giới thiệu về các định dạng nội dung nghe nhìn nói chung. Transformer có những giới hạn tương tự về việc tải, trích xuất và giải mã luồng dữ liệu, mặc dù Transformer không hỗ trợ các mô-đun bộ giải mã phần mềm đi kèm của ExoPlayer.

Transformer cũng dựa vào MediaCodec để mã hoá và cần ghép kênh hoặc kết hợp các tệp nội dung nghe nhìn đầu ra để giới hạn các định dạng đầu ra được hỗ trợ. Xem bài viết Bộ mã hoá và giải mã video MediaCodec để biết thêm thông tin về các giới hạn mã hoá và nội dung về MediaMuxer để biết các giới hạn áp dụng cho vùng chứa nội dung nghe nhìn đầu ra. Transformer chỉ xuất tệp MP4.

Theo mặc định, Transformer sử dụng MediaMuxer, nhưng bạn có thể chọn cung cấp InAppMuxer đang phát triển để tránh một số hạn chế của MediaMuxer về cấu trúc khung tham chiếu và định dạng mẫu được hỗ trợ. Trình kết hợp mặc định sẽ trở thành trình kết hợp trong ứng dụng ở bản phát hành sau này.

Hỗ trợ hình ảnh

Transformer sử dụng BitmapFactory để tải và giải mã tất cả thành phần hình ảnh, vì vậy, Transformer hỗ trợ tất cả các định dạng mà BitmapFactory có. Hãy xem phần Hình ảnh được hỗ trợ để biết các loại hình ảnh được hỗ trợ. Đối với các định dạng nhiều hình ảnh (ví dụ: gif), một khung hình ảnh duy nhất từ vùng chứa sẽ hiển thị nếu sử dụng DefaultAssetLoaderFactory.

Định dạng đặc biệt

Transformer hỗ trợ xử lý dữ liệu đầu vào ở các định dạng nội dung nghe nhìn mới hơn, cung cấp các tính năng đặc biệt so với các định dạng thông thường.

Xử lý video HDR

Ngày càng có nhiều thiết bị hỗ trợ quay video HDR, mang lại màu sắc rực rỡ, chính xác hơn và phạm vi độ sáng lớn hơn.

Transformer hỗ trợ chỉnh sửa video HDR từ Android 13 (API cấp 33) trở lên trên các thiết bị có hỗ trợ mã hoá bắt buộc. Khi chỉnh sửa video HDR, mọi hiệu ứng video GL đều cần phải xử lý các thành phần màu dấu phẩy động 16 bit và hệ màu BT.2020. HDR_MODE_KEEP_HDR là chế độ mặc định khi tạo Composition. Nếu tính năng chỉnh sửa HDR không được hỗ trợ, Transformer sẽ quay lại sử dụng HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_OPEN_GL.

Tính năng chuyển đổi HDR sang SDR, còn gọi là ánh xạ âm, được hỗ trợ từ Android 10 (API cấp 29) trở lên trên các thiết bị có tính năng giải mã và hỗ trợ OpenGL theo yêu cầu. Tính năng này rất hữu ích khi chia sẻ nội dung nghe nhìn HDR với các ứng dụng hoặc dịch vụ khác không hỗ trợ truyền dẫn nội dung HDR. Để bật tính năng ánh xạ tông màu bằng cách sử dụng lệnh gọi OpenGL setHdrMode(HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_OPEN_GL) khi tạo Composition. Từ Android 12 (API cấp 31) trở lên, MediaCodec cũng hỗ trợ tính năng ánh xạ âm trên một số thiết bị, bao gồm tất cả các thiết bị chạy Android 13 trở lên có thể quay video HDR. Để bật tính năng ánh xạ âm bằng MediaCodec, hãy gọi setHdrMode(HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_MEDIACODEC).

Xử lý nội dung nghe nhìn chuyển động chậm

Video chuyển động chậm bao gồm siêu dữ liệu cho biết tốc độ phát mỗi phần của sự kiện phát trực tiếp. Làm phẳng là quá trình tạo ra một luồng video mới dựa trên video chuyển động chậm nhưng các phần đó được tăng tốc hoặc chậm lại dựa trên siêu dữ liệu để chúng phát chính xác ngay cả trên những trình phát không áp dụng siêu dữ liệu chuyển động chậm.

Để làm phẳng luồng chuyển động chậm, hãy sử dụng phương thức trình tạo setFlattenForSlowMotion trên EditedMediaItem.

Kotlin

val editedMediaItem =
    EditedMediaItem.Builder(inputMediaItem).setFlattenForSlowMotion(true).build()
val transformer =
    Transformer.Builder(context).addListener(transformerListener).build()
transformer.start(editedMediaItem, outputPath)

Java

EditedMediaItem editedMediaItem =
    new EditedMediaItem.Builder(inputMediaItem).setFlattenForSlowMotion(true).build();
Transformer transformer =
    new Transformer.Builder(context).addListener(transformerListener).build();
transformer.start(editedMediaItem, outputPath);

Điều này cho phép bạn hỗ trợ các video chuyển động chậm mà không cần phải lo lắng về việc xử lý các định dạng đặc biệt này. Tất cả những gì bạn cần làm là lưu trữ và phát phiên bản đã làm phẳng của video thay vì phiên bản gốc.