视频直播

yuhuo2022-03-04开发知识
参考链接

视频形式

点播

播放已经存在的视频。

直播

单主播推流到服务器,多观众从服务器拉流观看。

使用 RTMP、HTTP-FLV、HLS 协议,会有几秒延迟。

实时音视频

用于视频通话,视频会议等。

使用基于 UDP 的 RTC、webRCT 协议,要求低延时(300ms 内)。

互动直播(连麦)

基于实时音视频,主播和观众或其他主播进行音视频通话。

旁路直播

将互动直播的多路流在服务端进行合流,再推给观众,同样有几秒延迟。

直播流程

直播流程

直播流程

直播流程

直播协议

HTTP-FLV

基于 HTTP 的 flv 流媒体传输,它使用类似 RTMP 流式的 HTTP 长连接,实时性和 RTMP 相当。

H5 原本使用 flash 播放,flash 已淘汰。video 元素是无法直接播放 flv 视频的,需要通过 flv.js 库来解析原始数据,再通过浏览器新特性 MSE(Media Source Extensions API)将最终数据提供给 video 元素。

flv.js 示例

说明
作用流媒体传输
优点低延迟(3s左右)
缺点某些移动端浏览器不支持 MSE
应用场景H5 点播;H5 直播拉流

HLS

基于 HTTP 的自适应码率流媒体传输协议(HTTP Live Streaming)。

流媒体切片成一段段 ts 文件,通过 m3u8 索引文件按序访问 ts 文件,播放完成后再请求下一个 m3u8 文件。直播一般来说一个 m3u8 会包含 3个 切片,每个切片至少是 2s~3s ,在加上网络延迟,基本延迟会达到 10s 左右。

在支持 HLS 的浏览器(如 Safari,移动端多数浏览器),直接将 m3u8 链接作为 video 的源路径即可。不支持的浏览器需要通过 hls.js 库和 MSE 才能播放。

hls.js 示例

说明
作用流媒体传输
优点支持性高
缺点高延迟(取决于切片大小)
应用场景H5 点播;H5 直播拉流(高延迟问题,仅在 HTTP-FLV 不支持的情况下才用,移动端为主)

RTMP

实时消息协议(Real Time Messaging Protocol)。

flv / f4v 的文件格式,H5 需要使用 flash 播放,flash 已淘汰,目前不再支持。

说明
作用流媒体传输
上层协议TCP
默认端口1935
优点低延迟(3s左右)
缺点H5 不再支持
应用场景APP 直播推流,APP 直播拉流

直播SDK

主流的第三方直播SDK对比(腾讯云、即构、阿里云、声网、网易云信、网宿) - 知乎 (zhihu.com)open in new window

Last Updated 2024/4/16 01:56:38