สำหรับกรณีการใช้งานง่ายๆ การเริ่มต้นใช้งาน ExoPlayer
ประกอบด้วยการติดตั้งใช้งาน
ขั้นตอนต่อไปนี้
- เพิ่ม ExoPlayer เป็นทรัพยากร Dependency ในโปรเจ็กต์
- สร้างอินสแตนซ์
ExoPlayer
- แนบโปรแกรมเล่นเข้ากับมุมมอง (สำหรับเอาต์พุตวิดีโอและอินพุตของผู้ใช้)
- เตรียมโปรแกรมเล่นด้วย
MediaItem
เพื่อเล่น - ปล่อยโปรแกรมเล่นเมื่อเสร็จแล้ว
ขั้นตอนเหล่านี้ได้รับการอธิบายไว้ด้านล่าง สำหรับตัวอย่างที่สมบูรณ์ โปรดไปที่
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