一、安装Nginx

* 下载必备安装包
* 创建安装包存放文件夹 cd mkdir /usr/source #创建源码目录 后面的源码都放在这个目录 cd source yum -y
install git #安装git git clone https://github.com/nginx/nginx.git
#从github服务器上将nginx的源代码下载下来 git clone
https://github.com/arut/nginx-rtmp-module.git #将rtmp模块的源码下载下来
当git下载nginx失败时可以去官网下载后放到服务器 nginx的官方网站为:http://nginx.org/en/download.html
下载依赖模块源码pcre、OpenSSL、zlib 如果机器上已经安装了这些模块就不需要了 wget
https://www.openssl.org/source/openssl-1.1.0.tar.gz #下载OpenSSL源码包 wget
https://ftp.pcre.org/pub/pcre/pcre-8.39.tar.gz #下载pcre源码包 wget
http://www.zlib.net/zlib-1.2.11.tar.gz #下载zlib包源码、
* 对压缩包进行解压并安装Nginx cd /usr/source tar -zxvf 包名 #解压各个包源码
我这里采用的Nginx版本为nginx-1.9.9  因此我们进入的 cd /usr/source/nginx-1.9.9
进入文件夹后进行./configure操作
./configure --prefix=/usr/local/nginx \ #nginx安装路径 --with-pcre=../pcre-8.39 \
#pcre文件路径 --with-openssl=../openssl-1.1.0 \ #openssl文件路径
--with-zlib=../zlib-1.2.11 \ #zlib文件路径 --with-http_v2_module \
--with-http_flv_module \ --with-http_mp4_module \
--add-module=../nginx-rtmp-module/ #nginx-rtmp-module模块
根据自己源码包的版本填写相应的路径以及文件夹名!!!
./configure完成后就可以进行安装了

为了确保依赖的gcc和c++存在我们可以先执行安装gcc跟c++
yum -y install gcc #确保依赖的gcc安装 yum -y install gcc-c++ #确保依赖的c++已经安装 make &&
make install
安装完成后需要把服务器的80端口打开 直接输入地址访问 查看Nginx是否安装成功!



当看见这个界面时说明Nginx安装成功了

* rtmp相关配置  新建hls_path文件夹 mkdir -p /usr/share/nginx/html/hls #该路径可以自定义
需要与Nginx内的rtmp配置的hls_path路径一致
 修改Nginx配置文件
vi /usr/local/nginx/conf/nginx.conf
 加入以下内容rtmp模块:(rtmp{}的内容和http{}为同级)
rtmp { server { listen 1935; #监听的端口 chunk_size 4000; application hls {
#rtmp推流请求路径 live on; hls on; hls_path /usr/share/nginx/html/hls; hls_fragment
5s; } } }
修改http中的server模块可以根据自己的需求进行修改{location部分}
server { listen 80; server_name localhost; location / { add_header
Cache-Control no-cache; add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
add_header 'Access-Control-Allow-Headers' 'Range'; root /usr/share/nginx/html;
index index.html index.htm; } #主要修改这一部分代码 location = /50x.html { root html; } }
修改完毕重启Nginx
/usr/local/nginx/sbin/nginx -s reload
 

 

接下来是推流了



在设置->串流 中填写信息:URL为 rtmp://xxx:1935/hls,xxx为你的服务器的IP地址,hls是用来存放流媒体的。

秘钥可以随便填写一个,用来播放的时候识别播放哪个流媒体的,例如填写mystream。

填写完毕后,点击开始串流,就说明我们的流媒体服务器搭建成功了。

打开/usr/share/nginx/html/hls,里面出现mystream.m3u8说明推流正常接下来我们就可以拉流播放了

 

拉流播放我们可以使用H5的vedio标签就可以实现播放

也可以访问http://xxx:81/hls/mystream.m3u8来观看直播

当你在浏览器输入你的播放地址时候你会发现竟然是把mystream.m3u8下载下来!

因为pc不支持m3u8,所以需要使用video.js   地址 https://github.com/videojs/video.js

新建html页面 代码如下
<link href="//vjs.zencdn.net/7.0/video-js.min.css" rel="stylesheet"> <script
src="//vjs.zencdn.net/7.0/video.min.js"></script> <script
src="https://unpkg.com/videojs-contrib-hls/dist/videojs-contrib-hls.js"></script>
<video id="my-player" class="video-js" controls preload="auto"
poster="//vjs.zencdn.net/v/oceans.png" data-setup='{}'> <source
src="http://ip地址:端口(默认80)/hls/mystream.m3u8"(你的流秘钥)
type="application/x-mpegURL"> <p class="vjs-no-js"> To view this video please
enable JavaScript, and consider upgrading to a web browser that <a
href="http://videojs.com/html5-video-support/" target="_blank"> supports HTML5
video </a> </p> </video> <script> var player = videojs('my-player'); var
options = {}; var player = videojs('my-player', options, function
onPlayerReady() { videojs.log('Your player is ready!'); // In this context,
`this` is the player that was created by Video.js. this.play(); // How about an
event listener? this.on('ended', function() { videojs.log('Awww...over so
soon?!'); }); }); </script>
保存后放到nginx配置的root目录下即可成功访问并拉流播放了。

直播存在一定的延迟 这是因为.m3u8文件,这个文件内容是将一个个ts文件串联起来的,这就达到了一个播放的效果,所以看起来会有很大的延迟。

延迟解决方案 :可以设置切片生成的大小以及访问的速度,但是这样大大增加了服务器的压力。

当然,我们也可以用rtmp拉流工具(VLC播放器)来观看直播,延迟会缩短,拉流地址与推流地址一致。

特别提示:需要外部访问的端口我们都需要打开 请根据自己的需要将相应的端口打开即可!

rtmp的参数可以参考:https://github.com/arut/nginx-rtmp-module/wiki
<https://github.com/arut/nginx-rtmp-module/wiki>
 

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信