Android MediaCodec播放h.264文件dequeueOutputBuffer一直返回-1

解析本地h.264文件,通过mCodec.queueInputBuffer将一帧帧数据传入解码器后,通过mCodec.dequeueOutputBuffer查询解码输出,此函数一直是返回-1,没有成功解码。

网上搜索到的文章,有说是surfaceView设置的问题,也有说是创建解码器时要指定分辨率跟h.264文件的视频大小一样。

经过测试,并非上面原因,而是解析h.264线程有误。

解析h.264,就是搜索两个“00 00 01”位置,将 00 00 01和下一个00 00 01(不包括)之前的数据通过queueInputBuffer传入解码器即可。另外,创建解码器时,也不需要指定"csd-0" "csd-1"两个参数数组,因为h.264文件里就有这2个参数帧。

另外,自己测试了几个硬件平台,创建解码器时,设置的width和height跟获取到的surfaceView的width和height大小一样就可以了,800x600、1280x720、1920x1080都可以正常解码显示。

测试过的例子,已经上传到 https://download.youkuaiyun.com/download/kinggate518/10587095 。

测试例子源于参考文章: http://blog.youkuaiyun.com/a512337862/article/details/72629779  ,感谢博主分享。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值