首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >启动/停止Ffmpeg视频捕获

启动/停止Ffmpeg视频捕获
EN

Stack Overflow用户
提问于 2011-11-02 08:32:39
回答 2查看 6.2K关注 0票数 3

我目前正在使用ffmpeg记录视频从网络摄像头来源。

目前,我使用java来调用ffmpeg来执行。

代码非常简单

代码语言:javascript
复制
ffmpeg -f dshow -i video="Dualpix HD720p for Notebooks" -s cif -r 20 -f flv TEST.FLV
Runtime.getRuntime().exec("rundll32 SHELL32.DLL,ShellExec_RunDLL " + cmd);

而且效果很好。

唯一真正的问题是当我需要停止录音的时候。

我知道我可以在CMD中按Q甚至ctrl+c,但是我需要停止没有键盘输入的进程。

这将是相当容易实现的过程,但在这种情况下,不完成视频,留下我一个腐败,需要修复,输出。

是否有任何方法可以“远程”触发最后确定过程。

Thx,D.

*******EDIT__**********

我想你指的是

Process.getOutputStream()

对于这个案例,我尝试了以下代码:

代码语言:javascript
复制
public Process doCommand(String cmd) throws Exception {

    rt = Runtime.getRuntime();
    Process proc = rt.exec(cmd);
    recOS= proc.getOutputStream();
    regcIS= proc.getInputStream();

    return proc;

}

   receOS.write(("q/n".getBytes()));
   recOS.flush();

我仍然收到一个错误,更确切地说,java.io.ioexception管道正在关闭.

EN

回答 2

Stack Overflow用户

发布于 2011-11-02 08:47:11

您需要将"q\n“发送到ffmpeg进程。要做到这一点,首先需要使用InputStream获取Process.getInputStream()并发送输入。

最好先阅读一下有关从Java控制子进程的内容。这里有一些很好的帖子,搜索ProcessBuilder

票数 3
EN

Stack Overflow用户

发布于 2011-11-02 12:14:14

如果您坚持使用当前的方法,可以通过JNA将Java绑定到FFmpeg库。

http://fmj-sf.net/ffmpeg-java/getting_started.php

注意:关于如何在Windows下构建Java绑定的实际链接不再是available...in

更多链接:http://code.google.com/p/jjmpeg/

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

https://stackoverflow.com/questions/7977527

复制
相关文章

相似问题

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