1.先去nginx官网下载源码到服务器然后解压
官网地址http://nginx.org/en/download.html
右键复制地址

下载并解压

2.下载nginx-rtmp-module

3.环境检查 编译 安装
如果缺少gcc等环境编译工具请自行下载安装
切换到nginx源码目录下执行
./configure --prefix=/usr/local/nginx --add-module=../nginx-rtmp-module --with-http_ssl_module
如果提示缺少提示缺少openssl,zlib,pcre相关的lib,有两种解决方式
1)系统安装相关的软件,但是在实际的安装过程中遇到openssl安装了但是nginx还是找不到,这个应该是openssl的安装目录和nginx找的目录对不上,此时可采用第二种方式
2)下载openssl,zlib,pcre的源码包,指定目录,运行
./configure --add-module=<nginx-rtmp-module的源码目录>
--with-pcre=<pcre的源码目录>
--with-openssl=<openssl的源码目录>
--with-zlib=<zlib的源码目录>
然后再执行

如果结果是这样的就没问题了

接下来就是编译安装了
make && make install
编译完成可能会报错,原因在于openssl的版本和nginx的版本不兼容,具体版本适配可以百度
执行完后去/usr/local目录下可以看到nginx文件夹,这个就是编译安装生成nginx
4.编辑配置文件
我们主要关心的文件有两个,一个是sbin/nginx 这个是nginx的执行文件,还有一个就是conf/nginx.conf这个是nginx的配置文件
./sbin/nginx -c ./conf/nginx.conf 启动nginx
./sbin/nginx -s stop 停止nginx
./sbin/nginx -s reload 重启nginx
配置nginx.conf
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
rtmp { #推流配置
server {
listen 1935; #监听的端口
chunk_size 1000;
application live {#直播推流配置,推流地址rtmp://ip:1935/live/流密匙,这个流密匙用于拉流时之用
live on;
record off;
}
application hls { #点播推流配置 推流地址rtmp://ip:1935/hls/流密匙
live on;
hls on;
hls_path /usr/share/nginx/html/hls; #ts文件存放地址
hls_fragment 1s;
}
}
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 8081;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
location /hls {#获取点播流的配置
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
alias /usr/share/nginx/html/hls;
add_header Cache-Control no-cache;
}
}
}
5.启动nginx之后就可以进行推流了,如果是阿里云要进行安全组配置,有防火墙的也要开放对应端口
这里用的推流工具为obs https://obsproject.com/


6.拉流观看,用的是ckplayer
直播拉流
<script type="text/javascript" src="ckplayer.js" charset="utf-8"></script>
<div id="a1"></div>
<script type="text/javascript">
var flashvars = {
f: 'rtmp://ip:1935/live/linzh',
c: 0
};
var video = [''];
CKobject.embed('ckplayer.swf', 'a1', 'ckplayer_a1', '600', '400', false, flashvars, video);
</script>
点播拉流
<script type="text/javascript" src="ckplayer.js" charset="utf-8"></script>
<div id="a1"></div>
<script type="text/javascript">
var flashvars = {
f: 'm3u8.swf',
a: 'http://ip:8081/hls/linzh.m3u8',
s: 4,
c: 0
};
var params = {
bgcolor: '#FFF',
allowFullScreen: true,
allowScriptAccess: 'always',
wmode: 'transparent'
};
var video = ['http://ip:8081/hls/linzh.m3u8'];
CKobject.embed('ckplayer.swf', 'a1', 'ckplayer_a1', '100%', '100%', false, flashvars, video, params);
</script>
网友评论