Hãy xem trang về các định dạng được ExoPlayer hỗ trợ để biết thông tin giới thiệu về các định dạng nội dung nghe nhìn nói chung. Các hạn chế tương tự về việc tải, trích xuất và giải mã luồng cũng áp dụng cho Transformer, 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 mux, xuất tệp nội dung nghe nhìn đầu ra, điều này giới hạn các định dạng đầu ra được hỗ trợ. Hãy xem phần 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à MediaMuxer để biết các giới hạn áp dụng cho vùng chứa nội dung đa phương tiệ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 dùng InAppMuxer đang trong quá trình 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à các định dạng mẫu được hỗ trợ. Trình ghép kênh mặc định sẽ trở thành trình ghép kênh trong ứng dụng ở một bản phát hành trong tương lai.
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 hỗ trợ. Hãy xem phần Hỗ trợ hình ảnh để 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 duy nhất từ vùng chứa sẽ xuất hiện nếu bạn 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ợ chụp video HDR, mang đến màu sắc sống động và chính xác hơn, cũng như dải độ sáng rộng 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ó khả năng mã hoá cần thiết. Khi chỉnh sửa video HDR, mọi hiệu ứng video GL đều cần xử lý các thành phần màu dấu phẩy động 16 bit và không gian màu BT.2020. HDR_MODE_KEEP_HDR là chế độ mặc định khi tạo Composition. Nếu không hỗ trợ chỉnh sửa HDR, Transformer sẽ quay lại sử dụng HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_OPEN_GL.
Việc chuyển đổi HDR sang SDR (còn gọi là ánh xạ tông màu) được hỗ trợ từ Android 10 (API cấp 29) trở lên trên các thiết bị có khả năng giải mã và hỗ trợ OpenGL cần thiết. Điều này hữu ích khi bạn 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ợ việc tiếp nhậ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ở đi, MediaCodec cũng hỗ trợ ánh xạ tông màu trên một số thiết bị, bao gồm cả tất cả thiết bị chạy Android 13 trở lên có thể quay video HDR. Để bật tính năng ánh xạ tông màu bằng cách sử dụng lệnh gọi MediaCodec 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 có siêu dữ liệu cho biết tốc độ phát của từng phần trong luồng phát. Làm phẳng là quá trình tạo 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 giảm tốc 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 các 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 giúp bạn hỗ trợ video chuyển động chậm mà không phải lo lắng về việc xử lý các định dạng đặc biệt này. Bạn chỉ cần lưu trữ và phát phiên bản video đã hợp nhất thay vì phiên bản gốc.