欢迎来到知嘟嘟! 联系电话:13095918853 卖家免费入驻,海量在线求购! 卖家免费入驻,海量在线求购!
知嘟嘟
我要发布
联系电话:13095918853
知嘟嘟经纪人
收藏
专利号: 2019103132999
申请人: 浙江工业大学
专利类型:发明专利
专利状态:已下证
专利领域: 电通信技术
更新日期:2023-12-11
缴费截止日期: 暂无
价格&联系人
年费信息
委托购买

摘要:

权利要求书:

1.一种基于SIP协议的视频聊天系统,包括SIP模块、视频采集模块、视频编码模块、视频传输模块、视频接收模块以及解码播放模块;

通过SIP模块接收来自SIP终端的请求消息,包含了注册、心跳保活、视频请求等接口;

SIP终端首先会发送SIP消息向SIP模块进行注册请求,SIP模块会进行一系列加密认证流程,如果注册成功,则SIP模块会将该SIP终端的用户名作为键,与该SIP终端之间的Session作为值,以键-值对的形式保存在内存中;在响应SIP终端消息时,通过用户名查找到Session,再通过该Session响应消息;为了保证与SIP终端一直处于相连状态,SIP终端每隔一段时间需要向SIP模块发送方法为Register,内容为heartbeat的消息,若SIP模块接收到后会回复200OK消息;如果超过20s时间(该时间在SIP模块可自行设置修改)未收到来自SIP终端的heartbeat消息,在SIP模块上会注销与当前SIP终端的会话;

SIP终端发起视频请求时,SIP模块根据终端注册的信息将请求转发到指定目的地并转发回复的操作信息;若被呼叫端拒绝视频请求则马上中止并等待下次请求的发起,若同意视频请求则准备开启视频连接;

Android设备收到同意回复后准备调用Camera进行视频数据的采集,采集的原始数据分为两种格式,分别为YV12和NV21;然而由于Android设备型号以及系统版本不一,在进行视频采集之前需要对设备进行适配以防止崩溃;首先设备检测自己的型号,查询是否存在相应的方案,如果有则直接使用对应的方案进行采集,如果没有则分别对该型号手机所支持的帧率、预览格式、分辨率、编码格式的参数进行检测并保存形成满足该型号设备的方案,然后进行视频采集;

Android设备将摄像头采集的原始数据进行H264硬编码,编码的分辨率目前设置了三种,其中包括CIF(352*288)格式、D1(720*576)以及720P(1280*720),设备会根据不同的网络状况选择合适的分辨率;为了能在网络波动情况下保证清晰度,需要在编码时根据网络环境变化相应调整码率,通过调整采集模块输入图像的帧率P进行码率控制;帧率控制与像素时钟、图像的高度以及图像宽有关,具体关系如下式所示:T=W*H*P               (1)

式(1)中T、W、H分别表示像素时钟、图像高以及图像宽;

因此,通过调整图像的宽、高来间接达到调整码率的目的;针对不同的分辨率需要设置不同的媒体格式,由于摄像头采集的时候默认横向采集,因此还需要对画面进行旋转和镜像处理,最终得到编码后的H264裸数据;

发送端将编码出来的H264裸数据进行RTP封装发送;由于编码后有些帧长度过长,因此需要对过长的帧数据进行分片,设置分片长度为1000,大于该长度的数据进行分片打包成RTP包;另外,开启一个线程将封装好的RTP包存入队列,开启另外一个线程按照一定的速率从队列中取出RTP包发送,来实现稳定的RTP包发送;数据包的发送采用速度更快的UDP传输协议;

由于视频数据采用UDP传输,在保障了传输速度的同时也容易造成RTP包顺序混乱以及丢包等状况的出现;在视频接收端设计了一个二级缓存,先将收到的完整一帧的RTP包根据其序列号进行重新排序,排序好后存入一级缓存,当缓存长度达到阈值后取出一级缓存中的数据根据其序列号的连续性判断丢包情况并进行处理;关键帧I帧是完整图像经过压缩后的数据帧,辅帧P帧则表示这一帧与前一帧的差别,若丢失的为辅帧,则将下一个关键帧之前包括该帧在内的全部辅帧都丢弃;若丢失的是关键帧,则需要将相关的辅帧都丢弃,避免误差被不断放大;最后将处理完毕的数据组包存入二级缓存;另外,在接收数据的时候会对存入一级缓存数据的丢包率进行统计并反馈给编码端;丢包率l指的是一段时间内丢失的RTP数据包个数n1在期望接收RTP包个数n2中所占的百分比,即l=n1/n2*100%            (2)

由于网络的随机性导致实际丢包率出现突变状况,将丢包率作为码率调整依据时需要对实际丢包率进行处理得到丢包率预测值 如下式所示:式(3)中 表示第i-1次丢包率处理后的值,li表示第i次丢包率实际值;

当接收端各部分做好准备后就从二级缓存中稳定读取数据利用MediaCodec进行解码并将解码后的数据输出到Surface显示;设备两端既作为发送端,同时也是接收端,以此来实现视频聊天。