zxczhangheng
净坛使者\(^o^)/~
采纳率25%
2019-10-14 10:14 阅读 834

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

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

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

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

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

2条回答 默认 最新

  • zqbnqsdsmd zqbnqsdsmd 2019-10-14 10:32
  • zhoubotong2012 zhoubotong2012 2019-11-14 16:18

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

    点赞 评论 复制链接分享

相关推荐