赞
踩
首先pps和sps是h264编码时才关注的问题。
在编码中使能CODEC_FLAG_GLOBAL_HEADER后:
h264码流,第一帧是sps帧
第二帧是pps帧
第三帧是IDR帧
此时是用avformat_write_header()发送包时填充的sps和pps,把它填充到AVFormatContext->streams[h264Index]->codec->extradata中发送。
解码端就能在AVCodecContext中的extradata和extradata_size得到对应的音视频头信息。
/**
* Place global headers in extradata instead of every keyframe.
*/
#define AV_CODEC_FLAG_GLOBAL_HEADER (1 << 22)
根据AV_CODEC_FLAG_GLOBAL_HEADER注释可知,如果不加入此设置,那么就会在每个关键帧加入pps和sps.
flv封装格式时候需要设置AV_CODEC_FLAG_GLOBAL_HEADER,mpegts不需要设置,什么样的封装格式需要设置,可以做判断,见另一篇文章有提到:编码器的参数设置
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。