iOS-流媒体传输协议简介

在了解流媒体协议之前,先预习下基础数据传输协议,因为流媒体协议也是基于基本数据传输协议的


数据传输协议:

  • TCP - 传输控制协议

  • UDP - 用户数据报协议

  • HTTP - 超文本传送协议

  • HTTPS - 基于SSL的超文本传送协议

  • SOCKET - 套接字,端口协议


TCP:传输控制协议 (Transmission Control Protocol)

  • 是一种面向连接的、可靠的、基于字节流的传输层通信协议

  • TCP是因特网中的传输层协议,使用三次握手协议建立连接

  • 每一条TCP连接只能是点到点的


UDP:用户数据报协议 (User Datagram Protocol)

  • UDP是无连接的、不可靠的一种数据传输协议

  • 传输速度很快,但不可靠

  • UDP支持一对一,一对多,多对一和多对多的交互通信


HTTP:超文本传送协议 (Hypertext Transfer Protocol )

  • 是互联网常用的协议之一,HTTP协议是建立在TCP协议之上的一种应用

  • HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接


HTTPS: 基于SSL的超文本传送协议(Hyper Text Transfer Protocol over Secure Socket Layer)

  • 是以安全为目标的HTTP通道,简单讲是HTTP的安全版

  • HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL

  • HTTPS 协议需要到CA申请证书,一般免费证书很少,需要交费


Socket 套接字

  • socket本质是编程接口(API),对TCP/IP的封装
    套接字(socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元

  • 它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口


流媒体协议

常见的流媒体协议

  • RTP(Real-time Transport Protocol), 常用语电话会议, 网络电话等场景, 但是缺点是不提供网络保障

  • RTCP(Real-time Transport Control Protocol), 是实时传输协议(RTP)的一个姐妹协议, 也常用于语电话会议, 网络电话等场景

  • RTMP(Real Time Streaming Protocol), RTMP是Adobe开发的协议

  • HLS(HTTP Live Streaming)是苹果公司(Apple Inc.)实现的基于HTTP的流媒体传输协议,可实现流媒体的直播和点播


HLS ( HTTP Live Streaming )

HTTP Live Streaming - Apple 开发文档

HTTP Live Streaming(HLS)是苹果公司实现的基于HTTP的流媒体传输协议,可实现流媒体的直播和点播

  • HLS协议在服务器端将直播数据流存储为连续的、很短时长的媒体文件(MPEG-TS格式),而客户端则不断的下载并播放这些小文件,因为服务器端总是会将最新的直播数据生成新的小文件,这样客户端只要不停的按顺序播放从服务器获取到的文件,就实现了直播

  • HLS基于HTTP协议实现,所以HLS比RTMP有较高的延迟

工作流程为:
  • 1、采集视频源和音频源的数据

  • 2、对原始数据进行H264编码和AAC编码

  • 3、视频和音频数据封装为MPEG-TS包

  • 4、HLS分段生成策略及m3u8索引文件

  • 5、HTTP传输协议传输数据

iOS-流媒体传输协议简介_第1张图片

HTTP Live Streaming Overview - 图片来源


RTMP ( Real Time Streaming Protocol )

RTMP协议是 Adobe 公司开发的一个基于TCP的应用层协议

RTMP本质上是流协议,主要的特点是:
  • 实时性高:RTMP的实时性在3秒之内,经过多层CDN节点分发后,实时性也在3秒左右,在一些实时性有要求的应用中以RTMP为主

  • 支持加密:RTMPE和RTMPS为加密协议

  • 稳定性高:HTTP也很稳定,但HTTP是在协议上稳定稳定性不只是服务端的事情,在CDN分发,服务器管理,客户端的支持上

RTMP的使用
  • 1、RTMP协议也要客户端和服务器通过“握手”来建立基于传输层链接之上的RTMP Connection链接,在Connection链接上会传输一些控制信息

  • 2、TMP协议传输时会对数据做自己的格式化,这种格式的消息我们称之为RTMP Message

  • 3、而实际传输的时候为了更好地实现多路复用、分包和信息的公平性,发送端会把Message划分为带有Message ID的Chunk,每个Chunk可能是一个单独的Message,也可能是Message的一部分,在接受端会根据chunk中包含的data的长度,message id和message的长度把chunk还原成完整的Message,从而实现信息的收发

你可能感兴趣的:(Swift,流媒体)