RTSP转RTMP/FLV

使用nginx-http-flv转RTSP至flv/rtmp

背景:项目需要对接摄像头,使用hls延迟高,使用java代码转hls画面会卡顿,找了很多方案,决定使用nginx-http-flv方式解决。

java代码转FLV参考地址:https://gitee.com/giteeClass/rtsp-converter-flv-spring-boot-starter

windows版本nginx-http-flv下载地址:https://download.csdn.net/download/qq_36776720/88476403

linux环境比较简单,可参考:https://gitee.com/winshining/nginx-http-flv-module,具体的nginx配置也可参考当前地址中的文档

public static void main( String[] args ) throws Exception {
        String sourceRtspUrl = "rtsp://xxxx";
        // 1985是rtmp->serve->port;video是nginx.conf中rtmp->serve->application video{live on; gop_cache on;} 中的名字,stream是发布的流的名称
        String destRtmp = "rtmp://127.0.0.1:1985/video/stream";
        /**
         * 相当于CMD命令,
         * ffmpeg -re  -rtsp_transport tcp -i <sourceRtspUrl> -vcodec h264 -acodec aac -f flv <destRtmp>
         */
        ProcessBuilder pb = new ProcessBuilder("ffmpeg",
                "-re",
                "-rtsp_transport",
                "tcp",
                "-i",
                sourceRtspUrl,
                "-f",
                "flv",
                "-vcodec",
                "h264",
                "-acodec",
                "aac",
                destRtmp
        );
        Process process = pb.inheritIO().start();
        boolean exit = false;
        while (true) {
            // debugger时修改exit为true,退出转换
            if (exit) {
                process.destroy();
                break;
            } else {
                TimeUnit.SECONDS.sleep(10);
            }
        }
    }

生成的FLV流地址示例:
假设在 http 配置块中的 listen 配置项是:

http {
    ...
    server {
        listen 80; 
        ...

        location /live {
            flv_live on;
        }
    }
}

在 rtmp 配置块中的 listen 配置项是:

rtmp {
    ...
    server {
        listen 1985; #不是默认的 1935 端口
        ...

        application video {
            live on;
        }
    }
}

并且发布的流的名称是 stream,那么基于 HTTP 的播放 url 是:

http://127.0.0.1:80/live?port=1985&app=video&stream=stream

RTMP 方式

rtmp://127.0.0.1:80/video/stream
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值