目录

  • 1、安装nginx-rtmp-module
  • 2、Maven引入JavaCV包
  • 3、编写Java核心代码
  • 4、VUE安装video.js和flv.js
  • 5、编写前端测试代码
  • 6、运行效果

1、安装nginx-rtmp-module

参考这边:https://blog.csdn.net/Prinz_Corn/article/details/120746676

2、Maven引入JavaCV包

     <dependency><groupId>org.bytedeco</groupId><artifactId>javacv</artifactId><version>1.5.1</version></dependency><dependency><groupId>org.bytedeco</groupId><artifactId>ffmpeg-platform</artifactId><version>4.1.3-1.5.1</version></dependency>

3、编写Java核心代码

import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import org.bytedeco.ffmpeg.global.avcodec;
import org.bytedeco.javacv.*;@Slf4j
public class MediaVideoTransfer {@Setterprivate String src;@Setterprivate String target;@Setterprivate String transportType;// 帧抓取器(FrameGrabbe)private FFmpegFrameGrabber grabber;// 帧录制器/推流器(FrameRecorder)private FFmpegFrameRecorder recorder;// 是否启动@Setterprivate boolean isStart = false;/*** 开启获取rtsp流*/public void live() {log.info("连接rtsp:" + src + ",开始创建grabber");boolean isSuccess = createGrabber(src);if (isSuccess) {log.info("live:创建grabber成功");} else {log.info("live:创建grabber失败");}startPushStream();}/*** 构造视频抓取器** @param src 拉流地址* @return 创建成功与否*/private boolean createGrabber(String src) {// 获取视频源try {grabber = FFmpegFrameGrabber.createDefault(src);grabber.setOption("rtsp_transport", transportType);grabber.start();isStart = true;recorder = new FFmpegFrameRecorder(target, grabber.getImageWidth(), grabber.getImageHeight(), grabber.getAudioChannels());//avcodec.AV_CODEC_ID_H264recorder.setVideoCodec(avcodec.AV_CODEC_ID_H264);//转码格式recorder.setFormat("flv");//帧率recorder.setFrameRate(grabber.getFrameRate());//采样率recorder.setSampleRate(grabber.getSampleRate());//声道recorder.setAudioChannels(grabber.getAudioChannels());return true;} catch (FrameGrabber.Exception e) {log.error("创建解析FFmpegFrameGrabber失败:", e);this.stop();this.reset();return false;}}/*** 推送流*/private void startPushStream() {if (grabber == null) {log.info("重试连接src:" + src + ",开始创建grabber");boolean isSuccess = createGrabber(src);if (isSuccess) {log.info("push:创建grabber成功");} else {log.info("push:创建grabber失败");}}try {recorder.start();log.info("start recoder");Frame frame;while (isStart && (frame = grabber.grabFrame()) != null) {recorder.setTimestamp(grabber.getTimestamp());recorder.record(frame);}stop();reset();log.info("stop recoder");} catch (FrameGrabber.Exception | RuntimeException | FrameRecorder.Exception e) {log.error("exception", e);stop();reset();}}//停止private void stop() {try {if (recorder != null) {recorder.stop();recorder.release();}if (grabber != null) {grabber.stop();}} catch (Exception e) {log.error("stop exception:", e);}}//重置private void reset() {recorder = null;grabber = null;isStart = false;}
}

4、VUE安装video.js和flv.js

直接执行命令安装:

npm install flv.js
npm install video.js

5、编写前端测试代码

<template><div><video autoplay controls width="100%" height="500" id="videoElement"></video></div>
</template><script>import flvjs from 'flv.js'export default {name: 'liveTes',props: {msg: String},mounted() {this.$nextTick(() => {this.createVideo()})},methods: {createVideo() {if (flvjs.isSupported()) {var videoElement = document.getElementById('videoElement');var flvPlayer = flvjs.createPlayer({type: 'flv',url: '---' //你的拉流rtmp或者http等地址});flvPlayer.attachMediaElement(videoElement);flvPlayer.load();flvPlayer.play();}}}}
</script>

6、运行效果

  • 最后启动前后台程序,运行效果如下,由于是监控视频流就打码了。

整合SpringBoot + Nginx-http-flv-module + JavaCV(FFmpeg) RTSP推流,使用VUE + Flv.js播放相关推荐

  1. windows环境下python使用ffmpeg rtsp推流

    rtsp推流 1.下载 rtsp 服务器下载网址: https://github.com/aler9/rtsp-simple-server/releases windows环境下选择windows_a ...

  2. (直播、监控)利用javacv解析rtsp流,转换为flv流,通过前端flv.js解析播放

    前情提要:之前利用websocket解析过https://blog.csdn.net/IT_CREATE/article/details/105625858?spm=1001.2014.3001.55 ...

  3. Vue+Video.js播放m3u8视频流(海康威视摄像头+RTMP服务+FFmpeg)

    场景 Nginx搭建RTMP服务器+FFmpeg实现海康威视摄像头预览: Nginx搭建RTMP服务器+FFmpeg实现海康威视摄像头预览_BADAO_LIUMANG_QIZHI的博客-CSDN博客 ...

  4. FFmpeg 中 RTSP推流桌面和Android设备延时测试

    文章目录 1. FFMPEG 推流: 1.1 FFmpeg 源码准备 1.2 RTSP 推流服务器 2. 执行流程 2.1 启动服务器 2.2 执行桌面推流 2.3 播放 3. 安卓测试 1. FFM ...

  5. Nginx+FFmpeg rtsp转flv实时预览

    1.下载nginx 建议非必要不要用Ubuntu的系统 不然你肯定会后悔 在nginx官网下载 合适版本 nginx news 同时下载配置转的nginx模块nginx-http-flv-module ...

  6. nginx实现对websocket加密协议wss协议的反向代理以及websocket整合springboot入门(踩坑)

    出发点 最近公司需要有一个推送前端消息的需求 首选websocket进行推送,也做过客服系统接触过,最近看了一点websocket的相关内容记录总结一下. 什么是websocket websocket ...

  7. ffmpeg api推流,谷歌浏览器播放大华、海康威视网络摄像头rtsp视频流方案(hls、m3u8、flv、webrtc、srs、nginx、nginx-rtmp、rtmp)比较

    ffmpeg api推流,谷歌浏览器播放大华.海康威视网络摄像头rtsp视频流方案(hls.m3u8.flv.webrtc.srs.nginx.nginx-rtmp.rtmp)比较 将网络摄像头视频流 ...

  8. nginx+ffmpeg+flv实现rtsp转rtmp和flv推流(同时拉流)实现浏览器展示监控

    介绍 因本人公司业务需要浏览器展示海康威视监控视频,所以在此记录一下.以防下次使用不记得.此监控视频解决方案有10s左右的延迟,如果公司没有强制要求还是可以使用的.如果介意10s延迟的话可以使用第三方 ...

  9. 使用Gradle整合SpringBoot+Vue.js-开发调试与打包

    为什么80%的码农都做不了架构师?>>>    非常感谢两位作者: kevinz分享的文章<springboot+gradle+vue+webpack 组合使用> 首席卖 ...

最新文章

  1. 机器学习数学 — 初等函数求导
  2. CRM User Status profile中Business Transaction字段的用途 1
  3. libvmi编译问题
  4. Linux下MySql数据库常用操作
  5. Linux从零开始(二、基础命令(续三)修改密码)
  6. SAP Analytics Cloud里显示在图表里的描述信息更改
  7. java nature_Java Nature.nsf方法代码示例
  8. 数据源管理 | 基于JDBC模式,适配和管理动态数据源
  9. 计算机网络实验七报告6,计算机网络实验七..doc
  10. android入门基础笔记,Sqlite数据库下载
  11. python在信号处理的应用_Python和信号处理程序
  12. SharePoint 取消分享时的默认发邮件
  13. 【正点原子MP157连载】第四十四章Linux SPI总线框架-摘自【正点原子】STM32MP1嵌入式Linux驱动开发指南V1.7
  14. 关于概率论中常错的考点 左偏右偏
  15. c语言读grd文件,基于GDAL库,读取.grd文件(以海洋地形数据为例)C++版
  16. 庄懂着色器_L19_顶点动画
  17. 机器学习案例:孕妇吸烟与胎儿健康
  18. linux命令ps aux|grep xxx详解
  19. GitHub 热点速览 Vol.32:VScode 韭菜基金插件,极大提高“工作”效率
  20. Code里面的对立统一

热门文章

  1. 强化学习(RLAI)读书笔记第十六章Applications and Case Studies(alphago)
  2. 多视角-3-多视角数据聚类研究
  3. php判断客户端是否为手机移动设备,php怎么判断客户端是pc还是移动设备
  4. linux secure boot(安全启动)下为内核模块签名
  5. Linux--Linux的简介和Vim的使用
  6. VTK:洛伦兹用法实战
  7. 分享废品回收小程序怎么做_开发废品回收小程序制作的作用
  8. Element Ui 中的 :visible.sync
  9. 每天坚持做一件有意义的事
  10. 广搜(广度优先搜索BFS)