一、案例
通过调用ffmpeg把rtsp流转换成avi,这里主要目的是为了记录
ProcessBuilder processBuilder = new ProcessBuilder();
这里每个逗号相当于空格,这样就能在打成jar以后,调用脚本或者其他进程。
二、代码
package de.onvif.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
@RestController
@RequestMapping("RTSPDownloader")
public class RTSPDownloader {
@RequestMapping("/demo")
public void demo() {
for (int i = 0; i < 5; i++) {
String ok = mpshipi();
}
}
public String mpshipi() {
String rtspUrl = "rtsp://admin:ADMIN123@ip:554/Streaming/Channels/1";
String outputFilePath = "";
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
Date date = new Date();
outputFilePath = "/" + sdf.format(date) + ".avi";
System.out.println(outputFilePath);
try {
// 构建FFmpeg命令
// ffmpeg -i rtsp://admin:ADMIN123@ip:554/Streaming/Channels/1 -c:v copy -c:a copy /mp4.mp4
ProcessBuilder processBuilder = new ProcessBuilder("ffmpeg", "-i", rtspUrl, "-c:v", "copy", "-c:a", "copy", "-segment_time", "30", outputFilePath);
Process process = processBuilder.start();
// 等待命令执行完成
int exitCode = process.waitFor();
//销毁进程
process.destroyForcibly();
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
return "ok";
}
}