粘包处理
对于JTT1078标准的终端视频流的输入,肯定有粘包,所以需要先进行粘包处理,大体就是将一个完整包拆解出来,使其他业务线程能够真正使用该完整包
消息头拆解
在粘包处理之后,针对单一的完整包,进行消息头的拆解,包括标志位、负载类型、包序号、SIM卡号、逻辑通道号、数据类型、时间戳以及消息体长度的信息,并缓存起来,
消息体处理
根据其sim卡号和逻辑通道号,可以确定该终端唯一通路的视频流信息(注意,此处如果跟历史回放视频同路的话,会造成无法正确识别是实时视频流,还是历史回放流,所以建议是另起一个监听端口,来接收历史回放流。
根据其数据类型,区分是音视频帧,还是视频帧。
如果是音频帧,则先判断处是aac、g711a还是adpcma,然后将他们统一转换为aac的格式,输入到视频服务系统中进行音频流的播放。
如果是视频帧,则从第一个包开始收集,集齐完整的一帧数据后,输送到视频服务系统中。
然后由视频服务系统对音视频流进行转换,转换成所需要的如rtsp、rtmp、http-flv等格式,供视频客户端进行播放调用。
(欢迎交流)