Bắt đầu

Đối với các trường hợp sử dụng đơn giản, hãy bắt đầu với ExoPlayer bao gồm việc triển khai các bước sau:

  1. Thêm ExoPlayer làm phần phụ thuộc vào dự án của bạn.
  2. Tạo một thực thể ExoPlayer.
  3. Đính kèm trình phát vào một khung hiển thị (cho đầu ra video và hoạt động đầu vào của người dùng).
  4. Chuẩn bị cho người chơi một MediaItem để chơi.
  5. Thả trình phát khi hoàn tất.

Các bước này được mô tả chi tiết hơn bên dưới. Để xem ví dụ đầy đủ, hãy tham khảo PlayerActivity trong ứng dụng minh hoạ chính.

Thêm ExoPlayer làm phần phụ thuộc

Thêm các mô-đun ExoPlayer

Cách dễ nhất để bắt đầu sử dụng AndroidX Media3 là thêm gradle các phần phụ thuộc trên các thư viện mà bạn cần trong tệp build.gradle của ứng dụng .

Ví dụ: để phụ thuộc vào ExoPlayer với khả năng hỗ trợ phát DASH và các thành phần giao diện người dùng bạn có thể thêm các phần phụ thuộc trên các mô-đun như sau:

Kotlin

implementation("androidx.media3:media3-exoplayer:1.4.1")
implementation("androidx.media3:media3-exoplayer-dash:1.4.1")
implementation("androidx.media3:media3-ui:1.4.1")

Groovy

implementation "androidx.media3:media3-exoplayer:1.4.1"
implementation "androidx.media3:media3-exoplayer-dash:1.4.1"
implementation "androidx.media3:media3-ui:1.4.1"

trong đó 1.4.1 là phiên bản ưa thích của bạn (có thể tìm thấy phiên bản mới nhất bằng tham khảo ghi chú phát hành). Tất cả mô-đun phải cùng một phiên bản.

AndroidX Media3 có các mô-đun thư viện phụ thuộc vào các thư viện bên ngoài để cung cấp thêm chức năng. Một số có sẵn trong kho lưu trữ Maven, trong khi các kho lưu trữ khác phải được tạo theo cách thủ công. Duyệt xem thư mục thư viện và xem các README riêng lẻ để biết thông tin chi tiết.

Bạn có thể xem thêm thông tin về các mô-đun thư viện có sẵn trên Trang Google Maven AndroidX Media.

Bật tính năng hỗ trợ Java 8

Nếu chưa bật, bạn cần bật tính năng hỗ trợ Java 8 trong tất cả build.gradle tệp phụ thuộc vào ExoPlayer, bằng cách thêm đoạn mã sau vào phần android:

compileOptions {
  targetCompatibility JavaVersion.VERSION_1_8
}

Bật multidex

Nếu Gradle minSdkVersion của bạn là 20 trở xuống, bạn nên bật multidex theo thứ tự để tránh lỗi bản dựng.

Tạo trình phát

Bạn có thể tạo một thực thể ExoPlayer bằng cách sử dụng ExoPlayer.Builder, thực thể này cung cấp nhiều lựa chọn tuỳ chỉnh. Mã sau đây là ví dụ đơn giản nhất cho tạo một phiên bản.

Kotlin

val player = ExoPlayer.Builder(context).build()

Java

ExoPlayer player = new ExoPlayer.Builder(context).build();

Lưu ý về việc tạo chuỗi

Bạn phải truy cập các thực thể ExoPlayer từ một luồng ứng dụng. Đối với đại đa số trường hợp, đây sẽ là luồng chính của ứng dụng. Sử dụng luồng chính của ứng dụng là một yêu cầu khi sử dụng thành phần giao diện người dùng của ExoPlayer hoặc phần mở rộng IMA.

Bạn có thể xác định rõ ràng luồng mà trên đó một thực thể ExoPlayer phải được truy cập được chỉ định bằng cách truyền Looper khi tạo trình phát. Nếu không có Looper đã chỉ định, thì Looper của luồng mà trình phát được tạo trên đó là được sử dụng hoặc nếu luồng đó không có Looper, Looper của luồng chính của ứng dụng được sử dụng. Trong mọi trường hợp, Looper của chuỗi từ mà người chơi phải truy cập và có thể được truy vấn bằng cách sử dụng Player.getApplicationLooper.

Để biết thêm thông tin về mô hình phân luồng của ExoPlayer, hãy xem "Mô hình tạo luồng" của ExoPlayer Javadoc.

Đính kèm trình phát vào chế độ xem

Thư viện ExoPlayer cung cấp một loạt thành phần giao diện người dùng dựng sẵn cho nội dung đa phương tiện video. Các đối tượng này bao gồm PlayerView, gói này đóng gói một PlayerControlView, SubtitleViewSurface trên video nào là kết xuất. Bạn có thể đưa PlayerView vào tệp xml bố cục của ứng dụng. Ví dụ: để liên kết trình phát với khung hiển thị:

Kotlin

// Bind the player to the view.
playerView.player = player

Java

// Bind the player to the view.
playerView.setPlayer(player);

Bạn cũng có thể sử dụng PlayerControlView như một thành phần độc lập, tức là rất hữu ích đối với những trường hợp chỉ sử dụng âm thanh.

Bạn không bắt buộc phải sử dụng các thành phần giao diện người dùng dựng sẵn của ExoPlayer. Đối với ứng dụng video triển khai giao diện người dùng riêng, SurfaceView, TextureView, Bạn có thể đặt SurfaceHolder hoặc Surface bằng cách sử dụng đoạn mã setVideoSurfaceView, setVideoTextureView, setVideoSurfaceHoldersetVideoSurface tương ứng. Phương thức addTextOutput của ExoPlayer có thể được dùng để nhận phụ đề sẽ hiển thị trong khi phát.

Điền sẵn danh sách phát và chuẩn bị trình phát

Trong ExoPlayer, mọi nội dung đa phương tiện đều được biểu thị bằng MediaItem. Để phát một phần nội dung nghe nhìn, bạn cần tạo một MediaItem tương ứng, thêm nó vào trình phát, chuẩn bị trình phát rồi gọi play để bắt đầu phát:

Kotlin

// Build the media item.
val mediaItem = MediaItem.fromUri(videoUri)
// Set the media item to be played.
player.setMediaItem(mediaItem)
// Prepare the player.
player.prepare()
// Start the playback.
player.play()

Java

// Build the media item.
MediaItem mediaItem = MediaItem.fromUri(videoUri);
// Set the media item to be played.
player.setMediaItem(mediaItem);
// Prepare the player.
player.prepare();
// Start the playback.
player.play();

ExoPlayer hỗ trợ trực tiếp danh sách phát nên có thể chuẩn bị trình phát với nhiều mục nội dung nghe nhìn được phát lần lượt:

Kotlin

// Build the media items.
val firstItem = MediaItem.fromUri(firstVideoUri)
val secondItem = MediaItem.fromUri(secondVideoUri)
// Add the media items to be played.
player.addMediaItem(firstItem)
player.addMediaItem(secondItem)
// Prepare the player.
player.prepare()
// Start the playback.
player.play()

Java

// Build the media items.
MediaItem firstItem = MediaItem.fromUri(firstVideoUri);
MediaItem secondItem = MediaItem.fromUri(secondVideoUri);
// Add the media items to be played.
player.addMediaItem(firstItem);
player.addMediaItem(secondItem);
// Prepare the player.
player.prepare();
// Start the playback.
player.play();

Có thể cập nhật danh sách phát trong khi phát mà không cần chuẩn bị trình phát. Đọc thêm về cách điền và điều chỉnh danh sách phát trên Trang Danh sách phát. Đọc thêm về các lựa chọn khác có sẵn khi tạo các mục nội dung đa phương tiện, chẳng hạn như cắt và đính kèm tệp phụ đề, trên Trang mục nội dung đa phương tiện.

Điều khiển trình phát

Sau khi chuẩn bị trình phát, bạn có thể kiểm soát quá trình phát bằng các phương thức gọi trên trình phát. Sau đây là một số phương pháp thường dùng nhất:

  • playpause bắt đầu và tạm dừng phát.
  • seekTo cho phép tua trong nội dung nghe nhìn.
  • hasPrevious, hasNext, previousnext cho phép điều hướng qua danh sách phát.
  • setRepeatMode kiểm soát việc nội dung nghe nhìn có được lặp lại hay không và cách lặp lại.
  • setShuffleModeEnabled điều khiển việc phát ngẫu nhiên danh sách phát.
  • setPlaybackParameters điều chỉnh tốc độ phát và cao độ của âm thanh.

Nếu người chơi được liên kết với một PlayerView hoặc PlayerControlView, thì khi người dùng tương tác với các thành phần này, các phương thức tương ứng sẽ được sử dụng trình phát sẽ được gọi.

Thả trình phát

Bạn cần phải huỷ bỏ trình phát khi không còn cần nữa để giải phóng hạn chế các tài nguyên như bộ giải mã video để các ứng dụng khác sử dụng. Chiến dịch này có thể thực hiện được bằng cách gọi ExoPlayer.release.