- 环境准备
- nginx直播插件准备
- 源码安装nginx
- 启动并配置nginx
- 使用EV录屏实现推流
-曾老湿, 江湖人称曾老大。
-多年互联网运维工作经验,曾负责过大规模集群架构自动化运维管理工作。 -擅长Web集群架构与自动化运维,曾负责国内某大型金融公司运维工作。 -devops项目经理兼DBA。 -开发过一套自动化运维平台(功能如下): 1)整合了各个公有云API,自主创建云主机。 2)ELK自动化收集日志功能。 3)Saltstack自动化运维统一配置管理工具。 4)Git、Jenkins自动化代码上线及自动化测试平台。 5)堡垒机,连接Linux、Windows平台及日志审计。 6)SQL执行及审批流程。 7)慢查询日志分析web界面。
环境准备
代码语言:javascript复制#系统版本
[root@centos7 ~]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
#selinux状态,如果开启,则关闭
[root@centos7 ~]# getenforce
Enforcing
#关闭selinux(临时关闭)
[root@centos7 ~]# setenforce 0
#永久关闭
[root@centos7 ~]# vim /etc/sysconfig/selinux
#将SELINUX=enforcing 替换为 SELINUX=disabled
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
#关闭防火墙
[root@centos7 ~]# systemctl stop firewalld
#IP地址
[root@centos7 ~]# hostname -I
10.0.0.100
nginx直播插件准备
代码语言:javascript复制#安装git命令
[root@centos7 ~]# yum install -y git
#git拉取nginx-rtmp插件
[root@centos7 ~]# git clone https://github.com/arut/nginx-rtmp-module.git
正克隆到 'nginx-rtmp-module'...
remote: Enumerating objects: 4314, done.
remote: Total 4314 (delta 0), reused 0 (delta 0), pack-reused 4314
接收对象中: 100% (4314/4314), 3.10 MiB | 14.00 KiB/s, done.
处理 delta 中: 100% (2686/2686), done.
#查看克隆的插件
[root@centos7 ~]# ll
总用量 4
drwxr-xr-x. 7 root root 4096 5月 3 12:37 nginx-rtmp-module
源码安装nginx
代码语言:javascript复制#安装上传下载命令
[root@centos7 ~]# yum install -y lrzsz
#上传nginx的包,或者去官网下载
[root@centos7 ~]# rz
[root@centos7 ~]# wget http://nginx.org/download/nginx-1.10.0.tar.gz
#查看上传的包
[root@centos7 ~]# ll
总用量 896
-rwxr-xr-x. 1 root root 911509 6月 1 2017 nginx-1.10.3.tar.gz
drwxr-xr-x. 7 root root 4096 5月 3 12:37 nginx-rtmp-module
#解压nginx安装包
[root@centos7 ~]# tar xf nginx-1.10.3.tar.gz
#进入nginx目录
[root@centos7 ~]# cd nginx-1.10.3
#安装nginx依赖包
[root@centos7 nginx-1.10.3]# yum install pcre-devel openssl-devel gcc gcc-c -y
#创建nginx用户
[root@centos7 nginx-1.10.3]# useradd nginx -s /sbin/nologin -M
#生成nginx编译文件
[root@centos7 nginx-1.10.3]# ./configure --user=nginx --group=nginx --with-http_ssl_module --prefix=/usr/local/nginx --add-module=/root/nginx-rtmp-module
#编译
[root@centos7 nginx-1.10.3]# make
#安装
[root@centos7 nginx-1.10.3]# make instal
启动并配置nginx
代码语言:javascript复制#进入nginx安装目录
[root@centos7 nginx-1.10.3]# cd /usr/local/nginx/
#查看文件
[root@centos7 nginx]# ll
总用量 4
#配置文件目录
drwxr-xr-x. 2 root root 4096 5月 3 12:53 conf
#站点目录
drwxr-xr-x. 2 root root 40 5月 3 12:53 html
#日志目录
drwxr-xr-x. 2 root root 6 5月 3 12:53 logs
#程序目录
drwxr-xr-x. 2 root root 19 5月 3 12:53 sbin
#编辑nginx配置文件
[root@centos7 nginx]# vim conf/nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
rtmp {
server {
listen 1935;
chunk_size 4096;
application live {
live on;
hls on;
hls_path /usr/local/nginx/html/live;
hls_fragment 5s;
}
}
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location /live {
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
alias /usr/local/nginx/html/live;
expires -1;
add_header Cache-Control no-cache;
}
location / {
root html;
index index.html index.htm;
}
}
}
#检查nginx语法
[root@centos7 nginx]# /usr/local/nginx/sbin/nginx -t
#启动nginx
[root@centos7 nginx]# /usr/local/nginx/sbin/nginx
#检测nginx端口
[root@centos7 nginx]# netstat -lntup|grep nginx
tcp 0 0 0.0.0.0:1935 0.0.0.0:* LISTEN 4898/nginx: master
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 4898/nginx: master
#检测nginx进程
[root@centos7 nginx]# ps -ef|grep [n]ginx
root 4898 1 0 13:01 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx 4899 4898 0 13:01 ? 00:00:00 nginx: worker process
nginx 4900 4898 0 13:01 ? 00:00:00 nginx: cache manager process
使用EV录屏实现推流


串流地址:rtmp://10.0.0.100/live 地址秘钥:zls
这里地址秘钥随便填写
如果此时开启直播,那么访问http://10.0.0.100/live/zls.m38u可以下载一个直播视频文件

那么此时,你离成功又近了一步
代码语言:javascript复制#编辑直播前端页面
[root@centos7 ~]# vim /usr/local/nginx/html/index.html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>前端播放m3u8格式视频</title>
<link rel="stylesheet" href="http://vjs.zencdn.net/5.5.3/video-js.css">
<script src="http://vjs.zencdn.net/5.5.3/video.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/videojs-contrib-hls/5.12.2/videojs-contrib-hls.js"></script>
</head>
<body>
<video id="myVideo" class="video-js vjs-default-skin vjs-big-play-centered" controls preload="auto" width="1080" height="708" data-setup='{}'>
<source id="source" src="http://10.0.0.100/live/zls.m3u8" type="application/x-mpegURL">
</video>
</body>
<script>
// videojs 简单使用
var myVideo = videojs('myVideo',{
bigPlayButton : true,
textTrackDisplay : false,
posterImage: false,
errorDisplay : false,
})
myVideo.play() // 视频播放
myVideo.pause() // 视频暂停
</script>
</html>
打开浏览器,访问:http://10.0.0.100
就可以看到直播的界面了