首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从java后台运行ffmpeg命令

如何从java后台运行ffmpeg命令
EN

Stack Overflow用户
提问于 2010-09-18 16:37:22
回答 5查看 11.5K关注 0票数 4

我正在从java Runtime.getRuntime().exec运行一个ffmpeg命令。ffmpeg命令基本上是从实时流中剪切图像。实际上,当我运行此命令时,不带&,然后它可以正常工作5分钟,之后它停止剪切图像。

但是当我在ffmpeg命令中使用"&“时,它根本不起作用。

在实时流中没有问题,因为当我在linux上运行这个ffmpeg命令时,它工作得很好。

我的主要问题是如何从java后台运行ffmpeg命令。

EN

回答 5

Stack Overflow用户

发布于 2010-09-18 16:56:38

'&‘是一个shell指令,用于将任务放到后台。从Process.exec()运行不涉及外壳。

如果您的进程正在停滞(即正在运行但不工作),那么我怀疑它被阻塞了,等待您使用stdout/stderr。您必须使用线程来完成此操作,以防止进程阻塞等待您使用其输出。有关更多详细信息,请参阅this SO answer

要在后台运行它(即,当Java进程执行其他任务时),您需要:

  1. 生成一个新线程
  2. 在该线程中通过Process.exec调用进程
  3. 使用stdout/stderr (两者都在单独的线程中),最后获得退出代码
票数 3
EN

Stack Overflow用户

发布于 2012-04-18 09:48:41

代码语言:javascript
复制
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

票数 1
EN

Stack Overflow用户

发布于 2012-04-18 10:03:18

我知道您在Java中遇到的命令行问题需要方面的帮助,但是您可能对其他解决方案感兴趣。

也许您可以尝试一下这个库:http://code.google.com/p/jjmpeg/

它是ffmpeg的包装器。也许您可以尝试创建一个java线程并运行您的命令。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3740935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档