【发布时间】:2018-04-12 14:34:28
【问题描述】:
我正在尝试从采集卡录制视频。因为我希望我的程序控制 ffmpeg,所以我在 Java 中启动了一个进程,让 ffmpeg 运行 30 秒,然后通过向进程发送“q”来关闭它。然而,视频只有 6 秒长。我在我的代码中找不到任何错误,希望能得到一些帮助
我的代码:
import java.io.*;
public class FfmpegTest {
public static void main(String[] args) throws Exception {
Process process = Runtime.getRuntime().exec("E:\\ffmpeg\\bin\\ffmpeg.exe -y -f dshow -i video=\"The video card\" bla.mp4");
PrintWriter pw = new PrintWriter(process.getOutputStream(),true);
Thread.sleep(30000);
System.out.println("recording done");
pw.println("q");
Thread.sleep(2000);
}
}
【问题讨论】:
-
为什么会这样?你的方法似乎是一个黑客。相反,您可以指定
-t 30让 ffmpeg 编码 30 秒。 -
我想录多久就录多久。没有指定我要预先录制多长时间
-
这在您的示例中没有显示,其中 30 秒的限制是硬编码的。如果您暂停 30 + x 秒,ffmpeg 是否录制 6 + x 秒?设置编码过程可能会有延迟。
-
硬编码的 30 秒仅用于测试目的。最后,我想保留对 OutputStream 的引用并向其发送“q”
标签: java ffmpeg video-capture