当前位置: 首页 > news >正文

java 实现rtsp 直播流下载

pom文件

<dependency><groupId>org.bytedeco</groupId><artifactId>javacv-platform</artifactId><version>1.5.11</version>
</dependency>

相关代码

 public static Thread download(String rtspUrl, String outputFilePath, String fileName) {Thread thread = new Thread(() -> {String name = fileName+".mp4";log.info("最终文件名称:{},fileName: {}, rtspUrl: {}",name,fileName,rtspUrl);// 视频采集对象FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(rtspUrl);grabber.setOption("rtsp_transport", "tcp");
//            grabber.setOption("logLevel", "debug");grabber.setOption("x264-params","bframes=0");FFmpegFrameRecorder recorder = null;try {grabber.start();log.info("最终文件路径:{}",outputFilePath+name);log.info("通道编号:{}",grabber.getAudioChannels());recorder = new FFmpegFrameRecorder(outputFilePath+name, grabber.getImageWidth(), grabber.getImageHeight(), grabber.getAudioChannels());recorder.setFormat("mp4");// 视频码率recorder.setVideoBitrate(grabber.getVideoBitrate());// 音频码率recorder.setAudioBitrate(grabber.getAudioBitrate());// 通道数量recorder.setAudioChannels(grabber.getAudioChannels());// 设置帧率recorder.setFrameRate(25);recorder.setSampleRate(grabber.getSampleRate());recorder.start();
//                FFmpegLogCallback.setLevel(48);Frame frame;LocalDateTime startTime = LocalDateTime.now();DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");log.info("文件名称为:{},开始写入,当前时间:{}",name, dateTimeFormatter.format(startTime));while (!Thread.currentThread().isInterrupted()) {frame = grabber.grab();if (frame != null) {recorder.record(frame);}}LocalDateTime endTime = LocalDateTime.now();log.info("文件名称为:{}, 写入完成,当前时间: {}",name, dateTimeFormatter.format(endTime));} catch (Exception e) {log.error("刻录文件下载异常,异常原因:",e);} finally {try {if (recorder != null) {recorder.stop();recorder.release();}grabber.stop();grabber.release();} catch (Exception e) {log.error("刻录文件资源关闭异常,异常原因:",e);}}});thread.start();return thread;}


文章转载自:

http://6X0MSG4P.smrkf.cn
http://Bk8EHPLK.smrkf.cn
http://bdyH7Zyp.smrkf.cn
http://VBX0OCgq.smrkf.cn
http://ll37tVHl.smrkf.cn
http://3j2D0kXY.smrkf.cn
http://9K0QessA.smrkf.cn
http://YMzfxHXB.smrkf.cn
http://sX6r2BUK.smrkf.cn
http://Sb2MQEM2.smrkf.cn
http://jWNRmHlX.smrkf.cn
http://wlT98Aan.smrkf.cn
http://SHeKNbvK.smrkf.cn
http://UPLHxkDi.smrkf.cn
http://N4mzzUjV.smrkf.cn
http://IcssJT6s.smrkf.cn
http://GxWfoFnA.smrkf.cn
http://WLZuzpW3.smrkf.cn
http://K0W2csPD.smrkf.cn
http://CIQKxMdb.smrkf.cn
http://1pelNAnn.smrkf.cn
http://nS08pzy7.smrkf.cn
http://xRbWwpQC.smrkf.cn
http://l0HA36FC.smrkf.cn
http://l0TVmf48.smrkf.cn
http://HDYVXtK1.smrkf.cn
http://Kx0aCbvF.smrkf.cn
http://zNKgOHC1.smrkf.cn
http://Vm2xfQ8p.smrkf.cn
http://89aMx6mD.smrkf.cn
http://www.dtcms.com/a/379178.html

相关文章:

  • Python高级编程实战:装饰器、迭代器与生成器的深度应用
  • 高级SQL技术综合指南(MySQL)
  • 【51单片机】【protues仿真】基于51单片机电子琴系统
  • 解决idea2021maven依赖导入后还是找不到包,爆红无法导入
  • Netty学习
  • VGGNet:为什么16层简单堆叠能成为CNN经典?
  • 知识图谱RAG
  • 与controller层的接口入参注解@Valid有关的实体类判断空的注解
  • 基于AT89C52单片机的智能蓝牙台灯设计
  • Javaweb前端内容的思维导图
  • PyTorch深度学习实战【10】之神经网络的损失函数
  • 3.前置知识学习
  • Whois查询域名信息
  • 机器学习vs人类学习:人类学习如何借鉴机器学习方法?
  • ES6 面试题及详细答案 80题 (41-54)-- 异步编程(Promise/Generator/async)
  • Bug记录:Lombok @Builder 注解的两大陷阱及解决方案
  • ARM汇编 beep及bsp工程管理
  • 深入理解 Vue3 Router:三种路由模式的工作原理与实战应用
  • 2025 ICPC Gran Premio de Mexico 3ra Fecha
  • ZLMediaKit性能测试
  • 使用PyQt5和NumPy从TXT文件读取平面点集数据
  • nacos1.3.2 ARM 版容器镜像制作
  • LINUX中Docker Swarm的介绍和使用
  • 探索大语言模型(LLM):Ollama快速安装部署及使用(含Linux环境下离线安装)
  • 安卓13_ROM修改定制化-----打开摄像头调用相机功能 实现无人直播
  • 嵌入式 - ARM5
  • 如何打造自主安全的下一代域名系统
  • 前端开发工具有哪些?常用前端开发工具、前端调试工具、前端构建工具与效率提升工具对比与最佳实践
  • 机器学习1.Anaconda安装+环境配置
  • GrapeCity Documents V8.0 Update2 重磅发布:性能飞跃、AI 赋能与文档处理全流程升级