Mediacodec 果冻豆

Posted

技术标签:

【中文标题】Mediacodec 果冻豆【英文标题】:Mediacodec jelly-bean 【发布时间】:2013-02-12 21:23:27 【问题描述】:

我正在为 jelly-bean 上的 .mp4 文件使用媒体编解码器并在 logcat 中获取它

02-27 12:12:13.645: A/ACodec(6760): frameworks/av/media/libstagefright/ACodec.cpp:1041 CHECK(def.nBufferSize >= size) failed.
02-27 12:12:13.645: A/libc(6760): Fatal signal 11 (SIGSEGV) at 0xdeadbaad (code=1), thread 6778 (CodecLooper)

谁能告诉我这是什么? 以及如何解决?

【问题讨论】:

你找到解决办法了吗?我也在一些特定的设备上得到了这个 【参考方案1】:

您提供的信息不多,所以答案如下:

看起来是 libstagefright 库的内部检查。

我在 Samsung Tab 2 的解码器配置上遇到了同样的错误。

mDecoder = MediaCodec.createDecoderByType(mime);

解码器创建后,它通过从提取器(又名解复用器)接收到的输入格式进行配置

MediaFormat inputFormat = extractor.getTrackFormat(i);

mDecoder.configure(inputFormat, null, null, 0); // <-- crashes here

修复(放在 mDecoder.configure 之前):

inputFormat.setInteger(MediaFormat.KEY_MAX_INPUT_SIZE, 0);

【讨论】:

是的,这就是问题(Max_input_size)。我忘记发布解决方案了。

以上是关于Mediacodec 果冻豆的主要内容,如果未能解决你的问题,请参考以下文章

Android MultiMedia框架——MediaCodec编码(下)

使用 MediaCodec 和 Surface 进行 Android 编码

Android媒体解码MediaCodec MediaExtractor学习

MediaCodec编码结合FFmpeg封装流

在异步模式下使用 MediaCodec,问题是,我没有得到 MediaCodec.BUFFER_FLAG_END_OF_STREAM

如何使用 MediaCodec 将位图编码为视频?