学习ffmpeg流媒体,需要搭建流媒体服务器,本文用nginx搭建rtmp服务器
环境:Ubuntu 16.04.7
1、安装nginx相关依赖
sudo apt-get install build-essential libpcre3 libpcre3-dev libssl-dev
2、下载nginx源码
wget http://nginx.org/download/nginx-1.21.6.tar.gz
3、下载nginx-rtmp-module源码
nginx-rtmp-module的官方github地址:https://github.com/arut/nginx-rtmp-module
git clone https://gitcode.com/arut/nginx-rtmp-module.git
4、编译nginx,把nginx-rtmp作为第三方模块
cd nginx-1.21.6/
./configure --with-http_ssl_module --add-module=../nginx-rtmp-module
ps:笔者nginx-1.21.6和nginx-rtmp-module同一级目录
sudo make install
安装在默认路径:/usr/local/nginx 可以省去不少麻烦事
5、检查nginx是否安装成功
/usr/local/nginx/sbin/nginx -v
6、修改nginx的配置文件 /usr/local/nginx/conf/nginx.conf
末尾增加:
rtmp {
server {
listen 1935;
chunk_size 4096;
application live {
live on;
record off;
}
}
}
7、启动nginx
笔者用脚本方式,方便以后启动和关闭
vim /etc/init.d/nginx
#!/bin/bash
#description:Nginx Service Control Script
COM="/usr/local/nginx/sbin/nginx"
PID="/usr/local/nginx/logs/nginx.pid"
case "$1" in
start)
$COM
;;
stop)
kill -s QUIT $(cat $PID)
;;
restart)
$0 stop
$0 start
;;
reload)
kill -s HUP $(cat $PID)
;;
*)
echo "Usage: $0 {start|stop|restart|reload}"
exit 1
esac
exit 0
chmod +x /etc/init.d/nginx
chkconfig --add nginx #添加为系统服务
执行后 chkconfig:未找到命令
笔者也是从网络搜罗的方法,百度方知Ubuntu 中 chkconfig 已经被 sysv-rc-conf 所替代
sudo apt-get install sysv-rc-conf
sudo sysv-rc-conf nginx on #设置开机启动
重启ubuntu
之后便可以以系统服务启动/停止nginx
systemctl start nginx #启动nginx
systemctl stop nginx #停止nginx
8、查看nginx启动情况
ps -ef | grep nginx | grep -v grep
9、查看端口
netstat -anp | grep nginx
nginx监听了2个端口,1935和80。1935是rtmp服务默认监听端口,80是http服务默认监听端口。此时nginx启动了rtmp和http服务
10、ffmpeg测试推流
./ffmpeg -re -stream_loop -1 -i input.mp4 -c copy -f flv rtmp://虚拟机ip:1935/live/test0
ffplay 播放
./ffplay rtmp://虚拟机:1935/live/test0
windows端vlc拉流
打开网络串流 rtmp://虚拟机ip:1935/live/test0