@Override protected List<List<Writable>> loadData(File file, InputStream inputStream) throws IOException { List<List<Writable>> record = new ArrayList<>(); try (FFmpegFrameGrabber fg = inputStream != null ? new FFmpegFrameGrabber(inputStream) : new FFmpegFrameGrabber(file)) { if (numFrames >= 1) { fg.start(); if (startFrame != 0) fg.setFrameNumber(startFrame); for (int i = startFrame; i < startFrame + numFrames; i++) { Frame grab = fg.grabImage(); record.add(RecordConverter.toRecord(imageLoader.asRowVector(converter.convert(grab)))); } } else { if (framesPerSecond < 1) throw new IllegalStateException("No frames or frame time intervals specified"); else { fg.start(); for (double i = 0; i < videoLength; i += framesPerSecond) { fg.setTimestamp(Math.round(i * 1000000L)); Frame grab = fg.grabImage(); record.add(RecordConverter.toRecord(imageLoader.asRowVector(converter.convert(grab)))); } } } } return record; }