nginx搭建rtmp服务 FFmpeg推流
玩树莓派恰好有相识的需求,也是推流和拉流,找资料实现了,这里分享一下给大家。
RTMP:
RTMP是Real Time Messaging Protocol(实时消息传输协议)的首字母缩写。该协议基于TCP,是一个协议族,包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种。RTMP是一种设计用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。
以上是百度百科对rtmp的解释。
nginx就不说了哈,大家都懂。
1.下载源码安装
我这里是unbutu,需要先安装一下nginx的依赖包
sudo apt-get install libssl-dev
sudo apt-get install libpcre3 libpcre3-dev
sudo apt-get install openssl libssl-dev
sudo apt-get install zlib1g-dev
下载nginx和rtmp源码
先创建文件夹
mkdir /usr/local/nginx
cd /usr/local/nginx
wget源码,进行编译
wget http://nginx.org/download/nginx-1.12.2.tar.gz
wget https://codeload.github.com/arut/nginx-rtmp-module/zip/master
解压,进行编译,rtmp源码是zip压缩的,所以我们需要用unzip解压
tar -zxvf nginx-1.12.2.tar.gz
unzip master
解压master我们多了一个nginx-rtmp文件夹
cd nginx-1.12.2/
#add-module后面是你rtmp源码的绝对路径,add添加模板
./configure --add-module=/usr/local/nginx/nginx-rtmp-module-master
make && make install
测试nginx是否安装成功
cd /usr/local/nginx/sbin
./nginx -t
出现以下提示表示安装成功
2.配置rtmp服务
我们源码安装的nginx配置文件在/usr/local/nginx/conf/nginx.conf这里
vim /usr/local/nginx/conf/nginx.conf
在http在添加rtmp服务,如下:
rtmp
{
server
{
listen 1935;
chunk_size 4096;
application live
{
live on; #开启实时
}
}
在http{}中添加server,配置我们拉流
server {
listen 80; #通过80端口拉流
location /stat{
rtmp_stat all;
rtmp_stat_stylesheet stat.xsl;
}
location /stat.xsl{
#root后面是你rtmp源码的路径
root /usr/local/nginx/nginx-rtmp-module-master;
}
}
这里我们nginx.conf已经配置好了,先杀死nginx服务
killall nginx
#重启nginx
cd /usr/local/nginx/sbin
./nginx -s reload
没有问题的话,访问url,出现如下:
3.FFmpeg推流
我这里是unbutu,直接输入以下命令安装ffmpeg
apt install ffmpeg
接下来上传好我们的视频文件,进入目录,使用ffmpeg进行推流
ps:a.mp4太短了....看不到....尴尬
ffmpeg -i b.mp4 -f flv rtmp://ip/live/test
ps:记得ip替换成你的ip😌
-i 视频文件
-f 设置推送格式
后面rtmp是我们推送的地址
出现如下,表示已经成功的在推流了
4.拉流
我这里安卓,下载了一个万能视频播放器,进行拉流
添加流的地址
打开....
成功拉流了
推流完成,unbutu提示了
感谢您百忙之中抽出时间阅读,希望文中内容能带给您帮助
-----------🙏----------