Nguồn nội dung nghe nhìn

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:

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ụng MediaItem.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ằng adjustPeriodTimeOffsetsclipDurations đượ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ụng MediaItem.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ột Timeline.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ãy Player.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.