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