P2P流媒体直播技术介绍

引言

随着网络带宽的增加,多媒体视频越来越广泛地被应用到各个场景,短视频、直播卖货等应用比比皆是。未来必然会有更多的流媒体体类应用。但对这类应用提供商都有一个不小的烦恼,那就是巨额的带宽费用。

对于像爱奇艺、优酷这样的视频网站,带宽费用更是运营的大头。利用P2P技术降低带宽费用是必须的。

对于众多的小型视频类网站,如果不采用一定P2P技术,服务器的并发量就上不去。

在点播时代P2P技术曾经称霸一时,诞生了快播等巨头,在直播时代,百花齐放,各种技术都在应用。

p2p直播系统架构图:

 

核心技术

 

1.nat 穿透

p2p即端到端,本质上互联网本来的目标就是要实现任意两个端点的互相连接,IPV6就可以实现。但目前受限于IPV4的地址数量限制,不得不大量采用NAT地址翻译连接互联网,这样造成的重要问题就是NAT内的端点不能被外界访问,这在一定程度上保护了内部,但对相互联接造成影响。 但这不影响我们P2P连接的决心,NAT穿透技术应运而生。 具体可以参考其他文章,在此不进行论述。  https://blog.csdn.net/lyztyycode/article/details/80818638

2.udp可靠传输

由于Tcp协议实现NAT穿透比较困难,一般都要用UDP进行,但UDP协议自身是不可靠协议,不可靠体现在数据不保证到达,不保证多个数据包的先后到达顺序。  从编程的角度看,你调用sendto()发送了一个UDP数据包,虽然返回实际传送出去的字符数,但你可以对任何地址发送sendto, 你并不能确定发送是成功的,对端真的收到了。因此必须实现基于UDP协议的可靠传输。

大约就相当于你要自己实现一个简化版的“Tcp协议”,来保证数据对方确实收到了,并且能够将数据还原成原始顺序,同时对于不稳定的网络还要能实现流量控制等。 具体可以参考: https://blog.csdn.net/yssycz/article/details/80132725

 

通过实现nat穿透和可靠传输,端到端终于连接上了,能够收发信息了。

3.实时的p2p数据分发

普通的直播是所有的客户端都连接到服务器上,从直播服务器上取数据。

p2p数据分发,是将数据在成百上千个节点间互相传播。且直播环境下,数据要尽可能快地传输到末端节点,必要时还要回源,从数据源拉取数据。 这部分可参考: https://blog.csdn.net/yuanrxdu/article/details/78973793

 

4.系统运行效率监控

系统在运行过程中,需要实时监控系统的性能,指标主要包括:流量,总用户数,直播用户数,节目数量,流量分享率,客户端卡顿率。特殊情况下还需要对某些节点进行日志分析。这些可以通过中心控制系统实现。

 

5.内容提供者接入

一个P2P直播系统不管是是只服务于某一个直播网站还是多个直播网站,都要有内容提供者的数据接入,就是要有视频的数据来源。  

某型p2p系统采用的是,在内容提供方运行软件,作为超级节点将媒体数据分发出去。

 

 

 

 

现有解决方案介绍

开源:

1.p2stream.

  https://github.com/guangzhuwu/p2streaming  (文档不全,项目有一点旧,但是内容比较全)

2.webtorrent

https://github.com/webtorrent/webtorrent

 

 

闭源:

1.yylive      http://ha.yunyingtx.com:8080/yuntx/

2.tvbus   https://github.com/binstreamio/tvbus.pc.demo  (只有SDK的伪开源)

 

引用:

1.P2P技术是如何将直播带宽降低75%的 https://blog.csdn.net/yuanrxdu/article/details/78973793

2. P2P流媒体直播点播(带宽节约95%以上)技术分享 https://blog.csdn.net/weiyangliuxingyu/article/details/89844553

 

 

更多内容讨论 QQ 290684247

 

 

 

 

©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页