centos下利用nginx+ffmpeg搭建直播推流服务
手头有台闲置的服务器,前段时间搭了个aria2c视频下载服务下了些资源。直接在网页上打开资源有点慢所以想着开个在线播放的服务,于是想到以前玩的nginx+ffmpeg直播推流。下面是搭建过程:
1、nginx+推流模块的安装。
原本我服务器上是有nginx服务的,奈何没有推流模块需要安装rtmp推流模块扩展。查了一圈nginx的rtmp扩展是没有现成的yum安装包依赖的只能自己去github下载模块然后重新把rtmp模块编译进nginx。本来我的nginx服务也没放任何项目,折腾一阵发现还不如重新编译安装一遍nginx。于是卸载了现有的nginx服务 yum remove nginx,然后下载rtmp模块和nginx源码。
<code>
###### nginx我这里下载的是nginx-1.20.1
# wget http://nginx.org/download/nginx-1.20.1.tar.gz
###### 下载rtmp模块和相关依赖
# wget https://github.com/winshining/nginx-http-flv-module/archive/master.zip
###### 解压并安装
# tar -xvf nginx-1.20.1.tar.gz
# unzip master.zip
###### 如果提示unzip不存在则安装下 yum install unzip -y
###### 编译安装nginx
# cd nginx-1.20.1
# ./configure --add-module=../nginx-http-flv-module-master
# make && make install
###### 编译安装过程没有报错的话nginx至此安装完成 ######
</code>
2、启动推流服务。
要先配置nginx监听1935端口,然后用ffmpeg把视频流推到nginx监听的1935端口。
修改/usr/local/nginx/conf/nginx.conf,如果没有在此目录的话可以find / -name nginx.conf查找一下配置文件。nginx的rtmp配置如下:
<code>
rtmp {
server {
listen 1935;
chunk_size 2048;
drop_idle_publisher 10s;
application mylive {
live on;
record off;
}
application hls {
live on;
hls on;
hls_path /tmp/hls;
hls_continuous on;
}
}
}
</code>
这段配置应该放在nginx.conf的 http { 这行之前。
配置好后尝试启动nginx服务 /usr/local/nginx/sbin/nginx,如果找不到nginx服务也可以find / -name nginx,找到的列表中一般在/usr/sbin/nginx或者/usr/local/nginx/sbin/nginx 成功启动后使用ffmpeg推流。
# ffmpeg -re -i 你的视频地址(如/home/zhangsan/test.mp4) -c copy -f flv rtmp://0.0.0.0:1935/mylive/play
如果提示ffmpeg命令不存在则安装相关依赖
<code>
# 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-5.el7.nux.noarch.rpm
# yum install ffmpeg ffmpeg-devel -y
</code>
3、收看自己推送的视频流。
看视频流我采用的VLC这个拉流软件
<img src="https://opt.nextfix.cn/uploads/58ad139bd93ba5997f76d10c3f240c46.png"/>
填入拉流地址
<img src="https://opt.nextfix.cn/uploads/18c131992901956fc9c2fecf9adc2c47.png"/>
如果播放不了则需要检查服务器1935端口是否打开,服务器控制台安全策略需要打开1935,服务器也要给这个端口放行,然后检查下自己地址填错没。
<img src="https://opt.nextfix.cn/uploads/5b3c93d613a12ef4fbb40b468990738b.jpg"/>
更多>>