ดูข้อมูลเบื้องต้นเกี่ยวกับรูปแบบสื่อโดยทั่วไปได้ที่หน้ารูปแบบที่ ExoPlayer รองรับ ข้อจำกัดเดียวกันในการโหลด แยก และ ถอดรหัสสตรีมจะมีผลกับ Transformer แม้ว่า Transformer จะไม่รองรับ โมดูลตัวถอดรหัสซอฟต์แวร์ที่มาพร้อมกับ ExoPlayer
นอกจากนี้ Transformer ยังใช้ MediaCodec ในการเข้ารหัส ซึ่งจำกัดรูปแบบเอาต์พุตที่รองรับด้วย
ดูข้อมูลเพิ่มเติมเกี่ยวกับข้อจำกัดในการเข้ารหัสได้ที่วิดีโอโคเดก MediaCodec
โดยค่าเริ่มต้น Transformer จะส่งออกไฟล์ MP4 มาตรฐานโดยใช้ InAppMp4Muxer
หากแอปต้องใช้ MP4 แบบแยกส่วน คุณสามารถส่ง
InAppFragmentedMp4Muxer.Factory
เมื่อเริ่มต้นอินสแตนซ์ Transformer นอกจากนี้ Media3 ยังรองรับรูปแบบอื่นๆ เช่น WebM, AAC, Ogg โดยใช้โปรแกรมมัลติเพล็กซ์เฉพาะ เช่น WebmMuxer
, AacMuxer และ OggMuxer โดยต้องห่อหุ้มด้วยMuxer.Factoryที่กำหนดเองเพื่อแทรก แต่รุ่นในอนาคตจะมีการติดตั้งใช้งานจาก Factory ที่พร้อมใช้งานเพื่อลดความซับซ้อนของกระบวนการนี้
การรองรับรูปภาพ
Transformer ใช้ BitmapFactory เพื่อโหลดและถอดรหัสชิ้นงานรูปภาพทั้งหมด ดังนั้น
Transformer จึงรองรับรูปแบบทั้งหมดที่ BitmapFactory รองรับ ดูประเภทรูปภาพที่รองรับได้ที่การรองรับรูปภาพ สำหรับรูปแบบหลายรูปภาพ (เช่น GIF) ระบบจะแสดงเฟรมรูปภาพเดียว
จากคอนเทนเนอร์หากใช้ DefaultAssetLoaderFactory
รูปแบบพิเศษ
Transformer รองรับการจัดการอินพุตในรูปแบบสื่อใหม่ๆ ที่มีฟีเจอร์พิเศษ เมื่อเทียบกับรูปแบบทั่วไป
การจัดการวิดีโอ HDR
อุปกรณ์จำนวนมากขึ้นเรื่อยๆ รองรับการจับภาพวิดีโอ HDR ซึ่งให้สีสันที่สดใสและแม่นยำยิ่งขึ้น รวมถึงช่วงความสว่างที่กว้างขึ้น
Transformer รองรับการแก้ไขวิดีโอ HDR จาก Android 13 (ระดับ API 33) เป็นต้นไป
ในอุปกรณ์ที่รองรับการเข้ารหัสที่จำเป็น เมื่อตัดต่อวิดีโอ HDR เอฟเฟกต์วิดีโอ GL จะต้องจัดการคอมโพเนนต์สีแบบจุดลอยตัว 16 บิตและพื้นที่สี BT.2020 HDR_MODE_KEEP_HDR เป็นโหมดเริ่มต้นเมื่อสร้าง
Composition หากไม่รองรับการแก้ไข HDR Transformer
จะกลับไปใช้ HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_OPEN_GL
การแปลง HDR เป็น SDR หรือที่เรียกว่าการแมปโทนสีรองรับตั้งแต่ Android 10 (ระดับ API 29) เป็นต้นไปในอุปกรณ์ที่มีการรองรับการถอดรหัสและ OpenGL ที่จำเป็น ซึ่งจะมีประโยชน์เมื่อแชร์สื่อ HDR ไปยังแอปหรือบริการอื่นๆ ที่
ไม่รองรับการส่งผ่านข้อมูลเนื้อหา HDR หากต้องการเปิดใช้การแมปโทนโดยใช้ OpenGL ให้เรียกใช้
setHdrMode(HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_OPEN_GL) เมื่อสร้าง
Composition ตั้งแต่ Android 12 (ระดับ API 31) เป็นต้นไป MediaCodec ยังรองรับการแมปโทนสีในอุปกรณ์บางรุ่น รวมถึงอุปกรณ์ทั้งหมดที่ใช้ Android 13 ขึ้นไปซึ่งบันทึกวิดีโอ HDR ได้ หากต้องการเปิดใช้การแมปโทนโดยใช้
MediaCodec call setHdrMode(HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_MEDIACODEC)
การจัดการสื่อสโลว์โมชัน
วิดีโอสโลว์โมชันมีข้อมูลเมตาที่ระบุความเร็วที่ควรเล่นแต่ละส่วนของสตรีม การรวมคือกระบวนการสร้างวิดีโอสตรีมใหม่ โดยอิงตามวิดีโอสโลว์โมชัน แต่จะเร่งความเร็ว หรือลดความเร็วของส่วนต่างๆ ตามข้อมูลเมตา เพื่อให้เล่นได้อย่างถูกต้องแม้ในเพลเยอร์ ที่ไม่ได้ใช้ข้อมูลเมตาสโลว์โมชัน
หากต้องการทำให้สตรีมสโลว์โมชันราบรื่นขึ้น ให้ใช้เมธอด setFlattenForSlowMotion builder
ใน EditedMediaItem
Kotlin
val editedMediaItem = EditedMediaItem.Builder(inputMediaItem).setFlattenForSlowMotion(true).build() val transformer = Transformer.Builder(context).addListener(transformerListener).build() transformer.start(editedMediaItem, outputPath)
Java
EditedMediaItem editedMediaItem = new EditedMediaItem.Builder(inputMediaItem).setFlattenForSlowMotion(true).build(); Transformer transformer = new Transformer.Builder(context).addListener(transformerListener).build(); transformer.start(editedMediaItem, outputPath);
ซึ่งจะช่วยให้คุณรองรับวิดีโอสโลว์โมชันได้โดยไม่ต้องกังวลเรื่อง การจัดการรูปแบบพิเศษเหล่านี้ สิ่งที่คุณต้องทำคือจัดเก็บและเล่นวิดีโอเวอร์ชันที่ รวมแล้วแทนที่จะเป็นเวอร์ชันต้นฉบับ