Toybrick

关于mpp的h.264解码问题

wujialiang

注册会员

积分
120
楼主
发表于 2020-4-17 09:53:59    查看: 20399|回复: 12 | [复制链接]    打印 | 显示全部楼层
参考mpi_dec_test的代码进行改造,在第一次灌入h.264的数据,调用mpp_packet_set_eos(packet) 后得到mpp_frame_get_info_change的事件,然后再输入新的h.264后,调用mpi->decode_get_frame(ctx, &frame)一直获取不到frame,函数返回的是MPP_OK,但是frame一直为NULL,请问是什么问题呢?








回复

使用道具 举报

wujialiang

注册会员

积分
120
沙发
 楼主| 发表于 2020-4-17 14:15:12 | 显示全部楼层
jefferyzhang 发表于 2020-4-17 10:08
mpi dec test正常么,正常的话就检查下你自己代码了。
mpp_frame_get_info_change 只会在首次允许以及宽高 ...

现在帧可以读出,但是很多的时候出现
mpp_log: decoder_get_frame get err info:1 discard:0.
就是不能正常解码的帧,是灌入的h.264数据和读取一帧的流程有问题吗?我这边是接入网络摄像头,通过ffmpeg实时获取rtsp的数据然后再灌入的。

对于不断来的h.264的数据,decode_put_packet与decode_get_frame应该怎么配合?
我现在是一个线程不断的调用decode_put_packet灌入数据,另外一个线程不断调用decode_get_frame获取frame,出来的效果就是偶尔有些帧正常解码显示,其他的一直打印mpp_log: decoder_get_frame get err info:1 discard:0.,就是异常的帧
回复

使用道具 举报

wujialiang

注册会员

积分
120
板凳
 楼主| 发表于 2020-4-17 14:39:36 | 显示全部楼层
jefferyzhang 发表于 2020-4-17 14:33
没问题,随便你怎么用都可以。学安卓和ffmpeg标准用法就是单线程 put 然后while get。
或者多线程一个put ...

如果是单线程的话,有时候会卡在decode_get_frame一直获取不到frame,然后进入死循环。

另外,解码获取一帧一直报
mpp_log: decoder_get_frame get err info:1 discard:0.
要怎么排查是哪方面的问题??
回复

使用道具 举报

wujialiang

注册会员

积分
120
地板
 楼主| 发表于 2020-4-17 15:08:36 | 显示全部楼层
jefferyzhang 发表于 2020-4-17 15:03
你看mpi_dec_test那个sample就是单线程的啊,你见他卡过么
err可能性很多啊,这个没办法简单回答 ...

mpi_dec_test我是从这里移植过来的,mpi_dec_test不一样,他灌入的数据就一次性的把一个h.264的文件全部读入,我这边是实时不断的灌入h.264数据,所以就问问怎么检查到底是h.264数据流的问题还是什么,但是我是网线直接内网对接摄像头,排除网络问题导致的丢包,我在pc上跑ffmpeg解rtsp包以及软件解码是没有问题的。到了mpp上就出现很多错误的帧,所以不明在是什么原因导致。求解
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

产品中心 购买渠道 开源社区 Wiki教程 资料下载 关于Toybrick


快速回复 返回顶部 返回列表