Trong ExoPlayer, mọi nội dung đa phương tiện đều được biểu thị bằng MediaItem
. Tuy nhiên
nội bộ, người chơi cần có thực thể MediaSource
để phát nội dung. Chiến lược phát hành đĩa đơn
trình phát tạo các video này từ các mục nội dung đa phương tiện bằng MediaSource.Factory
.
Theo mặc định, người chơi sử dụng DefaultMediaSourceFactory
có thể tạo
của các cách triển khai MediaSource
nội dung sau:
DashMediaSource
cho DASH.SsMediaSource
cho mootStreaming.HlsMediaSource
cho HLS.ProgressiveMediaSource
cho các tệp nội dung nghe nhìn thông thường.RtspMediaSource
cho RTSP.
DefaultMediaSourceFactory
cũng có thể tạo các nguồn đa phương tiện phức tạp hơn, tuỳ thuộc vào
về thuộc tính của các mục nội dung đa phương tiện tương ứng. Điều này được mô tả trong phần
thông tin chi tiết về
Trang mục nội dung đa phương tiện.
Đối với các ứng dụng cần thiết lập nguồn nội dung nghe nhìn không được cấu hình mặc định của trình phát, sẽ có một số tuỳ chọn cho phần tuỳ chỉnh.
Tuỳ chỉnh quá trình tạo nguồn nội dung nghe nhìn
Khi tạo trình phát, MediaSource.Factory
có thể được chèn vào. Ví dụ:
nếu một ứng dụng muốn chèn quảng cáo và sử dụng CacheDataSource.Factory
để hỗ trợ
lưu vào bộ nhớ đệm, bạn có thể định cấu hình bản sao của DefaultMediaSourceFactory
để khớp
các yêu cầu này và được chèn trong quá trình tạo trình phát:
Kotlin
val mediaSourceFactory: MediaSource.Factory = DefaultMediaSourceFactory(context) .setDataSourceFactory(cacheDataSourceFactory) .setLocalAdInsertionComponents(adsLoaderProvider, playerView) val player = ExoPlayer.Builder(context).setMediaSourceFactory(mediaSourceFactory).build()
Java
MediaSource.Factory mediaSourceFactory = new DefaultMediaSourceFactory(context) .setDataSourceFactory(cacheDataSourceFactory) .setLocalAdInsertionComponents(adsLoaderProvider, /* adViewProvider= */ playerView); ExoPlayer player = new ExoPlayer.Builder(context).setMediaSourceFactory(mediaSourceFactory).build();
Chiến lược phát hành đĩa đơn
Tài liệu Java DefaultMediaSourceFactory
sẽ mô tả chi tiết hơn về các tuỳ chọn có sẵn.
Bạn cũng có thể chèn một phương thức triển khai MediaSource.Factory
tuỳ chỉnh cho
để hỗ trợ việc tạo loại nguồn nội dung nghe nhìn tuỳ chỉnh. Của nhà máy
createMediaSource(MediaItem)
sẽ được gọi để tạo nguồn nội dung nghe nhìn cho mỗi
mục nội dung đa phương tiện
đã thêm vào danh sách phát.
API danh sách phát dựa trên nguồn phương tiện
Giao diện ExoPlayer
xác định các phương thức danh sách phát bổ sung chấp nhận
nguồn nội dung nghe nhìn thay vì mục nội dung nghe nhìn. Điều này giúp bạn có thể bỏ qua
MediaSource.Factory
nội bộ của trình phát và truyền các bản sao nguồn nội dung đa phương tiện đến
trình phát trực tiếp:
Kotlin
// Set a list of media sources as initial playlist. exoPlayer.setMediaSources(listOfMediaSources) // Add a single media source. exoPlayer.addMediaSource(anotherMediaSource) // Can be combined with the media item API. exoPlayer.addMediaItem(/* index= */ 3, MediaItem.fromUri(videoUri)) exoPlayer.prepare() exoPlayer.play()
Java
// Set a list of media sources as initial playlist. exoPlayer.setMediaSources(listOfMediaSources); // Add a single media source. exoPlayer.addMediaSource(anotherMediaSource); // Can be combined with the media item API. exoPlayer.addMediaItem(/* index= */ 3, MediaItem.fromUri(videoUri)); exoPlayer.prepare(); exoPlayer.play();
Thành phần nguồn nội dung đa phương tiện nâng cao
ExoPlayer cung cấp nhiều cách triển khai MediaSource
để sửa đổi và soạn
các thực thể MediaSource
khác. Các chỉ số này hữu ích nhất trong trường hợp có nhiều
phải được kết hợp và không có đường dẫn thiết lập nào đơn giản hơn
là đủ.
ClippingMediaSource
: Cho phép cắt nội dung nghe nhìn theo phạm vi dấu thời gian được chỉ định. Nếu đây là cách sửa đổi duy nhất, bạn nên sử dụngMediaItem.ClippingConfiguration
.FilteringMediaSource
: Lọc các kênh có sẵn theo các loại đã chỉ định, cho ví dụ: chỉ hiển thị bản nhạc video từ một tệp có chứa cả âm thanh và video. Nếu đây là cách sửa đổi duy nhất, bạn nên sử dụng theo dõi các thông số lựa chọn.MergingMediaSource
: Hợp nhất nhiều nguồn nội dung nghe nhìn để phát song song. Trong hầu hết mọi trường hợp, bạn nên gọi hàm khởi tạo bằngadjustPeriodTimeOffsets
vàclipDurations
được đặt thành true để đảm bảo tất cả nguồn bắt đầu và kết thúc cùng một lúc. Nếu bạn thực hiện sửa đổi này để thêm phụ đề được tải bên cạnh, bạn nên sử dụngMediaItem.SubtitleConfiguration
.ConcatenatingMediaSource2
: Hợp nhất nhiều nguồn nội dung nghe nhìn để phát một cách liên tiếp. Cấu trúc nội dung đa phương tiện mà người dùng thấy được thể hiện mộtTimeline.Window
, nghĩa là thành phần này trông giống như một mục duy nhất. Nếu trường hợp này sửa đổi được thực hiện để phát nhiều mục không được trông giống như một gói duy nhất, bạn nên sử dụng phương thức API danh sách phát như HãyPlayer.addMediaItem
.SilenceMediaSource
: Tạo khoảng lặng trong một khoảng thời gian cụ thể rất hữu ích để bổ sung thông tin còn thiếu.AdsMediaSource
: Mở rộng nguồn nội dung nghe nhìn bằng tính năng chèn quảng cáo phía máy khách các chức năng khác nhau. Tham khảo hướng dẫn chèn quảng cáo để biết thông tin chi tiết.ServerSideAdInsertionMediaSource
: Mở rộng nguồn nội dung nghe nhìn bằng quảng cáo phía máy chủ khả năng chèn. Tham khảo hướng dẫn chèn quảng cáo để biết thông tin chi tiết.