現在、libav* を使用して H.264 ビデオをエンコードしています。KLVPackets をビットストリームに追加したいのですが、実装する場所がわかりません。
avcodec 内に struct がありますが、それをフレーム メタデータに書き出す方法がわかりません
typedef struct {
UID key;
int64_t offset;
uint64_t length;
} KLVPacket;
現在の FFMPEG コード (関連するコードのみを残します):
av_register_all();
pOutputFormat = av_guess_format(NULL, fileName, NULL);
pFormatCtx=avformat_alloc_context();
pVideoStream = av_new_stream(pFormatCtx,0);
pCodecCtx=pVideoStream->codec;
...
av_dump_format(pFormatCtx, 0, fileName,1);
pCodec = avcodec_find_encoder(pCodecCtx->codec_id);
avio_open(&pFormatCtx->pb, fileName, AVIO_FLAG_READ_WRITE)
avformat_write_header(pFormatCtx, &pDict);
...
avcodec_encode_video(pCodecCtx,outbuf,outbuf_size,ppicture);
...
int ret = av_interleaved_write_frame(pFormatCtx, &pkt);
私が作業できる例を知っている人はいますか?