ดูข้อมูลเบื้องต้นเกี่ยวกับรูปแบบสื่อโดยทั่วไปได้ที่หน้ารูปแบบที่ ExoPlayer รองรับ ข้อจำกัดเดียวกันในการโหลด แยก และ ถอดรหัสสตรีมจะมีผลกับ Transformer แม้ว่า Transformer จะไม่รองรับ โมดูลตัวถอดรหัสซอฟต์แวร์แบบรวมของ ExoPlayer
นอกจากนี้ Transformer ยังอาศัย MediaCodec ในการเข้ารหัส และต้องมัลติเพล็กซ์หรือมักซ์ไฟล์สื่อเอาต์พุต ซึ่งจำกัดรูปแบบเอาต์พุตที่รองรับ ดูข้อมูลเพิ่มเติมเกี่ยวกับข้อจำกัดในการเข้ารหัสได้ที่
ตัวแปลงรหัสวิดีโอ MediaCodec
และดูข้อจำกัดที่ใช้กับคอนเทนเนอร์สื่อเอาต์พุตได้ที่
MediaMuxer Transformer จะส่งออกเฉพาะไฟล์ MP4
โดยค่าเริ่มต้น Transformer จะใช้ MediaMuxer แต่คุณเลือกใช้ InAppMuxer
ที่อยู่ระหว่างการพัฒนาเพื่อหลีกเลี่ยงข้อจำกัดบางอย่างของ MediaMuxer เกี่ยวกับ
โครงสร้างเฟรมอ้างอิงและรูปแบบตัวอย่างที่รองรับได้ Muxer เริ่มต้นจะ
กลายเป็น Muxer ในแอปในรุ่นต่อๆ ไป
การรองรับรูปภาพ
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);
ซึ่งจะช่วยให้คุณรองรับวิดีโอสโลว์โมชันได้โดยไม่ต้องกังวลเรื่อง การจัดการรูปแบบพิเศษเหล่านี้ สิ่งที่คุณต้องทำคือจัดเก็บและเล่นวิดีโอเวอร์ชัน ที่รวมเลเยอร์แล้วแทนเวอร์ชันต้นฉบับ