ffmpeg+nginx 实现rtsp转rtmp并通过nginx转发

Posted 新手问路

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ffmpeg+nginx 实现rtsp转rtmp并通过nginx转发相关的知识,希望对你有一定的参考价值。

Windows安装

ffmpeg

  1. windows版下载地址https://ffmpeg.zeranoe.com/builds/ static版本就行
  2. 配置环境变量:下载的压缩包解压后的路径加入path
    技术图片
  3. 测试运行:cmd 输入ffmpeg -version 显示如下:
    技术图片
  4. 安装完毕。
  5. Rtsp转Rtmp 并推送到nginx命令:
ffmpeg -rtsp_transport tcp -i "rtsp://root:pass@10.1.30.11/axis-media/media.amp" -vcodec copy  -acodec copy -f flv "rtmp://127.0.0.1:1935/live/"
技术图片

Nginx

  1. nginx rtmp module下载地址https://github.com/illuspas/nginx-rtmp-win32
  2. 配置rtmp代理:conf/nginx.conf 确保有以下内容
rtmp {
    server {
        listen 1935;
        application live {
            live on;
        }
        application hls {
            live on;
            hls on;  
            hls_path temp/hls;  
            hls_fragment 8s;  
        }
    }
}
  1. 点击nginx.exe运行或者cmd窗口中输入nginx.exe
  2. 测试是否运行:访问http://127.0.0.1:8080/index.html

测试搭建是否成功

  1. Cmd 窗口执行: ffmpeg -rtsp_transport tcp -i “rtsp://root:pass@10.1.30.11/axis-media/media.amp” -vcodec copy -acodec copy -f flv “rtmp://127.0.0.1:1935/live/”
  2. 使用vlc播放器播放rtmp://127.0.0.1:1935/live/ 是否成功

Linux 安装

Nginx

  1. 软件包nginx-1.15.5.tar.gz,nginx-rtmp-module-master.tar
  2. 依赖库openssl-1.0.2l.tar.gz; pcre-8.42.tar.gz; zlib-1.2.11.tar.gz;
  3. 安装openssl
    • 解压openssl-1.0.2l.tar.gz
    • 进入文件夹 ./config
    • make && make install
    • 安装zlib
    • 解压tar xf zlib-1.2.11.tar.gz
    • ./configure
    • make && make install
    • 安装 nginx
    • 解压nginx-1.15.5.tar.gz; nginx-rtmp-module-master.tar
     cd nginx-1.15.5
     ./configure --prefix=/usr/local/nginx --add-module=../nginx-rtmp-module-master --with-http_ssl_module  --with-pcre=../pcre-8.42 --with-openssl=../openssl-1.0.2l --with-zlib=../zlib-1.2.11
    
    • 安装: make &&make install
    • cd /usr/local/nginx/
    • vi ./conf/nginx.conf
    • 添加以下内容
rtmp {    
    server {    
        listen 1935; 
        chunk_size 4000;
    application live{
  live on;
}
        application hls { 
            live on;    
            hls on;    
            hls_path html/hls;
            hls_fragment 3s;    
        }    
    }    
}
  1. 修改http server端口为8001 修改servername 为本机ip,保存退出

  2. 开放1935端口和8001端口

  3. firewall-cmd --zone=public --add-port=1935/tcp –permanent

  4. firewall-cmd --reload

  5. 启动 ./sbin/nginx -c ./conf/nginx.conf

  6. 查看是否启动成功:ps aux|grep nginx


ffmpeg

  1. 安装编译环境(root权限):yasm yasm-1.3.0.tar.gz
  2. cd yasm-1.3.0/
  3. ./configure
  4. make && make install
  5. 安装 ffmpeg tar -xvf ffmpeg-4.0.2.tar.gz
  6. ./configure
  7. make && make isntall
  8. 修改文件/etc/ld.so.conf 内容增加第二行/usr/local/ffmpeg/lib/
  9. 增加环境变量ffmpeg:输入 export PATH=/usr/local/ffmpeg/bin/:$PATH
  10. 测试执行 ffmpeg -version 无报错则安装完成
  11. 推流测试

以上是关于ffmpeg+nginx 实现rtsp转rtmp并通过nginx转发的主要内容,如果未能解决你的问题,请参考以下文章

华为海康大华摄像头编译RTSP转RTMP和HTTPFLV

nginx+ffmpeg搭建rtmp转播rtsp流的flash服务器

13 rtsp视频服务 基于node+ffmpeg 转换为 flv 视频服务

13 rtsp视频服务 基于node+ffmpeg 转换为 flv 视频服务

PHP+ffmpeg RTSP视频流转换成RTMP视频流

Linux下使用FFmpeg将RTMP流转换为HLS