การปรับแต่ง

หากต้องการควบคุมลักษณะการทำงานของ 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 เริ่มต้นรองรับฟีเจอร์นี้อยู่แล้ว