使用MediaCodec API在Android中编码视频时设置AVC / H.264配置文件

前端之家收集整理的这篇文章主要介绍了使用MediaCodec API在Android中编码视频时设置AVC / H.264配置文件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Android提供了一种查询支持的编码配置文件方法.但是在设置编码器时,我找不到指定要使用的所需配置文件方法.

查找支持配置文件/级别对

在android中使用MediaCodec API,一旦选择了编码器组件,就可以调用getCodecInfo().这将返回MediaCodecInfo对象,该对象提供有关正在使用的编解码器组件的详细信息. getCapabilitiesForType()返回CodecCapabilities对象,详细说明编解码器的功能.它包含一个CodecProfileLevel数组,详细说明了支持支持配置文件和级别.

试图设置配置文件

我看不到为MedieCodec或MediaFormat设置配置文件的字段.

MediaFormat有一个KEY_AAC_PROFILE,但在引用中它明确指出这仅适用于aac音频.

在MediaCodec中,有一种方法可以使用setParameters()将一组额外参数传递给编解码器.这似乎没有通用文档,并且接受的参数在编解码器(不同设备)之间会有所不同.

背景

配置文件指定要使用的一组编码功能.简单的配置文件计算量较小,但通常会牺牲给定比特率的质量.级别指定给定配置文件支持的最大分辨率/比特率.我期望水平通常与解码能力相关联,但由于它描述的是必须实时运行的硬件编码器,因此具有最大设置对我来说是有意义的.

Meta :(我最初有更多链接到我提到的每个类功能,但我不得不删除它们,因为我还没有代表发布超过2个链接.)

解决方法

MediaCodec API中没有明确的配置文件选择. Codec将自行选择一个配置文件.它还将根据输入宽度/高度和帧速率数选择一个级别,但它可以选择一个高于配置所需最小级别的级别.

您可以在编码器编解码器中查询支持的级别,以查看它可能生成配置文件,但您将无法选择首选配置文件.编解码器很可能会选择它能够处理给定级别的最高配置文件,但不能保证.

猜你在找的Android相关文章