ffmpeg推拉流优化方案
ffmpeg推拉流优化方案
文章目录
- ffmpeg推拉流优化方案
- 一、卡顿优化
- 设备老旧
- 视频流音视频不同步
- 网络
- 二、延时优化
- 三、传输协议优化
- 四、首屏秒开优化
- 服务器做优化
- 客户端优化
- 五、弱网优化
- 六、DNS劫持优化
- 七、服务端cdn优化
主要从以下几点来优化
- 卡顿优化
- 延时优化
- 传输协议优化
- 首屏秒开优化
- 弱网优化
- DNS劫持优化
- 服务端cdn优化
一、卡顿优化
视频播放端卡顿主要有以下几点原因:
设备老旧
设备太老,CPU和GPU处理性能过低,计算解码时间过长,导致音视频卡顿
视频流音视频不同步
- 服务端编码视频流参数配置有问题
- 拉取的视频流音画不同步。例声音连续播放,但是画面卡住
上述需要优化的点有:
- 设置合理的配置参数,合理的帧率、码率、分辨率和I帧(关键帧)的间隔。
- 调整编解码算法,如按照视频编码H.264/H.265规范,编码完整的视频数据
网络
当网络状况不好时,可以监听网络变化,切换低码率的视频流拉取,减少卡顿的出现
二、延时优化
低延时是直播播放的主要要求之一。实现低延时需要需要根据响应的阶段执行不同的优化方案
1.采集处理数据阶段 – 处理数据的延时-美颜、滤镜等
在采集到音视频数据后,需要增加一些视频效果,如美颜、水印、滤镜等效果,这些操作会耗费大量的CPU资源,可以将这部分交由GPU处理,可以大大减少处理数据的延时
2.编码阶段 – 编码耗时的帧,设置了不合理的参数值
- 编码前丢帧,减少编码的耗时。例如丢掉B帧,B帧解码时需要依赖前后视频帧(I或P帧),会增加延时。所以在编码前丢弃B帧,不仅能降低编解码耗时,同时也能降低带宽开销。
- ffmpeg有两个参数
probesize:获得文件内容的大小,适当的大小可以减少延迟,太大会增加延时,太小会造成卡顿的现象
analyzeduration:解析媒体所需要花销的时间,这里设置的值越高,解析的越准确,如果在直播中为了降低延迟,这个可以设置得低一些
三、传输协议优化
应用层传输协议采用HTTP-FLV协议或者RTMP协议,这两个协议延时低,可以再网络请求和响应时快速传输数据,减少延时
RTMP(Real Time Message Protocol、实时信息传输协议)是应用层协议,用来解决多媒体数据传输流的多路复用(Multiplexing)和分包(packetizing)的问题。
四、首屏秒开优化
在直播中,往往需要快速的显示首屏画面,防止黑屏带来的用户体验差,这个时候需要做首屏秒开优化
服务器做优化
GOP即Group of picture(图像组),指两个I帧之间的距离,Reference(参考周期)指两个P帧之间的距离。一个I帧所占用的字节数大于一个P帧,一个P帧所占用的字节数大于一个B帧。
所以在码率不变的前提下,GOP值越大,P、B帧的数量会越多,平均每个I、P、B帧所占用的字节数就越多,也就更容易获取较好的图像质量;Reference越大,B帧的数量越多,同理也更容易获得较好的图像质量。
- 服务器缓存GOP,GOP的第一帧是关键帧(I帧),所以无需下载整个GOP,只需下载收个关键帧解码播放,就能达到首帧秒开
客户端优化
- 为了加快渲染速度,在做首帧渲染时,不做音视频同步,后面再进行同步
由于人们对音频的变化比较明显,音视频同步通常采用视频追音频的方案进行同步,所以在首帧不做音视频同步,可以快速的渲染出图像,而不必等待音频解码,做同步再渲染
当网络比较差时,对带宽进行监测,根据带宽切换合适的码率播放视频,缩短首帧的渲染时间
在首帧渲染之前,做预加载或者延迟加载。减少同时带宽和CPU的暂用,达到首屏快速加载渲染
五、弱网优化
前面提到的根据带宽,拉取合适的码率、帧率和分辨率来播放
推流端使用H.265协议,可以节约40%带宽,但是并不是所有的手机都支持H.265协议,所以需要做额外的控制层。
播放端可以通过缓存一定的数据之后再进行播放,减少卡顿次数。但是这种不减少卡顿时间
六、DNS劫持优化
运营商被劫持会向包中加入一些广告和其他无用的东西。需要屏蔽这些无用数据。可以采取以下措施:
- 使用HTTPS通讯
HTTPS在应用层增加了SSL协议,不同于TCP/IP三次握手,它需要其次握手,在连接阶段,采用非对称加密,来防止中间人攻击,但是相对的也会增加性能损耗。
数据安全校验-MD5、SHA校验
匹配数据的md5值,防止被篡改
使用HttpDNS技术
使用自建的httpDNS服务器或者阿里云DNS服务器,防止运营商解析DNS被劫持
七、服务端cdn优化
在分发的时候使用cdn服务,通过DNS重定向技术访问用户最近的CDN节点,同时用户和这个节点做交互。
ffmpeg推拉流优化方案相关推荐
- ffmpeg推拉流 视频合成
ffmpeg推拉流 视频合成 多路合并- 推拉流指令 ffmpeg -re -rtsp_transport tcp -i "rtsp://admin:**********/h264/ch1/ ...
- java 推拉流_libsrt+ffmpeg推拉流(一)
srt相关以及其他问题可参考两篇文章: 下面介绍具体操作: 一:ffmpeg的windows版本支持srt已经编译好的下载地址:https://ffmpeg.zeranoe.com/builds/:如 ...
- 开源流媒体解决方案,流媒体服务器,推拉流,直播平台,SRS,WebRTC,移动端流媒体,网络会议,优秀博客资源等分享
开源流媒体解决方案,流媒体服务器,推拉流,直播平台,SRS,WebRTC,移动端流媒体,网络会议,优秀博客资源等分享 一.优秀的流媒体博客资源 1.1 EasyNVR:专注于安防视频互联网化的技术 1 ...
- 视频直播技术干货:一文读懂主流视频直播系统的推拉流架构、传输协议等
1.引言 随着移动网络网速的提升与资费的降低,视频直播作为一个新的娱乐方式已经被越来越多的用户逐渐接受.特别是最近这几年,视频直播已经不仅仅被运用在传统的秀场.游戏类板块,更是作为电商的一种新模式得到 ...
- 视频直播技术分享:一文读懂主流视频直播系统的推拉流架构、传输协议等
本文由蘑菇街前端开发工程师"三体"分享,原题"蘑菇街云端直播探索--启航篇",有修订. 1.引言 随着移动网络网速的提升与资费的降低,视频直播作为一个新的娱乐方 ...
- 一个小时开发的直播推拉流软件来了
一.简介 目前市面上直播推流的软件有很多,拉流也很常见.近期因为业务需要,需要搭建一整套服务端推流,客户端拉流的程序.随即进行了展开研究,花了一个小时做了个基于winfrom桌面版的推拉流软件.另外稍 ...
- Nginx搭建RTMP推拉流服务器
如题,今天就来实现一个推拉流服务器,模拟下推流后被客户端拉流看到效果. 详细步骤如下 - 安装Nginx - 安装FFmpeg - 安装VLC客户端 安装Nginx 在Mac上有一个很好用的包管理插件 ...
- 浅析主流视频直播系统的推拉流架构、传输协议
随着移动网络网速的提升与资费的降低,视频直播作为一个新的娱乐方式已经被越来越多的用户逐渐接受.特别是最近这几年,视频直播已经不仅仅被运用在传统的秀场.游戏类板块,更是作为电商的一种新模式得到迅速成长. ...
- SRS流媒体服务器——WebRTC推拉流演示
SRS流媒体服务器--WebRTC推拉流 目录 WebRTC推拉流配置 WebRTC拉流演示 WebRTC推流演示 SRS官方WebRTC文档:https://github.com/ossrs/srs ...
- 音视频学习之rtsp推拉流学习2(流媒体服务器ZLMediaKit)
公司项目需要实现一个只是rtsp推流和rtsp拉流的业务机制,据说ZLMediaKit能满足rtsp推拉流的相关业务. 对ZLMediaKit流媒体服务器进行安装以及了解. 0:从开源库Readme中 ...
最新文章
- 机器人流程自动化崛起,中国是否准备好迎接智能自动化时代?
- 用机器学习做信用评分
- 论文笔记:ResNet v2
- linux indent格式化代码
- 用汇编的眼光看C++(之拷贝、赋值函数)
- 动态切换父元素隐藏和显示里面的子元素的动画会再一次执行吗?
- 李猛:从MongoDB迁移到ES后,我们减少了80%的服务器
- Oracle10.2.0.1开始可以在线删除数据文件
- 如何上好网课 — 老师录课和在线上课教学经验谈
- 如何利用计算机系统原理做文件保护,计算机系统设计原理(影印版).docx
- 白天做安全,晚上去挖洞
- 像素越多越好?像元的面积越小越好?
- LoadRunner 11压测时碰到错误Error: missing newline in *:\*****\*.dat
- EViews8.0程序安装及注意事项
- 适用mac微信用户的免登陆多开防撤回插件-WeChatTweak
- [中文/英文]VC6 sp6补丁下载|VS6 sp6补丁下载 [防VC6link死机]
- 16位华人获“诺奖风向标”斯隆奖,4人来自北大数院
- 2023年天津天狮学院专升本专业课如何线上考试考前准备的要求
- C# 命名空间中不存在类型或命名空间名,是否缺少程序集引用
- Ps和Excel结合,快速制作透明表格