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

Khi xác định các định dạng mà ExoPlayer hỗ trợ, cần lưu ý rằng "định dạng nội dung đa phương tiện" được xác định ở nhiều cấp độ. Từ mức thấp nhất đến cao nhất, đó là:

  • Định dạng của từng mẫu nội dung nghe nhìn (chẳng hạn như khung video hoặc khung âm thanh). Đây là các định dạng mẫu. Xin lưu ý rằng một tệp video thông thường sẽ chứa nội dung nghe nhìn ở ít nhất hai định dạng mẫu; một mã cho video (ví dụ: H.264) và một cho âm thanh (ví dụ: AAC).
  • Định dạng của vùng chứa chứa mẫu nội dung đa phương tiện và siêu dữ liệu. Đây là các định dạng vùng chứa. Tệp nội dung nghe nhìn có một vùng chứa duy nhất (ví dụ: MP4), thường được biểu thị bằng đuôi tệp. Ghi chú đối với một số định dạng chỉ có âm thanh (ví dụ: MP3), mẫu và định dạng vùng chứa có thể giống nhau.
  • Các công nghệ truyền trực tuyến thích ứng như DASH, mootStreaming và HLS. Các không phải là định dạng truyền thông, tuy nhiên, bạn vẫn cần phải xác định mức độ hỗ trợ mà ExoPlayer cung cấp.

Các phần sau đây xác định khả năng hỗ trợ của ExoPlayer ở mỗi cấp độ, từ cao nhất đến thấp nhất. Hai phần cuối cùng mô tả việc hỗ trợ các định dạng phụ đề độc lập và phát video HDR.

Truyền trực tuyến thích ứng

DASH (Truyền phát thích ứng động qua HTTP)

ExoPlayer hỗ trợ DASH với nhiều định dạng vùng chứa. Luồng nội dung nghe nhìn phải tách biệt, nghĩa là video, âm thanh và văn bản phải được xác định riêng biệt Các phần tử AdaptationSet trong tệp kê khai DASH (CEA-608 là một trường hợp ngoại lệ vì được mô tả trong bảng dưới đây). Các định dạng mẫu âm thanh và video có trong đó phải cũng được hỗ trợ (xem định dạng mẫu để biết thông tin chi tiết).

Tính năng Có thể làm Bình luận
Vùng chứa
FMP4 Chỉ những sự kiện phát trực tiếp chưa được phát trực tiếp
WebM Chỉ những sự kiện phát trực tiếp chưa được phát trực tiếp
Matroska Chỉ những sự kiện phát trực tiếp chưa được phát trực tiếp
MPEG-TS KHÔNG Chưa lên kế hoạch hỗ trợ
Phụ đề
TTML Thô hoặc nhúng trong FMP4 theo tiêu chuẩn ISO/IEC 14496-30
WebVTT Thô hoặc nhúng trong FMP4 theo tiêu chuẩn ISO/IEC 14496-30
CEA-608 Được nhúng trong FMP4 khi được báo hiệu bằng bộ mô tả Hỗ trợ tiếp cận theo chuẩn SCTE
CEA-708 Được nhúng trong FMP4 khi được báo hiệu bằng bộ mô tả Hỗ trợ tiếp cận theo chuẩn SCTE
Siêu dữ liệu
Siêu dữ liệu EMSG Được nhúng trong FMP4
Bảo vệ nội dung
Widevine "cenc" lược đồ: API 19 trở lên; "cbcs" lược đồ: API 25 trở lên
PlaySẵn sàng SL2000 Android TV, "cenc" chỉ lược đồ
Phím Xóa API 21+, "cenc" chỉ lược đồ
Phát trực tiếp
Phát trực tiếp thường xuyên
Phát trực tiếp CMAF độ trễ thấp nhất
Dữ liệu ứng dụng nội dung nghe nhìn phổ biến (CMCD) Hướng dẫn tích hợp

SmoothStreaming

ExoPlayer hỗ trợ mootStreaming với định dạng vùng chứa FMP4. Luồng nội dung nghe nhìn phải được loại bỏ, nghĩa là video, âm thanh và văn bản phải được xác định riêng biệt Các phần tử StreamIndex trong tệp kê khai mootStreaming. Âm thanh và các định dạng mẫu video cũng phải được hỗ trợ (xem định dạng mẫu để biết thông tin chi tiết).

Tính năng Có thể làm Bình luận
Vùng chứa
FMP4 Chỉ những sự kiện phát trực tiếp chưa được phát trực tiếp
Phụ đề
TTML Được nhúng trong FMP4
Bảo vệ nội dung
PlaySẵn sàng SL2000 Chỉ phát hành cho Android TV
Phát trực tiếp
Phát trực tiếp thường xuyên
Dữ liệu ứng dụng nội dung nghe nhìn phổ biến (CMCD) Hướng dẫn tích hợp

HLS (Phát trực tuyến dựa trên HTTP)

ExoPlayer hỗ trợ HLS với nhiều định dạng vùng chứa. Âm thanh và các định dạng mẫu video cũng phải được hỗ trợ (xem định dạng mẫu để biết thông tin chi tiết). T4 khuyến khích các nhà sản xuất nội dung HLS tạo ra luồng HLS chất lượng cao, như được mô tả tại đây.

Tính năng Có thể làm Bình luận
Vùng chứa
MPEG-TS
FMP4/CMAF
ADTS (AAC)
MP3
Phụ đề
CEA-608
CEA-708
WebVTT
Siêu dữ liệu
Mã nhận dạng 3
SCTE-35 KHÔNG
Bảo vệ nội dung
AES-128
Mẫu AES-128 KHÔNG
Widevine API cấp 19 trở lên (lược đồ "cenc") và cấp độ 25 trở lên (lược đồ "cbcs")
PlaySẵn sàng SL2000 Chỉ phát hành cho Android TV
Quyền kiểm soát của máy chủ
Nội dung cập nhật về Delta
Chặn tải lại danh sách phát
Chặn hoạt động tải gợi ý tải trước Ngoại trừ các byte có độ dài không xác định
Phát trực tiếp
Phát trực tiếp thường xuyên
HLS có độ trễ thấp (Apple)
HLS có độ trễ thấp (Cộng đồng) KHÔNG
Dữ liệu ứng dụng nội dung nghe nhìn phổ biến (CMCD) Hướng dẫn tích hợp

Định dạng vùng chứa luỹ tiến

ExoPlayer có thể phát trực tiếp các luồng trong các định dạng vùng chứa sau đây. Các định dạng mẫu âm thanh và video bên trong cũng phải được hỗ trợ (xem Định dạng mẫu để biết chi tiết). Để được hỗ trợ về định dạng và vùng chứa hình ảnh, hãy xem Hình ảnh.

Định dạng vùng chứa Có thể làm Bình luận
MP4
M4A
FMP4
WebM
Matroska
MP3 Một số luồng chỉ có thể tìm kiếm được bằng cách sử dụng tính năng tìm kiếm tốc độ bit liên tục**
Tiếng Ogg Có chứa Vorbis, Opus và FLAC
WAV
MPEG-TS
MPEG–PS
FLV Không tìm kiếm được*
ADTS (AAC) Chỉ có thể tìm kiếm bằng cách sử dụng tính năng tìm kiếm tốc độ bit liên tục**
FLAC Sử dụng thư viện FLAC hoặc trình trích xuất FLAC trong thư viện ExoPlayer***
AMR (giờ AMR) Chỉ có thể tìm kiếm bằng cách sử dụng tính năng tìm kiếm tốc độ bit liên tục**

* Không hỗ trợ tìm kiếm vì vùng chứa không cung cấp siêu dữ liệu (ví dụ: chỉ mục mẫu) để cho phép trình phát nội dung đa phương tiện thực hiện tua một cách hiệu quả. Nếu cần tìm kiếm, chúng tôi khuyên bạn nên sử dụng định dạng vùng chứa thích hợp hơn.

** Các trình trích xuất này có cờ FLAG_ENABLE_CONSTANT_BITRATE_SEEKING cho cho phép tua gần đúng bằng cách sử dụng giả định tốc độ bit không đổi. Chiến dịch này không được bật theo mặc định. Cách đơn giản nhất để bật tính năng này cho tất cả các trình trích xuất hỗ trợ chức năng đó. DefaultExtractorsFactory.setConstantBitrateSeekingEnabled, như được mô tả tại đây.

*** Trình trích xuất thư viện FLAC xuất ra âm thanh thô có thể xử lý được theo khung ở tất cả cấp độ API. Kết quả đầu ra của trình trích xuất FLAC của thư viện ExoPlayer Khung âm thanh FLAC, v.v. phụ thuộc vào việc có bộ giải mã FLAC (ví dụ: MediaCodec bộ giải mã xử lý FLAC (bắt buộc từ API cấp 27) hoặc Thư viện FFmpeg có bật FLAC). DefaultExtractorsFactory sử dụng thuộc tính trình trích xuất tiện ích nếu ứng dụng được tạo bằng thư viện FLAC. Nếu không, trình trích xuất này sẽ sử dụng trình trích xuất thư viện ExoPlayer.

RTSP

ExoPlayer hỗ trợ cả RTSP trực tiếp và theo yêu cầu. Các định dạng mẫu được hỗ trợ và được liệt kê bên dưới.

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

  • H264 (phần mô tả nội dung nghe nhìn SDP phải bao gồm dữ liệu SPS/PPS trong fmtp để khởi chạy bộ giải mã).
  • AAC (với luồng bit ADTS).
  • AC3.

Các loại mạng được hỗ trợ

  • RTP qua UDP unicast (không hỗ trợ phát đa hướng).
  • RTSP xen kẽ, RTP qua RTSP dùng giao thức TCP.

Định dạng mẫu

Theo mặc định, ExoPlayer sử dụng bộ giải mã nền tảng của Android. Do đó, các thành phần được hỗ trợ các định dạng mẫu phụ thuộc vào nền tảng cơ bản chứ không phải ExoPlayer. Tham khảo Định dạng nội dung nghe nhìn được hỗ trợ cho tài liệu về các định dạng mẫu được thiết bị Android hỗ trợ. Lưu ý rằng thiết bị riêng lẻ có thể hỗ trợ các định dạng khác ngoài các định dạng được liệt kê.

Ngoài bộ giải mã nền tảng của Android, ExoPlayer cũng có thể tận dụng tiện ích giải mã phần mềm. Các ứng dụng này phải được tạo theo cách thủ công và được đưa vào các dự án muốn sử dụng chúng. Chúng tôi hiện cung cấp bộ giải mã phần mềm thư viện dành cho AV1, Phó chủ tịch, FLAC, Opus, và FFmpeg.

Thư viện FFmpeg

Thư viện FFmpeg hỗ trợ giải mã nhiều định dạng mẫu âm thanh. Bạn có thể chọn để đưa vào khi xây dựng thư viện, như được ghi trong README.md của thư viện. Chiến lược phát hành đĩa đơn bảng sau cung cấp ánh xạ từ định dạng mẫu âm thanh đến Tên bộ giải mã FFmpeg.

Định dạng mẫu Tên bộ giải mã
Vorbis Vorbis
Opus công trình
FLAC flac
ALAC (Dịch vụ giao tiếp đa dạng) chim alac
Định luật PCM pcm_mulaw
Luật về PCM A pcm_alaw
MP1, MP2, MP3 mp3
AMR-NB amrnb
AMR-WB amrwb
(chuẩn) AAC aac
AC-3 ac3
E-AC-3 eac3
DTS, DTS-HD dca
TrueHD mlp truehd

Hình ảnh

ExoPlayer hỗ trợ các định dạng hình ảnh sau. Xem Thư viện tải hình ảnh về cách tích hợp với các thư viện bên ngoài có thể hỗ trợ cho các định dạng khác nhau.

Định dạng hình ảnh Có thể làm Ghi chú
BMP
GIF KHÔNG Không hỗ trợ Trình trích xuất
JPEG
Ảnh chuyển động JPEG Hỗ trợ hình ảnh và video tĩnh
JPEG Ultra HDR Quay lại SDR trước phiên bản Android 14 trở lên màn hình không hỗ trợ HDR
PNG
WebP
HEIF/HEIC
Ảnh chuyển động HEIC Một phần Chỉ hỗ trợ ảnh tĩnh*
AVIF (cơ sở) Chỉ được giải mã trên Android 14 trở lên

* Phần video của ảnh chuyển động HEIC có thể thu được bằng MetadataRetriever và phát dưới dạng tệp độc lập.

Định dạng phụ đề độc lập

ExoPlayer hỗ trợ các tệp phụ đề độc lập ở nhiều định dạng. Phụ đề có thể tải không qua cửa hàng ứng dụng như mô tả trên trang mục nội dung nghe nhìn.

Định dạng vùng chứa Có thể làm Loại MIME
WebVTT MimeTypes.TEXT_VTT
TTML / SMPTE-TT MimeTypes.APPLICATION_TTML
SubRip MimeTypes.APPLICATION_SUBRIP
SubStationAlpha (SSA/ASS) MimeTypes.TEXT_SSA

Phát video HDR

ExoPlayer xử lý việc trích xuất video có dải động cao (HDR) trong nhiều vùng chứa, bao gồm cả Dolby Vision trong MP4 và HDR10+ trong Matroska/WebM. Giải mã và việc hiển thị nội dung HDR phụ thuộc vào sự hỗ trợ của nền tảng Android và thiết bị. Xem Phát video HDR để tìm hiểu về cách kiểm tra khả năng giải mã/hiển thị HDR cũng như những hạn chế của Hỗ trợ HDR trên các phiên bản Android.

Khi phát một luồng HDR yêu cầu hỗ trợ cho một cấu hình bộ mã hoá và giải mã cụ thể, Bộ chọn MediaCodec mặc định của ExoPlayer sẽ chọn một bộ giải mã hỗ trợ cấu hình (nếu có), ngay cả khi một bộ giải mã khác cho cùng loại MIME mà không hỗ trợ cấu hình đó xuất hiện ở vị trí cao hơn trong danh sách bộ mã hoá và giải mã. Điều này có thể dẫn đến trong việc chọn bộ giải mã phần mềm trong trường hợp luồng vượt quá khả năng của bộ giải mã phần cứng cho cùng một loại MIME.