MediaCodec给出了storeMetaDataInBuffers跟踪错误

时间:2015-08-08 22:58:36

标签: android encoding mediacodec

通过Android中的MediaCodec进行编码时,我在logcat上遇到了下一个错误。

实际编码工作正常并且输出正确生成,因此我无法理解为什么会得到此跟踪。它是一种无害的错误痕迹,还是我缺少的东西?

E / ACodec(6438):[OMX.qcom.video.encoder.h263] storeMetaDataInBuffers(输出)失败w / err -1010

接下来是我获得跟踪的代码

final int BIT_RATE          = 4000000;
final int FRAME_RATE        = 30;
final int IFRAME_INTERVAL   = 5;
final String MIME_TYPE      = "video/avc";

final MediaFormat format = MediaFormat.createVideoFormat(MIME_TYPE, width, height);
format.setInteger(MediaFormat.KEY_COLOR_FORMAT, MediaCodecInfo.CodecCapabilities.COLOR_FormatSurface);
format.setInteger(MediaFormat.KEY_BIT_RATE, BIT_RATE);
format.setInteger(MediaFormat.KEY_FRAME_RATE, FRAME_RATE);
format.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, IFRAME_INTERVAL);

MediaCodec encoder = MediaCodec.createEncoderByType(MIME_TYPE);

//---------------------------------
// NEXT LINE PRODUCES THE TRACE
encoder.configure(format, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE);
//---------------------------------

2 个答案:

答案 0 :(得分:4)

这是无害的,大多数设备都表明了这一点。见http://bigflake.com/mediacodec/的Q12。

这只说明编码器不支持信令表面编码的第一种方式,因此它使用了其他一些设置方式。 (MediaCodec / ACodec层有多种方式可以告诉单个编码器。)

答案 1 :(得分:3)

之前的回答表明警告是无害的。关于log的一些其他信息以及相同背后的原因

日志中的此跟踪表明{strong} encoder 端口上的storeMetadataInBuffers不支持output。对于encoderinputoutput端口都支持此模式。

input端口使用此模式以metadata格式传递原始图像数据,即仅传递gralloc处理的encoder句柄的引用访问数据。 camera和/或其他screen recording应用程序使用此方法将YUV数据的引用传递给编码器。

metadata端口也支持output模式,也可以封装输出bitstream数据。例如,当MiracastWiFi-Display会话处于活动状态且正在编码的数据安全(如高级内容)时,有必要保护{{1}之间的数据}和encoder加密模块,在此期间HDCP格式变得方便。没有多少metadata支持此模式,因此,您会观察到此警告。