Java进程在397秒后休眠
在流终止后,此代码仅从实时流录制约397秒的视频。文件大小约20兆字节。Java和ffmpeg进程不会终止。Centos 6,Oracle JDK 8。如果没有java,则不会终止MPEG录制。可能有什么问题?JVM或操作系统可能有任何限制Java进程在397秒后休眠,java,process,ffmpeg,jvm,Java,Process,Ffmpeg,Jvm,在流终止后,此代码仅从实时流录制约397秒的视频。文件大小约20兆字节。Java和ffmpeg进程不会终止。Centos 6,Oracle JDK 8。如果没有java,则不会终止MPEG录制。可能有什么问题?JVM或操作系统可能有任何限制 public class FFMpegLauncher extends Thread { private Process pr; public static void main(String[] args) { FFMpegL
public class FFMpegLauncher extends Thread {
private Process pr;
public static void main(String[] args) {
FFMpegLauncher launcher = new FFMpegLauncher();
Runtime rt = Runtime.getRuntime();
rt.addShutdownHook(launcher);
try {
if(args.length > 0) {
String cameraUid = args[0];
String rtspURL = "rtsp://otherhost/" + cameraUid;
launcher.pr = rt.exec("/usr/local/bin/ffmpeg -i " + rtspURL + " -vcodec copy -r 15 -f flv out.mp4");
launcher.pr.waitFor();
} else {
System.exit(-1);
}
} catch (IOException | InterruptedException e) {
e.printStackTrace();
System.exit(-1);
}
}
}
当您从命令行以常规方式运行时,
ffmpeg
是否会产生标准输出/错误?因为这里你没有消耗输出。当缓冲区填满时,它将被阻塞。@MarkoTopolnik,如何使用输出?使用ProcessBuilder
并调用Inheritario()
。非常感谢您,Mark!:)