rockchip-linux / mpp

Media Process Platform (MPP) module
522 stars 161 forks source link

rk1808,使用mpp调用decode_put_packet灌入h.264码流是否有限制? #132

Open wujialiang opened 4 years ago

wujialiang commented 4 years ago

目前使用mpp,从ffmpeg不断拉去h.264码流,然后一直调用decode_put_packet灌入,但是会出现!MPP_OK,请问是否有灌入的速度限制或者容量限制? 因为灌入的处理不及时,会导致ffmpeg出现掉帧的情况,下面是日志信息?请问这操作流程有什么问题?

[rtsp @ 0x7f7401e390] max delay reached. need to consume packet [rtsp @ 0x7f7401e390] RTP: missed 25 packets mpp_log: decoder_get_frame get err info:1 discard:0. [ 5470.753204] rk-vcodec ffb80000.vpu_service: resetting... [ 5470.753316] rk-vcodec ffb80000.vpu_service: reset done [ 5470.753453] rk-vcodec ffb80000.vpu_service: reset done mpp_log: decoder_get_frame get err info:1 discard:0. mpp_log: decoder_get_frame get err info:1 discard:0. mpp_log: decoder_get_frame get err info:1 discard:0. mpp_log: decoder_get_frame get err info:1 discard:0. mpp_log: decoder_get_frame get err info:1 discard:0. mpp_log: decoder_get_frame get err info:1 discard:0. mpp_log: decoder_get_frame get err info:1 discard:0. mpp_log: decoder_get_frame get err info:1 discard:0. mpp_log: decoder_get_frame get err info:1 discard:0. mpp_log: decoded 297 frame 24.87 fps mpp_log: decoded 345 frame 46.86 fps

wujialiang commented 4 years ago

decoder_get_frame get err info:1 代表什么意思?

@WainDing

MUZLATAN commented 4 years ago

我之前也出现这个问题, 我换了一个最新版本,然后加了编译选项就没了这个问题 err info : 1, 你可以试一下。

另外, 能否请教, 在拿到rtsp流的buf 后怎么传给mpp解码, 就你现在的代码错误信息来看,应该是解码的地方出现错误了, 方便的话 把你的代码分享给我吗

wujialiang commented 4 years ago

@MUZLATAN 我也是直接用demo的来改的,只是不知道如何判断h.264码流是否有错误。我直接写在qt上,有联系方式吗?

MUZLATAN commented 4 years ago

你可以将264文件直接保存下来, 网上有对应的例子, 用vlc播放器打开, 能打开看就说明没问题, 然后再用mpi_dec_test测试, 保存为yuv文件, 可以从网上下载yuvplayer.exe的文件查看, 确保每一步都走通就可以了 @wujialiang

MUZLATAN commented 4 years ago

我的qq:769795480 @wujialiang

wujialiang commented 4 years ago

我的qq:769795480 @wujialiang

@MUZLATAN 加你啦

xiaqing10 commented 3 years ago

我出现的问题是 decode_get_frame 返回MPP_OK, 但是frame 是null. 貌似是解码的问题,但是喂的h264数据我又能正确的打开。

HermanChen commented 3 years ago

decode_get_frame 返回 OK 指是流程正常,需要检查输出的 frame 给 mpi_dec_test 的输入需要是祼码流,不带封装的

xiaqing10 commented 3 years ago

decode_get_frame 返回 OK 指是流程正常,需要检查输出的 frame 给 mpi_dec_test 的输入需要是祼码流,不带封装的

是的,我的用法是利用ffmpeg解码rtsp来获取h264流,然后利用mpp来解h264得到yuv,不过decode_get_frame得到frame是null. 一直还没定位到问题。

wxlzyz commented 1 year ago

decode_get_frame 返回 OK 指是流程正常,需要检查输出的 frame 给 mpi_dec_test 的输入需要是祼码流,不带封装的

是的,我的用法是利用ffmpeg解码rtsp来获取h264流,然后利用mpp来解h264得到yuv,不过decode_get_frame得到frame是null. 一直还没定位到问题。

你好,请问后边解决这个问题了吗?能否分享一下解决方法,我也遇到这个问题了

sxj731533730 commented 1 year ago

我解决一部分问题,更新了官方最新的库文件和使用超级权限和执行代码 可以显示画面和解码

xiaogao22 commented 7 months ago

decode_get_frame 返回 OK 指是流程正常,需要检查输出的 frame 给 mpi_dec_test 的输入需要是祼码流,不带封装的

是的,我的用法是利用ffmpeg解码rtsp来获取h264流,然后利用mpp来解h264得到yuv,不过decode_get_frame得到frame是null. 一直还没定位到问题。

我这边用ffmpeg保存了下我的摄像头的h264裸流,用ffmpeg和VLC都不能播,ffmpeg提示non-existing PPS 0 referenced,可能是mpp分帧模式没有pps sps没法正常解码?

HermanChen commented 7 months ago

264 里 slice 头里的 pps_id 要有对应的信息才能正常解码啊,协议如此,没有 pps 让解码器怎么解…… 如果码流是从非 I 帧开始的,会有一段码流是无法解码的,到后面带着 sps/pps 的 I 帧来的时候,就能开始正常解码