jjm2473/ffmpeg-rk

rk3568 故障

Opened this issue · 4 comments

您好,我在rk3568 linux 5.10.160内核上使用 ffplay rtsp://192.168.1.64:554/Streaming/Channels/101命令无法播放视频
使用gdb 调试出现两个问题,
1、 "mpp_dec_parser" received signal SIGSEGV, Segmentation fault
修改 rkmppdec.c 中 ret = mpp_buffer_group_get_internal(&decoder->frame_group, MPP_BUFFER_TYPE_DRM | MPP_BUFFER_FLAGS_DMA32) 为ret = mpp_buffer_group_get_internal(&decoder->frame_group, MPP_BUFFER_TYPE_ION);内存使用没有问题了。
2、Impossible to convert between the formats supported by the filter 'ffplay_buffer' and the filter 'auto_scale_0'

解码后的format不对,ffmpeg自动加了auto_scale_0去转格式,结果auto_scale_0也不认识这个格式就报这个错误了,跟我提的issues比较接近;你需要看下rkmpp的api,在解码后将fotmat转为yuv420p等这类格式就好了

解码后的format不对,ffmpeg自动加了auto_scale_0去转格式,结果auto_scale_0也不认识这个格式就报这个错误了,跟我提的issues比较接近;你需要看下rkmpp的api,在解码后将fotmat转为yuv420p等这类格式就好了

mpp解码后使用了rga变换,rga输出格式为RK_FORMAT_YCbCr_420_P 有没有了解过,怎么将这个怎么转为yuv420P

使用hwdownload滤镜,例如-vf 'scale_rga,hwdownload,scale',ffplay应该也可以用滤镜

修改 rkmppdec.c 中 ret = mpp_buffer_group_get_internal(&decoder->frame_group, MPP_BUFFER_TYPE_DRM | MPP_BUFFER_FLAGS_DMA32) 为ret = mpp_buffer_group_get_internal(&decoder->frame_group, MPP_BUFFER_TYPE_ION);内存使用没有问题了。

这是没必要的,删掉系统里面的 /dev/ion 就行了,或者编译内核的时候就不要启用ION。ion已经被淘汰,速度也不如 dma_heap,而且会导致 MPP 故障。