Nginx+rtmp+ffmpeg搭建流媒体服务器


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格式
别的参数参考上面那位老兄的

img

(2)打开VLC 媒体—>流—>网络

img

img

(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**

img

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

作者:别来无恙-

出处:https://www.cnblogs.com/yanjieli/p/10615361.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。


文章作者: Cheney
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Cheney !
 上一篇
Nginx动态添加模块 平滑升级 Nginx动态添加模块 平滑升级
Nginx动态添加模块 平滑升级已经安装好的Nginx动态添加模块 说明  已经安装好的Nginx,需要添加一个未被编译安装的模块,需要怎么弄呢? 这里已安装第三方nginx-rtmp-module模块为例   nginx的模块是需要重新编
2021-01-21
下一篇 
install elasticsearch install elasticsearch
elasticsearch 6.8安装https://www.elastic.co/cn/downloads/past-releases#elasticsearch 选择6.8.8版本 https://www.elastic.co/guid
2021-01-21
  目录