Nginx+rtmp+ffmpeg搭建流媒体服务器
说明
nginx搭建流媒体服务需要用到 nginx-rtmp-module 模块
具体操作步骤:
安装nginx
(1)下载第三方扩展模块nginx-rtmp-module**
[root@master ~]# mkdir module && cd module //创建一个存放模块的目录
[root@master ~]# wget https://github.com/arut/nginx-rtmp-module/archive/master.zip //下载模块
[root@master ~]# unzip master.zip //解压
[root@master ~]# ls nginx-rtmp-module-master/ //查看模块目录
(2)编译安装nginx**
(说明:此处由于我这边已有lnmp运行项目的环境,直接动态添加的 nginx-rtmp-module模块; 动态参加可参考:这里)
[root@master ~]# yum -y install pcre-devel openssl openssl-devel //安装依赖
[root@master ~]# wget http://nginx.org/download/nginx-1.12.2.tar.gz //下载nginx包
[root@master ~]# tar xf nginx-1.12.2.tar.gz
[root@master ~]# ./configure --prefix=/opt/nginx-1.9.5 --add-module=/root/module/nginx-rtmp-module-master --with-http_ssl_module //编译安装nginx,并指定上面下载的模块路径
[root@master ~]# make
[root@master ~]# make install
(3)修改nginx配置文件
添加如下内容并重新载入配置文件
# vim nginx.conf
rtmp {
server {
listen 1935; #监听的端口号
application myapp { #自定义的名字
live on;
}
application hls {
live on;
hls on;
hls_path /tmp/hls;
hls_fragment 1s;
hls_playlist_length 3s;
}
}
}
[root@master ~]# /etc/init.d/nginx -t
[root@master ~]# /etc/init.d/nginx -s reload
完整nginx.conf
安装ffmpeg
ffmpeg命令参考这位朋友的文章:https://www.jianshu.com/p/049d03705a81
(1)安装依赖
[root@master ~]# yum install yasm -y
(2)下载ffmpeg并安装
[root@master ~]# git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg //下载ffmpeg
[root@master ~]# cd ffmpeg
[root@master ~]# ./configure --prefix=/usr/local/ffmpeg
[root@master ~]# make
[root@master ~]# make install
也可以将编译好了得 ffmpeg文件拷贝到目标服务器,并建立软连接(ln -s /usr/local/ffmpeg/bin/ffmpeg /usr/bin)
(3)拷贝命令到/usr/bin(方便后面调用)
[root@master ~]# ls /usr/local/ffmpeg/ //查看安装目录生成的文件
bin include lib share
[root@master ~]# cp /usr/local/ffmpeg/bin/* /usr/bin/
测试
(1)启用ffmpeg进行推流
#测试rtsp转rtmp流
[root@master ~]# ffmpeg -rtsp_transport tcp -i rtsp://admin:14haozhan@@10.52.167.67:554/h264/ch1/sub/av_stream -acodec aac -strict experimental -ar 44100 -ac 2 -b:a 96k -r 25 -b:v 500k -s 1280*720 -f flv rtmp://10.3.52.172:1935/myapp/test2
[root@master ~]# ffmpeg -i rtsp://192.168.1.175:554/11 -acodec aac -strict experimental -ar 44100 -ac 2 -b:a 96k -r 25 -b:v 500k -s 640*480 -f flv rtmp://192.168.1.11:1935/myapp/23
#测试本地视频文件转rtmp流
[root@master ~]# ffmpeg -re -i /opt/test.mp4 -vcodec copy -acodec copy -b:v 800k -b:a 32k -f flv rtmp://10.52.3.172:1935/myapp/test
-i 要处理视频文件的路径,此处地址是一个监控摄像头
-s 像素
rtmp://192.168.1.11:1935/myapp/23 说明:rtmp://IP:PORT/ myapp指nginx配置文件中自定义的,23指输出文件的名字
-f 强迫采用flv格式
别的参数参考上面那位老兄的
(2)打开VLC 媒体—>流—>网络
(3)进入服务器查看输出的位置可以发现已生成文件
# ll /tmp/hls/
total 1636
-rw-r--r-- 1 root root 500644 Mar 28 17:05 22-1955.ts
-rw-r--r-- 1 root root 384460 Mar 28 17:05 22-1956.ts
-rw-r--r-- 1 root root 413036 Mar 28 17:05 22-1957.ts
-rw-r--r-- 1 root root 366036 Mar 28 17:05 22-1958.ts
-rw-r--r-- 1 root root 154 Mar 28 17:05 22.m3u8
(4)还可以使用浏览器这样访问 http://192.168.1.11/hls/22.m3u8**
至此就搭建完成了,至于别的操作后续再写
作者:别来无恙-
出处:https://www.cnblogs.com/yanjieli/p/10615361.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。



