Nginx-rtmp-module(NRM)的出现使得非专业流媒体开发工程师也可以简单、迅速搭建媒体流服务器,本节将介绍NRM的使用。
NRM模块安装
复制NRM源代码:
git clone https://github.com/arut/nginx-rtmp-module.git
在Nginx文件夹下重新配置NRM模块(注意RNM的相对位置)
./configure --add-module=../../live/nginx-rtmp-module/
重新编译安装
make && make install
重新启动nginx:
/etc/init.d/nginx restart
直播系统搭建
修改启动脚本的Nginx配置文件
worker_processes 1;
events {
worker_connections 1024;
}
rtmp{
server{
listen 1935;
application mylive{
live on;#开启直播
hls on;#开启hls
hls_path /usr/local/m3u8File; #配置HLS m3u8文件存放地址
}
}
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
location /mylive_hls{
types {
#m3u8 type设置
application/vnd.apple.mpegurl m3u8;
# ts 分片文件设置
video/mp2t ts;
}
alias /usr/local/m3u8File;
add_header Cache-Control no-cache; #禁止缓存
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
重新加载配置文件:
nginx -s reload
创建目录
mkdir /usr/local/m3u8File
推流拉流
直播技术中,经常会涉及推流(push)和拉流(pull),将流媒体推送到流媒体服务器的过程被叫做推流,向服务器获取视频数据的过程叫做拉流,我们首先在一台机器上测试推流和拉流的功能。先在ubuntu安装VLC播放器(直接软件商店搜索安装即可):
通过ffmpeg进行推流,指令如下:
ffmpeg -i test1.mp4 -vcodec libx264 -acodec aac -f flv rtmp://127.0.0.1:1935/mylive/1
test1.mp4为要推送的视频文件,libx264为视频编码库,aac为音频编码库,live为配置文件nginx.conf中application后面的参数是串流码(Stream Key),用来区分同一个application的不同直播流,rtmp://127.0.0.1:1935/mylive/1为具体的服务器推流地址。
打开VLC播放器,选择媒体->打开网络串流:
输入对应的直播地址:rtmp://127.0.0.1:1935/mylive/1,点击播放,此时播放器会处于读取直播流的状态,此时执行上面的推流命令,就可以看到VLC播放器播放推过来的直播视频了:
基本平台搭建和实现先介绍到这里。