什么是流媒体?
流媒体是指采用流式传输的方式在Internet/Intranet播放的媒体格式,包含音频、视频、多媒体文件;流媒体在播放前不会下载整个文件,只将开始部分存入内存,在用户访问时对数据包进行缓存,让媒体数据正确地输出,流媒体数据流随时传送随时播放,只是在开始时有些延迟。
流媒体传输的过程是什么样的?
CDN:Content Delivery Network,第三⽅提供的⽹站资源加速下载或传输的⽹络,其原理是把同样的静态⽂件或者实时多媒体流同时发布到电信、移动、联通等运营商的⽹络内,⽅便⽤户就近下载实现更快、更稳定的传输速度。
推流:客户端采集的⾳视频数据,经过编码和⽹络传输,发送给流媒体服务器的过程,服务器可能是⾃⼰搭建的,也可能是CDN提供的。
拉流:客户端或者播放器从服务器下载(拉取)指定的媒体流并在本地播放的过程。
流媒体相关协议及概念有哪些?
WebSocket:WebSocket是一种在单个TCP连接上进行全双工通信的协议。
WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。 HTML5定义了WebSocket协议,Websocket 通过HTTP1.1 协议的101状态码进行握手,信令传输一般用到此协议。
RTP:RTP是基于UDP的一种流媒体传输协议,RTP本身不具备按时发送机制和质量服务,完全依赖底层服务去实现这个过程,相当于是基于UDP进行二次开发的一种协议。
RTMP:Adobe开发的⼀种基于TCP的实时流媒体传输协议,有公开标准,所以主流的CDN⼚商都⽀持这种协议类型的数据流的分发。RTMP协议同时⽀持采集端推流和播放端拉流。RTMP 基于 flash ,无法在 iOS 的浏览器里播放,实时性比 HLS 要好。
HLS:H5标准定义的⼀种将实时流切割、保存成m3u8分⽚⽂件,提供给播放器下载的协议。HLS只⽀持拉流,不⽀持推流。CDN⽀持将RTMP推送的媒体流⾃动转换成m3u8格式并提供HLS下载。
主要用于PC和Apple终端的音视频服务,包括一个m3u(8)的索引文件,TS媒体分片文件和key加密串文件,用于直播和点播都可以。
WebRTC:名称源自网页即时通信(英语:Web Real-Time Communication)的缩写,是一个支持网页浏览器进行实时语音对话或视频对话的API。