CN109743521A - 视频数据传输方法、装置、电子设备和存储介质 - Google Patents
视频数据传输方法、装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN109743521A CN109743521A CN201811592886.8A CN201811592886A CN109743521A CN 109743521 A CN109743521 A CN 109743521A CN 201811592886 A CN201811592886 A CN 201811592886A CN 109743521 A CN109743521 A CN 109743521A
- Authority
- CN
- China
- Prior art keywords
- video data
- video
- data
- received
- cache unit
- 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.)
- Granted
Links
Landscapes
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
一种视频数据传输方法,所述方法包括:通过视频传输接口接收传输的视频流之中的视频数据;获取保存所述视频数据的缓存单元的缓存地址,其中,所述缓存地址在所述视频传输接口初始化时存储在数据结构中;根据所述缓存地址将所述视频数据保存在所述缓存单元。本发明还提供一种视频数据传输装置、电子设备和存储介质。本发明可以减少视频流传输时视频数据丢失的问题,有利于提高视频传输的质量。
Description
技术领域
本发明涉及图像处理技术领域,具体涉及一种视频数据传输方法、装置、电子设备和存储介质。
背景技术
在进行图像处理时,可能需要将摄像头采集到的视频流或单帧图像传输至处理模块,供处理模块进行处理。视频流传输的过程需要依赖视频传输接口,即通过视频传输接口将视频流从一个电子设备(如摄像头)传输至另一个电子设备(如高性能计算机)。在视频流传输的过程中,若出现视频数据的丢失(即丢帧),会影响接收到的视频流的质量,也不利于基于数据流进行图像处理。因此,有必要提供一种能够减少视频流传输时视频数据丢失的方法。
发明内容
鉴于此,有必要提供一种视频数据传输方法、装置、电子设备和存储介质,可减少视频流传输时视频数据丢失的问题,有利于提高视频传输的质量。
本发明一方面提供了一种视频数据传输方法,所述方法包括:
通过视频传输接口接收传输的视频流之中的视频数据;
获取保存所述视频数据的缓存单元的缓存地址,其中,所述缓存地址在所述视频传输接口初始化时存储在数据结构中;
根据所述缓存地址将所述视频数据保存在所述缓存单元。
在一种可能的实现方式中,所述通过视频传输接口接收传输的视频流之中的视频数据之前,所述方法还包括:
获取所述视频流的分辨率;
根据所述视频流的分辨率确定每个缓存单元的大小,以及分配用于存储接收所述视频流时的连续缓存空间;
根据所述连续缓存空间的起始地址以及所述连续缓存空间中每个缓存单元的大小确定所述连续缓存空间中每个缓存单元的起始地址;
将所述连续缓存空间中每个缓存单元的起始地址存储至所述数据结构。
在一种可能的实现方式中,所述根据所述缓存地址将所述视频数据保存在所述缓存单元之前,所述方法还包括:
若在接收到所述视频数据之前存在已接收视频数据,判断所述视频数据与所述已接收视频数据是否连续;
若所述视频数据与所述已接收视频数据不连续,发送数据丢失提醒。
在一种可能的实现方式中,所述判断所述视频数据与所述已接收视频数据是否连续包括:
获取所述视频数据的帧号以及所述已接收视频数据的帧号;
判断所述视频数据的帧号与所述已接收视频数据的帧号是否连续;
若所述视频数据的帧号与所述已接收视频数据的帧号连续,确定所述视频数据与所述已接收视频数据连续。
在一种可能的实现方式中,所述数据结构为循环链表。
在一种可能的实现方式中,所述方法还包括:
判断所述视频数据是否存在异常;
若所述视频数据存在异常,发送存在异常视频数据的提醒。
在一种可能的实现方式中,所述判断所述视频数据是否存在异常包括:
判断所述视频数据表示的图像是否存在溢出;或者
判断所述视频数据表示的图像是否存在行出错;或者
判断所述视频数据表示的图像是否存在列出错;
或者它们的组合。
本发明另一方面还提供了一种视频数据传输装置,所述装置包括:
接收模块,用于通过视频传输接口接收传输的视频流之中的视频数据;
获取模块,用于获取保存所述视频数据的缓存单元的缓存地址,其中,所述缓存地址在所述视频传输接口初始化时存储在数据结构中;
保存模块,用于根据所述缓存地址将所述视频数据保存在所述缓存单元。
在一种可能的实现方式中,所述装置还包括缓存地址分配模块,所述缓存地址分配模块用于:
通过视频传输接口接收传输的视频流之中的视频数据之前,获取所述视频流的分辨率;
根据所述视频流的分辨率确定每个缓存单元的大小,以及分配用于存储接收所述视频流时的连续缓存空间;
根据所述连续缓存空间的起始地址以及所述连续缓存空间中每个缓存单元的大小确定所述连续缓存空间中每个缓存单元的起始地址;
将所述连续缓存空间中每个缓存单元的起始地址存储至所述数据结构。
在一种可能的实现方式中,所述视频数据传输装置还包括提醒模块,所述提醒模块用于:
若在接收到所述视频数据之前存在已接收视频数据,在根据所述缓存地址将所述视频数据保存在所述缓存单元之前,判断所述视频数据与所述已接收视频数据是否连续;
若所述视频数据与所述已接收视频数据不连续,发送数据丢失提醒。
在一种可能的实现方式中,所述提醒模块判断所述视频数据与所述已接收视频数据是否连续包括:
获取所述视频数据的帧号以及所述已接收视频数据的帧号;
判断所述视频数据的帧号与所述已接收视频数据的帧号是否连续;
若所述视频数据的帧号与所述已接收视频数据的帧号连续,确定所述视频数据与所述已接收视频数据连续。
在一种可能的实现方式中,所述数据结构为循环链表。
在一种可能的实现方式中,所述提醒模块还用于:
判断所述视频数据是否存在异常;
若所述视频数据存在异常,发送存在异常视频数据的提醒。
在一种可能的实现方式中,所述提醒模块判断所述视频数据是否存在异常包括:
判断所述视频数据表示的图像是否存在溢出;或者
判断所述视频数据表示的图像是否存在行出错;或者
判断所述视频数据表示的图像是否存在列出错;
或者它们的组合。
本发明再一方面还提供一种电子设备,所述电子设备包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现上述视频数据传输方法。
本发明又一方面还提供一种计算机可读存储介质,其上存储有计算机指令,所述计算机指令被处理器执行时实现上述视频数据传输方法。
本发明通过视频传输接口接收传输的视频流之中的视频数据;获取保存所述视频数据的缓存单元的缓存地址,其中,所述缓存地址在所述视频传输接口初始化时存储在数据结构中;根据所述缓存地址将所述视频数据保存在所述缓存单元。由于在视频传输接口初始化时就将保存视频数据的缓存单元的缓存地址进行了存储,因此,在接收到传输的视频流之中的视频数据时,无论接收到的视频数据为几帧图像,都可以直接获取存储视频数据的缓存地址,进而将视频数据进行存放,不需要在每一帧图像存储在缓存单元之后再去计算并分发存储下一帧的图像的缓存地址,缩短接收到视频数据至保存视频数据之间等待地址分配的时间,避免接收到的视频数据来不及处理的问题,进而减少由于视频数据来不及处理导致的响应不及时以及丢帧问题,从而实现减少视频流传输时视频数据丢失的问题,提高视频传输的质量的目的。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种视频数据传输方法的流程图;
图2是本发明实施例提供的一种视频数据传输装置的功能模块图;
图3是本发明实施例提供的一种电子设备的示意图。
如下具体实施方式将结合上述附图进一步说明本发明。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施例对本发明进行详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。
实施例
图1为本发明实施例提供的视频数据传输方法的示意流程图。如图1所示,视频数据传输方法可包括以下步骤:
S101:通过视频传输接口接收传输的视频流之中的视频数据。
本实施例中,视频流是由多帧图像所组成,所述接收到的传输的视频流之中的视频数据可以为单帧图像或者是至少两帧图像。在接收视频流的过程中,对传输的每一帧图像或至少两帧图像都可以应用本发明所述的方法。
在一种可能的实施例中,所述视频流是摄像头采集图像之后向其他电子设备(如服务器)所传输的,因此,可以通过服务器的视频传输接口接收传输的视频流之中的视频数据。
在另一种可能的实施例中,所述视频流是图像采集与处理装置(如摄像装置)之中的摄像模块采集到之后向图像采集与处理装置之中的图像处理模块(如图像处理芯片)所传输的,因此,可以通过图像处理芯片的视频传输接口接收传输的视频流之中的视频数据。
本实施例中,接收视频流的视频传输接口可以为BT1120接口。BT1120是高清晰度电视(High Definition Television,HDTV)演播室信号数字接口,是用于接收视频流的视频传输接口之中的一种。当通过BT1120接口传输视频流时,按照BT1120接口协议接收并保存视频流之中的视频数据。可以理解,在其它实施例中,所述视频传输接口可以为其它接口。
S102:获取保存所述视频数据的缓存单元的缓存地址,其中,所述缓存地址在所述视频传输接口初始化时存储在数据结构中。
在本实施例中,在视频流传输时,将接收到的视频流之中的视频数据存储在缓存空间,以供其他模块进行进一步获取,例如,存储在缓存空间的视频数据供应用程序(如图像处理芯片中的图像处理程序)直接从缓存空间获取视频数据进而进行图像处理,或者存储在缓存空间的视频数据供读写程序获取视频数据并写入硬盘中使得硬盘可以保存视频数据。
所述缓存空间也可以称为buffer,缓存空间是用于数据交互的缓冲区,缓存空间可以分为若干缓存单元,每个缓存单元可以存储一帧图像,每个缓存单元的大小可以是相同的。
在本实施例所述的视频流传输过程中,缓存空间中存储的数据不为永久存储的,当缓存空间中的某一缓存单元中存储的视频数据被其他模块取出之后,该缓存单元可以继续用于存储后续接收到的视频数据。
本实施例中获取的缓存地址具体可以是保存视频数据的缓存单元的起始地址。
本实施例中,数据结构中存储多个缓存单元的缓存地址,当接收到视频数据时,若某一帧数据已存储在某个缓存单元,则确定该缓存单元被占用,若缓存单元中没有任何数据存储,则确定该缓存单元为空闲的缓存单元。
在接收到视频数据之后,若视频数据为单帧图像,则从数据结构中获取空闲的缓存单元的缓存地址用于保存该单帧图像,若视频数据为至少两帧图像,则获取视频数据中的图像帧数,获取与图像帧数相同数量的空闲的存储单元的缓存地址用于保存至少两帧图像。
所述数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。本实施例中所述数据结构可以为数组,即预先将传输视频流时存储视频数据的缓存单元的缓存地址存储在数组中,则接收到视频数据之后,可以直接从该数组中获取到存放该视频数据的地址。
通过视频传输接口接收视频数据之前,通常对该接口进行初始化,因此,在本实施例中,在视频传输接口初始化时分配并存储缓存地址在数据结构中,再基于视频传输接口接收到视频数据时,可以直接从数据结构中获取保存该视频数据的缓存地址,有利于快速存储该视频数据。
例如,图像处理芯片上电时或复位时,芯片中各个模块(如BT1120接口模块,即BT1120接口包括的硬件及软件)进行初始化,初始化之后,通过该芯片的BT1120接口进行视频数据传输。
进一步的,在本发明另一实施例中,可以通过以下方法在视频传输接口初始化时在数据结构中存储缓存单元的缓存地址。所述方法还包括:
通过视频传输接口接收传输的视频流之中的视频数据之前,获取所述视频流的分辨率;
根据所述视频流的分辨率确定每个缓存单元的大小,以及分配用于存储接收所述视频流时的连续缓存空间;
根据所述连续缓存空间的起始地址以及所述连续缓存空间中每个缓存单元的大小确定所述连续缓存空间中每个缓存单元的起始地址;
将所述连续缓存空间中每个缓存单元的起始地址存储至所述数据结构。
所述分辨率具体为视频流中单帧图像的分辨率,分辨率表示了图像中存储的信息量。例如,分辨率为1920*1080。不同的分辨率所需的存储单元的大小是不相同的,当分辨率越大时,图像存储时所占用的空间越大,即当视频流的分辨率越大时,每个缓存单元的大小越大。在本实施例中,由于视频流中每帧图像的分辨率相同,因此,每个缓存单元的大小可以为相同的。
具体的根据分辨率计算每个缓存单元的大小的方法可以从现有技术中获取,此处不再赘述。
在获取每个缓存空间的大小之后,分配连续的缓存空间包括:根据其他模块处理从缓存空间中获取数据的速度来确定待分配缓存单元的数量,根据所述待分配缓存单元的数量以及每个缓存空间的大小确定待分配的连续缓存空间的大小,根据所述缓存空间的大小选取缓存空间中连续的缓存空间为存储接收所述视频流时的连续缓存空间。
在本实施例中,所分配的连续缓存空间可以为缓存空间中若干个连续的缓存单元。
在确定要用于存储接收视频流时的连续缓存空间之后,根据取地址指令获取该连续缓存空间的起始地址,该连续缓存空间的起始地址即为若干个连续的缓存单元中第一个缓存单元的地址,然后根据该连续缓存空间的起始地址以及每个缓存单元的大小可以确定第一个缓存单元的结束地址,进而可以确定第二缓存单元的起始地址,以此类推,可以确定连续缓存空间中每个缓存单元的起始地址。
在本实施例中,通过分配连续的存储空间,可以在存储接收到的视频数据时,可以节省存储资源,提高存储空间的利用率。
一种优选实施例中,所述数据结构为循环链表,在循环链表中,每个节点中都包含指向下一个节点的指针域,且最后一个节点的指针域指向头节点。在视频传输接口初始化时,将存储视频数据的每个缓存单元的缓存地址存储在循环链表中。则在进行视频数据保存时,可以依次快速的获取循环链表内保存的缓存地址用于存储接收到的视频数据。
例如,若缓存中包含十个缓存单元,十个缓存单元的缓存地址依次存放在循环链表中,且在传输视频流时以单帧图像进行传输(即接收到的视频数据都为单帧图像),则在获取到第一帧图像时,获取循环链表中第一个节点中存储的缓存地址,若接收到第二帧图像时,获取循环链表中第二个节点中存储的缓存地址,若接收到第十帧图像时,获取循环链表中第十个节点中存储的缓存地址,在接收到十一帧图像时,再获取第一个节点中存储的缓存地址,在接收到第十二帧图像时,再获取第二个节点中存储的缓存地址。当在缓存单元中存储数据时,当从一个缓存单元存储至第十个缓存单元过程中,较早时间存储数据的缓存单元(如第一存储单元)在其他处理模块(如图像处理芯片)从缓存单元中获取数据之后能够被较早的释放,由被占用存储单元变为空闲存储单元,因此可以快速地依次根据循环链表中的缓存地址对所接收到的视频数据进行保存。
S103:根据所述缓存地址将所述视频数据保存在所述缓存单元。
在本实施例中,存储在缓存空间的视频数据可以供其他处理模块(如图处理芯片)获取。
进一步的,在本发明另一实施例中,所述根据所述缓存地址将所述视频数据保存在所述缓存单元之前,所述方法还包括:
若在接收到所述视频数据之前存在已接收视频数据,判断所述视频数据与所述已接收视频数据是否连续;
若所述视频数据与所述已接收视频数据不连续,发送数据丢失提醒。
所述已接收视频数据是传输的视频流之中在所述视频数据之前的数据。当接收到的所述视频数据不为传输开始时的第一帧数据时,可以确定在接收到所述视频数据之前存在已接收视频数据。
本实施例中,判断接收到的视频数据与已接收视频数据是否连续包括:从已接收视频数据中获取所述视频数据的前一帧视频数据,判断所述视频与所述视频的前一帧视频数据是否连续。
当接收到的视频数据与已接收视频数据不连续时,可以通过向用户发送数据丢失提醒消息。
在本发明另一实施例中,若所述视频数据与所述已接收视频数据连续,则执行所述根据所述缓存地址将所述视频数据保存在所述缓存单元的操作。
通过本实施例对接收到的视频数据与已接收视频数据是否连续进行判断,可以在视频流传输过程中出现数据丢失时,及时的提醒用户,避免视频流传输完之后要查找是哪些数据丢失时无法快速丢失数据的问题。
可选的,在本发明另一实施例中,所述判断所述视频数据与所述已接收视频数据是否连续包括:
获取所述视频数据的帧号以及所述已接收视频数据的帧号;
判断所述视频数据的帧号与所述已接收视频数据的帧号是否连续;
若所述视频数据的帧号与所述已接收视频数据的帧号连续,确定所述视频数据与所述已接收视频数据连续。
在本实施例中,通过视频传输接口中用于获取视频数据状态的模块获取数据的帧头的信息,进而进行视频数据的保存。
因此,可通过视频传输接口中用于获取视频数据状态的模块在获取到的视频数据的帧头中添加帧号,进而在保存视频数据时通过获取帧头中的帧号来判断接收到的视频数据与已接收视频数据是否连续。
例如,接收到的视频数据的帧头中帧号为7,若所接收到的视频数据的前一帧视频数据的帧头中帧号为6,则确定视频数据与已接收视频数据连续;若所接收到的视频数据的前一帧视频数据的帧头中帧号为5,则确定视频数据与已接收视频数据不连续。
进一步地,在本发明另一个实施例中,还可以通过以下步骤对所接收到的视频数据的图像质量进行检测。所述方法还包括:
判断所述视频数据是否存在异常;
若所述视频数据存在异常,发送存在异常视频数据的提醒。
本实施例中对接收到的视频数据的图像质量进行检测的步骤可以在将所述视频数据保存在缓存空间之前执行,也可以在将所述视频数据保存在缓存空间之后执行。
判断视频数据是否存在异常是指判断视频数据所表示的图像是否存在异常。
本实施例通过对视频数据是否存在异常进行检测,获取接收到的视频数据的质量,能够对视频流中哪些视频数据为异常哪些视频数据为正常进行甄别,避免在获取到视频数据之后无法知晓是哪一帧视频质量不高。
具体的,可以通过以下方面对视频数据的图像质量进行判断。所述判断所述视频数据是否存在异常包括:
判断所述视频数据表示的图像是否存在溢出;或者
判断所述视频数据表示的图像是否存在行出错;或者
判断所述视频数据表示的图像是否存在列出错;
或者它们的组合。
通常,当传输视频数据的速率与接收视频数据的速率不一致时,可能会导致视频数据的溢出,溢出是指用于存储某一帧视频数据的缓存单元不足够存储该帧视频数据时,则确定视频数据表示的图像存在溢出。具体的,图像的溢出可以包括高溢出和宽溢出。
同样的,当传输视频的过程中因传输视频数据的速率与接收视频数据的速率不一致时,也可能存在视频数据表示的图像存在行出错或者是列出错。
在本实施例中,可以预先通过视频传输接口中用于获取视频数据状态的模块对接收到的视频数据所表示的图像是否存在溢出、是否存在行出错以及是否存在高出错进行判断,进而将判断的结果作为视频数据的状态信息保存在该视频数据的帧头中。因此,可以通过获取帧头中视频数据的状态信息来判断视频数据所表示的图像是否存在溢出、是否存在高出错以及是否存在行出错。
在本发明另一实施例中,当视频数据存在异常时,向其他处理模块(如图像处理芯片)发送不对该视频数据进行处理(例如图像识别、图像比对等)的消息,避免其他处理模块对图像质量不高的视频数据进行处理,有利于提高基于接收到的视频数据进行图像处理时的图像处理质量。
本发明实施例通过视频传输接口接收传输的视频流之中的视频数据;获取保存所述视频数据的缓存单元的缓存地址,其中,所述缓存地址在所述视频传输接口初始化时存储在数据结构中;根据所述缓存地址将所述视频数据保存在所述缓存单元。由于在视频传输接口初始化时就将保存视频数据的缓存单元的缓存地址进行了存储,因此,在接收到传输的视频流之中的视频数据时,无论接收到的视频数据为几帧图像,都可以直接获取存储视频数据的缓存地址,进而将视频数据进行存放,不需要在每一帧图像存储在缓存单元之后再去计算并分发存储下一帧的图像的缓存地址,缩短接收到视频数据至保存视频数据之间等待地址分配的时间,避免接收到的视频数据来不及处理的问题,进而减少由于视频数据来不及处理导致的响应不及时以及丢帧问题,从而实现减少视频流传输时视频数据丢失的问题,提高视频传输的质量的目的。
以上是对本发明所提供的方法进行的详细描述。根据不同的需求,所示流程图中方框的执行顺序可以改变,某些方框可以省略,视频数据的传输方法也可以在上述视频数据传输方法中选择性的组合使用,或者与其他上述未提及的视频数据传输方法组合使用。
实施例
图2为本发明实施例提供的视频数据传输装置的结构图,如图2所示,视频数据传输装置可以包括:接收模块210、获取模块220、和保存模块230。
接收210,通过视频传输接口接收传输的视频流之中的视频数据。
本实施例中,视频流是由多帧图像所组成,所述接收到的传输的视频流之中的视频数据可以为单帧图像或者是至少两帧图像。在接收视频流的过程中,对传输的每一帧图像或至少两帧图像都可以应用本发明所述的方法。
在一种可能的实施例中,所述视频流是摄像头采集图像之后向其他电子设备(如服务器)所传输的,因此,可以通过服务器的视频传输接口接收传输的视频流之中的视频数据。
在另一种可能的实施例中,所述视频流是图像采集与处理装置(如摄像装置)之中的摄像模块采集到之后向图像采集与处理装置之中的图像处理模块(如图像处理芯片)所传输的,因此,可以通过图像处理芯片的视频传输接口接收传输的视频流之中的视频数据。
本实施例中,接收视频流的视频传输接口可以为BT1120接口。BT1120是高清晰度电视(High Definition Television,HDTV)演播室信号数字接口,是用于接收视频流的视频传输接口之中的一种。当通过BT1120接口传输视频流时,按照BT1120接口协议接收并保存视频流之中的视频数据。
获取模块220:获取保存所述视频数据的缓存单元的缓存地址,其中,所述缓存地址在所述视频传输接口初始化时存储在数据结构中。
在本实施例中,在视频流传输时,将接收到的视频流之中的视频数据存储在缓存空间,以供其他模块进行进一步获取,例如,存储在缓存空间的视频数据供应用程序(如图像处理芯片中的图像处理程序)直接从缓存空间获取视频数据进而进行图像处理,或者存储在缓存空间的视频数据供读写程序获取视频数据并写入硬盘中使得硬盘可以保存视频数据。
所述缓存空间也可以称为buffer,缓存空间是用于数据交互的缓冲区,缓存空间可以分为若干缓存单元,每个缓存单元可以存储一帧图像,每个缓存单元的大小可以是相同的。
在本实施例所述的视频流传输过程中,缓存空间中存储的数据不为永久存储的,当缓存空间中的某一缓存单元中存储的视频数据被其他模块取出之后,该缓存单元可以继续用于存储后续接收到的视频数据。
本实施例中获取的缓存地址具体可以是保存视频数据的缓存单元的起始地址。
本实施例中,数据结构中存储多个缓存单元的缓存地址,当接收到视频数据时,若某一帧数据已存储在某个缓存单元,则确定该缓存单元被占用,若缓存单元中没有任何数据存储,则确定该缓存单元为空闲的缓存单元。
在接收到视频数据之后,若视频数据为单帧图像,则从数据结构中获取空闲的缓存单元的缓存地址用于保存该单帧图像,若视频数据为至少两帧图像,则获取视频数据中的图像帧数,获取与图像帧数相同数量的空闲的存储单元的缓存地址用于保存至少两帧图像。
所述数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。本实施例中所述数据结构可以为数组,即预先将传输视频流时存储视频数据的缓存单元的缓存地址存储在数组中,则接收到视频数据之后,可以直接从该数组中获取到存放该视频数据的地址。
通过视频传输接口接收视频数据之前,通常对该接口进行初始化,因此,在本实施例中,在视频传输接口初始化时分配并存储缓存地址在数据结构中,再基于视频传输接口接收到视频数据时,可以直接从数据结构中获取保存该视频数据的缓存地址,有利于快速存储该视频数据。
例如,图像处理芯片上电时或复位时,芯片中各个模块(如BT1120接口模块,即BT1120接口包括的硬件及软件)进行初始化,初始化之后,通过该芯片的BT1120接口进行视频数据传输。
进一步的,在本发明另一实施例中,可以通过以下分配模块在视频传输接口初始化时在数据结构中分配并存储缓存单元的缓存地址。所述分配模块用于:
通过视频传输接口接收传输的视频流之中的视频数据之前,获取所述视频流的分辨率;
根据所述视频流的分辨率确定每个缓存单元的大小,以及分配用于存储接收所述视频流时的连续缓存空间;
根据所述连续缓存空间的起始地址以及所述连续缓存空间中每个缓存单元的大小确定所述连续缓存空间中每个缓存单元的起始地址;
将所述连续缓存空间中每个缓存单元的起始地址存储至所述数据结构。
所述分辨率具体为视频流中单帧图像的分辨率,分辨率表示了图像中存储的信息量。例如,分辨率为1920*1080。不同的分辨率所需的存储单元的大小是不相同的,当分辨率越大时,图像存储时所占用的空间越大,即当视频流的分辨率越大时,每个缓存单元的大小越大。在本实施例中,由于视频流中每帧图像的分辨率相同,因此,每个缓存单元的大小可以为相同的。
具体的根据分辨率计算每个缓存单元的大小的方法可以从现有技术中获取,此处不再赘述。
在获取每个缓存空间的大小之后,分配连续的缓存空间包括:根据其他模块处理从缓存空间中获取数据的速度来确定待分配缓存单元的数量,根据所述待分配缓存单元的数量以及每个缓存空间的大小确定待分配的连续缓存空间的大小,根据所述缓存空间的大小选取缓存空间中连续的缓存空间为存储接收所述视频流时的连续缓存空间。
在本实施例中,所分配的连续缓存空间可以为缓存空间中若干个连续的缓存单元。
在确定要用于存储接收视频流时的连续缓存空间之后,根据取地址指令获取该连续缓存空间的起始地址,该连续缓存空间的起始地址即为若干个连续的缓存单元中第一个缓存单元的地址,然后根据该连续缓存空间的起始地址以及每个缓存单元的大小可以确定第一个缓存单元的结束地址,进而可以确定第二缓存单元的起始地址,以此类推,可以确定连续缓存空间中每个缓存单元的起始地址。
在本实施例中,通过分配连续的存储空间,可以在存储接收到的视频数据时,可以节省存储资源,提高存储空间的利用率。
一种优选实施例中,所述数据结构为循环链表,在循环链表中,每个节点中都包含指向下一个节点的指针域,且最后一个节点的指针域指向头节点。在视频传输接口初始化时,将存储视频数据的每个缓存单元的缓存地址存储在循环链表中。则在进行视频数据保存时,可以依次快速的获取循环链表内保存的缓存地址用于存储接收到的视频数据。
例如,若缓存中包含十个缓存单元,十个缓存单元的缓存地址依次存放在循环链表中,且在传输视频流时以单帧图像进行传输(即接收到的视频数据都为单帧图像),则在获取到第一帧图像时,获取循环链表中第一个节点中存储的缓存地址,若接收到第二帧图像时,获取循环链表中第二个节点中存储的缓存地址,若接收到第十帧图像时,获取循环链表中第十个节点中存储的缓存地址,在接收到十一帧图像时,再获取第一个节点中存储的缓存地址,在接收到第十二帧图像时,再获取第二个节点中存储的缓存地址。当在缓存单元中存储数据时,当从一个缓存单元存储至第十个缓存单元过程中,较早时间存储数据的缓存单元(如第一存储单元)在其他处理模块(如图像处理芯片)从缓存单元中获取数据之后能够被较早的释放,由被占用存储单元变为空闲存储单元,因此可以快速地依次根据循环链表中的缓存地址对所接收到的视频数据进行保存。
保存模块230,用于根据所述缓存地址将所述视频数据保存在所述缓存单元。
在本实施例中,存储在缓存空间的视频数据可以供其他处理模块(如图处理芯片)获取。
进一步的,在本发明另一实施例中,所述装置还包括提醒模块,所述提醒模块用于:
若在接收到所述视频数据之前存在已接收视频数据,根据所述缓存地址将所述视频数据保存在所述缓存单元之前,判断所述视频数据与所述已接收视频数据是否连续;
若所述视频数据与所述已接收视频数据不连续,发送数据丢失提醒。
所述已接收视频数据是传输的视频流之中在所述视频数据之前的数据。当接收到的所述视频数据不为传输开始时的第一帧数据时,可以确定在接收到所述视频数据之前存在已接收视频数据。
本实施例中,判断接收到的视频数据与已接收视频数据是否连续包括:从已接收视频数据中获取所述视频数据的前一帧视频数据,判断所述视频与所述视频的前一帧视频数据是否连续。
当接收到的视频数据与已接收视频数据不连续时,可以通过向用户发送数据丢失提醒消息。
在本发明另一实施例中,若所述视频数据与所述已接收视频数据连续,则执行所述根据所述缓存地址将所述视频数据保存在所述缓存单元的操作。
通过本实施例对接收到的视频数据与已接收视频数据是否连续进行判断,可以在视频流传输过程中出现数据丢失时,及时的提醒用户,避免视频流传输完之后要查找是哪些数据丢失时无法快速丢失数据的问题。
可选的,在本发明另一实施例中,所述提醒模块判断所述视频数据与所述已接收视频数据是否连续包括:
获取所述视频数据的帧号以及所述已接收视频数据的帧号;
判断所述视频数据的帧号与所述已接收视频数据的帧号是否连续;
若所述视频数据的帧号与所述已接收视频数据的帧号连续,确定所述视频数据与所述已接收视频数据连续。
在本实施例中,通过视频传输接口中用于获取视频数据状态的模块获取数据的帧头的信息,进而进行视频数据的保存。
因此,可通过视频传输接口中用于获取视频数据状态的模块在获取到的视频数据的帧头中添加帧号,进而在保存视频数据时通过获取帧头中的帧号来判断接收到的视频数据与已接收视频数据是否连续。
例如,接收到的视频数据的帧头中帧号为7,若所接收到的视频数据的前一帧视频数据的帧头中帧号为6,则确定视频数据与已接收视频数据连续;若所接收到的视频数据的前一帧视频数据的帧头中帧号为5,则确定视频数据与已接收视频数据不连续。
进一步地,在本发明另一个实施例中,还提醒模块还可以用于对所接收到的视频数据的图像质量进行检测。具体的,所述提醒模块还用于:
判断所述视频数据是否存在异常;
若所述视频数据存在异常,发送存在异常视频数据的提醒。
本实施例中对接收到的视频数据的图像质量进行检测的步骤可以在将所述视频数据保存在缓存空间之前执行,也可以在将所述视频数据保存在缓存空间之后执行。
判断视频数据是否存在异常是指判断视频数据所表示的图像是否存在异常。
本实施例通过对视频数据是否存在异常进行检测,获取接收到的视频数据的质量,能够对视频流中哪些视频数据为异常哪些视频数据为正常进行甄别,避免在获取到视频数据之后无法知晓是哪一帧视频质量不高。
具体的,可以通过以下方面对视频数据的图像质量进行判断。所述提醒模块判断所述视频数据是否存在异常包括:
判断所述视频数据表示的图像是否存在溢出;或者
判断所述视频数据表示的图像是否存在行出错;或者
判断所述视频数据表示的图像是否存在列出错;
或者它们的组合。
通常,当传输视频数据的速率与接收视频数据的速率不一致时,可能会导致视频数据的溢出,溢出是指用于存储某一帧视频数据的缓存单元不足够存储该帧视频数据时,则确定视频数据表示的图像存在溢出。具体的,图像的溢出可以包括高溢出和宽溢出。
同样的,当传输视频的过程中因传输视频数据的速率与接收视频数据的速率不一致时,也可能存在视频数据表示的图像存在行出错或者是列出错。
在本实施例中,可以预先通过视频传输接口中用于获取视频数据状态的模块对接收到的视频数据所表示的图像是否存在溢出、是否存在行出错以及是否存在高出错进行判断,进而将判断的结果作为视频数据的状态信息保存在该视频数据的帧头中。因此,可以通过获取帧头中视频数据的状态信息来判断视频数据所表示的图像是否存在溢出、是否存在高出错以及是否存在行出错。
在本发明另一实施例中,当视频数据存在异常时,向其他处理模块(如图像处理芯片)发送不对该视频数据进行处理(例如图像识别、图像比对等)的消息,避免其他处理模块对图像质量不高的视频数据进行处理,有利于提高基于接收到的视频数据进行图像处理时的图像处理质量。
本发明实施例通过视频传输接口接收传输的视频流之中的视频数据;获取保存所述视频数据的缓存单元的缓存地址,其中,所述缓存地址在所述视频传输接口初始化时存储在数据结构中;根据所述缓存地址将所述视频数据保存在所述缓存单元。由于在视频传输接口初始化时就将保存视频数据的缓存单元的缓存地址进行了存储,因此,在接收到传输的视频流之中的视频数据时,无论接收到的视频数据为几帧图像,都可以直接获取存储视频数据的缓存地址,进而将视频数据进行存放,不需要在每一帧图像存储在缓存单元之后再去计算并分发存储下一帧的图像的缓存地址,缩短接收到视频数据至保存视频数据之间等待地址分配的时间,避免接收到的视频数据来不及处理的问题,进而减少由于视频数据来不及处理导致的响应不及时以及丢帧问题,从而实现减少视频流传输时视频数据丢失的问题,提高视频传输的质量的目的。
请参照图3,图3是本发明实施例提供的电子设备11的示意图。所述电子设备11包括存储器20、处理器30以及存储在所述存储器20中并可在所述处理器30上运行的计算机程序40,例如视频数据传输程序。所述处理器30执行所述计算机程序40时实现上述视频数据传输方法实施例中的步骤,例如图1所示的步骤S101~S103。或者,所述处理器30执行所述计算机程序40时实现上述装置实施例中各模块/单元的功能,例如模块210~230。
示例性的,所述计算机程序40可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器20中,并由所述处理器30执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序40在所述电子装置11中的执行过程。例如,所述计算机程序40可以被分割成图2中的接收模块210、获取模块220、保存模块230,各模块具体功能参见前述实施例。
所述电子设备11可以是芯片、摄像头、桌上型计算机、笔记本电脑、掌上电脑及云端服务器等计算机设备。本领域技术人员可以理解,所述示意图3仅仅是电子设备11的示例,并不构成对电子设备11的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述电子设备11还可以包括输入输出设备、网络接入设备、总线等。
所称处理器30可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器30也可以是任何常规的处理器等,所述处理器30是所述电子设备11的控制中心,利用各种接口和线路连接整个电子设备11的各个部分。
所述存储器20可用于存储所述计算机程序40和/或模块/单元,所述处理器30通过运行或执行存储在所述存储器20内的计算机程序和/或模块/单元,以及调用存储在存储器20内的数据,实现所述电子设备11的各种功能。所述存储器20可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作装置、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据电子设备11的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器20可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
所述电子设备11集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
在本发明所提供的几个实施例中,应该理解到,所揭露的方法和装置,也可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。
Claims (10)
1.一种视频数据传输方法,其特征在于,所述方法包括:
通过视频传输接口接收传输的视频流之中的视频数据;
获取保存所述视频数据的缓存单元的缓存地址,其中,所述缓存地址在所述视频传输接口初始化时存储在数据结构中;
根据所述缓存地址将所述视频数据保存在所述缓存单元。
2.如权利要求1所述的视频数据传输方法,其特征在于,所述通过视频传输接口接收传输的视频流之中的视频数据之前,所述方法还包括:
获取所述视频流的分辨率;
根据所述视频流的分辨率确定每个缓存单元的大小,以及分配用于存储接收所述视频流时的连续缓存空间;
根据所述连续缓存空间的起始地址以及所述连续缓存空间中每个缓存单元的大小确定所述连续缓存空间中每个缓存单元的起始地址;
将所述连续缓存空间中每个缓存单元的起始地址存储至所述数据结构。
3.如权利要求1所述的视频数据传输方法,其特征在于,所述根据所述缓存地址将所述视频数据保存在所述缓存单元之前,所述方法还包括:
若在接收到所述视频数据之前存在已接收视频数据,判断所述视频数据与所述已接收视频数据是否连续;
若所述视频数据与所述已接收视频数据不连续,发送数据丢失提醒。
4.如权利要求3所述的视频数据传输方法,其特征在于,所述判断所述视频数据与所述已接收视频数据是否连续包括:
获取所述视频数据的帧号以及所述已接收视频数据的帧号;
判断所述视频数据的帧号与所述已接收视频数据的帧号是否连续;
若所述视频数据的帧号与所述已接收视频数据的帧号连续,确定所述视频数据与所述已接收视频数据连续。
5.如权利要求1至4中任一项所述的视频数据传输方法,其特征在于,所述数据结构为循环链表。
6.如权利要求1至4中任一项所述的视频数据传输方法,其特征在于,所述方法还包括:
判断所述视频数据是否存在异常;
若所述视频数据存在异常,发送存在异常视频数据的提醒。
7.如权利要求6所述的视频数据传输方法,其特征在于,所述判断所述视频数据是否存在异常包括:
判断所述视频数据表示的图像是否存在溢出;或者
判断所述视频数据表示的图像是否存在行出错;或者
判断所述视频数据表示的图像是否存在列出错;
或者它们的组合。
8.一种视频数据传输装置,其特征在于,所述装置包括:
接收模块,用于通过视频传输接口接收传输的视频流之中的视频数据;
获取模块,用于获取保存所述视频数据的缓存单元的缓存地址,其中,所述缓存地址在所述视频传输接口初始化时存储在数据结构中;
保存模块,用于根据所述缓存地址将所述视频数据保存在所述缓存单元。
9.一种电子设备,其特征在于,所述电子设备包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如权利要求1-7中任意一项所述视频数据传输方法。
10.一种计算机可读存储介质,其上存储有计算机指令,其特征在于:所述计算机指令被处理器执行时实现如权利要求1-7中任意一项所述视频数据传输方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811592886.8A CN109743521B (zh) | 2018-12-25 | 2018-12-25 | 视频数据传输方法、装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811592886.8A CN109743521B (zh) | 2018-12-25 | 2018-12-25 | 视频数据传输方法、装置、电子设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109743521A true CN109743521A (zh) | 2019-05-10 |
CN109743521B CN109743521B (zh) | 2021-10-08 |
Family
ID=66359775
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811592886.8A Active CN109743521B (zh) | 2018-12-25 | 2018-12-25 | 视频数据传输方法、装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109743521B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101389036A (zh) * | 2008-10-14 | 2009-03-18 | 广东威创视讯科技股份有限公司 | 一种适用于视频会议的纠错装置及其方法 |
CN101446932A (zh) * | 2008-12-24 | 2009-06-03 | 北京中星微电子有限公司 | 一种音频数据传输方法及设备 |
CN101556791A (zh) * | 2009-05-19 | 2009-10-14 | 武汉长江通信产业集团股份有限公司 | DSP视频捕获驱动YCbCr数据格式转换处理方法 |
CN102025712A (zh) * | 2009-09-15 | 2011-04-20 | 上海华为技术有限公司 | 一种数据更新方法、装置和系统 |
CN102270234A (zh) * | 2011-08-01 | 2011-12-07 | 北京航空航天大学 | 一种图像搜索方法及其搜索引擎 |
CN104010214A (zh) * | 2014-06-05 | 2014-08-27 | 深圳如果技术有限公司 | 一种共享视频的方法及共享端、接收端 |
CN105611291A (zh) * | 2015-12-31 | 2016-05-25 | 北京奇艺世纪科技有限公司 | 在视频帧中加入标记信息及检测丢帧的方法和装置 |
CN106127673A (zh) * | 2016-07-19 | 2016-11-16 | 腾讯科技(深圳)有限公司 | 一种视频处理方法、装置及计算机设备 |
-
2018
- 2018-12-25 CN CN201811592886.8A patent/CN109743521B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101389036A (zh) * | 2008-10-14 | 2009-03-18 | 广东威创视讯科技股份有限公司 | 一种适用于视频会议的纠错装置及其方法 |
CN101446932A (zh) * | 2008-12-24 | 2009-06-03 | 北京中星微电子有限公司 | 一种音频数据传输方法及设备 |
CN101556791A (zh) * | 2009-05-19 | 2009-10-14 | 武汉长江通信产业集团股份有限公司 | DSP视频捕获驱动YCbCr数据格式转换处理方法 |
CN102025712A (zh) * | 2009-09-15 | 2011-04-20 | 上海华为技术有限公司 | 一种数据更新方法、装置和系统 |
CN102270234A (zh) * | 2011-08-01 | 2011-12-07 | 北京航空航天大学 | 一种图像搜索方法及其搜索引擎 |
CN104010214A (zh) * | 2014-06-05 | 2014-08-27 | 深圳如果技术有限公司 | 一种共享视频的方法及共享端、接收端 |
CN105611291A (zh) * | 2015-12-31 | 2016-05-25 | 北京奇艺世纪科技有限公司 | 在视频帧中加入标记信息及检测丢帧的方法和装置 |
CN106127673A (zh) * | 2016-07-19 | 2016-11-16 | 腾讯科技(深圳)有限公司 | 一种视频处理方法、装置及计算机设备 |
Also Published As
Publication number | Publication date |
---|---|
CN109743521B (zh) | 2021-10-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7505410B2 (en) | Method and apparatus to support efficient check-point and role-back operations for flow-controlled queues in network devices | |
CN109889576B (zh) | 一种基于博弈论的移动云游戏资源优化方法 | |
CN111405296B (zh) | 视频数据传输方法、视频数据处理方法、装置及电子设备 | |
CN112492372B (zh) | 评论消息的显示方法、装置、电子设备、系统及存储介质 | |
CN112132022B (zh) | 人脸抓拍架构及其人脸抓拍方法、装置、设备及存储介质 | |
CN108200444B (zh) | 一种视频直播的方法、装置和系统 | |
CN113179327B (zh) | 基于大容量内存的高并发协议栈卸载方法、设备、介质 | |
CN111240564A (zh) | 一种素材展示方法、装置、电子设备及存储介质 | |
CN115794317B (zh) | 一种基于虚拟机的处理方法、装置、设备及介质 | |
CN108259998A (zh) | 播放器及播放控制方法、装置、电子设备及播放系统 | |
CN108668138A (zh) | 一种视频下载方法以及用户终端 | |
CN114567792A (zh) | 虚拟资源的展示方法、装置、设备、服务器及存储介质 | |
CN108984321A (zh) | 一种移动终端及其进程间通信的限制方法、存储介质 | |
CN109743521A (zh) | 视频数据传输方法、装置、电子设备和存储介质 | |
CN115941907A (zh) | 一种rtp数据包发送方法、系统、电子设备及存储介质 | |
CN116166421A (zh) | 分布式训练任务的资源调度方法及其设备 | |
CN112911390A (zh) | 一种视频数据的播放方法及终端设备 | |
US20230291957A1 (en) | Device and method for displaying video | |
CN111970572A (zh) | 一种智能电视上控制视频遮挡图的方法 | |
CN112887742A (zh) | 直播流处理方法、装置、设备及存储介质 | |
CN111240845A (zh) | 一种数据处理方法、装置和存储介质 | |
CN114546279B (zh) | Io请求预测方法、装置、存储节点及可读存储介质 | |
CN114071078B (zh) | 视频数据的处理方法、电子设备及存储介质 | |
US20220385713A1 (en) | Media Service Processing Method and Electronic Device | |
US20230195546A1 (en) | Message Management Method and Apparatus, and Serverless System |
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 |