nginx项目实战:nginx-obs 直播服务搭建

环境:CentOS7.8

一、最小化安装CentOS7.8,ssh远程登录

(在模板机基础上克隆一台新的,搞过的机器毛病多)

二、安装yum

yum install -y wget
主要是为了源码安装 wget下载

三、换源 Centos7 默认源

3.1换成阿里云的源并更新源 建立缓存

#备份 
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
#下载阿里云yum配置
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
#建立缓存 覆盖
yum makecache

3.2升级所有包

改变软件设置和系统设置,系统版本内核都升级,故需要几分钟。

yum update -y

3.3 安装步骤

  • 安装构建环境
yum install  git gcc  make pcre-devel openssh-devel  -y

#openssl-devel安装失败:需要先安装openssl
yum -y install openssl openssl-devel
  • 下载nginx-rtmp-module
git clone git://github.com/arut/nginx-rtmp-module.git
  • nginx-rtmp-module 安装Nginx的rtmp协议的扩展
#下载压缩包
wget http://nginx.org/download/nginx-1.15.0.tar.gz
#解压
tar xzf nginx-1.15.0.tar.gz

此步骤之后含两个目录:
在这里插入图片描述

  • 进入到Nginx目录里进行配置(最后没有error才算配置成功)
cd nginx-1.15.0
./configure --with-http_ssl_module --add-module=../nginx-rtmp-module	
#http_ssl_module 叫模块/扩展/ 可以支持http/https访问  
#nginx-rtmp-module 模块/扩展 用于推流 
  • 编译源码并安装 (需要有makefile文件才能执行此步骤)
make && make install
#make生成Makefile文件,make install安装
#把源码转化成git源
  • 检查nginx是否安装成功

方法1:查看服务版本号
1)出现以下“nginx”才算编译已安装:
在这里插入图片描述
在这里插入图片描述

2)查看nginx版本:./nginx
在这里插入图片描述
方法2:直接启动nginx服务

#开启运行服务
cd  /usr/local/nginx/sbin 
./nginx #运行两次

出现以下提示说明服务可以正常运行——————>nginx安装很OK!
在这里插入图片描述
上图:nginx绑定端口失败(一个服务对应一个端口),一个应用要想跟人家通信首先得绑定端口,这里是绑定80端口失败了,这里监控了所有网段(0.0.0.0表示所有网段),98是错误码。出现以上情况说明服务已经起来了。
PS:此方式有时不管用,比如当80端口被占用。


扩展:80端口占用
一般安装L A M P环境会出现占用情况
L LInux
A Apache2.0 阿帕奇,做web服务(涉及web就会占用80端口)


方法3:
①通过80端口 浏览器的方式访问,如果出现nginx欢迎页面表示安装成功
在这里插入图片描述

②如果不是该欢迎页面,就需要修改nginx的默认80端口,可以改成8080,9000,9090,8888等等
可能是Linux防火墙(firewalld.service开启了,需要stop、disable)限制访问。解决防火墙问题:

systemctl stop    firewalld.service
systemctl disable firewalld.service
systemctl state   firewalld.service或者firewall-cmd --state

在这里插入图片描述
接下来刷新浏览器界面看是否出现欢迎界面,出现则是成功。


  • 修改Nginx的conf文件

配置rtmp默认1935端口

在/usr/local/nginx/conf目录下编辑nginx.conf文件(操作前备份)

在这里插入图片描述
插入代码位置指示:在这里插入图片描述
保存代码,退出

  • 关闭nginx服务
    /usr/local/nginx/sbin/nginx -s stop

  • 启动并加载配置文件

 /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

命令行输入/usr/local/nginx/sbin/nginx并回车,出现如下信息说明直播服务器已经搭建成功。
在这里插入图片描述
#到此处直播服务器已经配置成功。但是还直播不了。

  • 实现推流

到官网下载OBS(安装时,都勾选)
软件设置如下:
在这里插入图片描述
在这里插入图片描述
下面点击开始推流(图片打错字了),冒绿
在这里插入图片描述

  • 到/usr/local/nginx/html下寻找hls目录

如果没有,就是conf里没有配置,我们之前只配置了1935端口。
http服务里需要指定推流上来hls产生的ts切片的目录。

#放在server的第一个location后面,主流的视频app都用m3u8
location /hls {  
            #server hls fragments  
            types{  
                application/vnd.apple.mpegurl m3u8;  
                video/mp2t ts;  
            }  
            alias /temp/hls;  
            expires -1;  
        }

#修改配置之后需要停止服务再次开启
/usr/local/nginx/sbin/nginx -s stop
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

启动服务之后,到obs点击停止推流,再次点击开始推流

此时:
注意:服务器端口已经搭建好,可以推流了,但是看不到切片目录(hls),原因:配置rtmp的时候没有指定ts切片放哪。
在这里插入图片描述
切片时长,一般本地才会有3秒这么快 。虎牙10s就不错了。

停止Nginx服务 /usr/local/nginx/sbin/nginx -s stop

启动并加载配置文件:
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

点击obs软件的开始推流,过3-5秒查看/usr/local/nginx/html有ts切片目录hls,hls目录下含有切片(服务搭建成功):
在这里插入图片描述
此时苹果的同学可以播了,苹果电脑的同学在浏览器输入:http://10.0.0.100/hls/oldboy_live.m3u8,只有苹果手机的也可以给电脑热点,连上热点也是一样的效果。
其中oldboy_live.m3u8为上图的串流秘钥

3.4 拉流过程(播放)

编写:PC端_HLS播放器源代码(在win10编写,vim容易出毛病,保存为play.html,代码如下),rz上传到linux /usr/local/nginx/html目录下
(rz需要安装:yum install lrzsz -y
在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>PC HLS video</title>
    <link href="http://cdn.bootcss.com/video.js/6.0.0-RC.5/alt/video-js-cdn.min.css" rel="stylesheet">
</head>
<body>

<h1>PC 端播放 HLS(<code>.m3u8</code>) 视频</h1>
<p>借助 video.js 和 videojs-contrib-hls</p>
<p>由于 videojs-contrib-hls 需要通过 XHR 来获取解析 m3u8 文件, 因此会遭遇跨域问题, 请设置浏览器运行跨域</p>

<video id="hls-video" width="300" height="200" class="video-js vjs-default-skin"
       playsinline webkit-playsinline
       autoplay controls preload="auto"
       x-webkit-airplay="true" x5-video-player-fullscreen="true" x5-video-player-typ="h5">
    <!-- 直播的视频源 -->
    <source src="http://live.zzbtv.com:80/live/live123/800K/tzwj_video.m3u8" type="application/x-mpegURL">
    <!-- 点播的视频源 -->
    <!--<source src="http://devstreaming.apple.com/videos/wwdc/2015/413eflf3lrh1tyo/413/hls_vod_mvp.m3u8" type="application/x-mpegURL">-->
</video>

<script src="http://cdn.bootcss.com/video.js/6.0.0-RC.5/video.js"></script>
<!-- PC 端浏览器不支持播放 hls 文件(m3u8), 需要 videojs-contrib-hls 来给我们解码 -->
<script src="http://cdn.bootcss.com/videojs-contrib-hls/5.3.3/videojs-contrib-hls.js"></script>
<script>
    // XMLHttpRequest cannot load http://xxx/video.m3u8. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://192.168.198.98:8000' is therefore not allowed access.
    // 由于 videojs-contrib-hls 需要通过 XHR 来获取解析 m3u8 文件, 因此会遭遇跨域问题, 请设置浏览器运行跨域
    var player = videojs('hls-video');
    player.play();
</script>
</body>
</html>

浏览器操作如下即可播放
在这里插入图片描述
play.html的视频地址可以更改,以后可以用来看剧。
在这里插入图片描述
CCTV视频地址:
在这里插入图片描述
中央1:
在这里插入图片描述
##########################################
完结!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Tony带水!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值