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

声明

转载请注明出处:https://blog.csdn.net/impingo

项目地址:https://github.com/im-pingo/nginx-rtmp-module

服务器介绍

本系列博客中所用到的流媒体服务器是nginx-rtmp-module,文章头部有项目地址。 https://github.com/im-pingo/nginx-rtmp-module是在AlexWoo的基础上进一步开发的。

服务器功能

  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+(内存切片)服务(目前仅在dev分支,经过进一步测试后会合并到master分支上)
  6. 支持服务器端自动修复异常的音视频时间戳功能
  7. 修复流状态监控后台页面

未来计划

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

近期准备上线的功能

  1. 接收http-ts推流
  2. 支持http-ts回源
  3. 支持http-fmp4直播协议

搭建流程

环境

本篇文章以Centos系统为例。

安装依赖

yum install -y gcc gcc-c++ openssl openssl-devel pcre-devel

安装

git clone https://github.com/im-pingo/nginx-client-module.git
git clone https://github.com/im-pingo/nginx-multiport-module.git
git clone https://github.com/im-pingo/nginx-toolkit-module.git
git clone https://github.com/im-pingo/nginx-rtmp-module.git
git clone https://github.com/nginx/nginx.git
cd nginx
./auto/configure --add-module=../nginx-client-module   
    --add-module=../nginx-multiport-module             
    --add-module=../nginx-toolkit-module               
    --add-module=../nginx-rtmp-module

make && sudo make install

配置文件

配置文件详解

后面会专门写几篇博客来解析其中的配置项和对应的应用场景。

修改配置

cd /usr/local/nginx
vim conf/nginx.conf

配置模板(此配置能够满足单点服务)

user  

开启流监控页面

cd nginx-rtmp-module
cp stat.xsl /usr/local/nginx/html/stat.xsl

启动nginx

cd /usr/local/nginx
./sbin/nginx

注意事项

由于nginx需要监听80和1935端口,所以一定要确保你的服务器防火墙没有屏蔽这两个端口。

推流

RTMP推流地址: rtmp://your-server-ip/live/stream-name

播放地址:

  • rtmp播放地址: rtmp://your-server-ip/live/stream-name
  • http-flv播放地址:http://your-server-ip/flv/stream-name
  • http-ts播放地址:http://your-server-ip/ts/stream-name
  • hls播放地址:http://your-server-ip/hls/stream-name.m3u8

常用的推流工具有OBS和ffmpeg,具体使用方法这里不再赘述,只给出ffmpeg推送文件的命令。

ffmpeg -re -i your-input-file -vcodec libx264 -acodec aac -f flv rtmp://your-server-ip/live/stream-name

将上述命令中的your-input-file替换成你的媒体文件名,将your-server-ip替换成你的服务器ip地址,stream-name是你希望命名的流名(可随意)。 注意:ffmpeg命令中-re参数含义是按照真实时间戳速率读取文件,这个选项在推送文件到直播服务器中是必须的。另外-vcodec和-acodec是转码参数,如果你要推送的文件视频编码格式本身就是h264编码并且音频编码格式是aac或者mp3的话则不需要这两个参数。(重新编码非常消耗计算资源,使用时要注意)

后台监控

在浏览器中打开:http://your-server-ip/rtmp_stat 可以通过后台页面实时查看当前在线的推拉流情况。

f6dc723a4bf7e008b544e39fb49a8e83.png

QQ交流群:697773082(流媒体人)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值