获取直播流的sps信息

用ffmpeg做网络直播流的接收时,需要获取流的帧率等信息;而这些信息保存在sps中,所以需要获取到sps的相关数据;在 ffmpeg 中 sps 信息保存在AVCodecContext 的 extradata 字段中;由于是直播流,所以不应试图通过 流过滤器 进行格式转换,而应当对数据进行直接解析;

 

通过 baidu;找到了 extradata  中可能保存的数据封装格式;一共两种:

  一种是annexb模式,传统模式,有startcode,SPS和PPS是在ES中
  一种是mp4模式,一般mp4 mkv会有,没有startcode,SPS和PPS以及其它信息被封装在Container中,每一个frame前面是这个frame的长度

 

具体可参看:http://blog.csdn.net/flyingqr/article/details/8494050

 

然后通过对mp4格式的查看,确定了在mp4模式下 extradata 中数据的内容信息; extradata 指向的是avcC数据,不含 avcC 标记;

内容第一个字节是版本号,一般为01;

第7,8个字节指定sps的内容长度,通过 extradata[6]*255 + extradata [7]; 可获得;

第9个字节开始是sps 的内容; 即:extradata+8;

这样就可以得到mp4封装模式下的直播流sps内容;

 

如果是annexb流直播,头四个字节是00 00 00 01; 可以通过这个判断流的模式;extradata的内容也是标准的sps pps nal ; 这就无须多说了;

 

由于代码没在电脑上,不上代码了,东西也很简单;相信稍有点基础的人都能写出来.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值