Bắt đầu

Đối với các trường hợp sử dụng đơn giản, việc bắt đầu sử dụng 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. Để biết 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 các phần phụ thuộc gradle vào các thư viện mà bạn cần trong tệp build.gradle của mô-đun ứng dụng.

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

Kotlin

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

Groovy

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

trong đó 1.3.1 là phiên bản ưu tiên của bạn (bạn có thể tìm phiên bản mới nhất bằng cách tham khảo ghi chú phát hành). Tất cả các mô-đun phải là 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ố hàm có sẵn từ kho lưu trữ Maven, trong khi một số khác phải được tạo theo cách thủ công. Duyệt qua thư mục thư viện và xem từng tệp README để 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ó trên trang của 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 mọi tệp build.gradle 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 minSdkVersion của Gradle là từ 20 trở xuống, bạn nên bật multidex để 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. Phiên bản này cung cấp nhiều tuỳ chọn tuỳ chỉnh. Mã sau đây là ví dụ đơn giản nhất về cách tạo một thực thể.

Kotlin

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

Java

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

Lưu ý về việc tạo luồng

Bạn phải truy cập vào các thực thể ExoPlayer từ một luồng ứng dụng duy nhất. Trong phần lớn trường hợp, đây nên là luồng chính của ứng dụng. Bạn bắt buộc phải sử dụng luồng chính của ứng dụng khi sử dụng các thành phần giao diện người dùng của ExoPlayer hoặc tiện ích IMA.

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

Để biết thêm thông tin về mô hình phân luồng của ExoPlayer, vui lòng xem phần "Mô hình phân luồng" trong Javadoc cho ExoPlayer.

Đính kèm trình phát vào một khung hiển thị

Thư viện ExoPlayer cung cấp một loạt các thành phần giao diện người dùng được tạo sẵn để phát nội dung nghe nhìn. Các đối tượng này bao gồm PlayerView, đóng gói PlayerControlView, SubtitleViewSurface trên video được hiển thị. 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 chế độ xem:

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, điều này rất hữu ích đối với các trường hợp sử dụng chỉ â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 tạo sẵn của ExoPlayer. Đối với các ứng dụng video triển khai giao diện người dùng riêng, bạn có thể đặt SurfaceView, TextureView, SurfaceHolder hoặc Surface mục tiêu bằng phương thức setVideoSurfaceView, setVideoTextureView, setVideoSurfaceHoldersetVideoSurface của ExoPlayer. Bạn có thể sử dụng phương thức addTextOutput của ExoPlayer để nhận phụ đề sẽ được kết xuất trong khi phát.

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

Trong ExoPlayer, mỗi nội dung nghe nhìn được biểu thị bằng một MediaItem. Để phát một nội dung nghe nhìn, bạn cần tạo một MediaItem tương ứng, thêm nội dung đó vào trình phát, chuẩn bị trình phát và 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, vì vậy, bạn có thể chuẩn bị trình phát lần lượt nhiều mục nội dung đa phương tiện:

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ị lại trình phát. Đọc thêm về cách điền và thao tác với danh sách phát trên trang Danh sách phát. Hãy đọc thêm về các tuỳ chọn hiện có khi tạo mục nội dung nghe nhìn, chẳng hạn như cắt và đính kèm tệp phụ đề, trên trang mục Nội dung nghe nhìn.

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

Khi trình phát đã được chuẩn bị, bạn có thể điều khiển quá trình phát bằng các phương thức gọi trên trình phát. Dưới đây là một số phương thức phổ biến nhất:

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

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

Thả trình phát

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