拼装视频帧的优化方法、装置、可读存储介质及系统与流程

文档序号:18739649发布日期:2019-09-21 01:37阅读:169来源:国知局
拼装视频帧的优化方法、装置、可读存储介质及系统与流程

本发明涉及视频帧的拼接技术领域,尤其涉及一种拼装视频帧的优化方法、调试终端、电视终端及系统。



背景技术:

ATSC3.0标准中有使用MMTP协议作为传输音视频的2种方式之一(另一种是ROUTE协议)。

MMTP传输音视频的数据结构称之为MPU(media processing unit,多媒体处理单元),我们需要解开MMTP的协议头并将多个数据包(每一个数据包通常只能携带一部分的有效数据)拼装成一个完整的MPU送给播放器进行播放。

通常的拼装的设计是使用一个缓冲区,每解析出一个有效数据就填充到该缓冲区,当解析完每一个MPU的最后一个数据之后(MMTP的数据包头有FT字段可以判断当前包是属于某个完整帧的第一个包还是最后一个包),将缓冲区的内容排序,然后发送给播放器。这样的设计方式有一个问题,因为实际码流中,数据包来的顺序并非完全按照我们MPU的数据顺序来的(MPU数据可以分成三段,ftyp段,moof段,mdat段,正常MPU格式是按此顺序排列),实际码流中这三段中的moof段是在mdat段之后来的,所以使用单个缓冲区拼装数据我们需要将数据插入到前面,而插入数据需要进行额外的内存分配和拷贝,是一个耗时操作,降低了拼装效率。

上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。



技术实现要素:

本发明的主要目的在于提供一种拼装视频帧的优化方法、装置、可读存储介质及系统,旨在解决现有技术的音视频数据拼接时,使用一个缓冲区缓存解析的有效数据并将有效数据拼接为完整数据,如此操作需要进行额外的内存分配及拷贝操作,影响了音视频拼接效率的技术问题。

为实现上述目的,本发明提供一种拼装视频帧的优化方法,包括以下内容:

接收目标待拼装数据解析的有效数据,确认所述有效数据所属的数据段,其中,所述数据段包括ftyp段、moov段及mdat段;

根据所述有效数据所属的数据段,将所述有效数据缓存至对应的预设数据缓存区域;

在确认所述有效数据解析完成后,将缓存在所述预设数据缓存区域的有效数据复制至数据拼装区域,以将所述有效数据拼装为完整数据。

优选地,所述根据所述有效数据所属的数据段,将所述有效数据缓存至对应的预设数据缓存区域的步骤,还包括:

若所述有效数据所属的数据段为ftyp段或moov段,则将所述有效数据缓存至第一预设数据缓存区域;

若所述有效数据所属的数据段为mdat段,则将所述有效数据缓存至第二预设数据缓存区域。

优选地,所述在确认所述有效数据解析完成后,将缓存在所述预设数据缓存区域的有效数据复制至数据拼装区域,以将所述有效数据拼装为完整数据的步骤,还包括:

清空所述预设数据缓存区域缓存的有效数据。

优选地,所述在确认所述有效数据解析完成后,将缓存在所述预设数据缓存区域的有效数据复制至数据拼装区域,以将所述有效数据拼装为完整数据的步骤,还包括:

确认所述有效数据所在的目标待拼装数据是否解析完成;

在确认所述目标待拼装数据解析完成时,确认所述有效数据解析完成。

优选地,所述确认所述有效数据所在的目标待拼装数据是否解析完成的步骤,还包括:

读取所述目标待拼装数据中数据包的目标属性信息,以所述目标属性信息确定所述目标待拼装数据是否接收完成;

在确认所述目标属性信息为预设信息时,确认所述目标待拼装数据接收完成。

优选地,所述拼装视频帧的优化方法,还包括:

在接收到数据拼装指令时,接收所述数据拼装指令对应的目标待拼装数据;

为所述目标待拼装数据构建预设数据缓存区域,所述预设数据缓存区域包括第一预设数据缓存区域及第二预设数据缓存区域。

优选地,所述为所述目标待拼装数据构建预设数据缓存区域的步骤,还包括:

确认所述目标待拼装数据的数据量;

根据已确认的所述数据量构建所述预设数据缓存区域。

此外,为实现上述目的,本发明还提供一种拼装视频帧的优化装置,所述拼装视频帧的优化装置包括:存储器、处理器以及存储在所述存储器上并可以在所述处理器上运行的拼装视频帧的优化程序,所述拼装视频帧的优化程序被处理器执行时实现如上所述的拼装视频帧的优化方法的步骤。

本发明还提供一种可读存储介质,所述可读存储介质包括:存储器、处理器以及存储在所述存储器上并可以在所述处理器上运行的拼装视频帧的优化程序,所述拼装视频帧的优化程序被处理器执行时实现如上所述的拼装视频帧的优化方法的步骤。

本发明还提供一种拼装视频帧的优化系统,所述拼装视频帧的优化系统在执行时实现如上所述的调试终端或如上所述的电视终端的步骤。

本发明提出的一种拼装视频帧的优化方法,在当前有数据拼装需求时,接收待拼装数据的数据包,并解析所述数据包,如此,接收目标待拼装数据解析的有效数据,确认所述有效数据所属的数据段,其中,所述数据段包括ftyp段、moov段及mdat段;根据所述有效数据所属的数据段,将所述有效数据缓存至对应的预设数据缓存区域;在确认所述有效数据解析完成后,将缓存在所述预设数据缓存区域的有效数据复制至数据拼装区域,以将所述有效数据拼装为完整数据。本发明通过应用两个缓存区域分别安置不同数据段的有效数据,使得在有效数据缓存完后,统一按顺序将两个缓存区域的有效数据复制至拼装数据进行拼装,如此,将有效数据的缓存及拼装分为两个步骤进行,避免分配内存进行数据顺序排列也减少了出错效率,进而实现了提高音视频帧的拼装效率的有益效果。

附图说明

图1是本发明实施例方案涉及的硬件运行环境的终端\装置结构示意图;

图2为本发明拼装视频帧的优化方法第一实施例的流程示意图;

图3为本发明拼装视频帧的优化方法第二实施例的流程示意图。

本发明目的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明实施例的主要解决方案是:接收目标待拼装数据解析的有效数据,确认所述有效数据所属的数据段,其中,所述数据段包括ftyp段、moov段及mdat段;根据所述有效数据所属的数据段,将所述有效数据缓存至对应的预设数据缓存区域;在确认所述有效数据解析完成后,将缓存在所述预设数据缓存区域的有效数据复制至数据拼装区域,以将所述有效数据拼装为完整数据。

由于现有技术的音视频数据拼接时,使用一个缓冲区缓存解析的有效数据并将有效数据拼接为完整数据,如此操作需要进行额外的内存分配及拷贝操作,影响了音视频拼接效率的技术问题。

本发明提供一种解决方案,通过应用两个缓存区域分别安置不同数据段的有效数据,使得在有效数据缓存完后,统一按顺序将两个缓存区域的有效数据复制至拼装数据进行拼装,如此,将有效数据的缓存及拼装分为两个步骤进行,避免分配内存进行数据顺序排列也减少了出错效率,进而实现了提高音视频帧的拼装效率的有益效果。

如图1所示,图1是本发明实施例方案涉及的硬件运行环境的终端结构示意图。

本发明实施例终端可以是PC,也可以是智能手机、平板电脑、电子书阅读器,便携计算机等具有多媒体播放功能的可移动式或不可移动式终端设备。

如图1所示,该终端可以包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。

本领域技术人员可以理解,图1中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及拼装视频帧的优化应用程序。

在图1所示的终端中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的拼装视频帧的优化应用程序,并执行以下操作:

接收目标待拼装数据解析的有效数据,确认所述有效数据所属的数据段,其中,所述数据段包括ftyp段、moov段及mdat段;

根据所述有效数据所属的数据段,将所述有效数据缓存至对应的预设数据缓存区域;

在确认所述有效数据解析完成后,将缓存在所述预设数据缓存区域的有效数据复制至数据拼装区域,以将所述有效数据拼装为完整数据。

进一步地,处理器1001可以调用存储器1005中存储的拼装视频帧的优化应用程序,还执行以下操作:

若所述有效数据所属的数据段为ftyp段或moov段,则将所述有效数据缓存至第一预设数据缓存区域;

若所述有效数据所属的数据段为mdat段,则将所述有效数据缓存至第二预设数据缓存区域。

进一步地,处理器1001可以调用存储器1005中存储的拼装视频帧的优化应用程序,还执行以下操作:

清空所述预设数据缓存区域缓存的有效数据。

进一步地,处理器1001可以调用存储器1005中存储的拼装视频帧的优化应用程序,还执行以下操作:

确认所述有效数据所在的目标待拼装数据是否解析完成;

在确认所述目标待拼装数据解析完成时,确认所述有效数据解析完成。

进一步地,处理器1001可以调用存储器1005中存储的拼装视频帧的优化应用程序,还执行以下操作:

读取所述目标待拼装数据中数据包的目标属性信息,以所述目标属性信息确定所述目标待拼装数据是否接收完成;

在确认所述目标属性信息为预设信息时,确认所述目标待拼装数据接收完成。

进一步地,处理器1001可以调用存储器1005中存储的拼装视频帧的优化应用程序,还执行以下操作:

在接收到数据拼装指令时,接收所述数据拼装指令对应的目标待拼装数据;

为所述目标待拼装数据构建预设数据缓存区域,所述预设数据缓存区域包括第一预设数据缓存区域及第二预设数据缓存区域。

进一步地,处理器1001可以调用存储器1005中存储的拼装视频帧的优化应用程序,还执行以下操作:

确认所述目标待拼装数据的数据量;

根据已确认的所述数据量构建所述预设数据缓存区域。

参照图2,图2为本发明拼装视频帧的优化方法第一实施例的流程示意图,所述拼装视频帧的优化方法包括:

步骤S10,接收目标待拼装数据解析的有效数据,确认所述有效数据所属的数据段,其中,所述数据段包括ftyp段、moov段及mdat段;

基于当前的音视频播放需求,接收当前需拼装并播放的目标待拼装数据,所述目标待拼装数据可能来自连接的网络传输,基于网络传输的数据传输状态,其音视频拼接的操作以MPU为拼接单位,因此,其目标待拼装数据的结构定义为MPU(media processing unit,多媒体处理单元),如此,根据传输到的目标待拼装数据,将接收到的目标待拼装数据进行数据解析,以将所述目标待拼装数据解析为可播放的有效数据并拼装为完整的音频帧后进行播放操作。另外,在传输目标待拼装数据时,其单个目标待拼装数据以数据包的形式进行传输,即,一个目标待拼装数据包括多个数据包,因此,在解析所述目标待拼装数据时,通过解析所述目标待拼装数据的数据包得到有效数据,进一步的,根据自所述目标待拼装数据中数据包解析到的有效数据,确认所述有效数据所述的数据段,在实际应用中,经由数据包解析出来的有效数据包括ftyp段、moov段及mdat段的数据,而不同数据段的数据所表示的对应有效数据在拼装是的位置也不一样,其数据段的拼装位置前后顺序为ftyp、moov、mdat。而确认有效数据所属的数据段的方式,可通过读取所述有效数据的数据内容决定。

步骤S20,根据所述有效数据所属的数据段,将所述有效数据缓存至对应的预设数据缓存区域;

在接收到目标待拼装数据的数据包解析到的有效数据后,确认所述有效数据所属的数据段,根据已确认的所述所属数据段,将所述有效数据缓存至对应的预设数据缓存区域,基于已设定的预设数据缓存区域,其不同的数据缓存区域分别用来承载不同数据段的有效数据,在实际应用中,考虑到数据拼装的效率,将预设数据缓存区域分为两个,其一定义为第一预设数据缓存区域(head buffer),用来缓存ftyp、moov段的有效数据,其二定义为第二预设数据缓存区域(data buffer),用来缓存mdat段数据。因此,基于已确认的解析到的有效数据所述的数据段,确认缓存的预设数据缓存区域,即所述根据所述有效数据所属的数据段,将所述有效数据缓存至对应的预设数据缓存区域的步骤,还包括:

若所述有效数据所属的数据段为ftyp段或moov段,则将所述有效数据缓存至第一预设数据缓存区域;

若所述有效数据所属的数据段为mdat段,则将所述有效数据缓存至第二预设数据缓存区域。

根据解析到的有效数据,确认所述有效数据所属的数据段,若所述有效数据所属的数据段为ftyp段或者moov段时,将解析到的所述有效数据缓存至第一预设数据缓存区域(head buffer);若所述有效数据所属的数据段为mdat端,则将所述有效数据缓存至第二预设数据缓存区域(data buffer)。

步骤S30,在确认所述有效数据解析完成后,将缓存在所述预设数据缓存区域的有效数据复制至数据拼装区域,以将所述有效数据拼装为完整数据。

基于当前有效数据的解析操作,将解析到的有效数据根据所属的数据段缓存至对应的预设数据缓存区域。在确认当前的有效数据解析完成后,确认当前有效数据的缓存操作结束,考虑到有效数据的拼装,将缓存至预设数据缓存区域的有效数据复制至对应的数据拼装数据,使得有效数据在数据拼装区域进行拼装,以将有效数据拼装为完整数据拼装后的有效数据。进一步的,在将预设数据缓存区域的有效数据复制至数据拼装区域时,可根据预设数据缓存区域中缓存的有效数据的所属数据段,以先后顺序分别进行复制操作,例如,第一预设数据缓存区域缓存ftyp段、moov段数据,则第一预设数据缓存区域先复制至数据拼装区域;其复制操作的先后顺序,可根据当前的具体拼装操作设定。另外,考虑到预设数据缓存区域的内存,在将有效数据赋值至拼装区域后,还需清空所述预设数据缓存区域中缓存的有效数据,以空置所述预设数据存储区域的内容,即所述在确认所述有效数据解析完成后,将缓存在所述预设数据缓存区域的有效数据复制至数据拼装区域,以将所述有效数据拼装为完整数据的步骤,还包括:

清空所述预设数据缓存区域缓存的有效数据。

其中,在确认当前有效数据解析完成,并将解析完成的有效数据自预设数据缓存区域复制至数据拼装区域时,其确认当前有效数据解析完成的确认方式,需通过解析操作确认当前的有效数据是否解析完成,如此,所述在确认所述有效数据解析完成后,将缓存在所述预设数据缓存区域的有效数据复制至数据拼装区域,以将所述有效数据拼装为完整数据的步骤,还包括:

确认所述有效数据所在的目标待拼装数据是否解析完成;

在确认所述目标待拼装数据解析完成时,确认所述有效数据解析完成。根据当前解析的目标待拼装数据,确认所述目标待拼装数据是否解析完成,由于所述目标待拼装数据在传输过程中,以数据包的形式进行传输操作,因此,在解析所述目标待拼装数据时,以解析数据包的形式解析所述目标待拼装数据,因此,确认所述目标待拼装数据的数据包解析完成时,确认所述目标待拼装数据解析完成,即基于当前的目标待拼装数据的有效数据解析完成。进一步的,由于目标待拼装数据的以数据包形式为单位传输,即接收到的所述目标待拼装数据的形式为数据包,在确认当前的数据包是否解析完成的确认过程中,还需确认当前数据包所在的目标待拼接数据是否传输完成,如此,基于当前有效数据所在目标待拼接数据,所述确认所述有效数据所在的目标待拼装数据是否解析完成的步骤,还包括:

读取所述目标待拼装数据中数据包的目标属性信息,以所述目标属性信息确定所述目标待拼装数据是否接收完成;

在确认所述目标属性信息为预设信息时,确认所述目标待拼装数据接收完成。

根据接收到的目标待拼装数据的数据包,读取所述数据包的属性信息,根据所述属性信息确认所述目标待拼装数据的数据包是否传输完成,在实际应用中,目标待拼接数据以MPU为拼接单位,即一个目标待拼接数据即为一个MPU,而MPU中包括多个数据包,因此,MPU在以数据包为传输单位进行传输时,读取所述数据包的属性信息已确认当前MPU是否传输完成,一般来说,确认MPU是否传输完成可通过确认当前的数据包是否为MPU的最终数据包,而最终数据包的属性信息中已标记所述数据包的顺序,如此,在确认目标数据包的目标属性信息为预设信息时,即可确认所述目标待拼接数据传输完成,而数据包在接收到之后立即进行数据解析操作,因此,在当前解析到的数据包为目标待拼接数据(MPU)的最终数据包时,解析完成所述数据包后,即可确认当前有效数据解析完成。

本实施例中,通过应用两个缓存区域分别安置不同数据段的有效数据,使得在有效数据缓存完后,统一按顺序将两个缓存区域的有效数据复制至拼装数据进行拼装,如此,将有效数据的缓存及拼装分为两个步骤进行,避免分配内存进行数据顺序排列也减少了出错效率,进而实现了提高音视频帧的拼装效率的有益效果。

进一步的,参照图3,图3为本发明拼装视频帧的优化方法第二实施例的流程示意图,基于上述所示的第一实施例,所述拼装视频帧的优化方法,还包括:

步骤S40,在接收到数据拼装指令时,接收所述数据拼装指令对应的目标待拼装数据;

步骤S50,为所述目标待拼装数据构建预设数据缓存区域,所述预设数据缓存区域包括第一预设数据缓存区域及第二预设数据缓存区域。

本实施例中,基于当前的数据播放需求,接收传输来的待拼装数据,在实际应用中,一般以播放音视频的控制指令确认当前需进行数据拼装,如此,可将音视频的播放指令确认为数据拼装指令。基于此种情况,在接收到数据拼装指令时,接收所述数据拼装指令对应的目标待拼装数据,目标待拼装数据定义为MPU,即当前的拼装指令以MPU为拼装单位,在接收到基于当前数据拼装指令对应的目标待拼装数据时,为提高数据拼装效率,为接收到的目标待拼装数据构建预设数据缓存区域,由于预设数据缓存区域根据解析的有效数据所属数据段的不同分为两个,为最大限度的提高内存使用效率,需控制所述预设数据缓存区域的内存量,而所述内存量与接收到的所述待拼装数据的数量相关,因此,所述为所述目标待拼装数据构建预设数据缓存区域的步骤,还包括:

确认所述目标待拼装数据的数据量;

根据已确认的所述数据量构建所述预设数据缓存区域。

在接收到目标待拼装数据时,读取所述目标待拼装数据的数据信息,以所述数据信息确认所述目标待拼装数据的数据量,进而根据所述数据量的大小确定所述目标待拼装数据解析后有效数据的数据段的数据量,根据已确认的数据段的数据量构建缓存所述目标待拼接数据解析到的有效数据的预设数据缓存区域,其预设数据缓存区域的内存大小即为已确认的数据段的数据量。考虑到数据量的缓存,一般来说,预设数据缓存区域的内存需大于已确认的数据段的数据量,以避免有效数据存储内存不够,在实际应用中,构建所述预设数据缓存区域的内存初始大小可定义为2K。

此外,本发明实施例还提出一种可读存储介质,所述可读存储介质上存储有拼装视频帧的优化程序,所述拼装视频帧的优化程序被处理器执行时实现如下操作:

接收目标待拼装数据解析的有效数据,确认所述有效数据所属的数据段,其中,所述数据段包括ftyp段、moov段及mdat段;

根据所述有效数据所属的数据段,将所述有效数据缓存至对应的预设数据缓存区域;

在确认所述有效数据解析完成后,将缓存在所述预设数据缓存区域的有效数据复制至数据拼装区域,以将所述有效数据拼装为完整数据。

进一步地,所述拼装视频帧的优化程序被处理器执行时还实现如下操作:

若所述有效数据所属的数据段为ftyp段或moov段,则将所述有效数据缓存至第一预设数据缓存区域;

若所述有效数据所属的数据段为mdat段,则将所述有效数据缓存至第二预设数据缓存区域。

进一步地,所述拼装视频帧的优化程序被处理器执行时还实现如下操作:

清空所述预设数据缓存区域缓存的有效数据。

进一步地,所述拼装视频帧的优化程序被处理器执行时还实现如下操作:

确认所述有效数据所在的目标待拼装数据是否解析完成;

在确认所述目标待拼装数据解析完成时,确认所述有效数据解析完成。

进一步地,所述拼装视频帧的优化程序被处理器执行时还实现如下操作:

读取所述目标待拼装数据中数据包的目标属性信息,以所述目标属性信息确定所述目标待拼装数据是否接收完成;

在确认所述目标属性信息为预设信息时,确认所述目标待拼装数据接收完成。

进一步地,所述拼装视频帧的优化程序被处理器执行时还实现如下操作:

在接收到数据拼装指令时,接收所述数据拼装指令对应的目标待拼装数据;

为所述目标待拼装数据构建预设数据缓存区域,所述预设数据缓存区域包括第一预设数据缓存区域及第二预设数据缓存区域。

进一步地,所述拼装视频帧的优化程序被处理器执行时还实现如下操作:

确认所述目标待拼装数据的数据量;

根据已确认的所述数据量构建所述预设数据缓存区域。

本发明还提供一种拼装视频帧的优化系统,所述拼装视频帧的优化系统在执行时,实现如上所述的拼装视频帧的优化方法实施例的内容。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、药品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、药品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、药品或者系统中还存在另外的相同要素。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1