CN109788337B - 一种对所采集的视频数据进行发送处理的方法及装置 - Google Patents
一种对所采集的视频数据进行发送处理的方法及装置 Download PDFInfo
- Publication number
- CN109788337B CN109788337B CN201711130816.6A CN201711130816A CN109788337B CN 109788337 B CN109788337 B CN 109788337B CN 201711130816 A CN201711130816 A CN 201711130816A CN 109788337 B CN109788337 B CN 109788337B
- Authority
- CN
- China
- Prior art keywords
- frame data
- frame
- data
- buffer
- pointer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本发明公开了一种对所采集的视频数据进行发送处理的方法及装置。所述方法包括对所述视频数据的帧数据的关键级别判定步骤,即:所采集的视频帧数据存贮入缓存空间内;当缓存空间全部被待发送的视频帧数据占用时,比较当前新采集的帧数据与缓存空间内待发送的各帧数据的关键级别,如果当前新采集的帧数据的关键级别低,则丢弃当前新采集的帧数据,否则覆盖缓存空间内待发送的各帧数据中关键级别最低的帧数据。本发明通过设置数据覆盖规则、建立循环缓存模式、维护缓存指针等技术措施,避免了关键视频帧数据丢失,提高了接收端对视频数据的恢复能力,实现了对所采集的视频数据进行合理发送处理,降低了发送缓存空间的维护难度。
Description
技术领域
本发明涉及一种视频数据发送处理的方法及装置,更具体地说,本发明涉及一种基于网络传输的对所采集的视频数据进行发送处理的方法及装置。
背景技术
实时采集的视频数据通常需要通过网络发送给客户端观看实况或发送给服务器进行存储。因为网络会存在丢包、抖动、延时等情况,为保证视频数据完整不丢秒,尽可能减少网络瞬时拥塞对所采集的视频数据发送造成的影响,就必须要先尝试重传发送失败的视频帧,并在重传期间缓存新采集的视频帧,待重传成功后再继续发送新采集的视频帧,而视频发送缓存空间通常是有限的,如果网络阻塞时间过长,则不得不丢弃一直重传失败的视频帧,覆盖掉最先缓存的视频帧,释放最先申请的缓存空间提供给最新采集的视频帧数据,从而导致视频出现丢秒不连续的情况。
这种解决方案是固定将最先缓存的视频帧数据丢弃,释放缓存空间提供给之后新采集的数据,然而并不关心最先缓存空间里的数据帧是否是关键帧数据,也并不关心最新采集的视频帧数据是否是非关键帧数据。例如,新采集的视频帧数据是非关键的P帧数据,却将最先缓存的关键的I帧数据覆盖了,那么I帧数据之后的一系列P帧数据即使重传成功,接收端也无法正常解码,失去了视频数据缓存的意义。再如,新采集的视频帧数据是非告警时刻视频,却覆盖了最先缓存的告警时刻关键的视频帧数据,那么,视频接收端就无法及时接收告警信息,大大折扣了视频发送的意义。
另外,同一个视频采集源可能会通过网络发送给多个用户,由于每路视频发送的网络传输性能不同,很可能会造成多路视频发送失败的帧数据出现重叠的情况,如果想要复用缓存空间会比较难维护,如果不复用的话则会导致缓存空间的浪费,从而降低了对网络拥塞的容忍能力。
因此,如何对采集的视频数据发送缓存空间进行合理处理,尽可能避免关键视频帧数据不丢失,合理复用缓存空间,是现有视频发送技术需要解决的难点问题。
发明内容
本发明的目的是解决现有视频发送技术中存在的新视频帧数据覆盖关键帧数据的问题,通过设置数据覆盖规则、建立循环缓存模式、维护缓存指针等技术措施,以实现对所采集的视频数据进行合理发送处理,降低发送缓存空间的维护难度。
为了实现上述发明目的,本发明提供了一种对所采集的视频数据进行发送处理的方法,该方法包括对所述视频数据中的帧数据的关键级别判定步骤,即:
所述帧数据存贮入缓存空间内,所述帧数据采用以N个帧数据为一组的编码方式;当缓存空间全部被待发送的帧数据占用时,比较当前新采集的帧数据与缓存空间内待发送的各帧数据的关键级别,如果当前新采集的帧数据的关键级别低,则丢弃当前新采集的帧数据,否则覆盖缓存空间内待发送的各帧数据中关键级别最低的帧数据;
所述的关键级别是指该帧数据在接收端视频解码及应用场景中的重要性,其由低至高的排列顺序为:P帧数据低于I帧数据,先存贮入缓存的帧数据低于后存贮入缓存的帧数据,非告警状态时采集的帧数据低于告警状态时采集的帧数据。
进一步,所述的比较当前新采集的帧数据与缓存空间内待发送的各帧数据的关键级别的方法为:
判断当前新采集的帧数据是在告警状态时采集的,还是在非告警状态时采集的:
如果是在告警状态时采集的,则再根据P帧数据低于I帧数据,先存贮入缓存的帧数据低于后存贮入缓存的帧数据的原则判断出缓存空间内待发送的各帧数据中关键级别最低的帧数据,然后以当前新采集的帧数据进行覆盖;或
如果是在非告警状态时采集的,则仅在缓存空间内待发送的同样在非警告状态时采集的各帧数据中根据P帧数据低于I帧数据,先存贮入缓存的帧数据低于后存贮入缓存的帧数据的原则判断出缓存空间内待发送的各帧数据中关键级别最低的帧数据,然后以当前新采集的帧数据进行覆盖。
优选的,所述P帧数据低于I帧数据,先存贮入缓存的帧数据低于后存贮入缓存的帧数据的原则为:
先存贮入缓存的帧组的P帧<后存贮入缓存的相邻帧组的P帧<先存贮入缓存的帧组的I帧<后存贮入缓存的相邻帧组的I帧。
优选的,所述P帧数据低于I帧数据,先存贮入缓存的帧数据低于后存贮入缓存的帧数据的原则为:
先存贮入缓存的帧组的第n个P帧<后存贮入缓存的相邻帧组的第n个P帧<先存贮入缓存的帧组的第n+1个P帧<后存贮入缓存的相邻帧组的第n+1个P帧<先存贮入缓存的帧组的I帧<后存贮入缓存的相邻帧组的I帧。
为了实现本发明的目的,提高对所采集的视频数据进行合理发送处理的能力,本发明通过采用循环缓存的方式复用缓存空间,以提高对缓存空间的复用效率,并采用指针方式提高数据覆盖效率。在本发明中,所述将各帧数据存贮入缓存空间内的方法为:
所述缓存空间在逻辑上被划分为多个子逻辑内存,每个子逻辑内存存储一帧数据;
在所述缓存空间中设置有循环链表,用来记录每个子逻辑内存的地址;
所述循环链表中还设置有写缓存指针Pw、读缓存指针Pr和覆盖指针Pc,所述覆盖指针Pc指向缓存空间内待发送的各帧数据中关键级别最低的帧数据所在的子逻辑内存的地址,当前新采集的帧数据根据所述覆盖指针Pc的指引覆盖子逻辑内存中的帧数据。
进一步,所述读缓存指针Pr按照存贮的时间先后顺序依次指向各子逻辑内存的地址,读取出所指向的子逻辑内存中的帧数据进行发送,并按循环链表的循环顺序指向下一个子逻辑内存的地址;
判断读缓存指针Pr是否与覆盖指针Pc所指向的子逻辑内存的地址相同;
如果相同,则覆盖指针Pc指向缓存空间内待发送的各帧数据中下一个关键级别最低的帧数据所在的子逻辑内存的地址;
否则,则覆盖指针Pc保持不变。
进一步,判断读缓存指针Pr是否与写缓存指针Pw所指向的子逻辑内存的地址相同;
如果相同,则覆盖指针Pc指向读缓存指针Pr所指向的子逻辑内存的地址;
否则,则覆盖指针Pc保持不变。
进一步,当有多个接收用户时,所述的循环链表还设置有接收用户优先级指示符,不同接收用户设置有各自的读缓存指针Pr和覆盖指针Pc。
本发明还提供一种用于对所采集的视频数据进行发送处理的装置,包括:
存储单元,用于将视频帧数据存贮入缓存空间内,所述帧数据采用以N个帧数据为一组的编码方式;
比较单元,用于当缓存空间全部被待发送的帧数据占用时,比较当前新采集的帧数据与缓存空间内待发送的各帧数据的关键级别;
执行单元,用于执行:
如果当前新采集的帧数据的关键级别低,则丢弃当前新采集的帧数据;
否则覆盖缓存空间内待发送的各帧数据中关键级别最低的帧数据;
所述的关键级别是指该帧数据在接收端视频解码及应用场景中的重要性,其由低至高的排列顺序为:P帧数据低于I帧数据,先存贮入缓存的帧数据低于后存贮入缓存的帧数据,非告警状态时采集的帧数据低于告警状态时采集的帧数据。
进一步,本发明所提供一种用于对所采集的视频数据进行发送处理的装置,包括处理器以及存储有若干计算机指令的非易失性存储器,所述的计算机指令被处理器执行时实现上述所述方法的步骤。
与现有技术相比,本发明具有如下有益效果:
①在本发明中,当视频发送缓存的存贮空间达到上限即被待发送的视频帧数据全部占用时,并不是直接覆盖掉最先缓存的视频帧数据,而是先将当前新采集的视频帧数据与待发送的视频帧数据中关键级别最低的视频帧数据进行比较,如果当前新采集的视频帧数据的关键级别低,则直接丢弃当,不写入发送缓存,否则,将当前新采集的视频帧数据覆盖待发送的关键级别最低的视频帧数据所在的缓存空间,从而避免了关键视频帧数据丢失,使得关键帧数据得到了尽可能的保留而优先覆盖非关键帧数据,提高了接收端对视频数据的恢复能力。
②在本发明中,给出了对视频帧数据的关键级别判定步骤,即:P帧数据低于I帧数据,先存贮入缓存的帧数据低于后存贮入缓存的帧数据,非告警状态时采集的帧数据低于告警状态时采集的帧数据;并提供了三种确定帧数据关键级别的逻辑来保障优先覆盖不关键的视频数据而尽可能保留关键的视频数据,进一步提高了对发送数据的处理能力。
③在本发明中,采集的视频帧数据采用循环缓存存贮模式,按照循环链表的循环顺序,依次将采集的视频帧数据存贮至循环链表所对应的子逻辑内存内,构成了逻辑上的循环缓存存贮模式,提高了对发送缓存的复用能力和处理效率。
④在本发明中,使用写缓存指针来维护新采集到的视频数据的位置,使用读缓存指针来维护发送视频数据的位置,使用覆盖缓存指针来维护正在发送的视频遇到网络拥塞缓存占满时优先进行覆盖的视频数据的位置,以及对缓存覆盖的具体操作方法,进一步提高了发送缓存空间达到上限时对视频帧数据的缓存处理能力。
附图说明
图1是本发明实施例的循环链表结构示意图。
图2是本发明实施例的缓存空间达到上限时对待写入视频帧数据的处理方式示意图。
具体实施方式
下面结合附图对本发明做进一步的详细说明,以令本领域技术人员参照说明书文字能够据以实施。
针对现有技术中存在的问题,本发明公开了一种对所采集的视频数据进行发送处理的方法。在该方法,用于采集视频数据的设备可以是网络摄像机(IPCamer,简称IPC),但不仅仅局限于此。
IPC等设备实时采集的视频数据通常需要通过网络发送给远程客户端观看实况或发送给服务器进行存储。为了解决IPC采集速度与视频帧发送速度不匹配的问题,通常需要将采集的视频帧信息进行缓存后再进行发送。在本发明实施例中,为采集的视频数据发送缓存预先分配出一段内存空间,并在逻辑上将该整段内存预先分割为N个子逻辑内存,如图1所示;每个子逻辑内存的大小可根据发送缓存空间总内存的大小、MTU(MaximumTransmission Unit,最大传输单元)等因素进行实际确定。
IPC等设备所采集的视频数据并不直接进行发送,而是按照视频数据中各帧数据采集时间的先后顺序,将各帧数据依次存贮入预先分配的缓存空间内;发送视频数据时,按照存贮的时间先后顺序依次从所述缓存空间内读取出所述各帧数据进行网络发送,并将已发送的帧数据所占用的缓存空间腾出来给新采集的帧数据存贮使用。
当网络传输性能正常时,即网络传输性能能够达到发送帧数据的速度大于或等于采集到的帧数据的速度时,所采集的视频帧数据写入缓存空间后,迅速被读取发送出去;然而当网络传输性能不正常时,即发送帧数据的速度小于采集到的帧数据的速度时,写入缓存空间的视频帧数据长时间发送不出去,逐渐被新采集的视频帧数据占用,当缓存空间达到上限即全部被待发送的视频帧数据全部占用时,新采集的视频帧数据将要覆盖缓存空间内的数据。在现有技术中,采用的做法是将新采集的视频帧数据覆盖最先存贮入缓存空间的视频帧数据,并不关心最先存贮入缓存空间里的帧数据是否是关键帧数据,也并不关心最新采集的视频帧数据是否是非关键帧数据。
对于IPC等采集设备来说,所采集的视频数据通常采用以N个帧数据为一组的编码方式,且每组帧数据中有多个P帧数据和1个I帧数据,例如H264/265等编码方式。编码后每个视频帧组包括关键帧和预测帧;其中,关键帧采用全帧压缩编码,接收端解码时仅使用本帧数据就可重构完整视频图像;预测帧基于关键帧进行帧间差值压缩编码,在接收端解码时,需要在关键帧的基础上叠加本帧与关键帧的差值来获得完整的视频图像。在所采集的视频帧组中,I帧为关键帧,P帧为预测帧,即I帧的关键级别高于P帧。因此,当接收端只获得P帧数据,没有获得I帧数据,是无法进行解码恢复视频图像的。
因此,当缓存空间达到上限时,即全部被待发送的视频帧数据占用时,如果当前新采集的视频帧数据是非关键的P帧数据,却将最先缓存的关键的I帧数据覆盖了,那么I帧数据之后的一系列P帧数据即使接收端成功接收,接收端也无法正常解码,失去了视频数据缓存的意义。再如,若新采集的视频帧数据是非告警时刻采集的视频帧数据,却覆盖了最先缓存的告警时刻关键的视频帧数据,那么,接收端就无法及时接收告警信息,大大折扣了视频数据发送的意义。
针对上述问题,本发明实施例提供了一种数据覆盖规则,当缓存空间全部被待发送的视频帧数据占用时,比较当前新采集的帧数据与缓存空间内待发送的各帧数据的关键级别,如果当前新采集的帧数据的关键级别低,则丢弃当前新采集的帧数据,否则覆盖缓存空间内待发送的各帧数据中关键级别最低的帧数据;所述的关键级别是指该帧数据在接收端视频解码及应用场景中的重要性,其由低至高的排列顺序为:P帧数据低于I帧数据,先存贮入缓存的帧数据低于后存贮入缓存的帧数据,非告警状态时采集的帧数据低于告警状态时采集的帧数据。
本发明实施例所公开的对所采集的视频数据进行发送处理的方法,还包括以下步骤:
按照视频数据中各帧数据采集时间的先后顺序,将各帧数据依次存贮入预先分配的缓存空间内;
发送视频数据时,按照存贮的时间先后顺序依次从所述缓存空间内读取出所述各帧数据进行网络发送,并将已发送的帧数据所占用的缓存空间腾出来给新采集的帧数据存贮使用;
当网络传输性能能够达到发送帧数据的速度大于或等于采集到的帧数据的速度时,重复执行上述两个步骤;
当网络传输性能能够达到发送帧数据的速度小于采集到的帧数据的速度时,缓存空间逐渐被新采集的帧数据占用,当缓存空间全部被帧数据占用时,执行所述视频帧数据的关键级别判定步骤。
当然,本发明实施例所述的视频帧数据的关键级别的判定方法并不仅仅局限于此,也可根据实际应用场景进行灵活扩展。
进一步,在本发明实施例中,比较当前新采集的帧数据与缓存空间内待发送的各帧数据的关键级别的方法为:
判断当前新采集的帧数据是在告警状态时采集的,还是在非告警状态时采集的:如果是在告警状态时采集的,则再根据P帧数据低于I帧数据,先存贮入缓存的帧数据低于后存贮入缓存的帧数据的原则判断出缓存空间内待发送的各帧数据中关键级别最低的帧数据,然后以当前新采集的帧数据进行覆盖;如果是在非告警状态时采集的,则仅在缓存空间内待发送的同样在非警告状态时采集的各帧数据中根据P帧数据低于I帧数据,先存贮入缓存的帧数据低于后存贮入缓存的帧数据的原则判断出缓存空间内待发送的各帧数据中关键级别最低的帧数据,然后以当前新采集的帧数据进行覆盖。
在本发明实施例中,所述的告警状态,可以根据采集设备的具体情况进行人为设置,例如,可以设置某场景中出现移动图像时为告警状态,或结合其它声音、烟雾的传感器综合判断当前状态是否是告警状态。
在本发明实施例中,优选的,所述P帧数据低于I帧数据、先存贮入缓存的帧数据低于后存贮入缓存的帧数据的原则为:先存贮入缓存的帧组的P帧<后存贮入缓存的相邻帧组的P帧<先存贮入缓存的帧组的I帧<后存贮入缓存的相邻帧组的I帧;当缓存空间全部被待发送的视频帧数据占用时,比较当前新采集的帧数据与缓存空间内待发送的各帧数据的关键级别,如果当前新采集的帧数据的关键级别低,则丢弃当前新采集的帧数据,否则,按照上述关键级别的判定步骤,覆盖缓存空间内待发送的各帧数据中关键级别最低的帧数据,具体覆盖的先后顺序为:首先覆盖先存贮入缓存的第1个帧组第1个P帧数据,随后按照存贮的时间顺序,依次覆盖第1个帧组的其它P帧数据,当第1个帧组的P帧数据全部被覆盖时,再覆盖第2个帧组的第1个P帧数据,随后按照存贮入缓存的时间顺序,依次覆盖第2个帧组的其它P帧数据,按相同方式处理后,直到覆盖所有帧组的P帧数据,然后再返回至第1个帧组,覆盖第1帧组的I帧,其次是第2个帧组的I帧,依次类推,按照存贮入缓存的先后顺序,覆盖其它帧组的I帧数据。
采用这种关键级别的判定方式,当缓存空间全部被待发送的数据占用时,如果新采集的帧数据的优先级别高于待发送的各帧数据时,在优先保留I帧数据的情况下尽可能将最先缓存的关键级别低的视频帧数据覆盖,以保留关键级别高的视频帧数据。
在本发明实施例中,优选的,所述P帧数据低于I帧数据、先存贮入缓存的帧数据低于后存贮入缓存的帧数据的原则为:先存贮入缓存的帧组的第n个P帧<后存贮入缓存的相邻帧组的第n个P帧<先存贮入缓存的帧组的第n+1个P帧<后存贮入缓存的相邻帧组的第n+1个P帧<先存贮入缓存的帧组的I帧<后存贮入缓存的相邻帧组的I帧,其中,n为自然数;当缓存空间全部被待发送的视频帧数据占用时,比较当前新采集的帧数据与缓存空间内待发送的各帧数据的关键级别,如果当前新采集的帧数据的关键级别低,则丢弃当前新采集的帧数据,否则,按照上述关键级别的判定步骤,覆盖缓存空间内待发送的各帧数据中关键级别最低的帧数据,具体覆盖的先后顺序为:首先覆盖先存贮入缓存的第1个帧组的第1个P帧数据,其次为存贮入缓存的第2个帧组的第1个P帧数据,依次类推,按照存贮入缓存帧组的先后顺序,将所有帧组的第1个P帧数据覆盖后,再返回至第一个帧组覆盖第2个P帧数据,其次为第2个帧组的第2个P帧,依次类推,按照存贮入缓存帧组的先后顺序,将所有帧组的第2个P帧数据覆盖后,按相同处理方式,直到所有帧组的P帧数据均被覆盖后,再返回至第一个帧组覆盖第一个帧组的I帧数据,其次为第2个帧组的I帧数据,依次类推,覆盖其它帧组的I帧数据。
采用这种关键级别的判定方式,当缓存空间全部被待发送的数据占用时,如果新采集的帧数据的优先级别高于待发送的各帧数据时,在优先保留I帧情况下,可以将被覆盖的视频帧数据平均分布到多个I帧组中去,从而尽可能减少接收端视频画面的跳跃。
当然,本发明实施例给出的上述关键级别判定方法,可以择一使用,且不仅仅局限于此。
如图1所示,为了进一步提高对发送缓存空间的利用效率,在本发明实施例中,缓存空间在逻辑上被划分为多个子逻辑内存,每个子逻辑内存存储一帧数据,所采集的视频帧数据按照子逻辑内存地址排列的顺序依次存贮入子逻辑内存内,并采用循环缓存存贮模式复用缓存空间;所述的循环缓存存贮模式为:存贮时,所采集的第1个视频帧数据首先存贮入地址最小的子逻辑内存内,随后,按视频帧数据采集的时间先后顺序,依次存贮入其它子逻辑内存内;当最后一个子逻辑内存完成视频帧数据存贮后,再返回至缓存空间的起始位置,按照子逻辑内存的地址顺序依次存贮入已完成视频帧数据发送的子逻辑内存内。
同理,在本发明实施例中,所述的采集数据存入缓存空间的顺序也可以按照子逻辑内存地址的降序排列顺序依次存贮入逻辑内存内。这里仅给出地址升序排列的实施例,两种方式道理相同,这里不再赘述。
进一步,为了更好的指示当前缓存空间的存贮状态,该缓存空间还设置有一个循环链表,用来记录每个子逻辑内存的地址。所述的循环链表包括N个节点,按照子逻辑内存段实际内存地址大小的升序排列顺序,从上至下分别对应存贮N个子逻辑内存的实际内存地址,第一个循环链表节点存贮地址最小的子逻辑内存的实际地址,第N个循环链表节点存贮地址最大的子逻辑内存的实际地址;同理降序排列方式也适用于本发明实施例,这里不再赘述。
当缓存空间达到上限且当前新采集的视频帧数据需要完成覆盖关键级别最低的视频帧数据时,必须要知道当前待发送的视频帧数据中哪一个是关键级别最低的视频帧数据,这就会导致繁琐的查找比较过程。为了解决这个问题,在本发明实施例中,给出了一种缓存空间数据存贮状态指示方法。该方法通过在循环链表中设置写缓存指针Pw、读缓存指针Pr和覆盖指针Pc,以指示所述缓存空间当前的数据存贮状态和关键级别最低的帧数据所在的位置。
进一步,所述的写缓存指针Pw依次指向各子逻辑内存的地址,用于记录存贮当前新采集的视频帧数据子逻辑内存的地址所对应的循环链表节点编号,所述各帧数据根据写缓存指针Pw指示的地址而依次存贮入各子逻辑内存中;每新采集一帧数据按循环顺序存贮入下一个子逻辑内存时,写缓存指针Pw也相应记录该子逻辑内存地址所对应的循环链表节点编号;当所述写缓存指针Pw遍历所有子逻辑内存的地址之后,所述写缓存指针Pw再从头循环查找帧数据已经发送出去的子逻辑内存,并将其地址依次提供给新采集的帧数据。
所述的读缓存指针Pr按照存贮的时间先后顺序依次指向各子逻辑内存的地址,用于记录当前发送视频帧数据所存贮的子逻辑内存的地址对应的循环链表节点编号,并读取出所述读缓存指针Pr所指向的子逻辑内存中的帧数据。每成功发送一次视频帧数据后,按循环链表的循环顺序读缓存指针Pr也相应记录下一个发送视频帧数据所存贮的子逻辑内存的地址对应的循环链表节点编号。
所述的覆盖指针Pc指向缓存空间内待发送的各帧数据中关键级别最低的帧数据所在的子逻辑内存的地址,用于记录待发送的视频帧数据中关键级别最低的视频帧数据所存贮的子逻辑内存的地址对应的循环链表节点编号。当前新采集的帧数据根据所述覆盖指针Pc的指引覆盖子逻辑内存中的帧数据。
因此,本发明实施例通过设置写缓存指针Pw、读缓存指针Pr和覆盖指针Pc,能够实时指出当前缓存空间中数据存贮状态,包括:当前新存贮帧数据的位置、当前发送帧数据的位置以及当前待发送的视频帧数据中关键级别最低的帧数据所在的位置,从而避免了繁琐的查找过程。
当网络传输性能能够达到发送帧数据的速度大于或等于采集到的帧数据的速度时,新采集的视频帧数据按循环存贮顺序直接存贮入对应的子逻辑内存内,并与当前覆盖指针Pc所指向的视频帧数据进行关键级别比较,如果当前新写入的视频帧数据关键级别低,则覆盖指针Pc记录新写入视频帧数据所存贮的子逻辑内存的地址对应的循环链表节点编号,否则,覆盖指针Pc保持不变。
基于上述循环链表及指针的数据存贮状态指示方式,从而可保证当前覆盖指针Pc所指向的帧数据是待发送的帧数据中关键级别最低的。
当网络传输性能能够达到发送帧数据的速度小于采集到的帧数据的速度时,缓存空间逐渐被新采集的帧数据占用,当缓存空间全部被待发送的帧数据占用时,则先将当前新采集的视频帧数据与覆盖指针Pc所指向的视频帧数据进行关键级别比较;如果当前新采集的视频帧数据的关键级别低,则丢弃当前新采集的帧数据,否则,将覆盖指针Pc所指向的循环链表节点从原位置取出并插入至当前读缓存指针Pr所指向的循环链表节点之前,并将当前新采集的视频帧数据覆盖存贮至该节点所指向的子逻辑内存内,写缓存指针Pw也相应的记录该节点编号,覆盖指针Pc则记录下一个待发送的关键级别最低的视频帧数据所对应的循环链节点编号。如图2所示。
采用这种方式,不仅能够保证当前覆盖指针Pc所指向的帧数据是待发送的帧数据中关键级别最低的,而且通过从原位置取出覆盖指针Pc所指向的循环链表节点并插入至当前读缓存指针Pr所指向的循环链表节点之前的方式,维护了当前覆盖存贮的新视频帧数据在循环链表中的循环顺序排列的统一性,同时也避免打乱待发送的视频帧数据的时间顺序,保证了待发送的视频帧数据在循环链中所体现的时间顺序。
进一步,在本发明实施例中,给出了读缓存指针Pr按循环链表的循环顺序即将超越覆盖指针Pc时的处理方法或操作步骤。
所述读缓存指针Pr按照存贮的时间先后顺序依次指向各子逻辑内存的地址,读取出所指向的子逻辑内存中的帧数据进行发送,并按循环链表的循环顺序指向下一个子逻辑内存的地址;判断读缓存指针Pr是否与覆盖指针Pc所指向的子逻辑内存的地址相同,即待发送的视频帧数据所对应的循环链表节点编号与覆盖指针Pc所记录的节点编号是否相同;如果相同,则覆盖指针Pc指向缓存空间内待发送的各帧数据中下一个关键级别最低的帧数据所在的子逻辑内存的地址;否则,则覆盖指针Pc保持不变。
进一步,在本发明实施例中,也给出了读缓存指针Pr按循环链表的循环顺序紧跟写缓存指针Pw时覆盖指针Pc的处理方法或操作步骤。
所述读缓存指针Pr按照存贮的时间先后顺序依次指向各子逻辑内存的地址,读取出所指向的子逻辑内存中的帧数据进行发送,并按循环链表的循环顺序指向下一个子逻辑内存的地址;判断读缓存指针Pr是否与写缓存指针Pw所指向的子逻辑内存的地址相同,即下一个待发送的视频帧数据所对应的循环链表节点编号与写缓存指针Pw所记录的节点编号是否相同;如果相同,则覆盖指针Pc指向读缓存指针Pr所指向的子逻辑内存的地址;否则,则覆盖指针Pc保持不变。
IPC等设备采集视频数据时,也要区分是否是告警状态时采集的信息。因此,在本发明实施例中,所述的循环链表还设置有告警状态位,用于记录当前采集的视频帧数据是否处于告警状态时所采集的数据,如果当前采集的视频帧数据是告警状态时所采集的数据,则该帧数据所对应的告警状态位置1,否则置0。当缓存空间达到上限时,当前新采集的帧数据要覆盖最先存贮入缓存空间的帧数据时,可通过循环链表的告警状态位,判断即将被覆盖的视频帧数据是否是告警时刻采集的帧数据,以避免新采集的非告警时刻采集的视频帧数据覆盖告警时刻关键的视频帧数据。
对于IPC等设备所采集的视频数据,不仅适用于发送给单个远程用户,而且也适用于发送给多个远程用户的场景。当有多个远程接收用户时,由于不同用户间网络传输性能存在差异,会出现不同用户的视频数据发送速率不同。当缓存空间达到上限全部被待发送的视频帧数据占用时,当前新采集的视频帧数据如何覆盖缓存空间内待发送的视频数据,以使不同速度的用户数据能够合理复用缓存空间,避免多路视频发送失败的帧数据出现重叠。
为了解决这个问题,在本发明实施例中,所述的循环链表设置有多个相互独立的读缓存指针Pr和覆盖指针Pc,用于分别记录不同接收用户当前发送视频帧数据所对应的循环链表节点编号和待发送的视频帧数据中关键级别最低的视频帧数据所对应的循环链表节点编号,即每一个接收用户都有独立的读缓存指针Pr和覆盖指针Pc。例如:接收用户1的指针为Pr1和Pc1,接收用户i的指针为Pri和Pci,…,接收用户n的指针为Prn和Pcn。
当新采集的视频帧数据即将存贮的子逻辑内存所对应的循环链表节点编号与某个接收用户的读缓存指针Pr所记录的循环链表节点编号相同时,将新采集的视频帧数据与所述接收用户的覆盖指针Pc所指向的视频帧数据进行关键级别比较;如果当前新采集的视频帧数据的关键级别高,则按方法①执行,即:
方法①:将所述接收用户的覆盖指针Pc所指向的循环链表节点从原位置取出并插入至所述接收用户的读缓存指针Pr所指向的循环链表节点之前,并将当前新采集的视频帧数据覆盖存贮至该节点所指向的子逻辑内存内,写缓存指针Pw也相应的记录该节点编号,所述接收用户的覆盖指针Pc则记录其下一个待发送的关键级别最低的视频帧数据所对应的循环链节点编号。
如果当前新采集的视频帧数据的关键级别低,则不能直接丢弃,因为不同接收用户的优先级别不同,如果丢弃了,则随后高优先级的接收用户也无法得到该帧数据。因此,为了避免该问题的发生,在本发明实施例中,所述的循环链表还设置有接收用户优先级指示符,用于记录不同接收用户的优先级别。所述的优先级别是指接收此视频帧数据的用户的级别,可根据具体的业务需要而预先设置,例如接收视频数据用于远端存贮的用户的优先级别低于用于实时查看的用户级别,等等。
进一步,如果新采集的视频帧数据的关键级别低于所述用户覆盖指针Pc所指向的视频帧数据,则按方法②执行,即:
方法②:查看所述接收用户的优先级指示符;如果当前所述接收用户的优先级别在所有接收用户中最高,则将新采集的帧数据丢弃;如果当前所述接收用户的优先级别在所有接收用户中最低,则执行方法①;否则,将接收用户中优先级别最低的接收用户的覆盖指针Pc所指向的循环链表节点从原位置取出并插入至当前所述接收用户的读缓存指针Pr所指向的循环链表节点之前,并将当前新采集的视频帧数据覆盖存贮至该节点所指向的子逻辑内存内,写缓存指针Pw也相应的记录该节点编号,所述优先级别最低的接收用户的覆盖指针Pc则记录其下一个待发送的关键级别最低的视频帧数据所对应的循环链节点编号。
例如,当新采集的视频帧数据即将存贮的子逻辑内存所对应的循环链表节点编号与接收用户3的读缓存指针Pr3所记录的循环链表节点编号相同时,此时接收用户3所对应的待发送的视频帧数据占满了缓存空间;将新采集的视频帧数据与接收用户3的覆盖指针Pc3所指向的视频帧数据进行关键级别比较;如果当前新采集的视频帧数据的关键级别高,则将接收用户的覆盖指针Pc3所指向的循环链表节点从原位置取出并插入至接收用户3的读缓存指针Pr3所指向的循环链表节点之前,并将当前新采集的视频帧数据覆盖存贮至该节点所指向的子逻辑内存内,写缓存指针Pw也相应的记录该节点编号,接收用户3的覆盖指针Pc3则记录该用户的下一个待发送的关键级别最低的视频帧数据所对应的循环链节点编号;接收用户3待发送的视频帧数据是指按循环链表的循环顺序从读缓存指针Pr3所指向的下一个节点所对应的视频帧数据至写缓存指针Pw所指向的视频帧数据。如果当前新采集的视频帧数据的关键级别低,则按以下方法执行:
首先查看接收用户3的优先级指示符;如果接收用户3的优先级别在所有接收用户中最高,则将新采集的帧数据丢弃;如果接收用户的优先级别在所有接收用户中最低,则将接收用户的覆盖指针Pc3所指向的循环链表节点从原位置取出并插入至接收用户3的读缓存指针Pr3所指向的循环链表节点之前,并将当前新采集的视频帧数据覆盖存贮至该节点所指向的子逻辑内存内,写缓存指针Pw也相应的记录该节点编号,接收用户3的覆盖指针Pc3则记录该用户的下一个待发送的关键级别最低的视频帧数据所对应的循环链节点编号;否则(即接收用户3即不是优先级别最高的用户,也不是优先级别最低的用户),将接收用户中优先级别最低的接收用户的覆盖指针Pc所指向的循环链表节点从原位置取出并插入至接收用户3的读缓存指针Pr3所指向的循环链表节点之前,并将当前新采集的视频帧数据覆盖存贮至该节点所指向的子逻辑内存内,写缓存指针Pw也相应的记录该节点编号,所述优先级别最低的接收用户的覆盖指针Pc则记录其下一个待发送的关键级别最低的视频帧数据所对应的循环链节点编号。
尽管本发明的实施方案已公开如上,但其并不仅仅限于说明书和实施方式中所列运用。它完全可以被适用于各种适合本发明的领域。对于熟悉本领域的人员而言,可容易地实现另外的修改。因此在不背离权利要求及等同范围所限定的一般概念下,本发明并不限于特定的细节和这里示出与描述的图例。
Claims (9)
1.一种对所采集的视频数据进行发送处理的方法,其特征在于,包括对所述视频数据中的帧数据的关键级别判定步骤,即:
所述帧数据存贮入缓存空间内,所述帧数据采用以N个帧数据为一组的编码方式;当缓存空间全部被待发送的帧数据占用时,比较当前新采集的帧数据与缓存空间内待发送的各帧数据的关键级别,如果当前新采集的帧数据的关键级别低,则丢弃当前新采集的帧数据,否则覆盖缓存空间内待发送的各帧数据中关键级别最低的帧数据;
所述的关键级别是指该帧数据在接收端视频解码及应用场景中的重要性,其由低至高的排列顺序为:P帧数据低于I帧数据,先存贮入缓存的帧数据低于后存贮入缓存的帧数据,非告警状态时采集的帧数据低于告警状态时采集的帧数据;
所述比较当前新采集的帧数据与缓存空间内待发送的各帧数据的关键级别的方法为:
判断当前新采集的帧数据是在告警状态时采集的,还是在非告警状态时采集的:
如果是在告警状态时采集的,则再根据P帧数据低于I帧数据,先存贮入缓存的帧数据低于后存贮入缓存的帧数据的原则判断出缓存空间内待发送的各帧数据中关键级别最低的帧数据,然后以当前新采集的帧数据进行覆盖;或
如果是在非告警状态时采集的,则仅在缓存空间内待发送的同样在非警告状态时采集的各帧数据中根据P帧数据低于I帧数据,先存贮入缓存的帧数据低于后存贮入缓存的帧数据的原则判断出缓存空间内待发送的各帧数据中关键级别最低的帧数据,然后以当前新采集的帧数据进行覆盖。
2.根据权利要求1所述的对所采集的视频数据进行发送处理的方法,其特征在于,所述P帧数据低于I帧数据,先存贮入缓存的帧数据低于后存贮入缓存的帧数据的原则为:
先存贮入缓存的帧组的P帧<后存贮入缓存的相邻帧组的P帧<先存贮入缓存的帧组的I帧<后存贮入缓存的相邻帧组的I帧。
3.根据权利要求1所述的对所采集的视频数据进行发送处理的方法,其特征在于,所述P帧数据低于I帧数据,先存贮入缓存的帧数据低于后存贮入缓存的帧数据的原则为:
先存贮入缓存的帧组的第n个P帧<后存贮入缓存的相邻帧组的第n个P帧<先存贮入缓存的帧组的第n+1个P帧<后存贮入缓存的相邻帧组的第n+1个P帧<先存贮入缓存的帧组的I帧<后存贮入缓存的相邻帧组的I帧。
4.根据权利要求1所述的对所采集的视频数据进行发送处理的方法,其特征在于,
所述帧数据存贮入缓存空间内的方法为:
所述缓存空间在逻辑上被划分为多个子逻辑内存,每个子逻辑内存存储一帧数据;
在所述缓存空间中设置有循环链表,用来记录每个子逻辑内存的地址;
所述循环链表中还设置有写缓存指针Pw、读缓存指针Pr和覆盖指针Pc,所述覆盖指针Pc指向缓存空间内待发送的各帧数据中关键级别最低的帧数据所在的子逻辑内存的地址,当前新采集的帧数据根据所述覆盖指针Pc的指引覆盖子逻辑内存中的帧数据。
5.根据权利要求4所述的对所采集的视频数据进行发送处理的方法,其特征在于,所述读缓存指针Pr按照存贮的时间先后顺序依次指向各子逻辑内存的地址,读取出所指向的子逻辑内存中的帧数据进行发送,并按循环链表的循环顺序指向下一个子逻辑内存的地址;
判断读缓存指针Pr是否与覆盖指针Pc所指向的子逻辑内存的地址相同;
如果相同,则覆盖指针Pc指向缓存空间内待发送的各帧数据中下一个关键级别最低的帧数据所在的子逻辑内存的地址;
否则,则覆盖指针Pc保持不变。
6.根据权利要求4所述的对所采集的视频数据进行发送处理的方法,其特征在于,所述读缓存指针Pr按照存贮的时间先后顺序依次指向各子逻辑内存的地址,读取出所指向的子逻辑内存中的帧数据进行发送,并按循环链表的循环顺序指向下一个子逻辑内存的地址;
判断读缓存指针Pr是否与写缓存指针Pw所指向的子逻辑内存的地址相同;
如果相同,则覆盖指针Pc指向读缓存指针Pr所指向的子逻辑内存的地址;
否则,则覆盖指针Pc保持不变。
7.根据权利要求4所述的对所采集的视频数据进行发送处理的方法,其特征在于,所述的循环链表还设置有接收用户优先级指示符,不同接收用户设置有各自的读缓存指针Pr和覆盖指针Pc。
8.一种对所采集的视频数据进行发送处理的装置,其特征在于,包括:
存储单元,用于将视频帧数据存贮入缓存空间内,所述帧数据采用以N个帧数据为一组的编码方式;
比较单元,用于当缓存空间全部被待发送的帧数据占用时,比较当前新采集的帧数据与缓存空间内待发送的各帧数据的关键级别;所述比较当前新采集的帧数据与缓存空间内待发送的各帧数据的关键级别的步骤包括:
判断当前新采集的帧数据是在告警状态时采集的,还是在非告警状态时采集的:
如果是在告警状态时采集的,则再根据P帧数据低于I帧数据,先存贮入缓存的帧数据低于后存贮入缓存的帧数据的原则判断出缓存空间内待发送的各帧数据中关键级别最低的帧数据,然后以当前新采集的帧数据进行覆盖;或
如果是在非告警状态时采集的,则仅在缓存空间内待发送的同样在非警告状态时采集的各帧数据中根据P帧数据低于I帧数据,先存贮入缓存的帧数据低于后存贮入缓存的帧数据的原则判断出缓存空间内待发送的各帧数据中关键级别最低的帧数据,然后以当前新采集的帧数据进行覆盖。
执行单元,用于执行:
如果当前新采集的帧数据的关键级别低,则丢弃当前新采集的帧数据;
否则覆盖缓存空间内待发送的各帧数据中关键级别最低的帧数据;
所述的关键级别是指该帧数据在接收端视频解码及应用场景中的重要性,其由低至高的排列顺序为:P帧数据低于I帧数据,先存贮入缓存的帧数据低于后存贮入缓存的帧数据,非告警状态时采集的帧数据低于告警状态时采集的帧数据。
9.一种对所采集的视频数据进行发送处理的装置,包括处理器以及存储有若干计算机指令的非易失性存储器,其特征在于,所述的计算机指令被处理器执行时实现权利要求1至权利要求7中任意一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711130816.6A CN109788337B (zh) | 2017-11-15 | 2017-11-15 | 一种对所采集的视频数据进行发送处理的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711130816.6A CN109788337B (zh) | 2017-11-15 | 2017-11-15 | 一种对所采集的视频数据进行发送处理的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109788337A CN109788337A (zh) | 2019-05-21 |
CN109788337B true CN109788337B (zh) | 2021-03-09 |
Family
ID=66495125
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711130816.6A Active CN109788337B (zh) | 2017-11-15 | 2017-11-15 | 一种对所采集的视频数据进行发送处理的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109788337B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113959051B (zh) * | 2021-10-08 | 2023-08-15 | 青岛海尔空调电子有限公司 | 用于空调器的控制方法及空调器 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2649794B1 (en) * | 2010-12-07 | 2019-10-30 | InterDigital CE Patent Holdings | Method and apparatus for managing content distribution over multiple terminal devices in collaborative media system |
CN104702972B (zh) * | 2014-01-03 | 2018-04-20 | 杭州海康威视数字技术股份有限公司 | 一种自适应图像数据发送方法和装置 |
CN104899151B (zh) * | 2015-02-02 | 2018-01-05 | 上海小蚁科技有限公司 | 内存数据读写方法及装置 |
-
2017
- 2017-11-15 CN CN201711130816.6A patent/CN109788337B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN109788337A (zh) | 2019-05-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5684920B2 (ja) | 適応ストリーミングのための様々なビットのビデオストリーム | |
US9510043B2 (en) | Pre-buffering audio streams | |
WO2016131223A1 (zh) | 一种视频帧丢帧方法及视频发送装置 | |
CN110636346B (zh) | 一种码率自适应切换方法、装置、电子设备及存储介质 | |
CN106231348B (zh) | 一种gop数据的回放方法、装置和系统 | |
CN102802088B (zh) | 一种基于实时传输协议的数据传输方法 | |
TWI540890B (zh) | 用以處理動作視訊之方法及裝置 | |
JP2010021663A (ja) | 通信装置及び通信方法 | |
CN113225622A (zh) | 一种视频传输方法、装置和计算机可读存储介质 | |
CN109788337B (zh) | 一种对所采集的视频数据进行发送处理的方法及装置 | |
US20190349616A1 (en) | Method and device for transmitting video | |
CN102547221A (zh) | 基于移动侦测的视频录像及网络传输方法 | |
US9332421B2 (en) | Method and apparatus for random access to multimedia content in wireless communication system | |
CN108521611B (zh) | 一种抗抖动视频数据存取方法以及计算机设备 | |
CN104092982A (zh) | 点对点实时视频传输方法及其传输系统 | |
CN110113641B (zh) | 视频数据的传输方法、装置、边缘服务节点及介质 | |
CN112203050B (zh) | 一种视频续传的方法及装置 | |
CN116132698A (zh) | 内容录制方法、播放方法、cdn系统、存储介质 | |
CN115037701B (zh) | 视频处理方法、装置、服务器及介质 | |
CN111641846A (zh) | 一种安防监控视频即时播放的方法、装置和系统 | |
US10063941B2 (en) | Method and apparatus for writing images into memory | |
CN113992639B (zh) | 音视频处理方法及设备 | |
JP2016213611A (ja) | データ配信装置およびデータ配信方法 | |
CN117998045A (zh) | 多媒体文件的传输方法、装置、电子设备和存储介质 | |
CN117201466A (zh) | 一种视频会议场景下的丢包重传系统及其方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |