Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – 使用MediaCodec和MTK Codec进行编码时选择H264配置文件大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我们有一款将视频编码为H264的Android应用.在所有以前尝试过的Android设备上,这会编码到我需要的Baseline配置文件.

在联想Yoga 10上,编解码器是OMX.MTK.VIDEO.ENCODER.AVC.这将视频编码为High Profile,这给接收设备带来了问题.

我正在使用MediaCodec.似乎没有办法设置要使用的配置文件.

有没有办法做到这一点?编解码器声称支持Baseline配置文件,但无法使用它.是否有针对此的编解码器特定参数?

最佳答案
您可以尝试将密钥配置文件添加到MediaFormat,值为1(OMX_VIDEO_AVCProfileBaselinE).如果这样做,您可能还需要添加一个与您的分辨率匹配的级别值的键级别(使用OMX AVC级别常量中的值).

我不确定这个编解码器是否真的尊重请求的值,但它可能值得一试.

有关设置过程的示例,请参阅https://android.googlesource.com/platform/frameworks/av/+/6ade04174/media/libstagefright/ACodec.cpp中的setupAVCEncoderParameters函数.它在输入参数中查找配置文件键(从您提供的MediaFormat中复制),但如果存在,您还需要提供一个级别参数,以及使用的级别取决于您的分辨率.有关可用于参数的常量值,请参见https://android.googlesource.com/platform/frameworks/native/+/cde4b13a/include/media/openmax/OMX_Video.h.

但是在检查了配置文件和级别参数之后,无论设置什么,它似乎都会将配置文件覆盖到基线.因此,这些行已从您的设备中删除,或者编码器完全忽略h264type.eProfile字段.

如果某人的源树更接近设备上实际使用的源代码树,那么检查它会更好.

有关如何为您的分辨率选择合适级别的示例,请查看http://git.videolan.org/?p=x264.git;a=blob;f=encoder/set.c;h=1a40b71284中的x264_validate_levels(但传递给MediaFormat的级别需要使用OMX_VIDEO_AVCLEVELTYPE常量表示).

不确定这有什么帮助,但它至少值得一试.

大佬总结

以上是大佬教程为你收集整理的android – 使用MediaCodec和MTK Codec进行编码时选择H264配置文件全部内容,希望文章能够帮你解决android – 使用MediaCodec和MTK Codec进行编码时选择H264配置文件所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。