安装前需要的工具
#net-tool 查本地IP
#wget 下载安装包
#unzip 解压zip包
#gcc gcc-c++ perl 编译软件包用
yum install -y net-tools wget unzip gcc gcc-c++ perl
复制代码
将Centos的yum源更换为国内的阿里云源
#备份yum源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
#下载阿里源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
#清空缓存
yum makecache
复制代码
安装nginx及rtmp
切换到 /home 下
cd /home
复制代码
切换到 /home 下,下载并解压pcre
#下载pcre包
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.41.tar.gz
#解压pcre包
tar -zxvf pcre-8.41.tar.gz
复制代码
切换到 /home 下,下载并解压zlib
#下载zlib包
wget http://www.zlib.net/zlib-1.2.11.tar.gz
#解压zlib包
tar -zxvf zlib-1.2.11.tar.gz
复制代码
切换到 /home 下,下载并安装openssl
#下载openssl包
wget https://www.openssl.org/source/old/1.0.1/openssl-1.0.1i.tar.gz
#解压openssl包
tar -zxvf openssl-1.0.1i.tar.gz
#切换到openssl里
cd openssl-1.0.1i
#生成配置文件 默认配置
./config --prefix=/usr/local --openssldir=/usr/local/openssl
#编译程序
make
#安装程序
make install
复制代码
切换到 /home 下,下载并解压nginx-rtmp-model
#下载rtmp包
wget https://github.com/arut/nginx-rtmp-module/archive/master.zip
#解压下载包
unzip -o master.zip
#修改文件夹名
mv master nginx-rtmp-module
复制代码
切换到 /home 下,安装nginx
#下载nginx
wget http://nginx.org/download/nginx-1.12.2.tar.gz
#解压nignx
tar -zxvf nginx-1.12.2.tar.gz
#切换到nginx中
cd nginx-1.12.2
#生成配置文件,将上述下载的文件配置到configure中
./configure --prefix=/usr/local/nginx --with-pcre=/home/pcre-8.41 --with-zlib=/home/zlib-1.2.11 --with-openssl=/home/openssl-1.0.1i --add-module=/home/nginx-rtmp-module
#编译程序
make
#安装程序
make install
复制代码
切换到 /home 下,安装ffmpeg
#安装epel包
yum install -y epel-release
#导入签名
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
#导入签名
rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
#升级软件包
rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpm
#更新软件包
yum update -y
#安装ffmpeg
yum install -y ffmpeg
#检查安装成功
ffmpeg -version
复制代码
修改配置运行服务
修改nginx配置
vi /usr/local/nginx/conf/nginx.conf
复制代码
修改之后的nginx配置
#user nobody;
#工作进程
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#指定pid存放的路径
pid /usr/local/nginx/logs/nginx.pid;
events {
#使用的网络I/O模型,linux系统推荐是epoll而freeBSD是kqueue
use epoll;
#允许的连接数,最大的高并发连接数为worker_processes*worker_connections
worker_connections 1024;
}
#RTMP配置
rtmp {
server {
#监听端口
listen 1935;
#直播流
application myapp {
live on;
record off;
}
#hls配置
application hls {
live on;
hls on;
hls_path /tmp/hls;
}
}
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
gzip on;
server {
listen 80;
server_name 服务器IP;
#数据格式设置
charset utf-8;
location /stat {
rtmp_stat all;
rtmp_stat_stylesheet stat.xsl;
}
location /stat.xsl {
#设置为你的nginx-rtmp-module文件夹路径,注意访问权限
root /home/nginx-rtmp-module/;
}
location /rtmp-publisher {
#设置为你的nginx-rtmp-module文件夹路径,注意访问权限
root /home/nginx-rtmp-module/test;
}
location / {
#设置为你的nginx-rtmp-module文件夹路径,注意访问权限,可使用默认设置
root /home/nginx-rtmp-module/test/www;
index index.html index.htm;
}
#配置hls
location /hls {
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
root /tmp;
add_header Cache-Control no-cache;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
复制代码
启动或重启nginx
/usr/local/nginx/sbin/nginx
或
/usr/local/nginx/sbin/nginx -s reload
复制代码
打开防火墙
/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
复制代码
在阿里云增加安全组规则,配置1935端口号
测试功能
1. 查看IP
ifconfig
复制代码
2. 上传测试视频
在服务器的home文件夹下上传一个test.mp4视频
3. 推送rtmp流
同时,下载一个VLC软件,输入"rtmp://服务器IP:1935/myapp/推送后的视频名字"点击播放进行测试
ffmpeg -re -i "/home/test.mp4" -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 1280x720 -q 10 rtmp://服务器IP:1935/myapp/推送后的视频名字
复制代码
推送hls流
写个HTML测试
ffmpeg -re -i "/home/test.mp4" -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 1280x720 -q 10 rtmp://服务器IP:1935/hls/推送后的视频名字
复制代码
同时,打开你的HTML
<script src="https://cdn.jsdelivr.net/hls.js/latest/hls.min.js"></script>
<video id="video"></video>
<script>
if(Hls.isSupported()) {
var video = document.getElementById('video');
var hls = new Hls();
hls.loadSource('http://服务器IP/hls/推送后的视频名字.m3u8');
hls.attachMedia(video);
hls.on(Hls.Events.MANIFEST_PARSED,function() {
video.play();
});
}
</script>
复制代码
参考
- https://blog.csdn.net/kingroc/article/details/50839994
- https://blog.csdn.net/loyachen/article/details/50909854
- https://blog.csdn.net/szydwy/article/details/78632222