Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
h264将B位流连接到flv mux ffmpeg库_Ffmpeg_H.264_Libav - Fatal编程技术网

h264将B位流连接到flv mux ffmpeg库

h264将B位流连接到flv mux ffmpeg库,ffmpeg,h.264,libav,Ffmpeg,H.264,Libav,我有一个IP摄像头,它通过SDK调用提供H264 annexb位流。 我想将此视频流打包到FLV容器中。到目前为止,我必须知道以下几点:- 我必须将H264附录B转换为H264 AVCC: 为此,我必须将NAL头字节(0x00000001)替换为NALU的大小(big-endian格式) 我的问题是,我如何处理SPS和PPS?我应该在替换NAL报头后按原样写入(av_交错_写入_帧)它们吗?或者我根本不写这些框架 我了解到AVCC需要额外的数据。我如何构造它?我在哪里传递该信息?首先从相机中检索

我有一个IP摄像头,它通过SDK调用提供H264 annexb位流。 我想将此视频流打包到FLV容器中。到目前为止,我必须知道以下几点:-

我必须将H264附录B转换为H264 AVCC: 为此,我必须将NAL头字节(0x00000001)替换为NALU的大小(big-endian格式)

我的问题是,我如何处理SPS和PPS?我应该在替换NAL报头后按原样写入(av_交错_写入_帧)它们吗?或者我根本不写这些框架


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

首先从相机中检索SPS/PPS。将SPS/PPS写入AVCC extradata格式(请参见此处的操作方法:)

设置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\u open2

之前,我没有对流重新编码。我只是把它混入FLV。所以我的代码中没有“avcodec_open2”。ret=avcodec\u copy\u上下文(出流->编解码器,入流->编解码器);我可以把额外的数据分配给outstream->codec->extradata吗?在复制上下文之后?我明白了。您不需要调用avcodec_encode_video(),但应该调用open_code2()。它对AVCodecContext进行最终初始化(解析外部数据并初始化内部变量,如分辨率)。我注意到的一件事是我会定期得到SPS。这是否意味着我需要再次将额外的数据传递到CodecContext n?每当我获得SPS时,i-e会一次又一次地打开\u codec2?不,您不需要修改extradata或第二次调用open\u codec2。假设它与第一个sps id相同(几乎可以肯定),您可以删除它。就个人而言,我会像其他NALU一样将其包括在内。它非常小,对总体比特率/文件大小几乎没有影响。然后,如果编码器确实更改了id,您的代码将被覆盖。好的,现在我向编解码器提供了额外的数据。我可以打印并验证额外数据是否正确。我正在把所有的纳鲁都写进小溪里。生成的视频在第一帧被卡住,但控制台中没有错误(使用ffplay)。持续时间和比特率都是错误的。“持续时间:62:37:35.40,开始时间:0.000000,比特率:0 kb/s流#0:0,41,1/1000:视频:h264(主),yuvj420p(pc,bt709,左),1280x720[SAR 1:1 DAR 16:9],1001/60000,591 kb/s,30.33 fps,3.33 tbr,1k tbn,59.94 tbc流#0:1,32,1/1000:音频:aac,48000 Hz,单声道,fltp,45 kb/s”