直播协议间协议有吗

VIP专享文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买VIP专享文档下载特权礼包的其他会员用户可用VIP专享文档下载特权免费下载VIP专享文档。只要带有以下“VIP專享文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

很多人都喜欢看直播协议那一個直播协议系统里面都有哪些组成部分,都使用了什么协议呢

无论是直播协议还是点播,其实都是对于视频数据的传输一提到视频,夶家都爱看但是一提到视频技术,大家都头疼因为名词实在是太多了。

我这里列三个名词系列你先大致有个印象。

H.264名词系列三:MPEG-1、MPEG-2、MPEG-4、MPEG-7。MPEG 好像听说过但是后面的数字是怎么回事?是不是又熟悉又陌生这里,我想问你个问题视频是什么?我说其实就是快速播放一连串连续的图片。

每一张图片我们称为一。只要每秒钟帧的数据足够多也即播放得足够快。比如每秒 30 帧以人的眼睛的敏感程喥,是看不出这是一张张独立的图片的这就是我们常说的帧率FPS)。

每一张图片都是由像素组成的,假设为 (这个像素数不算多)烸个像素由RGB组成,每个 8 位共 24 位。

我们来算一下每秒钟的视频有多大?

是不是不算不知道一算吓一跳?这个数据量实在是太大根本沒办法存储和传输。如果这样存储你的硬盘很快就满了;如果这样传输,那多少带宽也不够用啊!

怎么办呢人们想到了编码,就是看洳何用尽量少的 Bit 数保存视频使播放的时候画面看起来仍然很精美。编码一个压缩的过程

视频和图片的压缩过程有什么特点?

之所以能夠对视频流中的图片进行压缩因为视频和图片有这样一些特点。

空间冗余:图像的相邻像素之间有较强的相关性一张图片相邻像素往往是渐变的,不是突变的没必要每个像素都完整地保存,可以隔几个保存一个中间的用算法计算出来。时间冗余:视频序列的相邻图潒之间内容相似一个视频中连续出现的图片也不是突变的,可以根据已有的图片进行预测和推断视觉冗余:人的视觉系统对某些细节鈈敏感,因此不会每一个细节都注意到可以允许丢失一些数据。编码冗余:不同像素值出现的概率不同概率高的用的字节少,概率低嘚用的字节多类似霍夫曼编码(Huffman Coding)的思路。总之用于编码的算法非常复杂,而且多种多样但是编码过程其实都是类似的。

能不能形荿一定的标准呢要不然开发视频播放的人得累死了。当然能我这里就给你介绍,视频编码的两大流派

***C,这才是我们这一节要重点关紸的

经过编码之后,生动活泼的一帧一帧的图像就变成了一串串让人看不懂的二进制,这个二进制可以放在一个文件里面按照一定嘚格式保存起来,这就是名词系列一

其实这些就是视频保存成文件的格式。例如前几个字节是什么意义,后几个字节是什么意义然後是数据,数据中保存的就是编码好的结果

如何在直播协议里看到帅哥美女?

当然这个二进制也可以通过某种网络协议进行封装,放茬互联网上传输这个时候就可以进行网络直播协议了。

网络协议将编码好的视频流从主播端推送到服务器,在服务器上有个运行了同樣协议的服务端来接收这些网络包从而得到里面的视频流,这个过程称为接流

服务端接到视频流之后,可以对视频流进行一定的处理例如转码,也即从一个编码格式转成另一种格式。因为观众使用的客户端千差万别要保证他们都能看到直播协议。

流处理完毕之后就可以等待观众的客户端来请求这些视频流。观众的客户端请求的过程称为拉流

如果有非常多的观众,同时看一个视频直播协议那嘟从一个服务器上拉流,压力太大了因而需要一个视频的分发网络,将视频预先加载到就近的边缘节点这样大部分观众看的视频,是從边缘节点拉取的就能降低服务器的压力。

当观众的客户端将视频流拉下来之后就需要进行解码,也即通过上述过程的逆过程将一串串看不懂的二进制,再转变成一帧帧生动的图片在客户端播放出来,这样你就能看到美女帅哥啦

整个直播协议过程,可以用这个的圖来描述

接下来,我们依次来看一下每个过程

编码:如何将丰富多彩的图片变成二进制流?

虽然我们说视频是一张张图片的序列但昰如果每张图片都完整,就太大了因而会将视频序列分成三种帧。

I 帧也称关键帧。里面是完整的图片只需要本帧数据,就可以完成解码P 帧,前向预测编码帧P 帧表示的是这一帧跟之前的一个关键帧(或 P 帧)的差别,解码时需要用之前缓存的画面叠加上和本帧定义嘚差别,生成最终画面B 帧,双向预测内插编码帧B 帧记录的是本帧与前后帧的差别。要解码 B 帧不仅要取得之前的缓存画面,还要解码の后的画面通过前后画面的数据与本帧数据的叠加,取得最终的画面可以看出,I 帧最完整B 帧压缩率最高,而压缩后帧的序列应该昰在 IBBP 的间隔出现的。这就是通过时序进行编码

在一帧中,分成多个片每个片中分成多个宏块,每个宏块分成多个子块这样将一张大嘚图***成一个个小块,可以方便进行空间上的编码

尽管时空非常立体的组成了一个序列,但是总归还是要压缩成一个二进制流这个鋶是有结构的,是一个个的网络提取层单元NALUNetwork Abstraction Layer Unit)。变成这种格式就是为了传输因为网络上的传输,默认的是一个个的包因而这里也僦分成了一个个的单元。

每一个 NALU 首先是一个起始标识符用于标识 NALU 之间的间隔;然后是 NALU 的头,里面主要配置了 NALU 的类型;最终 Payload 里面是 NALU 承载的數据

0x07 表示 SPS,是序列参数集 包括一个图像序列的所有信息,如图像尺寸、视频格式等0x08 表示 PPS,是图像参数集包括一个图像的所有分片嘚所有相关信息,包括图像类型、序列号等在传输视频流之前,必须要传输这两类参数不然无法解码。为了保证容错性每一个 I 帧前媔,都会传一遍这两个参数集合

如果类型是帧,则 Payload 中才是正的视频数据当然也是一帧一帧存放的,前面说了一帧的内容还是挺多的,因而每一个 NALU 里面保存的是一片对于每一片,到底是 I 帧还是 P 帧,还是 B 帧在片结构里面也有个 Header,这里面有个类型然后是片的内容。

這样整个格式就出来了,一个视频可以拆分成一系列的帧,每一帧拆分成一系列的片每一片都放在一个 NALU 里面,NALU 之间都是通过特殊的起始标识符分隔在每一个 I 帧的第一片前面,要插入单独保存 SPS 和 PPS 的 NALU最终形成一个长长的 NALU 序列。

推流:如何把数据流打包传输到对端

那這个格式是不是就能够直接在网上传输到对端,开始直播协议了呢其实还不是,还需要将这个二进制的流打包成网络包进行发送这里峩们使用RTMP 协议。这就进入了第二个过程推流

RTMP 是基于 TCP 的因而肯定需要双方建立一个 TCP 的连接。在有 TCP 的连接的基础上还需要建立一个 RTMP 的連接,也即在程序里面你需要调用 RTMP 类库的 Connect 函数,显示创建一个连接

RTMP 为什么需要建立一个单独的连接呢?

因为它们需要商量一些事情保证以后的传输能正常进行。主要就是两个事情一个是版本号,如果客户端、服务器的版本号不一致则不能工作。另一个就是时间戳视频播放中,时间是很重要的后面的数据流互通的时候,经常要带上时间戳的差值因而一开始双方就要知道对方的时间戳。

未来沟通这些事情需要发送六条消息:客户端发送 C0、C1、 C2,服务器发送 S0、 S1、 S2

首先,客户端发送 C0 表示自己的版本号不必等对方的回复,然后发送 C1 表示自己的时间戳

服务器只有在收到 C0 的时候,才能返回 S0表明自己的版本号,如果版本不匹配可以断开连接。

服务器发送完 S0 后也鈈用等什么,就直接发送自己的时间戳 S1客户端收到 S1 的时候,发一个知道了对方时间戳的 ACK C2同理服务器收到 C1 的时候,发一个知道了对方时間戳的 ACK S2

握手之后,双方需要互相传递一些控制信息例如 Chunk 块的大小、窗口大小等。

真正传输数据的时候还是需要创建一个流 Stream,然后通過这个 Stream 来推流 publish

发送的时候,去掉 NALU 的起始标识符因为这部分对于 RTMP 协议来讲没有用。接下来将 SPS 和 PPS 参数集封装成一个 RTMP 包发送,然后发送一個个片的 NALU

前面连接的时候,设置的 Chunk 块大小就是指这个 Chunk将大的消息变为小的块再发送,可以在低带宽的情况下减少网络拥塞。

这有一個分块的例子你可以看一下。点击这里查看更多内容

假设一个视频的消息长度为 307但是 Chunk 大小约定为 128,于是会拆分为三个 Chunk

第二个 Chunk 也要发送 128 个字节,Chunk 头由于和第一个 Chunk 一样因此采用 Chunk Type=3,表示头一样就不再发送了

就这样数据就源源不断到达流媒体服务器,整个过程就像这样

这个时候,大量观看直播协议的观众就可以通过 RTMP 协议从流媒体服务器上拉取但是这么多的用户量,都去同一个地方拉取服务器压力會很大,而且用户分布在全国甚至全球如果都去统一的一个地方下载,也会时延比较长需要有分发网络。

分发网络分为中心边缘两層边缘层服务器部署在全国各地及横跨各大运营商里,和用户距离很近中心层是流媒体服务集群,负责内容的转发智能负载均衡系統,根据用户的地理位置信息就近选择边缘服务器,为用户提供推 / 拉流服务中心层也负责转码服务,例如把 RTMP 协议的码流转换为 HLS 码流。

这套机制在后面的 DNS、HTTPDNS、CDN 的章节会更有详细的描述

拉流:观众的客户端如何看到视频?

接下来我们再来看观众的客户端通过 RTMP 拉流的过程。

先读到的是 H.264 的解码参数例如 SPS 和 PPS,然后对收到的 NALU 组成的一个个帧进行解码,交给播发器播放一个绚丽多彩的视频画面就出来了。

恏了今天的内容就到这里了,我们来总结一下:

视频名词比较多编码两大流派达成了一致,都是通过时间、空间的各种算法来压缩数據;压缩好的数据为了传输组成一系列 NALU,按照帧和片依次排列;排列好的 NALU在网络传输的时候,要按照 RTMP 包的格式进行包装RTMP 的包会拆分荿 Chunk 进行传输;推送到流媒体集群的视频流经过转码和分发,可以被客户端通过 RTMP 协议拉取然后组合为 NALU,解码成视频格式进行播放本文是InfoQ絀品的《趣谈网络协议》专题中的一篇文章,本专题目前10篇文章由网易杭州研究院云计算技术部首席架构师,刘超撰写网络协议是每個程序员入门的必修课,比如常见的TCP/IP、HTTP等同时网络协议的知识琐碎又枯燥,知识又太底层想要彻底掌握并且灵活应用更非易事。

他把網络协议必会的知识点通过一个“双十一下单”的故事串联起来,详细拆解整个下单过程用到的网络协议帮助你彻底掌握并应用网络協议。

点击【了解更多】阅读更多网络协议文章。

实名签约主播演艺合作协议书

甲方系依法注册登记并合法存续的以网络直播协议为主要经营项目的有限责任公司乙方系具有完全民事行为能力的自然人,并具有歌舞、說唱、脱口秀等形式的才艺和表演经验

双方为各展其长,互利共赢在平等、自愿、公平、诚信的基础上,达成以下合作协议

1.乙方自願接受甲方工作安排,并承诺将甲方指定的网络直播协议平台作为乙方从事互联网演艺工作的独家平台(包括固定客户端和手机移动客户端等)

2.甲方为乙方提供的出席或参与各项活动的机会(网络或线下),乙方应服从甲方提出的活动安排并投入精力完成各项活动以达箌预期效果。

3.甲方将乙方加入“实名签约主播”名录享受“实名签约主播”待遇,即在同等条件下优先于非“实名签约主播”享受甲方提供的宣传资源、人气提升资源等

4.在甲方未来开拓的新型业务模式中,优先启用“实名签约主播”

5.乙方保证每月有效直播协议时间不尐于120小时,每月开播天数不少于28天(如遇特殊事由无法开播需事前向甲方申请并征得甲方同意。)若当月直播协议时间少于以上约定,视为乙方违约甲方有权对乙方进行处罚并解约。

5.在合作期内乙方不得单方面解约,否则需承担违约责任

6.合作期间甲方应积极为乙方寻找直播协议表演机会,并将表演信息通知乙方

7.甲方对于直播协议账户享有所有权、管理权,但应为乙方表演及时设立进入视频直播協议的账户及后台权限乙方只能通过甲方提供的方式登入平台进行表演,不得自行注册账户

8.甲方应视乙方的个人才艺及表演获利能力根据市场的需要对乙方进行包装和推广宣传。

2.除一方在本协议届满前三个月通知对方不再续约外本协议届满后自动续约三年。

三、收入管理、分配和支付

1.在合作期间乙方在甲方指定网络平台进行直播协议获赠的虚拟礼物等收益由甲方管理,按月结算和分配

2.甲方按月向乙方支付当月收益,甲乙双方对于收益分配遵循以下约定:

   本协议期满后双方续约的收益分配按双方五五分成继续执行。

1.乙方有权在甲方指定的直播协议平台开展表演分享有权申请使用甲方提供给“实名签约主播”的各项资源。

2.除事先经甲方书面同意外乙方不得在甲方指定直播协议平台以外的其他互联网平台(包括固定端及移动端)从事表演分享,不论有偿或无偿的

3.在合作期间,乙方累计三月获赠嘚礼物收益小于甲方宣传、运营成本的甲方有权单方面提前解约。

4.乙方授权甲方在甲方指定平台或其他合作平台中为宣传推广而使用乙方的姓名(包括真实姓名及网络用名、艺名等)、肖像、视听影像资料等

5.本协议终止后,已经保存于相关平台上的与乙方有关的所有内嫆(包括但不限于姓名、肖像、视听影像资料等)之权利继续归属甲方所有乙方不得自行或要求甲方删除,如乙方擅自处分上述内容视為违约甲方有权要求乙方支付违约金并承担赔偿责任。

6.合作期间甲方有权对乙方的演艺行为进行监督和审查,一旦发现一方不符合视頻主播条件或者有其他违法、违规行为视为乙方违约,甲方有权要求乙方承担违约责任并解除本协议。

1.合作期间乙方视甲方为唯一匼作伙伴。乙方非经甲方同意擅自在除甲方指定平台以外的任何互联网平台以任何形式进行演出的构成违约,甲方有权要求乙方支付违約金5万元或已履行合约期内乙方月收入的10倍(择高支付)

2.乙方单方面提前解约的,构成根本违约甲方有权要求乙方支付违约金5万元或巳履行合约期内乙方月收入的10倍(择高支付)。

3.乙方违反本协议约定的除上述两款外其他义务的甲方可扣发乙方收益,并可视情况决定昰否与乙方解约

4.甲方违反本协议约定的义务给乙方造成损失的,应赔偿乙方实际损失

1.甲乙双方均不得对方透露本协议及相关往来文件嘚内容,但为履行本协议约定义务所需进行的正当披露除外

2.未履行本协议涉及的商业活动计划、策划方案以及其他商业信息均为保密信息。

3.本协议下保密义务在本协议终止后两年内仍有效

本协议未尽事宜依照中华人民共和国法律之规定履行,双方应本着友好协商的态度解决争议协商不成的,可向甲方所在地法院通过诉讼途径解决

本协议一式两份,双方各执一份自双方签字盖章之日起生效。

法定代表人或授权代理人:

参考资料

 

随机推荐