Jetpack Media3 เป็นบ้านหลังใหม่ของคลังสื่อที่ช่วยให้แอป Android แสดงประสบการณ์เสียงและภาพอย่างเต็มรูปแบบ Media3 มีสถาปัตยกรรมที่เรียบง่ายพร้อมการปรับแต่งที่มีประสิทธิภาพ ความน่าเชื่อถือ และการเพิ่มประสิทธิภาพตามความสามารถของอุปกรณ์เพื่อลดความซับซ้อนที่เกิดจากการแยกส่วน
เอกสารนี้จะแนะนำ API หลักๆ สำหรับการใช้ Use Case การเล่นและการแก้ไขด้วย Media3
คอมโพเนนต์การเล่น
Media3 มีคอมโพเนนต์หลักหลายรายการสําหรับ Use Case การเล่น คุณคงคุ้นเคยกับคลาสที่ประกอบขึ้นเป็นคอมโพเนนต์เหล่านี้หากเคยใช้ไลบรารีสื่อ 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
|
ดูข้อมูลเพิ่มเติมเกี่ยวกับ Media3 MediaSession
คอมโพเนนต์ UI
Media3 มีคอมโพเนนต์ UI เริ่มต้นสําหรับดูวิดีโอและควบคุมการเล่น
ชั้นเรียน | คำอธิบาย | หมายเหตุการใช้งาน |
---|---|---|
PlayerView |
View เริ่มต้นเพื่อแสดงวิดีโอและตัวควบคุมการเล่น
|
เชื่อมต่อกับ ExoPlayer , MediaController หรือ Player ที่กำหนดเองอื่นๆ
|
ดูข้อมูลเพิ่มเติมเกี่ยวกับ Media3 UI
การแก้ไขคอมโพเนนต์
Media3 มี Transformer API สำหรับ Use Case การแก้ไขสื่อ ซึ่งรวมถึง
- การประมวลผลเสียงและวิดีโอ เช่น การเพิ่มฟิลเตอร์และเอฟเฟกต์
- การจัดการรูปแบบพิเศษ เช่น วิดีโอ HDR และวิดีโอสโลว์โมชัน
- การคอมโพสิชัน เช่น การรวมไฟล์อินพุตหลายไฟล์
- การส่งออกเอาต์พุตสุดท้ายไปยังไฟล์
ชั้นเรียน | คำอธิบาย | หมายเหตุการใช้งาน |
---|---|---|
Transformer |
ใช้คลาส Transformer เพื่อเริ่มและหยุดการเปลี่ยนรูปแบบ และเพื่อตรวจสอบการอัปเดตความคืบหน้าของการเปลี่ยนรูปแบบที่ทำงานอยู่
|
|
Effects |
ออบเจ็กต์ Effects คือคอลเล็กชันเอฟเฟกต์เสียงและวิดีโอที่จะใช้กับรายการสื่อ
|
|
EditedMediaItem |
EditedMediaItem แสดงถึงรายการสื่อที่จะประมวลผลและการแก้ไขที่จะใช้กับรายการนั้น
|
คุณสามารถใช้ ExoPlayer เพื่อดูตัวอย่างเอฟเฟกต์ที่เพิ่มลงในรายการสื่อก่อนเริ่มกระบวนการส่งออก
|
ดูข้อมูลเพิ่มเติมเกี่ยวกับ Media3 Transformer
วิดีโอแนะนำ
ดูวิดีโอด้านล่างเพื่อดูข้อมูลเบื้องต้นเกี่ยวกับ Media3 จากวิศวกรที่เป็นผู้สร้าง
ลิงก์ที่มีประโยชน์
- Media Developer Center
ExoPlayer
เอกสาร- คำแนะนำในการย้ายข้อมูล
- AndroidX Media3 ใน GitHub
- แอปตัวอย่างเซสชันสื่อ Media3
- ตัวอย่างแอป Universal Android Music Player