java Runtime.exec()程序并将字符传递给getch()

时间:2010-09-23 01:58:18

标签: java ffmpeg

我想从java运行ffmpeg作为外部进程。几分钟后我想阻止它。 它要求我单击'q',它在控制台中工作,但是当我尝试将'q'写入其stdin(使用java的process.getOutputStream()时 - 它不起作用。

我只需要“c”,使用ASCII字符集将其转换为字节,将其写入流,刷新并关闭它。 Ffmpeg不会停止。

我简要地查看了它的来源,发现它使用的是getch()函数(根据手册)“从相关终端读取字符”。

ffmpeg也可以通过信号停止,但它在Windows中也不起作用。

有人知道如何解决我的问题吗?

是的:我确实想将ffmpeg作为外部程序运行。我知道xuggle,但它对我不起作用,我需要简单的ffmpeg,我现在不想自己编写JNI。

谢谢!

1 个答案:

答案 0 :(得分:0)

请参阅,readch()从终端键盘读取一个字符,而不是输入流! 在* nix中,它使用ioctl,在windows中(我相信)某种Console API。

看起来我无法用JNI中的java停止ffmpeg :(