AVPacket pkt;
av_init_packet(&pkt); // 初始化pkt
pkt.data = NULL;
pkt.size = 0;
//fmt_ctx爲輸入文件的AVFormatContext指針
av_read_frame(fmt_ctx, &pkt);
if (pkt.stream_index == video_idx) {
// 爲包數據添加起始碼、SPS/PPS等信息
int m_datalen = pkt.buf->size;
h264_mp4toannexb(fmt_ctx, &pkt, file);
}
1:細心發現pkt.buf->size總比pkt.size多64個字節,對應着宏AV_INPUT_BUFFER_PADDING_SIZE值,所以,如果實際應用中要修改pkt中的數據,pkt.buf->size是無時無刻都要比pkt.size多64個字節。
2:pps及sps並不能從packet中獲得,而是保存在AVCodecContext的extradata數據中,比如fmt_ctx->streams[in->stream_index]->codecpar->extradata。