我正在从java Runtime.getRuntime().exec运行一个ffmpeg命令。ffmpeg命令基本上是从实时流中剪切图像。实际上,当我运行此命令时,不带&,然后它可以正常工作5分钟,之后它停止剪切图像。
但是当我在ffmpeg命令中使用"&“时,它根本不起作用。
在实时流中没有问题,因为当我在linux上运行这个ffmpeg命令时,它工作得很好。
我的主要问题是如何从java后台运行ffmpeg命令。
发布于 2010-09-18 16:56:38
'&‘是一个shell指令,用于将任务放到后台。从Process.exec()运行不涉及外壳。
如果您的进程正在停滞(即正在运行但不工作),那么我怀疑它被阻塞了,等待您使用stdout/stderr。您必须使用线程来完成此操作,以防止进程阻塞等待您使用其输出。有关更多详细信息,请参阅this SO answer。
要在后台运行它(即,当Java进程执行其他任务时),您需要:
Process.exec调用进程发布于 2012-04-18 09:48:41
String livestream = "/Users/videos/video_10/video_1.mp4";
String folderpth = "/Users/videos/video_10/photos";
String cmd="/opt/local/bin/ffmpeg -i "+ livestream +" -r 10 "+folderpth+"/image%d.jpeg";
Process p = Runtime.getRuntime().exec(cmd);视频是10秒。long,它在照片文件夹中创建了100个jpeg。您必须提供文件夹的绝对路径。
此外,要找到ffmpeg二进制文件的路径,请在终端中使用which ffmpeg。我的是/opt/local/bin/ffmpeg。
发布于 2012-04-18 10:03:18
我知道您在Java中遇到的命令行问题需要方面的帮助,但是您可能对其他解决方案感兴趣。
也许您可以尝试一下这个库:http://code.google.com/p/jjmpeg/
它是ffmpeg的包装器。也许您可以尝试创建一个java线程并运行您的命令。
https://stackoverflow.com/questions/3740935
复制相似问题