Android MediaCodec出现storeMetaDataInBuffers跟踪错误

Android MediaCodec出现storeMetaDataInBuffers跟踪错误,android,encoding,android-mediacodec,Android,Encoding,Android Mediacodec,在Android中通过MediaCodec编码时,我正在记录下一个错误 实际的编码工作正常,输出正确,所以我真的不明白为什么会得到这个跟踪。这是一个无害的错误跟踪,还是我遗漏了什么 E/ACodec(6438):[OMX.qcom.video.encoder.h263]存储元数据缓冲区(输出)失败,w/err-1010 接下来是我获取跟踪的代码 final int BIT_RATE = 4000000; final int FRAME_RATE = 30; fin

在Android中通过MediaCodec编码时,我正在记录下一个错误

实际的编码工作正常,输出正确,所以我真的不明白为什么会得到这个跟踪。这是一个无害的错误跟踪,还是我遗漏了什么

E/ACodec(6438):[OMX.qcom.video.encoder.h263]存储元数据缓冲区(输出)失败,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);
//---------------------------------

这是无害的,大多数设备都显示了这一点。见第12题


这只说明编码器不支持第一种信号表面编码方式,因此它使用了其他一些设置方式。(MediaCodec/ACodec层可以通过多种方式告知各个编码器相关信息。)

前面的答案表明该警告是无害的。
日志中的一些附加信息及其背后的原因

日志中的此跟踪表明
编码器在
输出
端口上不支持
storeMetadataInBuffers
。对于
编码器
,在
输入
输出
端口上都支持此模式

此模式用于
输入
端口,以
元数据
格式传递原始图像数据,即仅传递对
gralloc
句柄的引用,该句柄可由
编码器
访问数据。这由
摄像机
和/或其他
屏幕记录
应用程序使用,以将对
YUV
数据的引用传递给编码器


输出
端口支持
元数据
模式,也支持潜在的输出
位流
数据封装。例如,当
Miracast
WiFi显示
会话处于活动状态,并且编码的数据像高级内容一样安全时,有必要保护
编码器
HDCP
加密模块之间的数据,在此期间
元数据
格式变得方便。没有多少编码器支持此模式,因此,您会看到此警告

那么,是否可以设置任何配置标志来避免此跟踪,或者跟踪只是提供信息?@PerracoLabs。。它只是提供信息,因为它是
Stagefright
框架的一部分。我认为这很容易被忽视。请注意,相同的打印适用于
输入
输出
端口。编码器应在
输入
端口上支持此模式,以实现最佳使用。