利用 Nginx + rtmp 搭建流媒体服务器

背景

nginx 在音视频服务也有比较强大的功能,下面给出配置步骤。

前提:根据 软件运行环境,确保搭建好了有关支持环境
参考:

步骤

1.下载第三方扩展模块nginx-rtmp-module

wget https://github.com/arut/nginx-rtmp-module/archive/master.zip        //下载模块

2.编译安装nginx

nginx 添加模块都是需要重新配置编译的编译
bash ./configure ... --add-module=/root/module/nginx-rtmp-module-master //编译安装nginx,并指定上面下载的模块路径 make make installbash

3.修改nginx配置文件nginx.conf,添加如下内容并重新运行nginx

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;  
       }  
    } 
}

测试

安装ffmpeg

ffmpeg命令参考这位朋友的文章:https://www.jianshu.com/p/049d03705a81

(1)安装依赖

yum install yasm -y

(2)下载ffmpeg并安装

git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg //下载ffmpeg

cd ffmpeg

./configure --prefix=/usr/local/ffmpeg

make

make install

(3)拷贝命令到/usr/bin(方便后面调用)

ls /usr/local/ffmpeg/ //查看安装目录生成的文件

bin include lib share

cp /usr/local/ffmpeg/bin/* /usr/bin/

测试

(1)启用ffmpeg进行推流

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
-i 要处理视频文件的路径,此处地址是一个监控摄像头
-s 像素
rtmp://192.168.1.11:1935/myapp/23 说明:rtmp://IP:PORT/ myapp指nginx配置文件中自定义的,22指输出文件的名字
-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

至此就搭建完成了,至于别的操作后续再写