h264 annexb 比特流到 flv mux ffmpeg 库

h264 annexb bitstream to flv mux ffmpeg library

我有一个网络摄像机,它通过 SDK 调用提供 H264 annexb 比特流。 我想将此视频流打包到 FLV 容器中。到目前为止,我已经了解以下内容:-

我必须将 H264 annexb 转换为 H264 AVCC: 为此,我必须将 NAL header 字节 (0x00000001) 替换为 NALU 大小(大端格式)。

我的问题是,我如何处理 SPS 和 PPS?我应该在替换 NAL header 后按原样编写 (av_interleaved_write_frame) 它们吗?还是我根本不写这些框架?

我了解到 AVCC 需要额外的数据。我该如何构建它?我在哪里传递它?

首先从相机中检索SPS/PPS。将 SPS/PPS 写入 AVCC 额外数据格式(请参阅此处的操作方法:Possible Locations for Sequence/Picture Parameter Set(s) for H.264 Stream

设置AVCodecContext.extradata

void *extradata = /**/;
int extradata_size = /**/;
codecCtx->extradata_size = extradata_size;
codecCtx->extradata = av_malloc ( codecCtx->extradata_size );
memcpy ( codecCtx->extradata, extradata, codecCtx->extradata_size);

调用前avcodec_open2