android下提取PPS,SPS

    这个星期我主要学习了有关对视频h.264编码传输在android上的实现。

         首先我利用了android下面Localsocket的本地套接字,将录制的视频实时的调用android的接口进行编码,然后以流的形式保存到

本地套接字上面。为了从视频中提取有关视频流的参数我先录制一段较短的视频然后保存到本地SD卡上,然后根据这段视频进行码流

分析。经过对h.264编码格式的学习,我了解到要对一个码流进行解析,有两个参数是很重要的--SPS(Sequence Parameter Sets )

和PPS(Picture Parameter Sets)。他们分别标示图像编码的序号以及图像序列号,有了这两个参数才能对解码器才能对图像进行正

确的解码。

        我从视频的尾部开始查找,一旦发下有avcC(61 76 63 43)的序列,便将其后面的第七位开始的两个字节作为SPS作为长度,将该

参数从长度字段后面提取出来。然后紧接着两个字节作为PPS的长度,然后按照相同的方法将PPS提取出来。然后将提取到的序列作

为两个单独的帧发送出去,具体是在两帧之间加上协议规定的(00 00 00 01)占位符,接着就可以发送码流了。

        在码流中每一帧的开始会有一个字节表示帧长,然后以此为依据从视频流中读取长度作为一帧,接着就是将其放入RTP协议包中

了。RTP数据包则自己按照 RFC 3550的标准进行构造,其中最重要的三个参数为sequence number , timestamps, SSRC。其中序列号

标示本数据包在数据流中的位置,timestamps标示该数据包产生的时间,SSRC则标示该数据包来自于哪一个源(例如在电影中的视频

流和音频流)。将这些位设置好了以后就按照顺序将数据利用UDP打包发送出去。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值