自定义

要控制 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。