自定义

如需控制 Transformer 的行为,您可以在 API 界面中配置选项,也可以通过编写接口的自定义实现并传入这些实现来完全替换部分功能。本页介绍了一些示例。

控制编解码器配置

默认情况下,如果设备的硬件编码器不接受请求的输出分辨率,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 将其注入到 Transformer 中。