Alan Hou的个人博客

基于 Nginx-rtmp-module 的直播系统开发配置篇

Nginx基础

Nginx-rmtp-module 基础

RTMP(Real Time Messaging Protocol)实时消息传送协议,Adobe,应用层协议

HTTP Live Streaming(HLS),苹果公司,M3U8

NRM(Nginx-rmtp-module)下载地址:https://github.com/arut/nginx-rtmp-module/releases或http://arut.github.io/nginx-rtmp-module/

配置文件

防火墙

推流(参见FFmpeg 从入门到精通-FFmpeg编译安装)

拉流可通过VLC播放器进行测试(File > Open Network…),在其中输入推流地址rtmp://192.168.xx.xx:1935/mylive/6即可

Nginx-rmtp-module 进阶

使用 NRM 支持 HLS 协议直播

推流

同样可通过 VLC播放器进行拉流播放,推流过程中,还可以看到/usr/local/m3u8File/目录下会生成很多的 ts 文件

推流的基本格式为ffmpeg -i 视频文件 -vcodec 视频编码库 -acodec 音频编码库 -f flv rtmp://xx,application(如上述的 mylive)之后的参数为串流码(Stream Key),如前面所用到的6和7,用于 区分不同的直播流。

Control 控制器

直播流录制配置:

推流

开启录制访问http://192.168.xx.xx/control/record/start?app=mylive&name=77&rec=myRecord,终止录制将其中的 start 修改为 stop 即可

命令功能
[off|all|audio|video|keyframes|manual]off 关闭录制音频与视频
all录制音频与视频
audio 仅录制音频
video仅录制视频
keyframes仅记录关键帧
manual 手动开启和关闭录制(默认自动录制)

示例:

drop 命令

redirect 命令

数据统计模块

流数据统计模块 rtmp_stat

访问地址http://192.168.xx.xx/liveStat

Exec 相关功能

所有指令说明请见https://github.com/arut/nginx-rtmp-module/wiki/Directives

Nginx-rtmp-module 应用

相关文章:FFmpeg 从入门到精通-FFmpeg编译安装

FFmpeg 的组件:libavcodec、libavutil、libavformat、libavfilter、libavdevice、libswscale、libpostproc和 libswresample 及 ffmpeg、ffplay、ffprobe

FFmpeg 支持的协议:HTTP、RTP、RTSP、RealMedia RTSP/RDT、TCP、UDP、Gopher、RTMP、RTMPT、RTMPE、RTMPTE、RTMPS、SDP、MMS over TCP。

示例

libx264安装

若出现不兼容请至 Git 官网中下载最新版本 FFmpeg重新编译安装

若使用过程中出现类似 libx264.so.155: cannot open shared object file: No such file or directory

FFmpeg与直播的应用

补充:

由于当前 OBS 推流工具只能添加一个源,因此通常在需要于多个平台进行直播时可使用 Nginx 配置的方式,示例配置如下

 

退出移动版