public long rescale(long tv, long ts) { return (tv * getTimescale()) / ts; }
public long rescale(long tv, long ts) { return (tv * getTimescale()) / ts; }
public long rescale(long tv, long ts) { return (tv * getTimescale()) / ts; }
private void selectInner(List<Edit> edits, Slice cut, MovieBox movie, TrakBox trakBox) { long inMv = (long) (movie.getTimescale() * cut.inSec); long outMv = (long) (movie.getTimescale() * cut.outSec); long editStart = 0; ListIterator<Edit> lit = edits.listIterator(); while (lit.hasNext()) { Edit edit = lit.next(); if (editStart + edit.getDuration() <= inMv || editStart >= outMv) lit.remove(); editStart += edit.getDuration(); } }
private void split(List<Edit> edits, double sec, MovieBox movie, TrakBox trakBox) { Util.split(movie, trakBox, (long) (sec * movie.getTimescale())); } }
/** * Calculates and formats standard time as in Quicktime player * * @param movie * @param mediaFrameNo * @return */ public static String qtPlayerTime(MovieBox movie, int mediaFrameNo) { TrakBox videoTrack = movie.getVideoTrack(); long editedTv = mediaToEdited(videoTrack, frameToTimevalue(videoTrack, mediaFrameNo), movie.getTimescale()); int sec = (int) (editedTv / videoTrack.getTimescale()); return String.format("%02d", sec / 3600) + "_" + String.format("%02d", (sec % 3600) / 60) + "_" + String.format("%02d", sec % 60); }
/** * Calculates and formats standard time as in Quicktime player * * @param movie * @param mediaFrameNo * @return */ public static String qtPlayerTime(MovieBox movie, int mediaFrameNo) { TrakBox videoTrack = movie.getVideoTrack(); long editedTv = mediaToEdited(videoTrack, frameToTimevalue(videoTrack, mediaFrameNo), movie.getTimescale()); int sec = (int) (editedTv / videoTrack.getTimescale()); return String.format("%02d", sec / 3600) + "_" + String.format("%02d", (sec % 3600) / 60) + "_" + String.format("%02d", sec % 60); }
/** * Splits track on the timevalue specified * * @param movie * @param track * @param tvMv * @return */ public static Pair<List<Edit>> split(MovieBox movie, TrakBox track, long tvMv) { return splitEdits(track.getEdits(), new Rational(track.getTimescale(), movie.getTimescale()), tvMv); }
/** * Calculates frame number as it shows in quicktime player * * @param movie * @param mediaFrameNo * @return */ public static int qtPlayerFrameNo(MovieBox movie, int mediaFrameNo) { TrakBox videoTrack = movie.getVideoTrack(); long editedTv = mediaToEdited(videoTrack, frameToTimevalue(videoTrack, mediaFrameNo), movie.getTimescale()); return tv2QTFrameNo(movie, editedTv); }
/** * Calculates frame number as it shows in quicktime player * * @param movie * @param mediaFrameNo * @return */ public static int qtPlayerFrameNo(MovieBox movie, int mediaFrameNo) { TrakBox videoTrack = movie.getVideoTrack(); long editedTv = mediaToEdited(videoTrack, frameToTimevalue(videoTrack, mediaFrameNo), movie.getTimescale()); return tv2QTFrameNo(movie, editedTv); }
/** * Calculates frame number as it shows in quicktime player * * @param movie * @param mediaFrameNo * @return */ public static int qtPlayerFrameNo(MovieBox movie, int mediaFrameNo) { TrakBox videoTrack = movie.getVideoTrack(); long editedTv = mediaToEdited(videoTrack, frameToTimevalue(videoTrack, mediaFrameNo), movie.getTimescale()); return tv2QTFrameNo(movie, editedTv); }
public int timeCodeToFrameNo(String timeCode) throws Exception { if (isValidTimeCode(timeCode)) { int movieFrame = parseTimecode(timeCode.trim()) - sampleCache[0]; int frameRate = tse.getNumFrames(); long framesInTimescale = movieFrame * tse.getTimescale(); long mediaToEdited = QTTimeUtil.mediaToEdited(box, framesInTimescale / frameRate, movie.getTimescale()) * frameRate; return (int) (mediaToEdited / box.getTimescale()); } return -1; }
public int timeCodeToFrameNo(String timeCode) throws Exception { if (isValidTimeCode(timeCode)) { int movieFrame = parseTimecode(timeCode.trim()) - sampleCache[0]; int frameRate = tse.getNumFrames(); long framesInTimescale = movieFrame * tse.getTimescale(); long mediaToEdited = QTTimeUtil.mediaToEdited(box, framesInTimescale / frameRate, movie.getTimescale()) * frameRate; return (int) (mediaToEdited / box.getTimescale()); } return -1; }
public int timeCodeToFrameNo(String timeCode) throws Exception { if (isValidTimeCode(timeCode)) { int movieFrame = parseTimecode(timeCode.trim()) - sampleCache[0]; int frameRate = tse.getNumFrames(); long framesInTimescale = movieFrame * tse.getTimescale(); long mediaToEdited = QTTimeUtil.mediaToEdited(box, framesInTimescale / frameRate, movie.getTimescale()) * frameRate; return (int) (mediaToEdited / box.getTimescale()); } return -1; }
public TrakBox importTrack(MovieBox movie, TrakBox track) { TrakBox newTrack = (TrakBox) MP4Util.cloneBox(track, 1024 * 1024); List<Edit> edits = newTrack.getEdits(); ArrayList<Edit> result = new ArrayList<Edit>(); if (edits != null) { for (Edit edit : edits) { result.add(new Edit(rescale(edit.getDuration(), movie.getTimescale()), edit.getMediaTime(), edit .getRate())); } } newTrack.setEdits(result); return newTrack; }
public TrakBox importTrack(MovieBox movie, TrakBox track) { TrakBox newTrack = (TrakBox) NodeBox.cloneBox(track, 1024 * 1024, factory); List<Edit> edits = newTrack.getEdits(); ArrayList<Edit> result = new ArrayList<Edit>(); if (edits != null) { for (Edit edit : edits) { result.add(new Edit(rescale(edit.getDuration(), movie.getTimescale()), edit.getMediaTime(), edit .getRate())); } } newTrack.setEdits(result); return newTrack; }
public TrakBox importTrack(MovieBox movie, TrakBox track) { TrakBox newTrack = (TrakBox) MP4Util.cloneBox(track, 1024 * 1024); List<Edit> edits = newTrack.getEdits(); ArrayList<Edit> result = new ArrayList<Edit>(); if (edits != null) { for (Edit edit : edits) { result.add(new Edit(rescale(edit.getDuration(), movie.getTimescale()), edit.getMediaTime(), edit .getRate())); } } newTrack.setEdits(result); return newTrack; }
public static int tv2QTFrameNo(MovieBox movie, long tv) { TrakBox videoTrack = movie.getVideoTrack(); TrakBox timecodeTrack = movie.getTimecodeTrack(); if (timecodeTrack != null && BoxUtil.containsBox2(videoTrack, "tref", "tmcd")) { return timevalueToTimecodeFrame(timecodeTrack, new RationalLarge(tv, videoTrack.getTimescale()), movie.getTimescale()); } else { return timevalueToFrame(videoTrack, tv); } }
public static int tv2QTFrameNo(MovieBox movie, long tv) { TrakBox videoTrack = movie.getVideoTrack(); TrakBox timecodeTrack = movie.getTimecodeTrack(); if (timecodeTrack != null && Box.findFirst(videoTrack, "tref", "tmcd") != null) { return timevalueToTimecodeFrame(timecodeTrack, new RationalLarge(tv, videoTrack.getTimescale()), movie.getTimescale()); } else { return timevalueToFrame(videoTrack, tv); } }
public static int tv2QTFrameNo(MovieBox movie, long tv) { TrakBox videoTrack = movie.getVideoTrack(); TrakBox timecodeTrack = movie.getTimecodeTrack(); if (timecodeTrack != null && Box.findFirst(videoTrack, "tref", "tmcd") != null) { return timevalueToTimecodeFrame(timecodeTrack, new RationalLarge(tv, videoTrack.getTimescale()), movie.getTimescale()); } else { return timevalueToFrame(videoTrack, tv); } }