#java #javacv
#java #javacv
Вопрос:
Мне нужно использовать FFmpegFrameGrabber для преобразования прямой трансляции HTTP-трансляции в изображения и аудио-сегменты продолжительностью 10 секунд. Я всегда получаю grabbedimage null в следующем коде. Мне нужна помощь в использовании javacv для загрузки прямых трансляций.
URL streamUrl = new URL("http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4");
URLConnection connection = streamUrl.openConnection();
InputStream is2 = connection.getInputStream();
FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(is2);
Frame grabbedImage = null;
grabber.start();
grabber.setFrameRate(grabber.getFrameRate());
Java2DFrameConverter c = new Java2DFrameConverter();
while ((grabbedImage = grabber.grab()) != null) {
ImageIO.write(c.convert(grabbedImage), "png",
new File("/mnt/test/" System.currentTimeMillis() ".png"));
}
grabber.close();
Комментарии:
1. Поскольку вы только перекодируете, вероятно, проще использовать программу ffmpeg следующим образом: bytedeco.org/javacpp-presets/ffmpeg/apidocs/org/bytedeco/ffmpeg /…
2. Спасибо @SamuelAudet Приведенный вами пример относится к сохраненному видео на диске. Работает ли FFmpegFrameGrabber напрямую с потоком в реальном времени, таким как HLS? в настоящее время появляется ошибка типа «image == null!» со строкой ImageIO.write. Есть ли способ избежать этого?
3. Да, он также работает с URL-адресами HTTP и т. Д.