java Runtime.exec () программирует и передает символ в getch () - PullRequest
2 голосов
/ 23 сентября 2010

Я хочу запустить ffmpeg из Java как внешний процесс.Через несколько минут я хочу остановить это.Он просит меня нажать «q», и он работает в консоли, но когда я пытаюсь записать «q» в его стандартный ввод (process.getOutputStream (), используя java - это не работает.

Я простовозьмите «c», преобразуйте его в байт, используя кодировку ASCII, запишите его в поток, очистите его и закройте. Ffmpeg не останавливается.

Я кратко просмотрел его источники и обнаружил, что он использует getch () функция, которая (согласно инструкции) «читает символ с соответствующего терминала».

ffmpeg также может останавливаться по сигналу, но она также не работает в Windows.

Кто-нибудь знает, какрешить мою проблему?

И да: я действительно хочу запустить ffmpeg как внешнюю программу. Я знаю о xuggle, но он не работает для меня, мне нужен голый ffmpeg, и я не хочу писать JNIя сейчас.

Спасибо!

1 Ответ

0 голосов
/ 23 сентября 2010

Смотрите, readch () читает один символ с клавиатуры терминала, а не с входного потока! В * nix он использует ioctl, в Windows (я полагаю) какой-то консольный API.

Похоже, я не могу остановить ffmpeg от Java с JNI: (

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...