public static void writeMovie(SeekableByteChannel out, MovieBox movie) throws IOException { ByteBuffer buf = ByteBuffer.allocate(16 * 1024 * 1024); movie.write(buf); buf.flip(); out.write(buf); }
public static void writeMovie(SeekableByteChannel out, MovieBox movie) throws IOException { ByteBuffer buf = ByteBuffer.allocate(16 * 1024 * 1024); movie.write(buf); buf.flip(); out.write(buf); }
public static void doWriteMovieToChannel(SeekableByteChannel out, MovieBox movie, int additionalSize) throws IOException { int sizeHint = estimateMoovBoxSize(movie) + additionalSize; Logger.debug("Using " + sizeHint + " bytes for MOOV box"); ByteBuffer buf = ByteBuffer.allocate(sizeHint * 4); movie.write(buf); buf.flip(); out.write(buf); }
public static void doWriteFullMovieToChannel(SeekableByteChannel out, Movie movie, int additionalSize) throws IOException { int sizeHint = estimateMoovBoxSize(movie.getMoov()) + additionalSize; Logger.debug("Using " + sizeHint + " bytes for MOOV box"); ByteBuffer buf = ByteBuffer.allocate(sizeHint + 128); movie.getFtyp().write(buf); movie.getMoov().write(buf); buf.flip(); out.write(buf); }
@Override public void storeHeader(MovieBox movie) throws IOException { long mdatEnd = out.position(); long mdatSize = mdatEnd - mdatOffset + 8; out.position(mdatOffset); NIOUtils.writeLong(out, mdatSize); out.position(headerPos); try { movie.write(header); header.flip(); int rem = header.capacity() - header.limit(); if (rem < 8) { header.duplicate().putInt(header.capacity()); } out.write(header); if (rem >= 8) new Header("free", rem).write(out); } catch (ArrayIndexOutOfBoundsException e) { Logger.warn("Could not web-optimize, header is bigger then allocated space."); new Header("free", header.remaining()).write(out); out.position(mdatEnd); MP4Util.writeMovie(out, movie); } } }
@Override public void storeHeader(MovieBox movie) throws IOException { long mdatEnd = out.position(); long mdatSize = mdatEnd - mdatOffset + 8; out.setPosition(mdatOffset); NIOUtils.writeLong(out, mdatSize); out.setPosition(headerPos); try { movie.write(header); header.flip(); int rem = header.capacity() - header.limit(); if (rem < 8) { header.duplicate().putInt(header.capacity()); } out.write(header); if (rem >= 8) Header.createHeader("free", rem).writeChannel(out); } catch (ArrayIndexOutOfBoundsException e) { Logger.warn("Could not web-optimize, header is bigger then allocated space."); Header.createHeader("free", header.remaining()).writeChannel(out); out.setPosition(mdatEnd); MP4Util.writeMovie(out, movie); } } }
@Override public void storeHeader(MovieBox movie) throws IOException { long mdatEnd = out.position(); long mdatSize = mdatEnd - mdatOffset + 8; out.position(mdatOffset); NIOUtils.writeLong(out, mdatSize); out.position(headerPos); try { movie.write(header); header.flip(); int rem = header.capacity() - header.limit(); if (rem < 8) { header.duplicate().putInt(header.capacity()); } out.write(header); if (rem >= 8) new Header("free", rem).write(out); } catch (ArrayIndexOutOfBoundsException e) { Logger.warn("Could not web-optimize, header is bigger then allocated space."); new Header("free", header.remaining()).write(out); out.position(mdatEnd); MP4Util.writeMovie(out, movie); } } }