@Override public void run() { MP4VideoDemuxer demuxer; try { System.out.println("i = " + i); demuxer = new MP4VideoDemuxer(Paths.get("20150920_0009_Atlas_DRCPushRecoveryMultiStepTest.testMultiStepForwardAndContinueWalking.mp4").toFile()); for (int j = 0; j < 5; j++) { demuxer.getNextFrame(); } demuxer.delete(); demuxers.add(demuxer); } catch (IOException e) { e.printStackTrace(); } } }, 500, TimeUnit.MILLISECONDS);
private static int getFrameRate(MP4VideoDemuxer demuxer) throws IOException { demuxer.seekToFrame(0); long startPts = demuxer.getCurrentPTS(); demuxer.seekToFrame(1); long endPts = demuxer.getCurrentPTS(); double step = endPts - startPts; int rate = (int)Math.round((double)demuxer.getTimescale() / step); System.out.println("Framerate is " + rate); return rate; }
private static long getFrame(long endPTS, MP4VideoDemuxer demuxer) throws IOException { demuxer.seekToPTS(endPTS); long endFrame = demuxer.getCurrentFrame(); return endFrame; } }
MP4VideoDemuxer demuxer = new MP4VideoDemuxer(source); while((frame = demuxer.getNextPacket()) != null && demuxer.getCurrentFrame() <= endFrame) builder = new MP4MJPEGMovieBuilder(target, demuxer.getWidth(), demuxer.getHeight(), frameRate, 1); double progress = ((double)(demuxer.getCurrentFrame() - startFrame) / (double) numberOfFrames) * 100.0; monitor.setProgress((int) progress); demuxer.delete();
public static void main(String[] args) throws IOException MP4VideoDemuxer demuxer = new MP4VideoDemuxer(new File("/home/jesper/scratch/aap.mp4")); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); final JLabel label = new JLabel(); label.setPreferredSize(new Dimension(demuxer.getWidth(), demuxer.getHeight())); frame.getContentPane().add(label); frame.pack(); frame.setVisible(true); demuxer.seek(300); while ((picture = demuxer.getNextFrame()) != null)
MP4VideoDemuxer demuxer = new MP4VideoDemuxer(source); while((frame = demuxer.getNextFrame()) != null && demuxer.getCurrentFrame() <= endFrame) double progress = ((double)(demuxer.getCurrentFrame() - startFrame) / (double) numberOfFrames) * 100.0; monitor.setProgress((int) progress); demuxer.delete();
public VideoDataPlayer(String name, File dataDirectory, LogProperties logProperties) throws IOException { this.name = name; this.interlaced = logProperties.getInterlaced(name); this.hasTimebase = logProperties.hasTimebase(); if (!hasTimebase) { System.err.println("Video data is using timestamps instead of frame numbers. Falling back to seeking based on timestamp."); } videoFile = new File(dataDirectory, logProperties.getVideoFile(name)); if (!videoFile.exists()) { throw new IOException("Cannot find video: " + videoFile); } File timestampFile = new File(dataDirectory, logProperties.getTimestampFile(name)); parseTimestampData(timestampFile); demuxer = new MP4VideoDemuxer(videoFile); viewer = new HideableMediaFrame(name, demuxer.getWidth(), demuxer.getHeight()); }
public synchronized void showVideoFrame(long timestamp) { if (timestamp >= currentlyShowingRobottimestamp && timestamp < upcomingRobottimestamp) { return; } long videoTimestamp = getVideoTimestamp(timestamp); if (currentlyShowingIndex + 1 < robotTimestamps.length) { upcomingRobottimestamp = robotTimestamps[currentlyShowingIndex + 1]; } else { upcomingRobottimestamp = currentlyShowingRobottimestamp; } try { demuxer.seekToPTS(videoTimestamp); YUVPicture nextFrame = demuxer.getNextFrame(); viewer.update(nextFrame); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
@Override public void run() { try { demuxer = new MP4VideoDemuxer(path.toFile()); timedOut = false; } catch (IOException e) { e.printStackTrace(); } } }, 1000, TimeUnit.MILLISECONDS);
long previousTimeMillis = System.currentTimeMillis(); demuxer.seekToFrame(0); YUVPicture picture; while (true) picture = demuxer.getNextFrame(); demuxer.seekToFrame(0); return;
private void streamBufferedImagesFromVideo() { YUVPicture frame; try { while ((frame = demuxer.getNextFrame()) != null) { videoListener.updateImage(converter.toBufferedImage(frame)); frame.delete(); } } catch (IOException e) { throw new RuntimeException(e); } }
private long getVideoTimestamp(long timestamp) { currentlyShowingIndex = Arrays.binarySearch(robotTimestamps, timestamp); if (currentlyShowingIndex < 0) { int nextIndex = -currentlyShowingIndex + 1; if ((nextIndex < robotTimestamps.length) && (Math.abs(robotTimestamps[-currentlyShowingIndex] - timestamp) > Math.abs(robotTimestamps[nextIndex]))) { currentlyShowingIndex = nextIndex; } else { currentlyShowingIndex = -currentlyShowingIndex; } } if (currentlyShowingIndex < 0) currentlyShowingIndex = 0; if (currentlyShowingIndex >= robotTimestamps.length) currentlyShowingIndex = robotTimestamps.length - 1; currentlyShowingRobottimestamp = robotTimestamps[currentlyShowingIndex]; long videoTimestamp = videoTimestamps[currentlyShowingIndex]; if (hasTimebase) { videoTimestamp = (videoTimestamp * bmdTimeBaseNum * demuxer.getTimescale()) / (bmdTimeBaseDen); } return videoTimestamp; }
MP4VideoDemuxer demuxer = new MP4VideoDemuxer(source); while((frame = demuxer.getNextPacket()) != null && demuxer.getCurrentFrame() <= endFrame) builder = new MP4MJPEGMovieBuilder(target, demuxer.getWidth(), demuxer.getHeight(), frameRate, 1); double progress = ((double)(demuxer.getCurrentFrame() - startFrame) / (double) numberOfFrames) * 100.0; monitor.setProgress((int) progress); demuxer.delete();
public static void main(String[] args) throws IOException MP4VideoDemuxer demuxer = new MP4VideoDemuxer(new File("/home/jesper/scratch/aap.mp4")); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); final JLabel label = new JLabel(); label.setPreferredSize(new Dimension(demuxer.getWidth(), demuxer.getHeight())); frame.getContentPane().add(label); frame.pack(); frame.setVisible(true); demuxer.seek(300); while ((picture = demuxer.getNextFrame()) != null)
MP4VideoDemuxer demuxer = new MP4VideoDemuxer(source); while((frame = demuxer.getNextFrame()) != null && demuxer.getCurrentFrame() <= endFrame) double progress = ((double)(demuxer.getCurrentFrame() - startFrame) / (double) numberOfFrames) * 100.0; monitor.setProgress((int) progress); demuxer.delete();
public VideoDataPlayer(String name, File dataDirectory, LogProperties logProperties) throws IOException { this.name = name; this.interlaced = logProperties.getInterlaced(name); this.hasTimebase = logProperties.hasTimebase(); if (!hasTimebase) { System.err.println("Video data is using timestamps instead of frame numbers. Falling back to seeking based on timestamp."); } videoFile = new File(dataDirectory, logProperties.getVideoFile(name)); if (!videoFile.exists()) { throw new IOException("Cannot find video: " + videoFile); } File timestampFile = new File(dataDirectory, logProperties.getTimestampFile(name)); parseTimestampData(timestampFile); demuxer = new MP4VideoDemuxer(videoFile); viewer = new HideableMediaFrame(name, demuxer.getWidth(), demuxer.getHeight()); }
public synchronized void showVideoFrame(long timestamp) { if (timestamp >= currentlyShowingRobottimestamp && timestamp < upcomingRobottimestamp) { return; } long videoTimestamp = getVideoTimestamp(timestamp); if (currentlyShowingIndex + 1 < robotTimestamps.length) { upcomingRobottimestamp = robotTimestamps[currentlyShowingIndex + 1]; } else { upcomingRobottimestamp = currentlyShowingRobottimestamp; } try { demuxer.seekToPTS(videoTimestamp); YUVPicture nextFrame = demuxer.getNextFrame(); viewer.update(nextFrame); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
private void openVideoFile(String filename) { try { demuxer = new MP4VideoDemuxer(new File(filename)); } catch (IOException e) { throw new RuntimeException(e); } }
private void streamBufferedImagesFromVideo() { // Now, we start walking through the container looking at each packet. YUVPicture leftEye; YUVPicture rightEye; try { while ((leftEye = leftEyeDemuxer.getNextFrame()) != null && (rightEye = rightEyeDemuxer.getNextFrame()) != null) { videoListener.updateImage(converter.toBufferedImage(leftEye), converter.toBufferedImage(rightEye)); leftEye.delete(); rightEye.delete(); //TODO: Insert eait loop } } catch (IOException e) { e.printStackTrace(); } }