记录一次centos环境下配置直播流nginx并使用ffmpeg对rtsp转rtmp进行推流

博主通过ffmpeg和nginx-rtmp解决Java对接监控流时遇到的卡顿和高CPU占用问题。首先,下载并安装nginx及nginx-rtmp模块,确保所有依赖库完整。然后,配置nginx服务器监听1935端口,并设置rtmp应用。使用ffmpeg将rtsp流转换为rtmp推送到本地nginx服务器。经过测试,实现了稳定的直播流,最大延迟约为1分钟,显著减少了卡顿现象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 问题来源:记录一次Java对接监控(大华、海康、onvif)
  2. ffmpeg切片m3u8卡顿严重,并且占用CPU过高
  3. 贼心不死想最后尝试搭建一次nginx直播流,用rtsp转rtmp推流处理这个问题
  4. 服务器上的nginx正在使用,担心直接使用会导致文件丢失,所以重新下载nginx
    wget http://nginx.org/download/nginx-1.18.0.tar.gz
    
  5. 解压nginx
    tar -zxf nginx-1.18.0.tar.gz
    
  6. 下载nginx rtmp支持模块
    git clone https://github.com/arut/nginx-rtmp-module.git
    
  7. 另外nginx需要openssl,libssl,pcre,zlib,如果没有的需要先行下载
  8. 环境检查
    cd nginx-1.18.0
    ./configure --prefix=/user/test/nginx --add-module=../nginx-rtmp-module
    
  9. 编译安装:上次就卡在这里,所以走到这一步紧张的要死
    make && make install
    
  10. 竟然编译安装成功了
  11. 修改配置文件
    vim /usr/test/nginx/conf/nginx.conf
    user root;
    worker_processes  6;
    error_log  logs/error.log;
    events {
       worker_connections  65535;
    }
    rtmp {
       server {
       	listen 1935;
       	chunk_size 1000;
       	application live {
               		live on;
               		record off;
           	}
       }
    }
    
  12. 启动nginx
    /usr/test/nginx/sbin/nginx -c /usr/test/nginx/conf/nginx.conf
    
  13. 尝试推流
    ffmpeg -re -rtsp_transport tcp -i 'rtsp://admin:123456@218.28.122.3:554/cam/realmonitor?channel=1&subtype=0&unicast=true&proto=Onvif' -vcodec copy -max_delay 100 -f flv -g 5 -b:v 1000k -s 800x640 -an 'rtmp://localhost:1935/live/1room'
    
  14. VLC播放器打开rtmp://service-ip:1935/live/1room网络串流成功
  15. 剩下的就只有把命令放到Java代码里,基本这个问题到此解决了,经测试,长时间播放后,最大的延迟就是1分钟,但是很少卡顿
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值