通过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);
//---------------------------------
答案 0 :(得分:4)
这是无害的,大多数设备都表明了这一点。见http://bigflake.com/mediacodec/的Q12。
这只说明编码器不支持信令表面编码的第一种方式,因此它使用了其他一些设置方式。 (MediaCodec / ACodec层有多种方式可以告诉单个编码器。)
答案 1 :(得分:3)
之前的回答表明警告是无害的。关于log
的一些其他信息以及相同背后的原因
日志中的此跟踪表明{strong} encoder
端口上的storeMetadataInBuffers
不支持output
。对于encoder
,input
和output
端口都支持此模式。
此input
端口使用此模式以metadata
格式传递原始图像数据,即仅传递gralloc
处理的encoder
句柄的引用访问数据。 camera
和/或其他screen recording
应用程序使用此方法将YUV
数据的引用传递给编码器。
metadata
端口也支持output
模式,也可以封装输出bitstream
数据。例如,当Miracast
或WiFi-Display
会话处于活动状态且正在编码的数据安全(如高级内容)时,有必要保护{{1}之间的数据}和encoder
加密模块,在此期间HDCP
格式变得方便。没有多少metadata
支持此模式,因此,您会观察到此警告。