应用层(OSI 模型的第七层, TCP 模型的第四层, 即应用层,)还有RTMP、P2P等协议。
1 流媒体协议
视频流中的图片存在:空间冗余、时间冗余、视觉冗余、编码冗余。可以通过编码来压缩视频。
编码应该具有一定的标准:ITU-T(国际电信联盟电信标准化部门)和MPEG(ISO的动态图像专家组)联合制定了H.264/MPEG-4 AVC编码标准。
直播的过程
主播:采样-编码-推流
服务端:接流-流处理-分发
观众:拉流-解码-播放
如何编码
将视频分为三种帧:
I帧-关键帧
P帧-前向预测编码帧
B帧-双向预测内插编码帧
一个视频可以拆分成一系列的帧,每一帧拆分成一些列的片,每一片都放在一个NALU(Network Abstraction Layer Unit,网络提取层单元)里面,NALU之间都是通过特殊的起始标识符分隔的,在每一个I帧的第一片前,要插入单独保存的SPS和PPS的NALU,最终形成一个长长的NALU序列。
推流
使用RTMP推流。
推流的过程是将NALU放在消息里发送,这个消息也称为RTMP(Real Time Messaging Protocol,实时消息传输协议)包。
拉流
客户端建立一个RTMP连接,读取视频流,先读到H.264的解码参数,例如SPS和PPS,然后将收到的NALU组成的一个个帧进行解码,交给播放器播放。
④-③小结:
①编码的两大流派达成了一致,都是通过关于时间、空间的各种算法来压缩数据的。
②压缩好的数据,为了方便传输会组成一系列的NALU,按照帧和片依次排列。
③排列好的NALU在网络传输时,要按照RTMP包的格式进行包装,RTMP包会拆分成块进行传输。
④推送到流媒体服务器的视频流经过转码和分发,可以被客户端通过RTMP拉取,然后组合为NALU,解码成视频格式进行播放。
2 P2P协议
FTP协议
文件下载可以通过HTTP,但是速度慢。
还可以通过FTP(File Transfer Protocol,文件传输协议),FTP基于TCP,会建立控制连接和数据连接。
FTP有主动模式(PORT)和被动模式(PASV),这些是在FTP服务器的角度来说的。
P2P Peer to Peer
资源不在集中在某些设备上,而是分散的储存在多台设备上,设备称为Peer。
.torrent文件
.torrent文件由两部分组成,announce(tracker和URL)和文件信息
DHT(Distribute Hash Table,分布式哈希表)
每个加入这个DHT网络的机器,都要负责存储这个网络里的部分资源信息和其他成员的联系信息,相当于所有机器构成了一个庞大的分布式存储数据结构。
DHT的工作方式具体见书P167
④-④小结:
①下载一个文件可以使用HTTP或FTP,这两种协议都使用集中下载的方式,而P2P换了一种思路,采用去中心化下载的方式。
②P2P也有两种下载方式, 一种是依赖于tracker服务器,即元数据集中,文件数据分散;另一种基于分布式哈希算法,元数据和文件数据全部分散。