网络在线直播系统,一般过程是:采集前处理码推流分发拉流解码播放,每一个阶段都会占用一部分的时间,所以说为了保障用户观看的及时性,这些流程都需要高度的配合统一,这样才能降低在线直播的延迟问题。

  我们先来说说什么原因为导致直播延迟。

  第一,网络波动

  我们这里所说的网络波动就是说在排序好的数据包中,有任何一包被延迟,就会导致它不按照正确的抵达顺序到达用户端,自然也无法按照接受顺序把内容播放出来,呈现在用户的接收屏上。网路波动会导致网络的内容播放的延迟和直播卡顿,但是这个原因只能算作是直播延时的外部因素,与本身的在线直播源码没有多大的关系。

  第二、网络丢包

  在线直播源码使用的流媒体传输协议有:RTMP、HLS、HTTP FLV等,传输过程一般是:主播端向服务端发送连接请求服务端同意主播端确认连线。

  经过上述的三个过程,主播端才会持续的进行数据的分批发送,每发送完一批数据都需得到服务端的反馈才能进行下一步,若为接收到反馈就是出现了网络丢包的现象,系统会自动传输丢失的包,这就是丢包的自动重传机制,这样中间的间隔就会造成直播的延时。

  解决方案

  抛弃传统的基于TCP协议的方案,从底层协议和布网上开始,使用基于UDP协议的方案。SD-RTN(Software-Defined Real Time Net work),软件定义实时传输网络,是一种新型的专为内容实时传输而设计,基于UDP协议的网络架构。SD-RTN通过在互联网上不同地区的数据中心放置软件组网单元,相互连接互相调度,在现有的公共互联网基础上构建一层新的虚拟网络。能够实时根据各节点的连接、传输状况、负载状况、到用户的距离和响应时间,自动分配最优最通畅的传输路径,达到实时传输需要的质量保障级别。

  CDN与SD-RTN对比情况如下:

  基本原理不同。CDN是存储转发结构,设计目的是在各个边缘节点缓存待分发内容,结构上从源站到观众是伞状多级缓存放大方式。SD-RTN本质上一个实时传输网络,用户的数据在网络单元内部和传输线路上都以实时交换方式传送,UDP实现的传输协议,不会因为前一个包的丢失或延迟导致下后续包的延迟送达,而丢包可以用对延迟更友好的方式修复或补偿出来,从而能够保证最低延迟。

  底层协议不同。SD-RTN采用了专为实时传输设计的UDP协议,避免了采用TCP的延时不可控缺点。能够大大缩短交互延时,延时可从CDN方案的数秒,降低到数百毫秒。

  内容分发机制不同。SD-RTN是基于自定义路由,选择最优传输路径,直接将内容端到端传输,数据在网络单元中从不缓存,从而最大可能的降低延迟,同时内容安全性也更好。CDN是将内容缓存于缓存服务器中,再将内容就近下发,所以CDN更适合做内容分发,一对多的场景。

  使用场景不同。SD-RTN适用于要求极低时延的实时互动场景,例如网络电话、视频会议、有主播与观众交互需求的互动直播等。CDN适用于对时延要求不高的场景,例如对延时要求不高、类似电视的单点直播、网站加速等。

  SD-RTN的优势如下:

  时延大大缩短。直播延时可从基于TCP的方案的数秒,降低到数百毫秒。这一延迟范围,属于实时通信或准实时通信延迟的范畴。在这一级别上,主播和观众可以基本重现在现场活动中的交互体验,从而大大释放了内容制作者的潜力,也为业务运营者创造新业务形式打开了无限的空间和可能。

  抗丢包能力强。一般来说,SD-RTN中可以针对用户网络使用更多的策略模型和技术,这样在30%丢包时,依然能够进行正常直播。而基于TCP的直播方案在丢包2%时就明显卡顿,达到30%经常已断开连接,无法进行直播。

【抖音音视频直播延迟优化-从2秒到0.5秒 C/C++/Linux/FFmpeg/webRTC/rtmp/hls/rtsp/ffplay/srs】https://www.bilibili.com/video/BV1Ng411m7Et/?share_source=copy_web&vd_source=1d37244df5a3adf4b92a8a5e5ed4abeb https://www.bilibili.com/video/BV1Ng411m7Et/?share_source=copy_web&vd_source=1d37244df5a3adf4b92a8a5e5ed4abeb

 CDN难点:连麦

  直播中,主播如果要与用户交互,常见有两种方式

  第一种方式:文字,这种比较常见,实现也比较简单,这里不再进行分析;

  第二种方式:连麦,这样主播可以面对面与观众进行交互,增加了互动性;

  由于连麦方式比较复杂,这里进行详细分析。

  1. 多路RTMP流实现

  前面提到,RTMP是目前主播中最常用的协议,使用RTMP协议,可以实现最简单的一种连麦方式,如下图。

  当有连麦者时,则主播端和连麦者端,都分别推一路RTMP流到CDN,CDN再将这两路RTMP流发送给观众端,观众端将两路RTMP流合成为一个画面。这种方式的优点是实现简单,但缺点比较多:

  主播与连麦者如果要进行交互,则考虑到上面分析的延时问题,在这里延时需要至少加大一倍,这样对于实时交互来说,完全无法接受;

  主播与连麦者交互时,声音会产生干扰,形成回音;

  观众端要接收两条视频流,带宽、流量消耗过大,并且两路视频流解码播放,耗费CPU等资源也非常多;

  这样看来,这种方式弊大于利,基本不可取。

  2. 主播端与连麦者P2P

  第二种方式,是主播端与连麦者之间使用P2P方式进行交互,然后主播端将自己和连麦者的视频进行合并,再推到CDN上,CDN再发送给观众端,如下图:

  这种方式的优点有两个,一是主播和连麦者之间使用P2P,网络质量较好,延迟较小,保证了两者之间交互不会有非常大的延时;二是可以解决声音的干扰问题,消除回声。缺点是:

  P2P在某些网络下无法穿透,有些观众根本无法与主播端进行交互;

  主播端需要上传两路视频:一路P2P与连麦者进行交互,一路使用RTMP推到CDN。还要下载一路视频:连麦者P2P发送过来的交互数据。所以主播端要求带宽需要较高,网络较差时无法进行主播;

  主播端要进行多路视频的编码、解码,要求主播端设备配置比较高,较差的设备也无法进行主播;

  只能支持一个连麦者,不能支持多个连麦者;

  由于主播端和连麦者经过CDN合并成一路,因此,不能实现主播端和连麦者视频大小窗口切换。

  综合来说,P2P方式在一定程度上可以解决连麦的问题。

  3. 服务器端合图

  另外一种方式,是主播和连麦者都将视频推送到CDN中,然后CDN内部对这几路视频进行合图,再将其发送给观众端。如下图:

  这种方式的优缺点如下:

  优点

  主播和连麦者各路视频都使用RTMP推送到CDN,可以保证延时较小;

  由于CDN进行视频合图和发送,所以主播不需要很高的带宽;

  由于CDN进行视频合图,所以主播的设备不需要配置非常高;

  没有声音干扰问题;

  可以支持多个连麦者连麦;

  缺点

  CDN需要进行视频的合图,需要额外开发工作,并且逻辑比较复杂;

  CDN需要进行视频的合图,需要消耗较高服务器资源;

  CDN合图后的布局难控制;

  据目前所知,还没有CDN支持这种方案;

  解决方案

  使用前文中提到的SD-RTN方案,由于其延迟较低,主播和观众可以通过音频实时交互,而不会感到延迟过大而不自然。使用SD-RTN,可以很好的解决多路RTMP、P2P连麦、服务器端合图这几种方案的弱势,并且开发难度降低,合图布局等都可以很好的在客户端上进行控制。

  客户端均通过UDP连接SD-RTN架构服务,通过SD-RTN的就近接入策略,让使用者就近接入质量最好的数据节点,经过传输延迟和质量优化的最优路径,自动避免网络拥塞和骨干网络故障的影响,将数据发送给其他客户端。若有常规的长延迟旁路直播,则可以将主播与连麦者合成一路直播流,通过RTMP推到CDN,进行下发。连接这一路的观众,不能参与连麦互动,达到了最佳直播效果。

网络直播延迟该如何解决这个问题相关推荐

  1. 如果解决看直播延迟的问题, 求大神帮助。

    本人网络小白, 求大神帮忙解决看直播延迟的问题. 必有重谢 .有大神愿意帮忙的请加QQ610157942

  2. 如何解决看直播延迟的问题, 求大神帮助。必有重谢!!!

    本人网络小白,求大神帮忙解决看直播延迟的问题.必有重谢,可详谈,有大佬愿意帮忙的加下QQ,916607029

  3. 王者服务器延迟高,王者荣耀网络太卡延迟过高怎么办?解决办法分享

    王者荣耀网络太卡延迟过高怎么办?解决办法分享,作为时下最火热的MOBA游戏,在此次版本更新之后很多小伙伴们都在反应网络延迟太高,游戏的时候非常卡,这往往会影响我们的操作,甚至英雄游戏的胜负,今天小编给 ...

  4. 网络延迟怎么测试 玩游戏延迟高怎么解决

    在玩游戏的过程中,很多时候会因为网络的延迟高,导致我们玩游戏的画面一卡一顿的,不仅影响玩游戏的心情,也影响我们在玩游戏过程中的操作,那么这里小编就给大家介绍如果解决玩游戏过程中延迟过高的问题. 测试延 ...

  5. 大疆无人机直播延迟的解决对策

    大疆无人机直播延迟的解决对策 这一个多周的时间,在使用大疆无人机御Air2 SDK 在进行直播的二次开发,把无人机的回传的图像,通过推流到服务器,然后拉流进行视频播放,在网上看到各种推流到流媒体服务器 ...

  6. 网络直播中延迟产生的原因及解决方案

    背景 rtsp转rtmp推流器是我们公司的一款独家产品,主要用途是将普通视频监控的rtsp视频流转为rtmp流推送到各大直播平台,支持几乎市面上所有的IPC摄像头.在实际使用过程中,不同的客户对直播延 ...

  7. 天翼云从业认证(4.10)网络直播场景解决方案(CDN)

    了解网络直播的背景.行业现状,以及天翼云直播加速解决方案: 云直播 云直播(CT-XLive)是天翼云自主研发的专业音视频直播产品.它以自研音视频技术和自建加速节点为基础,开放专业.稳定.快速的直播推 ...

  8. 智密-腾讯云直播 MLVB 插件优化教程:六步提升拉流速度+降低直播延迟

    前言 很多刚开始使用智密-腾讯云 MLVB 直播插件或者单独腾讯云直播 SDK的工程师在进行直播效果测试或者实际直播应用中可能会遇到延迟比较大.或者推流.拉流速度较慢的问题.今天智密科技就来分享一下如 ...

  9. 网络直播平台搭建一个直播间的礼物系统

    网络直播平台搭建一个直播间的礼物系统 1. 所有直播间的礼物系统,第一步用户看到的无外乎都是礼物的列表界面 纵观主流直播间的礼物列表应该都是使用UICollectionView实现的,所以我也不例外, ...

  10. 打造完整网络直播方案

    2016年8月9日,阿里云在国家会议中心召开2016云栖大会.北京峰会,在这场名为"DT NEXT"的大会中,阿里云发布了一系列的重磅消息和重磅新品,让到场的数千名观众真正的感受到 ...

最新文章

  1. 业务运营一体化解决方案
  2. python中一个汉字是几个字符_Python中每次处理一个字符的5种方法
  3. 1.2安装配置VMwaer虚拟机
  4. 直播预告丨爆款独立站如何利用数据提升经营效率?
  5. 孤儿进程、僵尸进进程
  6. Android插u盘自动执行,android tv box ---- 插入u盘直接播放指定文件夹中的视频
  7. Storm精华问答 | 如何处理常见故障?
  8. 一个导出redis有序集合sorted-sets的shell脚本
  9. 2021-08-22 初识过滤器
  10. Introduction to Computer Networking学习笔记(七):ICMP协议
  11. 标签打印软件如何制作箭头样式
  12. 什么样的人适合3D打印培训课程——宁波清车3D打印培训
  13. 快速判断base16,base32,base64
  14. office文档图标显示不正常
  15. linux图片拼接,如何在Linux上使用Hugin Panorama Creator将照片拼接成全景照片
  16. 谷歌中国大范围招兵买马:涉及销售和研发等多个部门
  17. 黑马-linux编程
  18. MySQL安装当中遇到的问题
  19. ps 制作虚线框背景
  20. 微信小程序上传EXCE/CSV/JSON文件到数据库

热门文章

  1. linux shell 加密shc,使用shc工具加密shell脚本详解
  2. CPU多级缓存与缓存一致性,详细的讲解
  3. 暑期实践第二十九天 2022-8-1
  4. 计算机论文目录大全,毕业论文目录范文
  5. 计算机考研各个学校专业课,【择校必看】十三所计算机专业课只考数据结构的985院校!...
  6. 使用M0 DesignStart 的样例SoC(example system) - 4 FPGA原型验证
  7. 分享:微信淘宝客自动查券找券返利机器人实现的原理和思路
  8. oracle文本类型字段,Oracle字符的5种类型的介绍
  9. 音乐标签修改 android,音乐标签Android版
  10. iOS CMMotionManager之加速计、陀螺仪