java 操作rtsp/rtmp视频流生成

1.部署rtsp视频流服务器

下载EasyDarwin软件EasyDarwin · GitHub解压后编辑imi文件,然后点击EXE文件启动

 2.使用代码生成rtsp视频流,并且推送到服务器中

/**
     * @Author bjiang
     * @Description //TODO 获取源 视频流
     * @Date 10:29 2022/1/28
     * @Version 1.0
     * @Param [url] 可以为MP4视频路径,也可以为rtsp视频流地址
     * @return org.bytedeco.javacv.FFmpegFrameGrabber
     */
    public static FFmpegFrameGrabber getRtspByUrl(String url) {
        log.info("获取视频流开始");
        FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(url);
   /*     grabber.setFormat("rtsp");
        String byte2Base64= null;
        try {
            byte2Base64 = RSAUtil.getMsgByRsa("****");
        } catch (Exception e) {
            e.printStackTrace();
        }
        grabber.setOption("rtsp_transport", "tcp");//tcp传输协议
        grabber.setOption("appkey", "****");//海康视频 appkey
        grabber.setOption("secret", byte2Base64);//海康视频 secret
        grabber.setOption("port", "446");//默认443
        grabber.setOption("enableHTTPS", "1"); //是否启用HTTPS协议,这里总是填1
        grabber.setOption("rtsp_flags", "prefer_tcp");
        grabber.setOption("stimeout", "3000000");
        try {
            grabber.start();
        } catch (FFmpegFrameGrabber.Exception e) {
            e.printStackTrace();
        }*/
        return grabber;
    }
 /**
     * @Author bjiang
     * @Description //TODO 视频流生成
     * @Date 16:00 2022/1/14
     * @Version 1.0
     * @Param [grabber]
     * @return void
     */
    public static void createRtsp(FFmpegFrameGrabber grabber) throws Exception {
        OpenCVFrameConverter.ToMat converter = new OpenCVFrameConverter.ToMat();
        log.info("开始写入视频流");
        Random random = new Random();
        int url=random.nextInt(1000)  + 1;
        FFmpegFrameRecorder recorder = new FFmpegFrameRecorder("rtsp://192.168.1.228:554/"+url,grabber.getImageWidth(),grabber.getImageHeight(),1);
        recorder.start();
        recorder.setVideoCodec(grabber.getVideoCodec());
        recorder.setFormat("rtsp");//rtmp的格式为flv
        recorder.setSampleRate(4410);
        recorder.setFrameRate(grabber.getFrameRate());
        recorder.setVideoBitrate(grabber.getVideoBitrate());
        recorder.setAudioCodec(grabber.getVideoCodec());
        Frame frame = null;
        for (;(frame = grabber.grabImage()) != null; ) {
            recorder.record(frame);
        }
        grabber.stop();
        grabber.release();
        recorder.stop();
        recorder.release();
    }

3.使用PotPlayer打开生成的视频流地址

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值