У меня есть следующие работает с консоли:Отправка видео через NC через трубу в Java
COMPUTER LINUX: nc -l -p 5012 | mplayer -fps 31 -cache 1024 -
RPI: raspivid -t 2000 -o - | nc 192.168.0.5 5012
Но если я попытаюсь обернуть его в Java не работает. Она не крах, она проходит через до конца программы просто ничего не происходит:
public void video() {
try {
String[] cmds = {"/bin/sh", "-c", "nc -l -u 5012 | mplayer -fps 31 -cache 1024 -"};
Process videoProcess = Runtime.getRuntime().exec(cmds);
adder.streamVideo(2000);
catch (IOException e) {
System.out.println("IOE");
e.printStackTrace();
}
}
где adder.streamVideo() вызывает код RPI.
public boolean streamVideo(int streamDuration) {
String[] cmd = {"/bin/sh", "-c",
"raspivid -t " + streamDuration + " -o - | nc 192.168.0.5 5012"};
try {
Runtime.getRuntime().exec(cmd);
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("Video streaming failed");
e.printStackTrace();
}
return true;
}
Любые предложения?
Я изменил код, поскольку вы предложили из-за того, что exec() не вызвал оболочку, а вместо этого поместил ее в скрипт, он все еще не работает - приведенный выше код отражает сделанные изменения – cxzp
ok, теперь уточните, как -it-does-not-work part – mnagel
ничего не сработает, он просто ничего не происходит, я знаю, что видео-код в порядке, поскольку я запустил этот код на конце rpi, и он работает из оболочки, поэтому я не уверен, почему он все еще не делает Работа – cxzp