ffmpeg

首先说明,ffmpeg并非做得毫无破绽。

1 网络丢包

udp 改成tcp传输并非一定不会丢包,这个一定要清楚,除此之外,如果使用udp,一定要把udp的接收缓存加得合适接收一个长帧。

2 parse

我们知道用parse 解析一帧是否被粘合或者分片,ffmpeg这一点做得很好了,具体函数:
av_parser_parse2,如果遇到h265花屏,很有可能我们需要这个函数会做得更好一些。

3 修改ffmpeg代码?

修改代码有用吗,有用,就是把错误的地方直接返回错误,而不让ffmpeg修复,小型修复是有用的,h264和h265本身就是纠错类型的,但是包错误多,例如包不足够,ffmpeg解码只能让我们看到绿色或者灰色了。修改后的ffmpeg不纠错,结果不花屏了,可是,跳秒我们也接受不了啊

4 解决方案

足够多的测试以后,发现,有的并非是网络丢包,而是ffmpeg解码并不完整,同样的网络视频包解码,硬件解码无错误,软解码就会有一堆错误,所以,我们发现:最好多使用硬件解码。即使我们的包是排着队列进入的,测试结果发现,ffmpeg软解码对于h265解码,是不够完整的。

hevc_refs.c 里面
add_candidate_ref 函数
if(!ref){
//return AV_ERROR_INVALIDDATE;
//以下不产生纠错,就不会错了,注释掉下面的,直接返回,就不会灰了
ret = generate_missing_ref(s,poc);
if(!ref)
return AVERROR(ENOMEM);
}
编译脚本:

Sudo lshw -numberic -C display
https://blog.csdn.net/qq_27386899/article/details/104113553

sudo apt install nvidia-driver nvidia-cuda-dev nvidia-cuda-toolkit nvidia-nsight nvidia-visual-profiler

sudo apt-get -y install autoconf automake build-essential libass-dev libfreetype6-dev libsdl2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev pkg-config texinfo zlib1g-dev

./configure --enable-cuda --enable-cuvid --enable-nvenc --enable-nonfree --enable-libnpp --enable-shared –disable-static --disable-debug
–extra-cflags=-I/usr/include --extra-cflags=-fPIC –extra-ldflags=-L/usr/lib/

./configure --enable-cuda --enable-cuvid --enable-nvenc --enable-nonfree --enable-libnpp --disable-static --disable-debug --enable-shared --extra-cflags=-I/usr/include --extra-ldflags=-L/usr/lib/cuda –extra-cflags=-fPIC

./configure --prefix=./build --enable-cuda --enable-cuvid --enable-nvenc --enable-nonfree --enable-libnpp --extra-cflags=-I/usr/include --extra-cflags=-fPIC --extra-ldflags=-L/usr/lib/cuda --enable-shared --enable-pic

./configure --prefix=./build –disable-static --enable-shared --enable-pic --disable-debug --enable-cuda --enable-cuvid --enable-nvenc --enable-libnpp --extra-cflags=-I/usr/include --extra-cflags=-fPIC –extra-ldflags=-L/usr/lib/cuda

./configure --prefix=./build --disable-static --enable-shared --enable-pic --disable-debug --enable-cuda --enable-cuvid --enable-nvenc --extra-cflags=-I/usr/include --extra-cflags=-fPIC --extra-ldflags=-L/usr/lib/cuda

./configure --prefix="./build" --pkg-config-flags="–static" --extra-cflags=-I./build/include --extra-ldflags="-L./build/lib" --extra-libs="-lpthread -lm" --enable-gpl --enable-libx264 --enable-nonfree --enable-cuda --enable-cuvid –enable-nvenc

./configure --enable-cuda --enable-cuvid --enable-nvenc --extra-cflags=-I/usr/local/cuda/include --extra-ldflags=-L/usr/local/cuda/lib64 --prefix=./build

安装nvcodecheader
git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
$ cd nv-codec-headers $ make $ sudo make install

./configure --enable-cuda --enable-cuvid --enable-nvenc --enable-shared --enable-pthreads --enable-postproc --enable-gpl --enable-libfreetype --disable-static --disable-debug --extra-cflags=-I/usr/local/cuda/include --extra-ldflags=-L/usr/local/cuda/lib64 --prefix=./build

CUDA_HOME=/usr/local/cuda/
export PATH=PATH:PATH:PATH:CUDA_HOME/bin/
export LD_LIBRARY_PATH=LDLIBRARYPATH:LD_LIBRARY_PATH:LDL​IBRARYP​ATH:CUDA_HOME/lib64

ffmpeg 花屏的问题相关推荐

  1. FFmpeg花屏解决(修改源码,丢弃不完整帧)

    linux下模拟丢帧的命令,因为帧之间的参考关系,实测如果是1%几乎没有完好的帧. sudo tc qdisc add dev enp0s31f6 root netem loss 0.1% 删除上面的 ...

  2. ffmpeg花屏解决(修改源码,丢弃不完整帧和解码错误帧)

    linux下模拟丢帧的命令,因为帧之间的参考关系,实测如果是1%几乎没有完好的帧. tc只能对发出的包做处理,但它还可以做延时抖动处理. sudo tc qdisc add dev enp0s31f6 ...

  3. ffmpeg 切片花屏_FFmpeg相机花屏花图问题解决方法

    FFmpeg相机花图问题解决方法 一.问题现象 使用FFmpeg进行进行相机rtsp连接获取相机码流并解码在本地显示,这个过程中有遇见相机花图等问题,排查后发现有花图.正常情况下图像为 出现花图的情况 ...

  4. ffmpeg 切片花屏_FFmpeg相机花屏花图问题解决方法-Go语言中文社区

    FFmpeg相机花图问题解决方法 一.问题现象 使用FFmpeg进行进行相机rtsp连接获取相机码流并解码在本地显示,这个过程中有遇见相机花图等问题,排查后发现有花图.正常情况下图像为 出现花图的情况 ...

  5. 使用FFmpeg解码 丢包 花屏

    使用FFmpeg解码,使用SDL显示画面有时候会连续丢包,导致花屏的现象. 解决办法: 1.将rtsp传输方式由默认的udp传输,设置为tcp传输 2.每次解码一帧后,SDL_Delay时长设置为跟帧 ...

  6. ffmpeg解码花屏

    问题: 解码为YUV420转为Bitmap后显示在屏幕上时,有三分之二为花屏:如图: 首先用h264Visa分析帧: 已经读出了sps等信息,这些信在解码第一帧时被写入环境变量中,所以下边的帧不需要s ...

  7. 从FFmpeg源码去解决IJKPlayer直播花屏问题

    IJKPlayer是一个非常优秀的播放器,支持rtmp.rtsp.http等协议直播,也支持Android.iOS跨平台使用.我在使用IJKPlayer做rtsp直播时,发现分辨率在达到1080P甚至 ...

  8. ffmpeg h264解码, 屏蔽因为网络丢包等各种原因导致的花屏帧

     ffmpeg h264解码, 屏蔽因为网络丢包等各种原因导致的花屏帧  ---->看来问题只能这样解决了,现在还要多测测,防止产生新的问题.目前来看,对现有代码没有影响,花屏的帧直接屏蔽掉了. ...

  9. ffmpeg 切片花屏_利用ffmpeg解码H264,花屏,该如何解决

    利用ffmpeg解码H264,花屏 UINT CMP4File::VideoCap_Thread_Fun(void* pParam) { CMP4File  *pMP4File=(CMP4File*) ...

最新文章

  1. 清朝人如何变戏法?带你来看AI修复的1904年老电影(滑稽慎入)
  2. 一次深夜优化,MySQL亿级数据分页的奇妙经历
  3. Springboot+Docker+RabbitMQ教程来了。
  4. TypeScript里的完整函数定义语法
  5. 机器学习算法(一): 基于逻辑回归的分类预测-Task01
  6. @HTML.RadioButtonFor和@Html.DropDownList用法
  7. BZOJ4827: [Hnoi2017]礼物
  8. PostgreSQL在何处处理 sql查询之八
  9. 遗传算法MATLAB
  10. python 过采样算法_类不平衡数据分类准确率的提升算法smote过采样方法
  11. w7忘记计算机密码,win7系统忘记电脑开机密码的解决方法
  12. 从街舞导师王一博.fans机舱生日趴,看“线上应援”新形式
  13. Caused by: ParsingException[Failed to parse object: expecting token of type [START_OBJECT] but found
  14. 通过you-get在哔哩哔哩下载视频报错处理
  15. python运算符计算集合并集_Python集合、集合的运算、集合方法详细讲解
  16. 随机生成中文名字的工具类
  17. 浏览器开代理后,https地址打不开
  18. Unity3d 周分享(17期 2019.5.18 )
  19. Bugku:杂项 小美的秘密part2
  20. Linux 软连接和硬链接

热门文章

  1. Python cmp函数在Python3.4版本后就不存在了。全部换成了operator库了
  2. 小米申请雷军签名商标获批
  3. 字节跳动将推出汽车云业务,计划2025年追赶腾讯
  4. 王者荣耀回应服务器崩了:已处理完成 将陆续补发相应赔偿
  5. 顺丰控股子公司亮榛拟1000万美元参投海外投资基金
  6. 4月份全球新注册39.2万辆电动汽车 榜首并非Model 3
  7. 永辉生活APP卖茅台只收款不发货,永辉超市回应...
  8. 邮政管理部门发话:未获用户同意投放快递柜属违法行为
  9. 重启中的武汉:烟火气息回来了,消费疯狂增长
  10. 互联网人求职现状:逃离互联网的人增多 求稳可以牺牲涨薪