发明名称 基于Android系统的视频传输方法
摘要 基于Android系统的视频传输方法,编程录取获取相应分辨率的H246格式视频;通过解析3GP文件获得该H264压缩视频的SPS/PPS信息;利用LocalSocket获取视频流并发送;1)编程录像:创建录像设备、设置录像源为摄像头、设置文件格式为3GP、启动视频录像;2)分析文件:解析3GP文件,寻找sps/pps信息并记录存盘,即锁定sps/pps信息存储在stsd包中的固定位置;在采样包列表stsd包中首先判断视频类型是否为avc1,即H264的编码文件;将此内容存储到以分辨率命名的文件中;3)视频传输;本发明用于实时视频传输;这类服务类似于视频通话,不但要接收并播放视频,还要将本地摄像头数据压缩后发送出去,来满足Android平台视频传送功能。
申请公布号 CN102291580B 申请公布日期 2013.03.20
申请号 CN201110213672.7 申请日期 2011.07.28
申请人 南京联慧通信技术有限公司;熊猫电子集团有限公司;南京熊猫电子股份有限公司 发明人 王学斌;赵安
分类号 H04N7/26(2006.01)I 主分类号 H04N7/26(2006.01)I
代理机构 南京天翼专利代理有限责任公司 32112 代理人 陈建和
主权项 基于Android系统的视频传输方法,其特征是:编程录像获取相应分辨率的H246格式视频;通过解析3GP文件获得所述H264格式视频的SPS/PPS信息;利用LocalSocket获取视频流并发送;其中编程录像具体为:根据设定的分辨率参数录很短的3GP文件;采取如下步骤:创建录像设备、设置录像源为摄像头、设置文件格式为3GP、设置视频帧率、设置编码器为H264、设置显示窗口、设置视频最长1秒、设置输出文件名、启动视频录像;其中对3GP文件的解析具体为:解析3GP文件,寻找sps/pps信息并记录存盘,即锁定sps/pps信息存储在stsd包中的固定位置;在采样包列表stsd包中首先判断视频类型是否为avc1,即H264的编码文件;紧接着偏移10字节读取此包剩余内容,这些内容就是H264视频的sps/pps信息、大约几十字节;将此内容存储到以分辨率命名的文件中;不同分辨率的视频操作流程类似;采取如下步骤:定位moov包头;定位trak包头;定位mdia包头;定位hdlr包头;记录媒体类型;定位minf包头;定位stbl包头;定位stsd包头锁定sps/pps信息存储在stsd包中的固定位置;判断是否为vide类型;判断是否为avc1包;偏移并读剩余包;存文件后退出;以上步骤均是成功后进入下一步,如失败或不成功则返回;其中利用LocalSocket获取视频流视频数据具体为:在视频流传输过程中判断关键帧,并提前发送视频编码信息sps/pps信息;获取了视频编码信息sps/pps信息之后,按照传输的视频分辨率不同,读取分析后存储的视频编码信息sps/pps信息到内存;启动H264格式视频录像流程,将本地的视频数据通过LocalSocket接口获取;分包并判断视频数据流中的关键帧;以关键帧判断结果为依据,决定是否要发送视频编码信息sps/pps信息;采取如下步骤:1)进入发送流程;2)创建LocalSocket;3)LocalSocket的文件句柄传入;4)初始化摄像流程;5)读包长,判断是否为空,如空则重读包长,不空时进入下一步;6)判断包长是否大于0且小于128K,是则进入7);7)判断是否读完一包,是则进入8),否则继续读;8)判断是否为关键帧,是则进入9),否则进入10);9)发送SPS/PPS信息后进入10),10)发送视频数据到网络;11)判断是否有停止信号;是则进入12),否则进入6);12)关闭摄像;13)关闭LocalSocket,14)退出发送流程。
地址 210002 江苏省南京市玄武区中山东路301号