Firefly开源社区

12
发表新贴

MediaCodec解码偶尔会异常导致视频流卡死问题

75

积分

0

威望

0

贡献

技术小白

积分
75
发表于 2016-10-9 16:55:04     
使用Rk3288 pro的板子对取得的rtsp流使用MediaCodec硬解码偶尔会异常导致视频流卡死问题,求大神解决。。。
init如下:
MediaFormat mediaFormat = MediaFormat.createVideoFormat(mMime,mWidth,mHeight);               
                mMediaCodec = MediaCodec.createDecoderByType(mMime);
                if (mMediaCodec == null) {
                        return false;
                }
                mMediaCodec.configure(mediaFormat, mSurface, null, 0);  
                mMediaCodec.start();

decode如下:
ByteBuffer[] inputBuffers = mMediaCodec.getInputBuffers();
//                int inputBufferIndex = mMediaCodec.dequeueInputBuffer(-1);
                int inputBufferIndex = mMediaCodec.dequeueInputBuffer(0);
                if (inputBufferIndex >= 0) {
                    ByteBuffer inputBuffer = inputBuffers[inputBufferIndex];
                    inputBuffer.clear();
                    inputBuffer.put(input,0,length);
                    mMediaCodec.queueInputBuffer(inputBufferIndex, 0, length, 0, 0);
                }
                MediaCodec.BufferInfo bufferInfo = new MediaCodec.BufferInfo();
                int outputBufferIndex = mMediaCodec.dequeueOutputBuffer(bufferInfo,0);
                while (outputBufferIndex >= 0) {
                        mMediaCodec.releaseOutputBuffer(outputBufferIndex, true);
                    outputBufferIndex = mMediaCodec.dequeueOutputBuffer(bufferInfo, 0);
                }
望大家一起讨论解决!
回复

使用道具 举报

488

积分

6

威望

0

贡献

技术达人

Rank: 2

积分
488
QQ
发表于 2016-10-12 09:05:03     
本帖最后由 jingjin221 于 2016-10-12 09:06 编辑

请确定是卡在哪一步了?看代码,应该是卡在获取解码输入缓冲区那里了,dequeueInputBuffer的TIMEOUT不要设置成-1,宁可丢帧也不能一直在那里等待,设置成0或者一个具体时间!
回复

使用道具 举报

75

积分

0

威望

0

贡献

技术小白

积分
75
发表于 2016-10-17 15:25:26     
jingjin221 发表于 2016-10-12 09:05
请确定是卡在哪一步了?看代码,应该是卡在获取解码输入缓冲区那里了,dequeueInputBuffer的TIMEOUT不要设 ...

设置为0或者其他都是一样的结果
回复

使用道具 举报

75

积分

0

威望

0

贡献

技术小白

积分
75
发表于 2016-10-17 15:25:36     
jingjin221 发表于 2016-10-12 09:05
请确定是卡在哪一步了?看代码,应该是卡在获取解码输入缓冲区那里了,dequeueInputBuffer的TIMEOUT不要设 ...

设置为0或者其他都是一样的结果
回复

使用道具 举报

75

积分

0

威望

0

贡献

技术小白

积分
75
发表于 2016-10-17 15:25:35     
jingjin221 发表于 2016-10-12 09:05
请确定是卡在哪一步了?看代码,应该是卡在获取解码输入缓冲区那里了,dequeueInputBuffer的TIMEOUT不要设 ...

设置为0或者其他都是一样的结果
回复

使用道具 举报

75

积分

0

威望

0

贡献

技术小白

积分
75
发表于 2016-10-17 15:25:34     
jingjin221 发表于 2016-10-12 09:05
请确定是卡在哪一步了?看代码,应该是卡在获取解码输入缓冲区那里了,dequeueInputBuffer的TIMEOUT不要设 ...

设置为0或者其他都是一样的结果
回复

使用道具 举报

75

积分

0

威望

0

贡献

技术小白

积分
75
发表于 2016-10-17 15:25:36     
jingjin221 发表于 2016-10-12 09:05
请确定是卡在哪一步了?看代码,应该是卡在获取解码输入缓冲区那里了,dequeueInputBuffer的TIMEOUT不要设 ...

设置为0或者其他都是一样的结果
回复

使用道具 举报

75

积分

0

威望

0

贡献

技术小白

积分
75
发表于 2016-10-17 15:25:31     
jingjin221 发表于 2016-10-12 09:05
请确定是卡在哪一步了?看代码,应该是卡在获取解码输入缓冲区那里了,dequeueInputBuffer的TIMEOUT不要设 ...

设置为0或者其他都是一样的结果
回复

使用道具 举报

75

积分

0

威望

0

贡献

技术小白

积分
75
发表于 2016-10-17 15:25:32     
jingjin221 发表于 2016-10-12 09:05
请确定是卡在哪一步了?看代码,应该是卡在获取解码输入缓冲区那里了,dequeueInputBuffer的TIMEOUT不要设 ...

设置为0或者其他都是一样的结果
回复

使用道具 举报

75

积分

0

威望

0

贡献

技术小白

积分
75
发表于 2016-10-17 15:25:36     
jingjin221 发表于 2016-10-12 09:05
请确定是卡在哪一步了?看代码,应该是卡在获取解码输入缓冲区那里了,dequeueInputBuffer的TIMEOUT不要设 ...

设置为0或者其他都是一样的结果
回复

使用道具 举报

返回列表
12
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表