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** |
Ogg | CÓ | Chứa Vorbis, Opus và FLAC |
WAV | CÓ | |
MPEG-TS | CÓ | |
MPEG–PS | CÓ | |
FLV | CÓ | Không thể tua* |
ADTS (AAC) | CÓ | Chỉ có thể tua bằng tính năng tua theo tốc độ bit không đổi** |
FLAC | CÓ | Sử dụng thư viện FLAC hoặc trình trích xuất FLAC trong thư viện ExoPlayer*** |
AMR | CÓ | Chỉ có thể tua bằng tính năng tua theo tốc độ bit không đổi** |
* 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ính năng tua, bạn nên sử dụng định dạng vùng chứa phù 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. Chức năng 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 sẽ xuất ra âm thanh thô mà khung có thể xử lý trên mọi cấp độ API. Trình trích xuất FLAC của thư viện ExoPlayer sẽ xuất ra các khung âm thanh FLAC và do đó, dựa vào việc có bộ giải mã FLAC (ví dụ: bộ giải mã MediaCodec
xử lý FLAC (bắt buộc từ API cấp 27) hoặc thư viện FFmpeg đã 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 phát sẽ sử dụng trình trích xuất thư viện ExoPlayer.
Sử dụng MediaItem
Để phát luồng tăng tiến, hãy tạo một MediaItem
bằng URI nội dung đa phương tiện và truyền URI đó đến trình phát.
Kotlin
// Create a player instance. val player = ExoPlayer.Builder(context).build() // Set the media item to be played. player.setMediaItem(MediaItem.fromUri(progressiveUri)) // Prepare the player. player.prepare()
Java
// Create a player instance. ExoPlayer player = new ExoPlayer.Builder(context).build(); // Set the media item to be played. player.setMediaItem(MediaItem.fromUri(progressiveUri)); // Prepare the player. player.prepare();
Sử dụng ProgressiveMediaSource
Để có thêm các tuỳ chọn tuỳ chỉnh, bạn có thể tạo ProgressiveMediaSource
và truyền trực tiếp ProgressiveMediaSource
đó đến người chơi thay vì MediaItem
.
Kotlin
// Create a data source factory. val dataSourceFactory: DataSource.Factory = DefaultHttpDataSource.Factory() // Create a progressive media source pointing to a stream uri. val mediaSource: MediaSource = ProgressiveMediaSource.Factory(dataSourceFactory) .createMediaSource(MediaItem.fromUri(progressiveUri)) // Create a player instance. val player = ExoPlayer.Builder(context).build() // Set the media source to be played. player.setMediaSource(mediaSource) // Prepare the player. player.prepare()
Java
// Create a data source factory. DataSource.Factory dataSourceFactory = new DefaultHttpDataSource.Factory(); // Create a progressive media source pointing to a stream uri. MediaSource mediaSource = new ProgressiveMediaSource.Factory(dataSourceFactory) .createMediaSource(MediaItem.fromUri(progressiveUri)); // Create a player instance. ExoPlayer player = new ExoPlayer.Builder(context).build(); // Set the media source to be played. player.setMediaSource(mediaSource); // Prepare the player. player.prepare();
Tuỳ chỉnh chế độ phát
ExoPlayer cung cấp nhiều cách để bạn điều chỉnh trải nghiệm phát cho phù hợp với của ứng dụng. Hãy xem trang Tuỳ chỉnh để tham khảo ví dụ.