FFmpeg超低延迟视频推流笔记
FFmpeg超低延迟视频推流笔记
云游戏平台推流和普通直播平台最大不同有两点,一个是码率,我们希望用户能尽可能用低的网络体验好的效果,毕竟玩的人是自己,还有一点就是延迟了,普通直播延迟5秒左右都属于正常,通常降低到1秒左右就属于超低延迟了,而我们的要求是降低到50毫秒以下,中间遇到了不少坑,记录一下。
音频延迟可以参考我的另一篇:
注:编码CPU为i7-9750H,GPU为1660Ti,所有驱动都更新为最新版本,目前通过测试发现不同的驱动版本,以及硬件,会有不同的编码效果,以下编码只保证上述平台有效。其他平台未详细测试
FFmpeg RTP 100ms以下超低音频流推送设置
libx264软编设置
首先可以通过指令查看编码支持的参数配置,libx264官网也有文档,写的比较详细也可以看官网,指令如下:
ffmpeg -h encoder=libx264
正常软编推流主要有两个问题,第一当画面不动时播放端流容易中断,第二延迟高。1080p,30帧,关键帧间隔30时,设置如下:
tune=zerolatency sc_threshold=499 profile=high preset=ultrafast
这是obs视频额外编码设置格式,正常使用ffmpeg推流则是如下格式:
-tune zerolatency -sc_threshold 499 -profile high -preset ultrafast
tune
设置编码方式为零延迟,还有其他的编码方式,比如电影,动画等,具体可以通过上面命令查看,这里不多赘述除了解决问题以外的参数,这个参数引入后能极大的降低延迟,但是画面容易不稳定,容易播放中断。
sc_threshold
设置场景更改检测的阈值,主要是作用与当画面运动时额外的数据记录。值越高画面会越流畅,但是相同码率下画面会变模糊,值过低运动时画面会出现卡顿,499为测试调整的值,不同的其他配置可以测试调整。
profile
设置编码画质基本为high,主要有三个档次Baseline,Main,High。级别越高,画质越好,编码开销越大,另外高级别的编码有些低级设备可能会出现无法支持解码播放的问题。这里为了画面效果选择high。
preset
调整编码预设等级,主要有:ultrafast,superfast,veryfast,faster,fast,medium,slow,slower,veryslow,placebo。
和profile一样等级越高画面质量越好,但是编码越慢,这里设置为最低,如果不设置为最低,在零延迟编码下windows OBS会出现当画面为全黑,推流视频无法播放的问题,linux obs貌似没有这个问题,这里不涉及linux所有配置全是windows下。
效果:
1080p 30帧 6000码率下延迟能降低到12毫秒左右。
h264_nvenc硬编设置
硬编和软编相比,在更低的码率下能有更好的推流效果,但是延迟会更高。设置如下:
preset=llhq profile=high level=4 rc=vbr_hq zerolatency=1 coder=auto
ffmpeg命令行设置参考上面软编。
preset
llhq为硬编特有,低延迟高质量编码
level
设置编码约束等级,1080p 30帧用4.0刚刚好,再往上就得提高等级最高为5.1,支持4k30帧,
rc
设置编码码率方式,vbr_hq为可变,高质量编码。另外还有cbr恒定码率等方式
zerolatency
设置启用零延迟编码,默认为false,这里设置为1或者true都行,tune为软编特有参数。zerolatency为硬编设置,实测能降低几毫秒延迟左右不少特别大。
coder
设置编码类型,这里自动选择就好。
效果:
延迟29毫秒,比软编延迟差不多大了三倍,但是同样的效果需要得码率也只有软编的三分之一。另外我用的gpu是1660Ti,nvenc官网说用2060以上gpu效果会更好,目前显卡还没到,没测试过,
最后
还有个nvenc_h264编码,不过我看命令行提示以及被弃用了,此外还测试过vp8,vp9,h265等编码,vp8效果不好,vp9编码太慢,h265,webrtc目前不支持,等原因这里不采用。
FFmpeg超低延迟视频推流笔记相关推荐
- 实时音视频聊天中超低延迟架构的思考与技术实践
1.前言 从直播在线上抓娃娃,不断变化的是玩法的创新,始终不变的是对超低延迟的苛求.实时架构是超低延迟的基石,如何在信源编码.信道编码和实时传输整个链条来构建实时架构?在实时架构的基础之上,如果通过优 ...
- LiveQing视频点播RTMP推流直播服务支持H5无插件WebRTC超低延时视频直播
LiveQing视频点播RTMP推流直播服务支持H5无插件WebRTC超低延时视频直播 1.WebRTC超低延时视频直播 2.WebRTC延时对比 3.LiveQing播放WebRTC流 4.分屏页面 ...
- 超低延迟直播架构解析
本文由百度智能云-视频云直播技术架构师--朱晓恩 在百度开发者沙龙线上分享的演讲内容整理而成.内容从低延时直播背景与机遇出发,分析低延迟直播技术,重点分享百度在低延迟直播技术的实践工作. 文/ 朱晓恩 ...
- 陈曦:超低延迟下的实时合唱体验升级
点击上方"LiveVideoStack"关注我们 RTC(实时音视频通信)近年来广泛应用于语聊房.直播连麦.视频会议.互动课堂等场景,延迟一般在200ms-300ms,已经可以满足 ...
- 超低延迟实时流媒体传输技术
正文字数:5401 阅读时长:8分钟 现在云游戏,云应用越来越火,所以超低延迟实时流媒体传输技术的需求应用场景会越来越多.腾讯专家工程师刘泓昊老师在LiveVideoStackCon 2020北京站 ...
- 腾讯云快直播——超低延迟直播技术方案及应用
正文字数:4361 阅读时长:7分钟 随着直播业务的发展,在线教育,连麦直播.赛事直播等高实时性直播场景的出现,用户对于直播流畅度.低延迟等性能的要求愈加严苛.腾讯云直播技术高级工程师陈华成 从5G ...
- 基于OBS超低延迟直播实测(400毫秒左右)超多组图
阿酷TONY,原创文章,长沙. 文章简述:本文介绍使用OBS无延迟直播插件在第三方云平台,如何实现超低延时直播的完整教程(延迟约为400毫秒左右,通常延迟是3-15秒). OBS简要介绍 OBS(Op ...
- Zego SDK深度适配安卓机型,实现超低延迟耳返
耳返功能又称耳机返听,耳机采集监听,在设备上插入耳机(普通耳机或蓝牙耳机),能从耳机侧听到麦克风采集的声音. 该功能可以使主播在K歌直播.K歌歌曲录制.个人清唱,朗诵等场景下实时监听自己的声音,让观众 ...
- 【今晚7点半】:超低延迟下的实时合唱体验升级
点击上方"LiveVideoStack"关注我们 RTC(实时音视频通信)近年来广泛应用于语聊房.直播连麦.视频会议.互动课堂等场景,延迟一般在200ms-300ms,已经可以满足 ...
- 【公开课预告】:超低延迟下的实时合唱体验升级
点击上方"LiveVideoStack"关注我们 RTC(实时音视频通信)近年来广泛应用于语聊房.直播连麦.视频会议.互动课堂等场景,延迟一般在200ms-300ms,已经可以满足 ...
最新文章
- Matlab与线性代数 -- 对角矩阵
- 感知机模型及其对偶形式
- 论文研读:Automatic Temporal Segment Detection and Affect Recognition From Face and Body Display
- laravel 调试模式及日志配置
- Quartz.Net进阶之四:CronTrigger 详述
- 关于QSerialPort的使用说明(Qt实现串口工具)
- Docker多主机安装Zookeeper集群
- github 上 Fork 别人的项目后的常用的操作指南
- python写ini文件不能保持原有顺序问题_python 生成 xml文件 属性的顺序问题
- Unix/Linux的内存映射
- Oracle+PL+SQL从入门到精通.丁士锋.清华大学出版社.2012
- 使用golang实现对请求签名和验签
- Stardock Fences v3.1.0.5 桌面整理、图标分类工具
- 阿里巴巴电话面试(遭到了阿里的完虐,被一顿痛批)
- Excel入门之快速录入数据
- 微信之分享到朋友圈并记录分享次数
- 【渝粤题库】国家开放大学2021春2408中国当代文学题目
- K3S - 轻量级Kubernetes集群
- 全网唯一:surfacepro系列用户重启或解锁后蓝牙失灵终极解决方法【绝对有效】
- oracle数据库恢复aul_AUL6数据恢复总结_20140404
热门文章
- 计算机组成原理--数制与编码(校验码,CRC,汉明码详解)
- js实现bilibili弹幕列表随视频播放滚动
- mysql5.7优化
- Mac自带apache2搭建服务请求localhost报 403 Forbidden
- 《Java解惑》系列——01表达式之谜——谜题09:半斤
- 计算机专业提升计划范文,民航个人提升计划范文个人职业规划方案.doc
- 12306的(再次破解)从查票到购票
- Linux在线词典问题,linux中goldendict发声词典播放报错问题解决方案
- Ubuntu 20.04 多GPU,涡轮GPU 风扇转速手动调节
- UVa12304(计算几何中圆的基本操作)