如何使用Java代码在Linux服务器上运行VLC流?
我试图在Debian服务器上从Java代码运行vlc流。 下面示例中给出的简单命令在java代码和终端中都可以正常工作如何使用Java代码在Linux服务器上运行VLC流?,java,linux,shell,streaming,vlc,Java,Linux,Shell,Streaming,Vlc,我试图在Debian服务器上从Java代码运行vlc流。 下面示例中给出的简单命令在java代码和终端中都可以正常工作 String cmd = "/Applications/ video.avi" Process p = Runtime.getRuntime().exec(cmd); 但我尝试使用多个选项运行更高级的命令” 这是我的主要课程: NewCamera obj = new NewCamera(); ... String mobile_command = "vlc -d -vvv "
String cmd = "/Applications/ video.avi"
Process p = Runtime.getRuntime().exec(cmd);
但我尝试使用多个选项运行更高级的命令”
这是我的主要课程:
NewCamera obj = new NewCamera();
...
String mobile_command = "vlc -d -vvv " + camera.getUrl() +
" --no-audio --sout"
+ " '#transcode{vcodec=MJPG,venc=ffmpeg{strict=1}}:"
+ "standard{access=http{mime=image/jpeg},mux=mpjpeg,dst="
+ camera.getServerName() + ":"
+ camera.getMobilePort() + "}'";
obj.executeCommand(mobile_command);
logger.info("New mobile stream started");
这是一个用于执行shell命令的类:
private String executeCommand(String command) {
StringBuffer output = new StringBuffer();
Process p;
try {
p = Runtime.getRuntime().exec(command);
logger.info(command);
p.waitFor();
BufferedReader reader =
new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = "";
while ((line = reader.readLine())!= null) {
output.append(line + "\n");
}
} catch (Exception e) {
e.printStackTrace();
}
logger.info(output.toString());
return output.toString();
}
Linux中的进程是创建的,但流是“脱机”的,因为我无法连接并获取它。在Linux中直接从命令行执行相同的命令可以工作并创建流
有什么想法吗?您应该使用VLCJ,而不是通过shell调用vlc 我改变了方法:
vlc -d -vvv http://camera_ip/mjpg/video.mjpg --no-audio --sout '#transcode{vcodec=MJPG,venc=ffmpeg{strict=1}}:standard{access=http{mime=multipart/x-mixed-replace;boundary=--7b3cc56e5f51db803f790dad720ed50a},mux=mpjpeg,dst=server_name:port}' &
这样做很好。我也改变了运行shell脚本的方法。现在我使用Process Builder
,而不是简单的Process
,p.waitFor()调用将阻止它。您只会在以后使用流,因此我认为这不会像您预期的那样工作。我建议您在这里寻找可靠的解决方案:
vlc -d -vvv http://camera_ip/mjpg/video.mjpg --no-audio --sout '#transcode{vcodec=MJPG,venc=ffmpeg{strict=1}}:standard{access=http{mime=multipart/x-mixed-replace;boundary=--7b3cc56e5f51db803f790dad720ed50a},mux=mpjpeg,dst=server_name:port}' &