เริ่มต้นใช้งาน

สำหรับกรณีการใช้งานง่ายๆ การเริ่มต้นใช้งาน ExoPlayer ประกอบด้วยการติดตั้งใช้งาน ขั้นตอนต่อไปนี้

  1. เพิ่ม ExoPlayer เป็นทรัพยากร Dependency ในโปรเจ็กต์
  2. สร้างอินสแตนซ์ ExoPlayer
  3. แนบโปรแกรมเล่นเข้ากับมุมมอง (สำหรับเอาต์พุตวิดีโอและอินพุตของผู้ใช้)
  4. เตรียมโปรแกรมเล่นด้วย MediaItem เพื่อเล่น
  5. ปล่อยโปรแกรมเล่นเมื่อเสร็จแล้ว

ขั้นตอนเหล่านี้ได้รับการอธิบายไว้ด้านล่าง สำหรับตัวอย่างที่สมบูรณ์ โปรดไปที่ PlayerActivityในแอปเดโมหลัก

เพิ่ม ExoPlayer เป็นทรัพยากร Dependency

เพิ่มโมดูล ExoPlayer

วิธีที่ง่ายที่สุดในการเริ่มต้นใช้งาน AndroidX Media3 คือการเพิ่ม Gradle ทรัพยากร Dependency ของไลบรารีที่คุณต้องการในไฟล์ build.gradle ของแอป

เช่น ต้องใช้ ExoPlayer ที่รองรับการเล่น DASH และคอมโพเนนต์ UI คุณสามารถเพิ่มการพึ่งพากันลงในโมดูลได้ดังนี้

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")

ดึงดูด

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"

ที่เวอร์ชัน 1.4.1 คือเวอร์ชันที่คุณต้องการ (ดูเวอร์ชันล่าสุดได้จาก โดยดูจากบันทึกประจำรุ่น) โมดูลทั้งหมดต้องเป็นเวอร์ชันเดียวกัน

AndroidX Media3 มีโมดูลไลบรารีที่ขึ้นอยู่กับ ไลบรารีภายนอกเพื่อให้มีฟังก์ชันการทำงานเพิ่มเติม บางรายจะเป็น ที่พร้อมใช้งานจากที่เก็บของ Maven แต่ต้องสร้างส่วนขยายอื่นๆ ด้วยตนเอง เรียกดูไดเรกทอรีไลบรารีและดูรายละเอียด README แต่ละรายการ

สามารถดูข้อมูลเพิ่มเติมเกี่ยวกับโมดูลไลบรารีที่มีอยู่ได้ที่ หน้า Google Maven AndroidX Media

เปิดการสนับสนุน Java 8

หากยังไม่ได้เปิดใช้ คุณต้องเปิดการสนับสนุน Java 8 ใน build.gradle ทั้งหมด ที่ใช้ ExoPlayer ด้วยการเพิ่มไฟล์ต่อไปนี้ในส่วน android

compileOptions {
  targetCompatibility JavaVersion.VERSION_1_8
}

เปิดใช้ multidex

หาก Gradle minSdkVersion เท่ากับ 20 หรือต่ำกว่า คุณควร เปิดใช้ multidex เพื่อ เพื่อป้องกันข้อผิดพลาดในการสร้าง

สร้างโปรแกรมเล่น

คุณสามารถสร้างอินสแตนซ์ ExoPlayer โดยใช้ ExoPlayer.Builder ซึ่งให้ ตัวเลือกการปรับแต่งที่หลากหลาย โค้ดต่อไปนี้เป็นตัวอย่างที่ง่ายที่สุดของ การสร้างอินสแตนซ์

Kotlin

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

Java

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

หมายเหตุเกี่ยวกับการแยกชุดข้อความ

ต้องเข้าถึงอินสแตนซ์ ExoPlayer จากเธรดของแอปพลิเคชันเดี่ยว สำหรับ ในกรณีส่วนใหญ่ นี่ควรเป็นเทรดหลักของแอปพลิเคชัน การใช้ คุณต้องระบุเทรดหลักของแอปพลิเคชันเมื่อใช้คอมโพเนนต์ UI ของ ExoPlayer หรือส่วนขยาย IMA

เทรดที่ต้องเข้าถึงอินสแตนซ์ ExoPlayer ได้อย่างชัดเจน ระบุโดยการส่ง Looper เมื่อสร้างโปรแกรมเล่น หากไม่มี Looper คือ Looper ของชุดข้อความที่ใช้สร้างโปรแกรมเล่น หรือหากชุดข้อความนั้นไม่มี Looper ระบบจะใช้ Looper ของ ด้วยเทรดหลักของแอปพลิเคชัน ในทุกกรณี Looper ของชุดข้อความจาก ที่โปรแกรมเล่นจะต้องเข้าถึง สามารถค้นหาได้โดยใช้ Player.getApplicationLooper

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบการแยกชุดข้อความของ ExoPlayer โปรดดู "รูปแบบชุดข้อความ" ของ ExoPlayer Javadoc

แนบโปรแกรมเล่นกับมุมมอง

ไลบรารี ExoPlayer มีคอมโพเนนต์ UI ที่สร้างไว้ล่วงหน้ามากมายสำหรับสื่อ การเล่น ซึ่งรวมถึง PlayerView ที่สรุป PlayerControlView, SubtitleView และ Surface ไปยังวิดีโอ ที่แสดงผล คุณรวม PlayerView ไว้ใน XML ของเลย์เอาต์ของแอปพลิเคชันได้ เช่น หากต้องการเชื่อมโยงโปรแกรมเล่นกับมุมมอง ให้ทำดังนี้

Kotlin

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

Java

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

คุณยังใช้ PlayerControlView เป็นคอมโพเนนต์แบบสแตนด์อโลนได้ ซึ่ง มีประโยชน์สำหรับกรณีการใช้งานเสียงเท่านั้น

คุณจะใช้คอมโพเนนต์ UI ที่สร้างไว้ล่วงหน้าของ ExoPlayer หรือไม่ก็ได้ สำหรับแอปวิดีโอ ที่ใช้ UI ของตนเอง นั่นคือ SurfaceView, TextureView เป้าหมาย สามารถตั้งค่า SurfaceHolder หรือ Surface โดยใช้ setVideoSurfaceView, setVideoTextureView, setVideoSurfaceHolder และ setVideoSurface วิธีตามลำดับ เมธอด addTextOutput ของ ExoPlayer ทำสิ่งต่อไปนี้ได้ เพื่อใช้เพื่อรับคำบรรยายแทนเสียงที่ควรแสดงผลระหว่างการเล่น

สร้างเพลย์ลิสต์และเตรียมโปรแกรมเล่น

สื่อทุกชิ้นใน ExoPlayer จะแสดงด้วย MediaItem วิธีเล่น ของสื่อ คุณต้องสร้าง MediaItem ที่สอดคล้องกัน แล้วเพิ่มลงใน เตรียมโปรแกรมเล่น และเรียก play เพื่อเริ่มเล่น

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 รองรับเพลย์ลิสต์โดยตรง คุณจึงเตรียมโปรแกรมเล่นได้ โดยใช้รายการสื่อหลายรายการเพื่อเล่นทีละรายการ

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();

ขณะเล่น ก็สามารถอัปเดตเพลย์ลิสต์ได้โดยไม่ต้องเตรียม โปรแกรมเล่นอีกครั้ง อ่านเพิ่มเติมเกี่ยวกับการป้อนข้อมูลและการจัดการเพลย์ลิสต์ใน หน้าเพลย์ลิสต์ อ่านเพิ่มเติมเกี่ยวกับตัวเลือกต่างๆ ที่มีอยู่เมื่อ การสร้างรายการสื่อ เช่น การตัดและการแนบไฟล์คำบรรยายใน หน้ารายการสื่อ

ควบคุมโปรแกรมเล่น

เมื่อเตรียมโปรแกรมเล่นแล้ว คุณสามารถควบคุมการเล่นได้ด้วยวิธีการโทร ในโปรแกรมเล่น วิธีการบางส่วนที่ใช้กันโดยทั่วไปมีดังนี้

  • play และ pause เริ่มเล่นและหยุดเล่นชั่วคราว
  • seekTo อนุญาตให้กรอวิดีโอภายในสื่อ
  • hasPrevious, hasNext, previous และ next อนุญาตให้ใช้การผ่าน เพลย์ลิสต์
  • setRepeatMode จะควบคุมว่าสื่อจะวนซ้ำหรือไม่และอย่างไร
  • setShuffleModeEnabled ควบคุมการสุ่มเพลงในเพลย์ลิสต์
  • setPlaybackParameters ปรับความเร็วในการเล่นและระดับเสียงสูงต่ำ

หากโปรแกรมเล่นเชื่อมโยงกับ PlayerView หรือ PlayerControlView การโต้ตอบของผู้ใช้กับคอมโพเนนต์ จะก่อให้เกิดเมธอดที่สอดคล้องกัน โปรแกรมเล่นที่จะเรียกใช้

ปล่อยโปรแกรมเล่น

การปล่อยโปรแกรมเล่นวิดีโอเมื่อไม่จำเป็นแล้วเป็นสิ่งสำคัญเพื่อปลดปล่อย ใช้ทรัพยากรที่จำกัด เช่น ตัวถอดรหัสวิดีโอเพื่อการใช้งานโดยแอปพลิเคชันอื่น ช่วงเวลานี้ ก็ทำได้โดยโทรไปที่ ExoPlayer.release