Jetpack Media3 เป็นศูนย์รวมใหม่สำหรับคลังสื่อที่ช่วยให้แอป Android แสดงประสบการณ์การใช้งานด้านเสียงและภาพที่สมบูรณ์ได้ Media3 มีสถาปัตยกรรมที่ตรงไปตรงมาพร้อมการปรับแต่งที่ทรงพลัง ความน่าเชื่อถือ และการเพิ่มประสิทธิภาพตามความสามารถของอุปกรณ์เพื่อลดความซับซ้อนที่มาพร้อมกับการกระจายตัว
เอกสารนี้จะแนะนำ API ที่สำคัญสำหรับการใช้งาน Use Case การเล่นและการแก้ไขด้วย Media3
คอมโพเนนต์การเล่น
Media3 มีคอมโพเนนต์หลักหลายรายการสำหรับกรณีการใช้งานการเล่น คุณจะคุ้นเคยกับคลาสที่ประกอบขึ้นเป็นคอมโพเนนต์เหล่านี้หากเคยทำงานกับคลังสื่อ Android เวอร์ชันก่อนหน้า
แผนภาพต่อไปนี้แสดงให้เห็นว่าคอมโพเนนต์เหล่านี้รวมกันอย่างไรในแอปทั่วไป
มีเดียเพลเยอร์
มีเดียเพลเยอร์เป็นคอมโพเนนต์ของแอปที่อนุญาตให้เล่นไฟล์สื่อได้ ใน Media3 คุณจะพบสิ่งต่อไปนี้
| ชั้นเรียน | คำอธิบาย | หมายเหตุเกี่ยวกับการติดตั้งใช้งาน |
|---|---|---|
Player |
Player เป็นอินเทอร์เฟซที่กำหนดความสามารถระดับสูงแบบดั้งเดิมสำหรับมีเดียเพลเยอร์ เช่น ความสามารถในการเล่น หยุดชั่วคราว และกรอ
|
ใน Media3 อินเทอร์เฟซ Player เป็น API ทั่วไปที่ติดตั้งใช้งานหรือใช้โดยคอมโพเนนต์หลายรายการ เช่น MediaSession และ MediaController
|
ExoPlayer |
ExoPlayer เป็นการใช้งานเริ่มต้นของอินเทอร์เฟซ Player ใน Media3
|
ดูข้อมูลเพิ่มเติมเกี่ยวกับ Media3 ExoPlayer
เซสชันสื่อ
เซสชันสื่อเป็นวิธีสากลในการโต้ตอบกับมีเดียเพลเยอร์ ซึ่งช่วยให้แอปโฆษณาการเล่นสื่อไปยังแหล่งที่มาภายนอกและรับคำขอตัวควบคุมการเล่นจากแหล่งที่มาภายนอกได้ ใน Media3 คุณจะพบสิ่งต่อไปนี้
| ชั้นเรียน | คำอธิบาย | หมายเหตุเกี่ยวกับการติดตั้งใช้งาน |
|---|---|---|
MediaSession |
เซสชันสื่อช่วยให้แอปโต้ตอบกับโปรแกรมเล่นเสียงหรือวิดีโอได้ โดยจะโฆษณาการเล่นสื่อภายนอกและรับคำสั่งการเล่นจากแหล่งที่มาภายนอก |
ใน Media3 MediaSession ต้องใช้ Player เพื่อเรียกใช้คำสั่งและรับสถานะปัจจุบัน
|
MediaSessionService |
MediaSessionService จะเก็บเซสชันสื่อและเพลเยอร์ที่เกี่ยวข้องไว้ในบริการที่แยกต่างหากจาก Activity หลักของแอปเพื่ออำนวยความสะดวกในการเล่นขณะล็อกหน้าจอหรือขณะใช้แอปอื่น
|
|
MediaController |
โดยทั่วไปแล้ว คลาส MediaController จะใช้เพื่อส่งคำสั่งจากภายนอกแอป เช่น จากแอปอื่นๆ หรือจากระบบเอง
ระบบจะส่งคำสั่งไปยัง Player พื้นฐานของ MediaSession ที่เชื่อมโยง
|
คลาส MediaController จะใช้การติดตั้งใช้งานอินเทอร์เฟซ Player แต่เมื่อเรียกใช้เมธอด MediaController จะส่งคำสั่งไปยัง MediaSession ที่เชื่อมต่ออยู่ แอปไคลเอ็นต์ เช่น Google Assistant สามารถใช้ MediaController เพื่อควบคุมการเล่นในเซสชันที่เชื่อมต่อได้
|
MediaLibraryService |
MediaLibraryService คล้ายกับ MediaSessionService ยกเว้นว่ามี API เพิ่มเติมเพื่อให้คุณแสดงคลังเนื้อหาแก่แอปไคลเอ็นต์ได้
|
|
MediaBrowser |
คลาส MediaBrowser ช่วยให้ผู้ใช้ไปยังส่วนต่างๆ ของคลังเนื้อหาของแอปสื่อและเลือกรายการที่จะเล่นได้
|
คลาส MediaBrowser จะใช้ทั้งอินเทอร์เฟซ MediaController และ Player แอปไคลเอ็นต์ เช่น Android Auto มักจะใช้ MediaBrowser คล้ายกับ MediaController
|
ดูข้อมูลเพิ่มเติมเกี่ยวกับ MediaSession ของ Media3
คอมโพเนนต์ UI
Media3 มีคอมโพเนนต์ UI เริ่มต้นสำหรับการดูวิดีโอและการควบคุมการเล่น
| ชั้นเรียน | คำอธิบาย | หมายเหตุเกี่ยวกับการติดตั้งใช้งาน |
|---|---|---|
PlayerView |
Viewเริ่มต้นเพื่อแสดงวิดีโอและตัวควบคุมการเล่น
|
เชื่อมต่อกับ ExoPlayer, MediaController หรือ Player อื่นๆ ที่กำหนดเอง
|
PlayerSurface |
Composable ที่แสดงถึงภาพวาดเฉพาะ
Surface
เพื่อแสดงวิดีโอ
|
เชื่อมต่อกับ Player ใดก็ได้ แต่ไม่มีตัวควบคุมการเล่น
ใช้สำหรับการแสดงผลเฟรมเท่านั้น และสามารถปรับขนาดตามประเภท
ContentScale ต่างๆ ได้ คุณดู Composable นี้และอื่นๆ อีกมากมายได้ในยูทิลิตี Compose UI
|
ดูข้อมูลเพิ่มเติมเกี่ยวกับ Media3 UI
กำลังแก้ไขคอมโพเนนต์
Media3 มี Transformer API สำหรับกรณีการใช้งานการตัดต่อสื่อ ซึ่งรวมถึงกรณีต่อไปนี้
- การประมวลผลเสียงและวิดีโอ เช่น การเพิ่มฟิลเตอร์และเอฟเฟกต์
- การจัดการรูปแบบพิเศษ เช่น วิดีโอ HDR และวิดีโอสโลว์โมชัน
- การจัดองค์ประกอบ เช่น การรวมไฟล์อินพุตหลายไฟล์เข้าด้วยกัน
- การส่งออกเอาต์พุตสุดท้ายไปยังไฟล์
| ชั้นเรียน | คำอธิบาย | หมายเหตุเกี่ยวกับการติดตั้งใช้งาน |
|---|---|---|
Transformer |
ใช้คลาส Transformer เพื่อเริ่มและหยุดการเปลี่ยนรูปแบบ และเพื่อตรวจสอบการอัปเดตความคืบหน้าของการเปลี่ยนรูปแบบที่กำลังทำงานอยู่
|
|
Effects |
ออบเจ็กต์ Effects คือคอลเล็กชันเอฟเฟกต์เสียงและวิดีโอที่จะใช้กับรายการสื่อ
|
คุณสามารถใช้ ExoPlayer เพื่อดูตัวอย่างเอฟเฟกต์ที่เพิ่มลงในรายการสื่อก่อนเริ่มกระบวนการส่งออกได้
|
EditedMediaItem |
EditedMediaItem แสดงรายการสื่อที่จะประมวลผลและแก้ไขเพื่อนำไปใช้
|
ดูข้อมูลเพิ่มเติมเกี่ยวกับ Media3 Transformer
วิดีโอแนะนำ
ดูวิดีโอนี้เพื่อดูข้อมูลเบื้องต้นเกี่ยวกับ Media3 จากวิศวกรที่สร้างขึ้น
ลิงก์ที่มีประโยชน์
- ศูนย์นักพัฒนาสื่อ
- เอกสาร
ExoPlayerรายการ - คำแนะนำในการย้ายข้อมูล
- AndroidX Media3 ใน GitHub
- แอปตัวอย่างเซสชันสื่อ Media3
- แอปตัวอย่าง Universal Android Music Player