Позвольте мне начать с того, что я совершенно новичок в Java. Я из PHP фон, но так случилось, что одну из моих задач PHP нужно преобразовать в Java.
Задача состоит в том, чтобы разбить видео на кадры с помощью ffmpeg и затем работать с этими кадрами. Я завершил этот процесс на PHP. И теперь я могу преобразовать его в Java.
Я просмотрел несколько руководств и рассмотрел основы (использование IDE, запуск Java-программы и т. Д.). Для этого я использую Eclipse.
Мне до сих пор удалось запустить ffmpeg из Java-программы, используя
public static void main(String[] args) throws IOException {
String livestream = "D:/video.mpg";
String folderpth = "D:/frames";
String cmd="D:/ffmpeg/bin/ffmpeg.exe -i "+ livestream +" -r 10 "+folderpth+"/image%d.jpg";
//System.out.println(cmd);
Runtime r = Runtime.getRuntime();
Process p = r.exec(cmd); // this starts creating frames
// and stores them on local disk
// any way to store that frame name in array?
// something like String[] frames = {"image%d.jpg"}
// so that frames array contains image1.jpg, image2.jpg..and so on?
}
Работает нормально, кадры попадают в папку. Теперь я хочу убить процесс через несколько минут, скажем, через 5 минут, так как видео длится более 2 часов, и я не хочу, чтобы мне приходилось переходить на панель задач и убивать процесс вручную. Я также хотел бы знать, есть ли способ сохранить имена фреймов, созданные ffmpeg, в массиве для будущего использования.
Я пробовал использовать p.destroy()
, но это нисколько не остановило процесс. Как мне использовать что-то похожее, например setTimeout()
, которое используется в jQuery?
Некоторые метаданные
ОС: Windows 7
IDE: Eclipse