导语:最近研究了一下网页直播流的原理以及实现,现在就目前的实现方法做一个总结。
目录
- 直播流媒体协议
- 拉流与推流
- Node服务搭建
- 前端播放页面
- OBS推流配置
直播流媒体协议
先来了解一下基本的直播流媒体协议。
http-flv,rtpm
协议/特点 | 开发者 | 原理 | 优点 | 缺点 |
---|---|---|---|---|
http-flv | Abode | 通过服务器把flv下载到本地缓存,然后通过NetConnection本地连接播放 | 节省服务器消耗 | 保密性差 |
rtmp | Abode | 通过NetConnection连接到服务器,实时播放服务器的flv | 保密性好 | 消耗服务器资源 |
rtsp | 哥伦比亚大学、网景和RealNetworks | 控制具有实时特性的数据的发送,依赖传输协议 | 实时效果非常好 | 实现复杂 |
hls | 苹果公司 | 包括一个m3u(8)的索引文件,TS媒体分片文件和key加密串文件,不将TS切片文件存到磁盘,而是存在内存当中 | 极大减少了磁盘的I/O次数,延长了服务器磁盘的使用寿命,极大提高了服务器运行的稳定性 | 会生成大量的文件,存储或处理这些文件会造成大量资源浪费 |
拉流与推流
推流,指的是把采集阶段封包好的内容传输到服务器的过程。
拉流, 指服务器已有直播内容,用指定地址进行拉取的过程。
Node服务搭建
- 安装依赖包
这次使用node-media-server
包,来搭建,获取更多请访问。
mkdir live
cd live
npm init -y
npm i node-media-server
引入包,编写配置文件
// server.js
const nodeMediaServer = require('node-media-server');
const config = {
rtmp: {
port: 3001,
chunk_size: 6000,
gop_cache: true,
ping: 30,
ping_timeout: 60
},
http: