How to use AVPacket.side_data() / AVPacketSideData

249 views
Skip to first unread message

lin...@126.com

unread,
Jul 15, 2018, 9:19:04 AM7/15/18
to javacpp

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!


https://github.com/bytedeco/javacv/issues/1032

Reply all
Reply to author
Forward
0 new messages