自定义

如需控制 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 将其注入转换器。