Код: Выделить всё
ProcessBuilder builder = new ProcessBuilder("ffmpeg", "-i", RTSP_URL, "-f", fileFormat, destFilePath);
Process processToExecute = builder.start();
< /code>
Я хочу закрыть процесс, прежде чем он завершит выполнение. Итак, если я запускаю эту команду FFMPEG непосредственно в CMD Windows, а затем нажимаю «Ctrl+C» через 5 секунд, затем обрабатывайте завершение с состоянием '2'. И я могу воспроизводить медиа -файл, созданный до сих пор. < /P>
Итак, если я выполняю ту же операцию в своем приложении Java, используя: < /p>
process.destroy(); //I call this method after 5 sec
< /code>
Я получаю код состояния '1', что означает ненормальное прекращение. Я получаю статус следующим образом: < /p>
processToExecute.destroy();
processToExecute.exitValue(); //This return me status '1'
< /code>
И я не могу воспроизводить файл медиа, и я думаю, что это связано с ненормальным завершением процесса. Приложение Java с кодом состояния '2', которое я получаю, когда я прекращаю процесс, используя CMD. < /P>
Редактировать#01: --- Общие выводы < /h1>
Итак, когда я пытаюсь удалить этот файл после завершения приложения, я получаю следующую ошибку: < /p>
The Action Can't be Performed Because File is Opened in FFMPEG.exe
< /code>
Что означает, что процесс не завершает команду, которую он выполняет. Эта команда по -прежнему заняла этот файл, поэтому я не могу воспроизводить его. Процесс заканчивается, когда я звоню: < /p>
processToExecute.destroy();
< /code>
Но задача, которую она выполняет (то есть выполнение команды), все еще активна. Странно !!!!cmd> processToExecute.destroy();
< /code>
Он завершает процесс, но когда я вижу список процессов выполнения в настоящее время, я все еще могу их видеть. Я использую следующую команду, чтобы увидеть процессы работы: < /p>
tasklist
Подробнее здесь: https://stackoverflow.com/questions/279 ... essbuilder