p2p技术如何降低实时视频直播带宽

wecloud1314 wecloud1314     2023-03-15     271

关键词:

实时视频直播经过去年的千播大战后已经成为互联网应用的标配技术,但直播平台的成本却一直居高不下,各个平台除了挖主播、挖网红以外,其背后高额的带宽费用也是他们最大的一块成本。

现阶段直播技术在传输方面分为两块:

    CDN :负责流媒体的分发传输;
    连麦系统:负责解决同时多个主播间互动的实时通信传输问题。

我们始终认为基于 CDN+ 连麦系统的直播技术是一个高成本高消耗的技术,从各大直播平台纷纷亏损来看就验证了这一点。除了带宽成本,延迟问题也是现在直播技术的一个硬伤。我们很早就意识到现在这种传统的直播技术是无法大规模进行在线教育互动直播的,所以学霸君从 2016 年下半年就开始研发基于 UDP 和 P2P 技术的互动直播系统。

整个系统的设计目标是:

    端到端延迟控制在秒级范围之内;
    在不影响视频质量的情况下尽力节省分发带宽。

基于 P2P 技术的整个分发架构在一个 10W+ 直播平台上进行了 9 个月的测试和调优,初步达成了设计目标。

传输分发网络中我们把连麦系统和分发系统合二为一,将分布式推流与边缘节点分发作为一套传输体系,通过服务之间的 P2P 通信和路由选择来实现连麦的最小时延。

整个传输分发网络分为三部分:

推流部分;

服务之间 P2P;

客户节点 P2P。

这个传输网络有一个系统锚点:假定推流者 speaker 推到 Edge server 上是不会发生丢包和延迟的,Edge server 会通过服务间 P2P 快速将收到的流数据分发到其他的 Edge server,而且在这个过程也不会发生延迟和丢包。

为什么需要这样一个锚点?因为在客户节点的 P2P 网络需要保证流畅性和最小延迟,也就是要求所有的 Edge server 在最短时间周期内拥有完整的数据,至于为什么要这样,后面我们在流补偿环节重点介绍。

我将通过整个流数据传输过程来解析具体的技术细节,但在这之前首先要解决的就是媒体数据分片问题,所有的传输过程会基于分片 (segment) 来设计。

媒体数据分片是整个分发传输系统中最为基础的部分,我们在设计分片时主要考虑的是时延和消耗的问题,分片如果太大,传输的时延就会越高,例如 HLS;如果分片太细,网络中回馈报文就会很多,对 P2P 网络来说额外的消耗也是个问题。

最后我们借鉴了 RTP 和 FLV 中的经验,采用按帧来做数据分片,这样做有以下几个好处:

按帧分片延迟粒度小,可以在帧传输进行延时优化;

实现简单,与编解码器编码原则一致;

组合灵活,可以实现播放 buffer 无缝结合。

每一个分片称作为 segment,用一个自增长的 32 位 ID 来表示唯一性,传输过程都是以这个 ID 为标示来确定数据的完整性。

确定好了媒体分片就可以进行推流了,我们把推流和分发的路径合二为一,上麦者是将流数据 segment 推送到离自己最近的 Edge server 上,而不是推送到专门的连麦系统上。我们推流传输使用的是 RUDP 传输算法,这个 RUDP 是采用了类似 BBR 基于延迟和丢包来设计的拥塞算法,并且对报文做了拥塞丢弃。

因为整个传输分发网络是分布式的,由多个 Edge server 组成,所以基于系统锚点,媒体数据分片到 Edge server 上必须尽快分发到其他 Edge server 上。最早我们是统一用 BGP server 来中转,这样耗费的 BGP 带宽很多,而且 BGP server 一旦异常,整个 Edge server 之间的通信就中断了。

媒体流数据通过 Edge server 间的 P2P 多路径传输网络到达各个 Edge server 上,接下来每个 Edge server 需要将流数据分片下发到各个客户节点上,我们针对上麦节点做了传输特殊处理让时延更小,过程和普通的 RTC 通信模型相似,这里就不赘述了。观看节点上分发采用自组织 P2P 网络,既然是通过 P2P 下发的,那么就要在客户节点群构建一个 P2P 网络,这个网络是怎么构建的?具体分为三步:连接、评估、分层。

客户节点程序是运行在客户机上的,大部分客户节点都会在路由器或者 NAT 后面,他们之间要相互建立连接,必须穿越彼此的 NAT 和防火墙。虽然现在穿越 NAT 的方法有很多,如 STUN、ICE 等,但穿越连通率始终是一个问题,如果穿越率太低,会让很多优质的节点资源得不到充分利用。

在设计穿越方案时我们将直连连通率放在第一位,通过修改 STUN 协议设计了一种基于端口多次猜测和尝试的穿越机制。首先通过类似 STUN 协议判断 NAT 类型、NAT 端口变化规律、NAT 是否有黑名单机制等信息,然后将这些信息存到辖区连接中的 Edge server 中,当有伙伴节点来与它穿越,会交换彼此的这些信息,不同的排列组合会有不同的穿越策略,每一次穿越的过程和结果都会记录到我们的后台数据库,我们会周期性地将这些数据进行分析并调整协商穿越策略。

【邻居问题】:

连接一旦完成,节点与节点之间就成为邻居,彼此会进行状态交换和心跳,那么问题来了,一个直播系统有成千上万的节点参与,如果都两两相连的话光心跳通信就可以将客户节点的上传带宽占满。我们设计了一个节点 LRU 淘汰链表,链表中保持 40 个联系的邻居节点,老的节点会退出,新的节点会加入,LRU 会根据邻居与自己的通信状态来进行 LRU 新增和淘汰,原则如下:

    就近原则,内网优先,同城同一运营商网络次之;
    周期性评测延迟和媒体分片命中率,末位淘汰;
    当 LRU 列表中节点不足 40 个时会从备用节点列表中选取新的节点进行连接并加入到 LRU 中。

【节点评估】:

每个客户节点的计算能力、通信能力和网络分区等都不一样,这使得我们必须对每个节点做一个评价,对一个节点的评价分为两部分:邻居节点对自己的评价和自己对自己的评估。

邻居评价主要是:

    RTT;
    丢包率;
    请求命中率。

通过这三个参数会对每个邻居计算出一个亲和力分值 score,这个值会用于后面的分发选择。

主要评估自己这几点:

    CPU、内存;
    网络类型:WIFI/4G/ 有线网络;
    上传带宽。

节点会周期性计算这两类参数,通过一个网络 QOS 收敛函数 f (x) 来计算节点能力和对邻居 QOS 策略。

节点评估最终的目的是让有能力的节点成为超级节点(super node)来分担 Edge server 的分发压力。

那么一个节点成为超级节点的条件是什么呢?有以下几个条件:

有足够的上传带宽,4G 和弱 WIFI 下不能成为超级节点;

有空闲的 CPU 和内存,计算能力不够的低端移动设备不能成为超级节点;

对邻居通信友好,不是通信孤岛;

得到 Edge server 的任命,和 Edge server 之间通信顺畅。

超级节点如果性能衰减了怎么办?答案是会退化成普通节点,因为节点评估是周期性实时进行的,如果发现节点性能衰减,Edge server 会让其退化。即时通讯聊天软件app开发可以加蔚可云咨询

既然任命了超级节点,那么超级节点是怎么工作的?每一个超级节点在被任命时都会分配到一个分组 ID,Edge server 会根据自己辖区的超级节点数量进行分组,每个分组由多个超级节点组成,分组内的超级节点负担自己分组的媒体分片分发。例如:有 5 个超级节点分组,这时单位周期内有 1 ~ 20 个 segment,那么第一个分组负责 1、6、11、16 编号的 segment 分发,以此类推第二组负责 2、7、12、17 …… 这样做是为了防止单个超级节点失效,增强了 P2P 分发的稳定性。

通过上面的 P2P 网络构建过程我们知道整个 P2P 网络其实是一个分层有向图分发网络,那么具体是怎么进行流数据分发的呢?也分三步:先推 (push)、后拉 (pull)、再补偿。

直播cdn调度技术关键挑战与架构设计

作者:胡济麟1、背景介绍1.1直播业务特点互联网视频直播是一种消息媒介形态,提供时产时消的内容,经过多年,已经发展出秀场、游戏、电商、体育等多种业务形态。主要特点是:内容实时产生实时消费,对时效性要求更高... 查看详情

rtc-实时音视频通信技术介绍与应用

...0c;也深入走进老百姓的日常生活。那么网络云会议背后的技术力量是什么呢?答案是:RTC-实时音视频技术。实时音视频(RTC)即基于IP技术实现的实时交互的音视频通信技术。实时音视频应用场景主要有RTC-实时音... 查看详情

实时音视频开发理论必备:如何省流量?视频高度压缩背后的预测技术

...泛商用,带宽已经越来越高,传输音视频变得更加容易。视频直播、视频聊天,已经完全融入了每个人的生活。视频为何如此普及呢?是因为通过视频能方便快捷地获取到大量 查看详情

直播p2p技术一窥

1.直播协议直播协议主要有RTMP,HLS,MPEG-DASH,RTSP,HTTP-FLV等。每种协议都各有长短,比如RTMP延迟低,但诞生于Adobe,依赖于FlashPlayer,在如今FLashPlayer面临被淘汰的时代,RTMP前途未卜;HLS是苹果基于HTTP开发并主导的流媒体协议,... 查看详情

微信视频通话码流是多少

...流是多少微信视频通话是基于WebRTC的双向实时视频流传输技术,通过WebRTC,可以把浏览器或者客户端中的视频流和音频流传输到对端,这些流都是经过编码的,编码方式根据不同的环境而定,如H.264、VP8和VP9等。微信视频通话的... 查看详情

酷信即时通讯软件有啥特点?

实时动态码流技术:软件会根据客户端的带宽和CPU性能,实时调整每个端的上传码流和下载码流,从而极大降低了画面卡顿,基本消除了马赛克,极其流畅并发数高 服务器转发的模式下(带宽100M),语音会议的单台最大并发数... 查看详情

省带宽压成本专题从产品架构来看,pcdn如何节流50%

...。本次“省带宽、压成本”系列一共会推出六篇文章,从技术迭代、硬件更新等角度出发,向大家介绍节省CDN流量,降低视频播放成本的方法。第一篇:《从产品架构来看,PCDN如何节流50%》目前国内互联网的发展,直播、点播... 查看详情

p2p加速系统解决方案

...直播运营商来说,大并发带来了经济效益,同时也带来的带宽消耗的沉重压力。大概整理了下网络上大家对于流媒体系统的P2P功能以及对于P2P节省带宽的加速系统的疑问:  1. 带有FlashP2P功能的流媒体直播系统有哪些... 查看详情

深挖“窄带高清”的实现原理

...用户场景,推出了“省带宽、压成本”系列文章,从编码技术、网络架构等角度出发,结合又拍云的产品成果,向大家介绍节省流量,降低带宽成本的妙招。《降低30%视频码率,深挖“窄带高清”的实现原理》是“省带宽、压成... 查看详情

p2p加速系统解决方案

...直播运营商来说,大并发带来了经济效益,同时也带来的带宽消耗的沉重压力。大概整理了下网络上大家对于流媒体系统的P2P功能以及对于P2P节省带宽的加速系统的疑问:  带有FlashP2P功能的流媒体直播系统哪家好,能否... 查看详情

通过Wifi直接(P2P)的android到android实时视频流[关闭]

】通过Wifi直接(P2P)的android到android实时视频流[关闭]【英文标题】:androidtoandroidlivevideostreamviaWifidirect(P2P)[closed]【发布时间】:2013-12-2212:28:50【问题描述】:我有两个安卓设备(手机)。我们叫P1和P2。我正在编写两个应用程序... 查看详情

5g在视频为中心的流媒体互动中将如何推动实时性传输的发展?

5G的快速发展给我国的通信技术输送了新的活力,同时,我们也需要认识到通信技术和音视频技术是相互影响、相互促进的。在网络层面,5G无疑为音视频开发提供了有力的支持,网络通信的延时越低、带宽越高&#x... 查看详情

适合点播应用的p2p加速系统

...人就意味着更大的网络带宽支撑,更大的成本消耗。那么如何能节省带宽便是运营者的头等大事。也就是说找到有效的P2P加速解决方案变得尤为重要。 针对直播的P2P加速方案:&n 查看详情

「实时视频流分析的边缘计算技术」最新2022研究综述(代码片段)

清华大学最新《面向实时视频流分析的边缘计算技术》综述实时视频流分析在智能监控、智慧城市、自动驾驶等场景中具有重要价值.然而计算负载高、带宽需求大、延迟要求严等特点使得实时视频流分析难以通过传统的云计算... 查看详情

android视频p2p

...频应该不是太好,请教大神给思路,高分送上。。。参考技术Ap2p可能不能实现实时播放。因为p2p是分段传输的,有可能你传输了尾部的一段视频,前面的视频段还没穿,造成播放卡顿。要是实时传输,还是两台电脑之间通过udp... 查看详情

实时音视频开发必懂:省流量的技术--预测技术

...#xff0c;带宽已经越来越高,传输音视频变得更加容易。视频直播、视频聊天,已经完全融入了每个人的生活。 视频为何如此普及呢?是因为通过视频能方便快捷地获取到大量信息。但视频数据量非常巨大,视频的... 查看详情

网络监控如何禁止wifi视频?

娱乐广泛,视频应用无孔不入,手机视频普遍不亚于微信,淘宝APP的应用,视频流量非常占有带宽,局域网内,一旦打开视频,就会占用很多带宽资源,影响局域网网络正常运行,而且工作效率也降低很多,上网行为管理建议,... 查看详情

如何实现1080p延迟低于500ms的实时超清直播传输技术

...500ms的实时超清直播传输技术。    导语:视频直播是很多技术团队及架构师关注的问题,在实时性方面,大部分直播是准实时的,存在1-3秒延迟。本文由袁荣喜向「高可用架构」投稿,介绍其将直播延迟控制在500m... 查看详情