my app: h264 raw to flv file.
I want to write sps/pps before every idr. see the ffmpeg source code if need set AVPacket.side_data.
java code:
AVPacket pkt = new AVPacket(); avcodec.av_init_packet(pkt); pkt.flags(avcodec.AV_PKT_FLAG_KEY); pkt.pts(ts); pkt.dts(ts); // idr byte[] pkt_buf = msg.getIdr(); // 00 00 00 01 65 ... BytePointer pkt_data = new BytePointer(pkt_buf); pkt.data(pkt_data); pkt.size(pkt_buf.length); pkt.pos(-1); pkt.duration(0); pkt.stream_index(0); // new sps pps sei if (msg.hasExtradata()) { byte[] extradata = msg.getExtradata(); // 00 00 00 67 BytePointer bp_extradata = new BytePointer(extradata); avcodec.AVPacketSideData side_data = new avcodec.AVPacketSideData(); side_data.data(bp_extradata); side_data.type(avcodec.AV_PKT_DATA_NEW_EXTRADATA); side_data.size(extradata.length); pkt.side_data(side_data); pkt.side_data_elems(1); } // run to here, the app was dead av_interleaved_write_frame(oc, pkt));
I don't know how to set side_data in javacv? no side_data is run good.
please help!