分布式直播系统(二)【搭建单点rtmp\http-flv\hls流媒体服务器】

转载请注明出处:https://blog.csdn.net/impingo
项目地址:https://github.com/im-pingo/pingos

搭建单点流媒体服务器

  • 服务器介绍
    • 项目起源
    • 版本区别
    • 服务器功能
    • 我所做的改进
    • 未来计划
      • 近期准备上线的功能
  • 功能对比
  • 搭建流程
    • 安装
    • 配置文件
      • 配置文件详解
      • 修改配置文件
    • 开启流监控页面
    • 启动nginx
    • 注意事项
    • html5播放器
    • 推流
      • ffmpeg推流
      • OBS推流
    • 后台监控
      • 播放地址
    • QQ交流群:697773082

服务器介绍

项目起源

最初我目前所维护的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操作系统使用。

服务器功能

  1. 接收rtmp实时流
  2. 支持rtmp、http-flv、http-ts、hls、hls+(内存切片) 直播服务
  3. 支持实时录制功能
  4. 支持主动推流、拉流操作
  5. 支持动态推流、拉流操作
  6. 支持鉴权功能
  7. 支持流状态监控
  8. 支持时间戳修复

我所做的改进

  1. 已经修复了AlexWoo项目中的一些bug
  2. 使rtmp、http-flv、hls、http-ts直播支持mp3、h265编码
  3. 支持http-ts直播协议
  4. 支持直播时移服务
  5. 支持hls+(内存切片)服务(目前仅支持单进程下使用,多进程下无法正常使用,未来将支持多进程下的hls+)
  6. 支持服务器端自动修复异常的音视频时间戳功能
  7. 修复流状态监控后台页面

未来计划

我会持续维护https://github.com/im-pingo/pingos项目,并且希望能够得到更多人的能够发现问题并且及时在github上提出问题,只要本人看到都会给出回复并且及时修复。

近期准备上线的功能

  1. 接收http-ts推流
  2. 支持http-ts回源
  3. 支持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-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

你可能感兴趣的:(流媒体直播,直播,rtmp,流媒体,http-flv,hls)