转载请注明出处:https://blog.csdn.net/impingo
项目地址:https://github.com/im-pingo/pingos
搭建单点流媒体服务器
服务器介绍
项目起源
最初我目前所维护的nginx-rtmp-module是在AlexWoo的基础上进一步开发的。
在经过一些列功能迭代后,我独立维护了https://github.com/im-pingo/pingos进一步将原nginx-rtmp-module进行集成化,融合进了直播流监控页面、flv.js播放器、一键安装部署等等功能。
所以pingos是在nginx-rtmp-module的基础上做了加法,欢迎大家直接使用pingos。
版本区别
项目 | 特点 |
---|---|
nginx-rtmp-module | 单一的nginx-rtmp-module模块,编译起来相对繁琐,配置文件和网页播放器都需要自己搭建。 |
pingos | 这是一个集成化的流媒体服务器项目,有一键安装部署脚本,配置文件、网页播放器和系统控制台都已经集成好,更方便安装维护。一键安装脚本可在各个linux发行版本和macOS操作系统使用。 |
服务器功能
- 接收rtmp实时流
- 支持rtmp、http-flv、http-ts、hls、hls+(内存切片) 直播服务
- 支持实时录制功能
- 支持主动推流、拉流操作
- 支持动态推流、拉流操作
- 支持鉴权功能
- 支持流状态监控
- 支持时间戳修复
我所做的改进
- 已经修复了AlexWoo项目中的一些bug
- 使rtmp、http-flv、hls、http-ts直播支持mp3、h265编码
- 支持http-ts直播协议
- 支持直播时移服务
- 支持hls+(内存切片)服务(目前仅支持单进程下使用,多进程下无法正常使用,未来将支持多进程下的hls+)
- 支持服务器端自动修复异常的音视频时间戳功能
- 修复流状态监控后台页面
未来计划
我会持续维护https://github.com/im-pingo/pingos项目,并且希望能够得到更多人的能够发现问题并且及时在github上提出问题,只要本人看到都会给出回复并且及时修复。
近期准备上线的功能
- 接收http-ts推流
- 支持http-ts回源
- 支持http-fmp4直播协议
功能对比
功能 | pingos | nginx-rtmp-module | 备注 |
---|---|---|---|
HTTP(S)-FLV | √ | × | pingos支持HTTP(S)-FLV播放,具体功能请看这篇文章 |
HTTP(S)-TS | √ | × | pingos支持HTTP(S)-TS播放,具体功能请看这篇文章 |
HLS+ | √ | × | pingos支持HLS+直播,具体功能请看这篇文章 |
多进程 | √ | × | pingos支持进程间码流同步,具体操作请看这篇文章 |
动态(静态)回源 | √ | × | pingos支持从别的源站拉http-flv或者rtmp流(目前正在实现rtsp拉流功能),具体操作请看这篇文章 |
动态(静态)转推 | √ | × | pingos支持将本地http-flv或者rtmp流转推到其他服务器上(目前正在实现rtsp拉流功能),具体操作请看这篇文章 |
HTTP-FLV回源拉流 | √ | × | pingos的回源协议支持rtmp和http-flv |
RTSP回源拉流 | 正在支持 | × | rtsp回源拉流更能已在最后调试阶段 |
GOP缓存 | √ | × | pingos支持gop缓存和低延时模式 |
VHOST功能 | √ | × | pingos像nginx http配置一样支持多server_name配置 |
application支持通配符 | √ | x | 当你需要非常多application时,不需要再在nginx.conf中配置那么多application,只需配置一个通配符 application * { live on;} 即可 |
H265编码 | √ | × | pingos的rtmp/http-flv/http-ts/hls/hls+均支持h265编码 |
mp3编码 | √ | × | pingos的rtmp/http-flv/http-ts/hls/hls+均支持mp3编码 |
html5网页播放器集成 | √ | × | pingos安装成功后默认集成一个html5的播放器,方便开发者调试 |
丰富的控制台接口 | √ | × | pingos支持丰富的控制台接口,例如:开播、停止、暂停、录像、停止录像、切换直播流、断开某条客户端等等接口 |
流量计费 | √ | × | pingos支持流量日志定制化的输出,具体功能请查看文章 |
搭建流程
安装
# 快速安装
git clone https://github.com/im-pingo/pingos.git
cd pingos
./release.sh -i
# 启动服务
cd /usr/local/pingos/
./sbin/nginx
配置文件
配置文件详解
后面会专门写几篇博客来解析其中的配置项和对应的应用场景。
修改配置文件
cd /usr/local/pingos
vim conf/nginx.conf
更多配置内容请访问项目官网https://pingos.io
开启流监控页面
cd nginx-rtmp-module
cp stat.xsl /usr/local/pingos/html/stat.xsl
启动nginx
cd /usr/local/pingos
./sbin/nginx
注意事项
由于nginx需要监听80和1935端口,所以一定要确保你的服务器防火墙没有屏蔽这两个端口。
html5播放器
本系统集成了一个html5播放器,访问地址是 http://ip/h5player/flv
这个播放器是基于flv.js的网页播放器,可以实现无插件播放http-flv直播流。
一旦你能够访问这个页面,说明你的直播服务器已经成功搭建起来了。
推流
ffmpeg推流
ffmpeg -re -i 文件.mp4 -vcodec copy -acodec copy -f flv rtmp://ip地址/live/01
将上述命令中的your-input-file替换成你的媒体文件名,将your-server-ip替换成你的服务器ip地址,stream-name是你希望命名的流名(可随意)。
注意:ffmpeg命令中-re参数含义是按照真实时间戳速率读取文件,这个选项在推送文件到直播服务器中是必须的。另外-vcodec和-acodec是转码参数,如果你要推送的文件视频编码格式本身就是h264编码并且音频编码格式是aac或者mp3的话则不需要这两个参数。(重新编码非常消耗计算资源,使用时要注意)
OBS推流
Open Broadcaster Software(简称OBS)是一款直播流媒体内容制作软件。同时程序和其源代码都是免费的。
支持 OS X、Windows、Linux操作系统。适用于多种直播场景。满足大部分直播行为的操作需求(发布桌面、发布摄像头、麦克风、扬声器等等)。
后台监控
在浏览器中打开:http://your-server-ip/rtmp_stat
可以通过后台页面实时查看当前在线的推拉流情况。
播放地址
协议 | 地址 |
---|---|
rtmp | rtmp://ip/live/流名 |
http-flv | http://ip/live/流名 |
hls | http://ip/hls/流名.m3u8 |
hls+ | http://ip/hls2/流名.m3u8 |
http-ts | http://ip/ts/流名 |
QQ交流群:697773082
QQ交流群:697773082