jjm2473 / ffmpeg-rk

支持rockchip mpp硬件加速编解码的ffmpeg版本。Forked ffmpeg that supports rkmpp decodeing, encoding and rga scaling
https://ffmpeg.org
Other
192 stars 30 forks source link

rk3568 故障 #36

Open KwanZhang opened 12 months ago

KwanZhang commented 12 months ago

您好,我在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'

xiamuran1 commented 11 months ago

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

KwanZhang commented 11 months ago

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

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

jjm2473 commented 11 months ago

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

jjm2473 commented 11 months ago

修改 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 故障。