public void finish() throws IOException { videoTrack.addSampleEntry(MP4Muxer.videoSampleEntry(imageType, size, ENCODER_NAME)); // Write MP4 header and finalize recording if (af != null) audioTrack.addSampleEntry(MP4Muxer.audioSampleEntry(af)); muxer.writeHeader(); NIOUtils.closeQuietly(ch); }
private static void addSampleEntry( FramesMP4MuxerTrack track, SeqParameterSet[] spss, PictureParameterSet[] ppss) { SeqParameterSet sps = spss[0]; Size size = new Size((sps.pic_width_in_mbs_minus1 + 1) << 4, getPicHeightInMbs(sps) << 4); SampleEntry se = MP4Muxer.videoSampleEntry("avc1", size, "JCodec"); avcC = new AvcCBox(sps.profile_idc, 0, sps.level_idc, write(spss), write(ppss)); se.add(avcC); track.addSampleEntry(se); }
public void addFrame(int width, int height, ByteBuffer buff, long timeScaleFPS, long duration) throws IOException { if (size == null) { size = new Size(width, height); videoTrack.addSampleEntry(MP4Muxer.videoSampleEntry(imageType, size, ENCODER_NAME)); if (af != null) audioTrack.addSampleEntry(MP4Muxer.audioSampleEntry(af)); } // Add packet to video track videoTrack.addFrame( new MP4Packet(buff, frameNo, timeScaleFPS, duration, frameNo, true, null, frameNo, 0)); frameNo++; }