0

以下命令在我的 java 模块中不起作用(从实时流中获取快照并保存) Runtime.getRuntime().exec("ffmpeg -i \"rtmp://127.0.0.1:1935/live/mytest live=1超时=2\" -f image2 -vframes 1 /snaps/testo.jpg");

如果我在 Ubuntu 14.0.4 控制台上使用相同的命令,它就可以工作。在 Window 上的 red5pro 模块中使用相同的命令,但在 Ubuntu 上却没有。

当我使用 String[] execStr = {"/usr/local/bin/ffmpeg","-i","rtmp://127.0.0.1:1935/live/mytest","live=1","timeout= 2","-f","image2","-vframes","1","/snaps/tt.jpg"}; ProcessBuilder pb = new ProcessBuilder("ffmpeg -i rtmp://localhost/live/mytest live=1 timeout=2 -f image2 -vframes 1 /snaps/testo.jpg");

它总是抛出找不到流(在 red5pro 控制台中)

4

1 回答 1

0

我不懂 Java(除了一点,我对 FFmpeg 有经验),但我认为你应该这样编写代码:

String[] execStr = {"/usr/local/bin/ffmpeg", "-i", "rtmp://127.0.0.1:1935/live/mytest", "live=1", "timeout=2", "-f", "image2", "-vframes", "1", "/snaps/tt.jpg"};
ProcessBuilder pb = new ProcessBuilder(execStr);

或像这样:

String[] execStr = {"/usr/local/bin/ffmpeg", "-i", "\"rtmp://127.0.0.1:1935/live/mytest live=1 timeout=2\"", "-f", "image2", "-vframes", "1", "/snaps/tt.jpg"};
ProcessBuilder pb = new ProcessBuilder(execStr);

我从这里检查: https ://docs.oracle.com/javase/7/docs/api/java/lang/ProcessBuilder.html

于 2018-01-24T14:19:48.243 回答