FFmpeg解码出来的监控视频,动态的物体有时会出现马赛克

描述:程序从监控系统中读取视频数据(H264格式)到内存中(unsigned char*),然后使用FFmpeg解码内存中的数据。

问题:当画面中有动态的物体时,有时会出现马赛克,1分钟之内这种情况会出现2-3次。

FFmpeg解码参考了FFmpeg的官方示例:hw_decode.c

希望各位大佬能帮忙看下应该如何解决这个问题,谢谢啦!

https://blog.csdn.net/u010628790/article/details/75258688

当出现动态物体的时候跟平常比编码的码率会升高,按你描述的现象,我看原因可能有几个:
1. 编码器端的问题,如果编码器设置的码率很低,或者将最高码率阀值设置得比较低,当图像突然有运动物体的时候,码率应该升高才能表达当前的图像序列内容,但是因为码率限制了,所以结果就是丢信息,出现花屏。
2. 网络传输的过程丢包了,其次是包乱序(如果用UDP传输),试一下在接收端直接保存流看用播放器播放是否正常。
3. 你接收的Socket缓冲区太小,默认的缓冲区好像只有8K,当你接收线程处理忙时,缓冲区满,部分数据就会丢掉。