From 97a0bbd8b75c7ba8df78a1e8f67bbaad23edf298 Mon Sep 17 00:00:00 2001
From: tangzy <tangzy123456>
Date: Sat, 24 Apr 2021 15:47:52 +0800
Subject: [PATCH] 1.App警情反馈新增
---
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/rvideo/controller/RvideoController.java | 158 +++++++++++++---------------------------------------
1 files changed, 41 insertions(+), 117 deletions(-)
diff --git a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/rvideo/controller/RvideoController.java b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/rvideo/controller/RvideoController.java
index 378d2eb..6915d6a 100644
--- a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/rvideo/controller/RvideoController.java
+++ b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/rvideo/controller/RvideoController.java
@@ -62,6 +62,7 @@
private static String PRF_MINIO_URL = "minio/jfpt/void/";
private static Thread thread;
private static String UUIDs;
+ private static String uids;
private static int count=0;
/**
@@ -195,143 +196,66 @@
// }
-// /**
-// * Javacv录制视频
-// */
-// @PostMapping("/rVoids")
-// public void rVoids(String url,String uid) {
-// String UUID = DateUtil.time();
-// uids=uid;
-// UUIDs=UUID;
-// RecordVideoThread recordVideoThread = new RecordVideoThread();
-// recordVideoThread.filePath = "D:\\software\\minio\\data\\jfpt\\void\\"+UUID + ".mp4";
-// recordVideoThread.timesSec = 0L;
-// String newJson = StringEscapeUtils.unescapeHtml4(url);
-// recordVideoThread.streamURL =newJson;// 最好设置结束时长 如直接停止程序会造成输出文件的损坏无法正常播放
-// recordVideoThread.isAudio = true;
-// thread = new Thread(recordVideoThread);
-// thread.start();
-// }
-
-// @PostMapping("/stop")
-// public String stop(String jid) throws FrameGrabber.Exception {
-// //返回前端路径
-// String vaddress = null;
-// thread.stop();
-// //返回路径
-// vaddress = "https://web.byisf.com/" + PRF_MINIO_URL + UUIDs + ".mp4";
-// //把路径通过警情id添加到警情信息
-// alarmService.updateVaddress(vaddress,uids,jid);
-// return vaddress;
-//
-// }
-
- public class RecordVideoThread implements Runnable {
- public String streamURL;// 流地址(测试可以用obs推流)
- public String filePath;// 文件路径
- public Long timesSec = 0L;// 停止录制时长 0为不限制时长
- public String fileFormat = "mp4";//录制的文件格式
- public boolean isAudio = true;//是否录制声音
-
- public RecordVideoThread(String streamURL, String filePath) {
- this.streamURL = streamURL;
- this.filePath = filePath;
- }
- @Override
- public void run() {
- System.out.println(streamURL);
- // 获取视频源
- FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(streamURL);
- FFmpegFrameRecorder recorder = null;
- try {
- grabber.start();
- Frame frame = grabber.grabFrame();
- createFile();
- //"rtmp://192.168.1.225:1935/live/home"
- // 流媒体输出地址,分辨率(长,高),是否录制音频(0:不录制/1:录制)
- recorder = new FFmpegFrameRecorder(filePath, 1280, 720, isAudio ? 1 : 0);
- recorder.setVideoCodec(avcodec.AV_CODEC_ID_H264);// 直播流格式
- recorder.setFormat(fileFormat);// 录制的视频格式
- recorder.setFrameRate(25);// 帧数
- //百度翻译的比特率,默认400000,但是我400000贼模糊,调成800000比较合适
- recorder.setVideoBitrate(800000);
- recorder.start();
- System.out.println("推流开始");
- while (!Thread.currentThread().isInterrupted()){
- System.out.println("开始");
- recorder.record(frame);//录制
- frame = grabber.grabFrame();//获取下一帧
- System.out.println("结束");
- }
- recorder.record(frame);
-
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- //停止录制
- if (null != grabber) {
- try {
- grabber.stop();
- } catch (FrameGrabber.Exception e) {
- e.printStackTrace();
- }
- }
- if (recorder != null) {
- try {
- recorder.stop();
- } catch (FrameRecorder.Exception e) {
- e.printStackTrace();
- }
- }
- System.out.println("录制完成,录制时长:" + timesSec + "秒");
- }
- }
-
- private void createFile() {
- File outFile = new File(filePath);
- if (filePath.isEmpty() || !outFile.exists() || outFile.isFile()) {
- try {
- outFile.createNewFile();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
-
- }
- }
-
- /**
- * Javacv录制视频测试
+ /**
+ * Javacv录制视频
*/
@PostMapping("/rVoids")
- public void cs(String url,String uid) {
+ public void rVoids(String url,String uid) {
String UUID = DateUtil.time();
UUIDs=UUID;
- if (uid!=null){
- count++;
- }
+ uids=uid;
+ RecordVideoThread recordVideoThread = new RecordVideoThread();
+ recordVideoThread.filePath = "D:\\software\\minio\\data\\jfpt\\void\\"+UUID + ".mp4";
+ recordVideoThread.timesSec = 0L;
String newJson = StringEscapeUtils.unescapeHtml4(url);
- RecordVideoThread recordVideoThread = new RecordVideoThread(newJson,"D:\\software\\minio\\data\\jfpt\\void\\"+UUID +".mp4");
+ recordVideoThread.streamURL =newJson;// 最好设置结束时长 如直接停止程序会造成输出文件的损坏无法正常播放
+ recordVideoThread.isAudio = true;
thread = new Thread(recordVideoThread);
thread.start();
}
@PostMapping("/stop")
- public String stopcs(String jid) throws FrameGrabber.Exception {
+ public String stop(String jid) throws FrameGrabber.Exception {
//返回前端路径
String vaddress = null;
- // 发出中断标志 true
- thread.interrupt();
+ thread.stop();
//返回路径
vaddress = "https://web.byisf.com/" + PRF_MINIO_URL + UUIDs + ".mp4";
//把路径通过警情id添加到警情信息
- String uids=Integer.toString(count);
alarmService.updateVaddress(vaddress,uids,jid);
return vaddress;
}
+// /**
+// * Javacv录制视频测试
+// */
+// @PostMapping("/cs")
+// public void rVoids(String url,String uid) {
+// String UUID = DateUtil.time();
+// UUIDs=UUID;
+// String newJson = StringEscapeUtils.unescapeHtml4(url);
+// RecordVideoThread recordVideoThread = new RecordVideoThread(newJson,"D:\\software\\minio\\data\\jfpt\\void\\"+UUID +".mp4");
+// thread = new Thread(recordVideoThread);
+// thread.start();
+// }
+//
+// @PostMapping("/csc")
+// public String stopcs(String jid) throws FrameGrabber.Exception {
+// //返回前端路径
+// String vaddress = null;
+// // 发出中断标志 true
+// thread.interrupt();
+// //返回路径
+// vaddress = "https://web.byisf.com/" + PRF_MINIO_URL + UUIDs + ".mp4";
+// //把路径通过警情id添加到警情信息
+// String uids=Integer.toString(count);
+// alarmService.updateVaddress(vaddress,uids,jid);
+// return vaddress;
+//
+// }
+
+
}
--
Gitblit v1.9.3