经过差不多两个月完成了android视频电话的开发,对于视频数据流有两种编码,即H263和MPEG4的MP4,用得比较多还是H263,其每一帧数据都是以十六进制 00 00 80或 00 00 81或 00 00 82或 00 00 83开头的, MPEG4的MP4是以第一个帧数据以十六进制00 00 01 B0的开头,其包含视频相关参数,如长宽等跟着00 00 01 B6 一帧的数据, 以后每一帧都是以 00 00 01 B6开头的数据,通过这样的界限可以从USB摸拟的串口读出的数据判断每一帧的数据来过进行解码
对于编码部分,一般都是以YUV420数据形式来编码,不过android 摄像头得到的原始数据是YUV420SP形式的的,所以必须经过转换然后送给编码器去编码,在编码MP4的时候要注意,因为编码数据后可能每隔几帧会有数据头,就是会加上以00 00 01 B0开头的跟着才是00 00 01 B6的帧, 必须要把它去除掉00 00 01 B0部分,因为跟据MP4规则除了第一个帧有数据头之后,其它帧不会有的,为什么这样做呢, 可能一些对方手机解码器没问题,但会有一些机器不行了
待续中.....