公开/公告号CN108712677A
专利类型发明专利
公开/公告日2018-10-26
原文格式PDF
申请/专利权人 杭州视在数科信息技术有限公司;
申请/专利号CN201810549077.2
发明设计人 吴晓晖;
申请日2018-05-31
分类号H04N21/434(20110101);H04N21/4385(20110101);H04N21/647(20110101);H04N21/845(20110101);
代理机构33100 浙江杭州金通专利事务所有限公司;
代理人刘晓春
地址 310000 浙江省杭州市西湖区转塘科技经济区块16号3幢282室
入库时间 2023-06-19 07:00:22
法律状态公告日
法律状态信息
法律状态
2022-08-09
专利权质押合同登记的生效 IPC(主分类):H04N21/434 专利号:ZL2018105490772 登记号:Y2022330001505 登记生效日:20220722 出质人:杭州视在数科信息技术有限公司 质权人:杭州联合农村商业银行股份有限公司骆家庄支行 发明名称:对人工智能算法友好的TS流处理方法及应用 申请日:20180531 授权公告日:20190716
专利权质押合同登记的生效、变更及注销
2019-07-16
授权
授权
2018-11-20
实质审查的生效 IPC(主分类):H04N21/434 申请日:20180531
实质审查的生效
2018-10-26
公开
公开
技术领域
本发明涉及视频流的处理,尤其是涉及对人工智能算法友好的TS流处理方法及应用。
背景技术
目前人工智能视觉算法越来越多地被应用于“智慧城市”和“城市大脑”等大型项目。在这些大型项目中,往往会有多家算法公司涉及不同层次或者业务的视觉算法处理。来自前端摄像头的视频流被推送到公司A的算法服务器,从视频中分析出各种结构化数据,例如车的位置、行人位置、车型、车牌,然后把这些结构化数据再封装到视频流,继续推送给公司B的算法服务器,以此类推。
同时,业务规则也会被封装在视频流中,供各家算法公司使用。例如,某个摄像头对应的画面的人工智能算法处理,在8:00-10:00上班高峰期需要识别“拥堵”、“占公交车道”、“机动车逆行”。 怎么算是“拥堵”,是否为特殊原因而产生的拥堵(例如交通管制)以及“拥堵”后触发什么逻辑。这些都是业务规则。业务规则不是一层不变,而是实时调整的。
目前阶段人工智能视觉算法在很多方面远远不如人类,仍然需要人类给它明确的指令,告诉它当前是什么场景,需要进行什么类型的识别,识别时候需要注意什么,我们把这些指令集合称为业务规则。同时,人工智能视觉算法目前极其消耗GPU算力,因此,如果之前已经有算法服务器对视频流进行过处理,并得出一些结构化数据,那么后续的算法服务器只要利用这些结构化数据,可以极大地节省GPU算力。无论业务规则还是结构化数据,我们都统称为数据。
大型项目需要对人工智能算法更加友好的视频流,如果人工智能算法在处理每个视频帧的时候,都能够准确知道该视频帧对应的数据,人工智能算法的效率和准确性会有大幅度提升。
现有的解决方案有两种:(1)采用私有协议进行封装;(2)视频和数据分离。
(1)针对结构化数据采用私有协议进行封装
目前绝大多数安防厂商,都是支持视频和结构化数据合二为一,但是,采用私有协议进行封装,把结构化数据采用自定义格式封装在视频流里,这种模式主要存在以下两个缺点:
(a)第三方播放器无法播放
因为采用了私有协议进行封装,第三方采用标准协议的流播放器和各种浏览器无法播放,例如VLC和web flash。
为了解决该问题,在项目中不得不为每个前端摄像头同时推送至少两个视频流,一个是标准协议视频流,另一个是私有协议封装了结构化数据的视频流。标准协议流播放器接收标准协议视频流,算法服务器接收封装了结构化数据的视频流。这种解决方案以浪费带宽为代价,假设项目中有1万路高清视频流,额外多推送一个视频流会浪费带宽20Gbps。
(b)其他公司无法识别
这种私有格式封装的数据,往往只能被自己公司的算法服务器支持。一方面,为了保护自身利益,大多数公司不愿意公开私有格式;另一方面,每家公司都有自己的私有协议,相互之间兼容的成本很高。
(2)针对业务规则进行视频流和数据分离
目前绝大多数项目都采用视频流和业务规则分离的方案:业务规则保存在中心数据库中,算法服务器通过某些机制(例如web API)从中心数据库中读取规则,然后使用该规则对当前收到的视频流进行算法识别和处理。
这种模式主要存在以下两个缺点:
(a)仅能对实时视频流进行处理
视频流分为两种,一种是前端摄像头实时推送过来,另一种是来自存储服务器的录像视频流。算法服务器分析处理实时视频流的时候,只需要获取当前最新的业务规则即可。算法服务器分析处理录像视频流,例如上个月18号的14:00的视频,却无法从数据库获得当时的业务规则。因为业务规则每天都是不断变化的,甚至业务规则的数据字典每几个月都会有大的调整。
(b)时间很难精确同步
在很多项目中,视频流会被多级转发,视频流的延时具有不确定性;中心数据库中的业务规则修改被同步到所有算法服务器的延时也不确定。
视频和数据两者的时间很难精确同步,会导致两个问题:一是:不同算法服务器会对同一视频流采用不同的业务规则,例如管理员修改业务规则,启动潮汐车道判断,算法服务器A收到了新规则,算法服务器B还没有收到新规则,导致判断出现偏差;二是:因为延时,算法服务器收到新规则时,视频流仍然是几秒前的场景,因此,规则改动后,会出现几秒的误判。
发明内容
本发明的第一个目的在于,针对现有技术中存在的不足,提供一种对人工智能算法友好的TS流处理方法。
为此,本发明的上述目的通过以下技术方案来实现:
对人工智能算法友好的TS流处理方法,所述方法包括:
(1)接收TS流;
(2)判断是否需要添加结构化数据和/或业务规则的数据包;若否,则继续接收TS流;若是,则进行步骤(3)的操作;
(3)将结构化数据和/或业务规则的数据包切分为至少一个Null Packets形式的数据包,并连续插入至当前TS流之前。
在采用上述技术方案的同时,本发明还可以采用或者组合采用以下进一步的技术方案:
优选地, TS流中的数据包为固定长度,每个数据包均为188字节,其中:前4字节为头部,后184字节为实际数据;TS流的数据包中头部字节中有continuity counter标记位,用于表示每个数据包的序号,且continuity counter标记位只能是从0x00到0x0F;若NullPackets形式的数据包被拆分后成个数多于16个的数据包,则需要复位continuitycounter标记位,并循环计数。
优选地,结构化数据和/或业务规则的数据包被拆分成多个Null Packets形式的数据包后,最后一个Null Packets形式的数据包内的数据往往不足188字节,则需要使用0xff进行填充,具体操作如下:若剩余数据大于等于184字节,则分割前面184字节,然后加上4字节头部,且continuity counter计数器加1,并形成188字节的Null Packets格式的数据包;若剩余数据小于184字节,则用0xff填充至剩余数据的尾部,并达到184字节,然后加上4字节头部,且continuity counter计数器加1,并形成188字节的Null Packets格式的数据包。
优选地,结构化数据和/或业务规则的数据包均采用标准的JSON格式进行描述,以方便任何算法公司服务器均可以进行解析。
本发明还有一个目的在于,针对现有技术中存在的不足,提供一种基于对人工智能算法友好的TS流处理方法的应用。
为此,本发明的上述目的通过以下技术方案来实现:
对人工智能算法友好的TS流处理方法的应用,所述应用基于前面所述的对人工智能算法友好的TS流处理方法。
在采用上述技术方案的同时,本发明还可以采用或者组合采用以下进一步的技术方案:
优选地,所述应用包括:
(1)接收PS流;
(2)从PS流的数据包中获取NAL;
(3)判断是否已经收到全部NAL;若否,则继续接收PS流;若是,则进行步骤(4)的操作;
(4)将多个NAL组合成1个H.264帧的数据包;
(5)将H.264帧的数据包切分成TS流的数据包;
(6)判断是否需要添加结构化数据和/或业务规则的数据包;若否,则继续接收PS流并转换成TS流;若是,则进行步骤(7)的操作;
(7)将结构化数据和/或业务规则的数据包切分为至少一个Null Packets形式的数据包,并连续插入至当前TS流之前。
优选地,所述应用还包括:人工智能算法服务器若知道数据流中包含以NullPackets形式的结构化数据和/或业务规则,则进行数据提取。
优选地,人工智能算法服务器数据解析具体过程包括:收到188字节的TS流的数据包,从字节头部中读取PID标记位,若PID为0x1FFF,则从Null Packets形式的数据包中提取数据;若PID不是0x1FFF,则将TS流的数据包组装成H.264帧的视频,并解码视频。封装好的数据化结构和业务规则的TS流,推送给人工智能算法服务器,人工智能算法处理TS流主要分为以下两种情况:一种是人工智能算法不知道Null Packets包中封装了结构化数据和业务规则,那么该人工智能算法会直接忽略掉Null Packets包,仅处理视频,这样虽然效果不好,但是仍然正常工作;另一种是人工智能算法知道Null Packets包中封装了结构化数据和业务规则,那么该算法会通过JSON格式从中提取数据。
TS(MPEG Transport Stream)是一种标准的音视频封装格式,技术标准成熟稳定,因此,广泛应用于数字电视和网络流媒体,第三方播放器或者浏览器都能支持播放TS流。尤其是HLS(HTTP Live Streaming)也采用TS作为传输流格式,互联网上大多数点播和直播应用都支持TS流。
同时,因为TS标准发布于1995年,早期某些特性是为了DVB(Digital VideoBroadcasting)考虑,发展至今,这些特性已经被废弃,第三方播放器或者浏览器都忽略这些早期特性。其中,最典型的早期特性是Null Packets包,其先天具备可扩展性。首先,TS标准要求所有的播放器自动丢弃Null Packets包,因此,在Null Packets包中封装数据,并不会影响播放器的视频播放。其次,Null Packets包是为了支持早期DVB中要求码率恒定而出现的,而现在的流媒体传输不再要求码率恒定,因此,可以在Null Packets包中封装任意长度数据的同时不影响播放。
本发明提供了对人工智能算法友好的TS流处理方法及应用,通过TS流中的NullPackets包封装结构化数据和业务规则,保证了封装数据后的TS流完全符合标准,第三方播放器或者浏览器按照TS标准要求必须丢弃Null Packets包,因此,增加Null Packets包并不会影响播放器的播放效果。同时,TS标准中Null Packets保证了其可以封装任意长度的数据,这就使得本发明的应用不受具体项目需求的限制,可以把任意长度的数据封装在Null Packets包中以供人工智能算法使用。
附图说明
图1为在TS流中插入Null Packets包的示意图;
图2为第三方播放器或者浏览器处理TS流的处理过程示意图;
图3为在TS流中插入封装数据的示意图;
图4为在TS流中插入同一个结构化数据和/或业务规则的示意图;
图5为结构化数据和/或业务规则被拆分成Null Packets包的个数超过16个后的计数器复位的示意图;
图6为最后一个Null Packets包的处理过程示意图;
图7为对PS流的处理过程示意图;
图8为结构化数据和/或业务规则的JSON格式示意;
图9为人工智能算法从封装了结构化数据和/或业务规则的TS流中提取数据的处理过程示意图。
具体实施方式
参照附图和具体实施例对本发明作进一步详细地描述。
TS(MPEG Transport Stream)是一种标准的音视频封装格式,技术标准成熟稳定,因此,广泛应用于数字电视和网络流媒体,第三方播放器或者浏览器都能支持播放TS流。尤其是HLS(HTTP Live Streaming)也采用TS作为传输流格式,互联网上大多数点播和直播应用都支持TS流。
同时,因为TS标准发布于1995年,早期某些特性是为了DVB(Digital VideoBroadcasting)考虑,发展至今,这些特性已经被废弃,第三方播放器或者浏览器都忽略这些早期特性。其中,最典型的早期特性是Null Packets包,其先天具备可扩展性。首先,TS标准要求所有的播放器自动丢弃Null Packets包,因此,在Null Packets包中封装数据,并不会影响播放器的视频播放。其次,Null Packets包是为了支持早期DVB中要求码率恒定而出现的,而现在的流媒体传输不再要求码率恒定,因此,可以在不影响播放的前提下在NullPackets包中封装任意长度的数据,参照图1所示。
TS流的数据包都是固定长度的数据结构,每个数据包都是188字节,其中:前4字节为头部,后184字节为实际数据;头部的4字节有PID标记位,如果标记值为0x1FFF,则表示为Null Packets。
参照图2,根据TS标准要求,第三方播放器或者浏览器如果发现当前数据包的PID标记位的标记值为0x1FFF,则表示该数据包为Null Packets数据包,直接丢弃,因此,在TS流中增加Null Packets数据包并不会影响第三方播放器或者浏览器正常播放视频流。
参照图3,本发明中的对人工智能算法友好的TS流处理方法,包括:
(1)接收TS流;
(2)判断是否需要添加结构化数据和/或业务规则的数据包;若否,则继续接收TS流;若是,则进行步骤(3)的操作;
(3)将结构化数据和/或业务规则的数据包切分为至少一个Null Packets形式的数据包,并连续插入至当前TS流之前。注意,需要插入当前TS流之前,只有这样,人工智能算法在处理TS流的时候,已经完成结构化数据和业务规则的提取。
拆分成多个Null Packets形式的数据包后必须连续地插入至当前的TS流之前,否则接收后无法正确提取数据。参照图4,业务规则被拆分成3个Null Packets,必须在“视频包1”和“视频包2”之间连续按照顺序添加3个Null Packets,不能在“视频包2”之前添加1个,然后在“视频包2”之后再添加另外2个。
TS流的数据包中头部字节中有continuity counter标记位,用于表示每个数据包的序号,且continuity counter标记位只能是从0x00到0x0F;若Null Packets形式的数据包被拆分后成个数多于16个的数据包,则需要复位continuity counter标记位,并循环计数。参照图5,假设结构化数据和业务规则被拆分为20个Null Packets形式的数据包,那么这20个包的continuity counter如图5所示。
拆分成多个Null Packets形式的数据包后,最后一个Null Packets形式的数据包内的数据往往不足188字节,需要使用0xff进行填充。参照图6所示,结构化数据和/或业务规则的数据包被拆分成多个Null Packets形式的数据包后,最后一个Null Packets形式的数据包内的数据往往不足188字节,则需要使用0xff进行填充,具体操作如下:若剩余数据大于等于184字节,则分割前面184字节,然后加上4字节头部,且continuity counter计数器加1,并形成188字节的Null Packets格式的数据包;若剩余数据小于184字节,则用0xff填充至剩余数据的尾部,并达到184字节,然后加上4字节头部,且continuity counter计数器加1,并形成188字节的Null Packets格式的数据包。
参照图8,结构化数据和/或业务规则的数据包均采用标准的JSON格式进行描述,以方便任何算法公司服务器均可以进行解析。
TS(MPEG transport stream)和PS(program stream)是目前两种最主要的音视频流封装格式,前者在互联网应用中广泛使用,后者在传统安防中广泛使用。最主要区别在于,TS流的包结构是固定长度的(188字节),而PS流的包结构是可变长度的。
以下以H.264视频的处理为例,H.264视频由帧组成,中国采用PAL制(PhaseAlteration Line)默认每秒25帧。PS流封装时候,把H.264视频的每一帧切分成多个NAL(network abstract layer),然后每个NAL加上包头部,形成一个PS包,每个PS包的长度都可能是不一样的。
PS标准中无法找到类似Null Packets这样的扩展,封装数据后会导致PS流非标准化。因此我们先把PS流转换成TS流,再通过Null Packets封装数据;参照图7,具体包括:
(1)接收PS流;
(2)从PS流的数据包中获取NAL;
(3)判断是否已经收到全部NAL;若否,则继续接收PS流;若是,则进行步骤(4)的操作;
(4)将多个NAL组合成1个H.264帧的数据包;
(5)将H.264帧的数据包切分成TS流的数据包;
(6)判断是否需要添加结构化数据和/或业务规则的数据包;若否,则继续接收PS流并转换成TS流;若是,则进行步骤(7)的操作;
(7)将结构化数据和/或业务规则的数据包切分为至少一个Null Packets形式的数据包,并连续插入至当前TS流之前。
人工智能算法服务器若知道数据流中包含以Null Packets形式的结构化数据和/或业务规则,则进行数据提取。人工智能算法服务器数据解析具体过程包括:参照图9,人工智能算法服务器收到188字节的TS流的数据包,从字节头部中读取PID标记位,若PID为0x1FFF,则从Null Packets形式的数据包中提取数据;若PID不是0x1FFF,则将TS流的数据包组装成H.264帧的视频,并解码视频。封装好数据化结构和业务规则的TS流,推送给人工智能算法服务器,人工智能算法处理TS流主要分为以下两种情况:一种是人工智能算法不知道Null Packets包中封装了结构化数据和业务规则,那么该人工智能算法会直接忽略掉Null Packets包,仅处理视频,这样虽然效果不好,但是仍然正常工作;另一种是人工智能算法知道Null Packets包中封装了结构化数据和业务规则,那么该算法会通过JSON格式从中提取数据。
上述具体实施方式用来解释说明本发明,仅为本发明的优选实施例,而不是对本发明进行限制,在本发明的精神和权利要求的保护范围内,对本发明作出的任何修改、等同替换、改进等,都落入本发明的保护范围。
机译: 环保型混凝土砂浆的作用是起到保护自然生态系统的作用。生态友好型配置如何配置如何为防止冻结和挡住墙壁和声屏障的行动铺平道路,或如何配置中间和人工礁石结合的阶梯式生态生态板块,以使用混凝土砂浆生态友好型来恢复自然生态系统方法和环保型生态砌块霍巴克多应用于自然生态友好的土木工程和浅滩这里配置的方式建设和生态友好
机译: 一种基于人工智能算法的水处理方法及装置
机译: 应用人工智能算法的水处理设备及其方法