หากต้องการควบคุมลักษณะการทำงานของ Transformer คุณสามารถกำหนดค่าตัวเลือกใน API Surface หรือแทนที่ฟังก์ชันการทำงานบางส่วนทั้งหมดด้วยการเขียนการใช้งานอินเทอร์เฟซที่กำหนดเองและส่งผ่านการใช้งานเหล่านั้น หน้านี้จะอธิบายตัวอย่างบางส่วน
ควบคุมการกำหนดค่าตัวแปลงสัญญาณ
โดยค่าเริ่มต้น Transformer จะกลับไปใช้ความละเอียดที่รองรับหากตัวเข้ารหัสฮาร์ดแวร์ของอุปกรณ์ไม่ยอมรับความละเอียดเอาต์พุตที่ขอ ตัวอย่างเช่น Transformer สามารถจัดแนวความกว้างและความสูงของเอาต์พุตให้เป็นค่าที่หารด้วย 2 หรือ 16 ลงตัวได้ ซึ่งเป็นสิ่งที่ตัวเข้ารหัสฮาร์ดแวร์มักกำหนด คุณสามารถปิดลักษณะการทำงานนี้เพื่อให้ Transformer แสดงข้อผิดพลาดแทนหากไม่สามารถสร้างความละเอียดเอาต์พุตที่ต้องการได้
Kotlin
transformerBuilder.setEncoderFactory( DefaultEncoderFactory.Builder(context).setEnableFallback(false).build() )
Java
transformerBuilder.setEncoderFactory( new DefaultEncoderFactory.Builder(context).setEnableFallback(false).build());
ในทำนองเดียวกัน DefaultEncoderFactory ยังรองรับการใช้การตั้งค่าการเข้ารหัสที่กำหนดเองด้วยตัวเลือก setRequestedVideoEncoderSettings
นอกจากนี้ คุณยังแทนที่ Factory สำหรับตัวเข้ารหัสและตัวถอดรหัสทั้งหมดเพื่อควบคุมวิธีตั้งค่าตัวแปลงสัญญาณได้อย่างเต็มที่
Muxer ที่กำหนดเอง
คุณสามารถตั้งค่า Muxer ที่กำหนดเองสำหรับการเขียนคอนเทนเนอร์สื่อได้โดยเรียกใช้ Transformer.setMuxerFactory ตัวอย่างเช่น หากคุณใช้ Muxer ของตนเองที่
ระดับแอปพลิเคชัน คุณสามารถเขียน Wrapper ที่ใช้ Muxer
อินเทอร์เฟซ แล้วใช้ setMuxerFactory เพื่อแทรกลงใน Transformer
หาก Muxer ที่กำหนดเองรองรับการเขียนการประทับเวลาที่เป็นค่าลบในรายการแก้ไข MP4 คุณ
ควรตรวจสอบว่า
Muxer.Factory#supportsWritingNegativeTimestampsInEditList แสดงผลเป็น
true ซึ่งจะช่วยให้ Transformer ทำการเพิ่มประสิทธิภาพได้ เช่น การแก้ไขแบบตัดแต่งเท่านั้นโดยใช้รายการแก้ไข MP4 โดยไม่ต้องเข้ารหัสวิดีโอใหม่ InAppMp4Muxer เริ่มต้นรองรับฟีเจอร์นี้อยู่แล้ว