如需控制 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
选项使用自定义编码设置。
您还可以完全替换编码器和解码器的工厂,以完全控制编解码器的设置方式。
自定义多路复用器
您可以通过调用 Transformer.setMuxerFactory
设置用于写入媒体容器的自定义多路复用器。例如,如果您在应用级别实现自己的多路复用器,则可以编写一个实现 Muxer
接口的封装容器,然后使用 setMuxerFactory
将其注入转换器。