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 | CÓ | Chỉ những sự kiện phát trực tiếp chưa được phát trực tiếp |
WebM | CÓ | Chỉ những sự kiện phát trực tiếp chưa được phát trực tiếp |
Matroska | CÓ | 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 | CÓ | Thô hoặc nhúng trong FMP4 theo tiêu chuẩn ISO/IEC 14496-30 |
WebVTT | CÓ | Thô hoặc nhúng trong FMP4 theo tiêu chuẩn ISO/IEC 14496-30 |
CEA-608 | CÓ | Đượ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Ó | Đượ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Ó | Được nhúng trong FMP4 |
Bảo vệ nội dung | ||
Widevine | CÓ | "cenc" lược đồ: API 19 trở lên; "cbcs" lược đồ: API 25 trở lên |
PlaySẵn sàng SL2000 | CÓ | Android TV, "cenc" chỉ lược đồ |
Phím Xóa | CÓ | API 21+, "cenc" chỉ lược đồ |
Phát trực tiếp | ||
Phát trực tiếp thường xuyên | CÓ | |
Phát trực tiếp CMAF độ trễ thấp nhất | CÓ | |
Dữ liệu ứng dụng nội dung nghe nhìn phổ biến (CMCD) | CÓ | 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 | CÓ | Chỉ những sự kiện phát trực tiếp chưa được phát trực tiếp |
Phụ đề | ||
TTML | CÓ | Được nhúng trong FMP4 |
Bảo vệ nội dung | ||
PlaySẵn sàng SL2000 | CÓ | Chỉ phát hành cho Android TV |
Phát trực tiếp | ||
Phát trực tiếp thường xuyên | CÓ | |
Dữ liệu ứng dụng nội dung nghe nhìn phổ biến (CMCD) | CÓ | 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 | CÓ | |
FMP4/CMAF | CÓ | |
ADTS (AAC) | CÓ | |
MP3 | CÓ | |
Phụ đề | ||
CEA-608 | CÓ | |
CEA-708 | CÓ | |
WebVTT | CÓ | |
Siêu dữ liệu | ||
Mã nhận dạng 3 | CÓ | |
SCTE-35 | KHÔNG | |
Bảo vệ nội dung | ||
AES-128 | CÓ | |
Mẫu AES-128 | KHÔNG | |
Widevine | CÓ | 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 | CÓ | 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 | CÓ | |
Chặn tải lại danh sách phát | CÓ | |
Chặn hoạt động tải gợi ý tải trước | 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 | CÓ | |
HLS có độ trễ thấp (Apple) | CÓ | |
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) | CÓ | 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 | CÓ | |
M4A | CÓ | |
FMP4 | CÓ | |
WebM | CÓ | |
Matroska | CÓ | |
MP3 | CÓ | 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Ó | Có chứa Vorbis, Opus và FLAC |
WAV | CÓ | |
MPEG-TS | CÓ | |
MPEG–PS | CÓ | |
FLV | CÓ | Không tìm kiếm được* |
ADTS (AAC) | CÓ | 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 | CÓ | Sử dụng thư viện FLAC hoặc trình trích xuất FLAC trong thư viện ExoPlayer*** |
AMR (giờ AMR) | CÓ | 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. Đầ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 | CÓ | |
GIF | KHÔNG | Không hỗ trợ Trình trích xuất |
JPEG | CÓ | |
Ảnh chuyển động JPEG | CÓ | Hỗ trợ hình ảnh và video tĩnh |
PNG | CÓ | |
WebP | CÓ | |
HEIF/HEIC | CÓ | |
Ảnh chuyển động HEIC | Một phần | Chỉ hỗ trợ ảnh tĩnh* |
AVIF (đường cơ sở) | CÓ | 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ể cài đặt 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 | CÓ | MimeTypes.TEXT_VTT |
TTML / SMPTE-TT | CÓ | MimeTypes.APPLICATION_TTML |
SubRip | CÓ | MimeTypes.APPLICATION_SUBRIP |
SubStationAlpha (SSA/ASS) | CÓ | 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 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.