- 问题来源:记录一次Java对接监控(大华、海康、onvif)
- ffmpeg切片m3u8卡顿严重,并且占用CPU过高
- 贼心不死想最后尝试搭建一次nginx直播流,用rtsp转rtmp推流处理这个问题
- 服务器上的nginx正在使用,担心直接使用会导致文件丢失,所以重新下载nginx
wget http://nginx.org/download/nginx-1.18.0.tar.gz
- 解压nginx
tar -zxf nginx-1.18.0.tar.gz
- 下载nginx rtmp支持模块
git clone https://github.com/arut/nginx-rtmp-module.git
- 另外nginx需要openssl,libssl,pcre,zlib,如果没有的需要先行下载
- 环境检查
cd nginx-1.18.0 ./configure --prefix=/user/test/nginx --add-module=../nginx-rtmp-module
- 编译安装:上次就卡在这里,所以走到这一步紧张的要死
make && make install
- 竟然编译安装成功了
- 修改配置文件
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; } } }
- 启动nginx
/usr/test/nginx/sbin/nginx -c /usr/test/nginx/conf/nginx.conf
- 尝试推流
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'
- VLC播放器打开
rtmp://service-ip:1935/live/1room
网络串流成功 - 剩下的就只有把命令放到Java代码里,基本这个问题到此解决了,经测试,长时间播放后,最大的延迟就是1分钟,但是很少卡顿