掌桥专利:专业的专利平台
掌桥专利
首页

多媒体帧的传输方法、装置和计算机可读存储介质

文献发布时间:2023-06-19 11:35:49


多媒体帧的传输方法、装置和计算机可读存储介质

技术领域

本公开涉及计算机技术领域,尤其涉及一种多媒体帧的传输方法、装置和计算机可读存储介质。

背景技术

在直播场景中,源服务器首先将直播数据流发送到内容分发网络(ContentDelivery Network,CDN),客户端通过访问CDN观看直播,明显提高了访问效率。

现有技术中,为了减少首屏时间,CDN中的边缘节点或者上层节点均会设置缓存器,缓存器对实时数据进行缓存,即缓存器中缓存的是最新的接收到的数据,当接收到客户端发送的播放请求之后,会先将缓存数据发送给客户端,从而,减少用户的首屏等待时间,同时,为了避免首屏花屏的现象,边缘节点或者上层节点在缓存时,以图像组(Group ofPicture,gop)为基础进行缓存,其中,gop的第一个多媒体帧为关键帧,从而,避免首屏花屏,提高用户体验。当边缘节点接收到客户端的播放请求之后,如果边缘节点没有命中,边缘节点则会向上层节点发送拉流请求,上层节点会先将缓存器中的多媒体帧发送给客户端,再继续发送实时接收到的多媒体帧,然而,当边缘节点和上层节点之间连接中断时,边缘节点会重新与上层节点建立连接,边缘节点再次向上层节点发送拉流请求,上层节点依然会先将缓存器中的多媒体帧发送给边缘节点,再继续发送实时接收到的多媒体帧,边缘节点将接收到多媒体帧继续发送给客户端,以使客户端进行播放。

然而,采用现有技术的方式,客户端可能会出现回播的现象,用户体验不高。

发明内容

为了解决上述技术问题,本公开提供了一种多媒体帧的传输方法、装置和计算机可读存储介质。

本公开第一方面提供一种多媒体帧的传输方法,包括:

向上层节点发送拉流请求,所述拉流请求中包含流标识,所述拉流请求用于请求获取所述流标识对应的多媒体帧,所述多媒体帧可以为音频帧或者视频帧;

接收所述上层节点发送的所述流标识对应的多媒体帧;

将接收到的多媒体帧与本地缓存中所述流标识对应的多媒体帧进行比对,直到获取第一多媒体帧,其中,所述第一多媒体帧与所述本地缓存中所述流标识对应的多媒体帧均不同;

向客户端发送所述第一多媒体帧以及之后接收到的多媒体帧,并从所述第一多媒体帧开始缓存。

可选的,所述将接收到的多媒体帧与本地缓存中所述流标识对应的多媒体帧进行比对,直到获取第一多媒体帧,包括:

将接收到的多媒体帧的属性信息与本地缓存中所述流标识对应的多媒体帧的属性信息进行初始比对,其中,所述属性信息包括:类型和大小;

若接收到的多媒体帧的属性信息与本地缓存中所述流标识对应的多媒体帧的属性信息均不相同,确定所述接收到的多媒体帧为第一多媒体帧;

若本地缓存中所述流标识对应的多媒体帧中存在至少一个候选多媒体帧,其中,所述候选多媒体帧的属性信息与接收到的多媒体帧的属性信息相同,将所述接收到的多媒体帧的数据内容分别与所述至少一个候选多媒体帧的数据内容进行再次比对,若接收到的多媒体帧的数据内容与所述至少一个候选多媒体帧的数据内容均不相同,确定所述接收到的多媒体帧为第一多媒体帧。

可选的,所述将所述接收到的多媒体帧的数据内容分别与所述至少一个候选多媒体帧的数据内容进行再次比对,包括:

将接收到的多媒体帧的部分的数据内容分别与所述至少一个候选多媒体帧的部分的数据内容进行再次比对,其中,所述接收到的多媒体帧的部分的数据内容相对于起始位置的偏移量与所述至少一个候选多媒体帧的部分的数据内容相对于起始位置的偏移量相同。

可选的,所述将所述接收到的多媒体帧的数据内容分别与所述至少一个候选多媒体帧的数据内容进行再次比对,若接收到的多媒体帧的数据内容与所述至少一个候选多媒体帧的数据内容均不相同,确定所述接收到的多媒体帧为第一多媒体帧,包括:

获取接收到的多媒体帧的第一第五版信息摘要算法MD5和所述至少一个候选多媒体帧分别对应的第二MD5;

若所述接收到的多媒体帧的第一MD5和所述至少一个候选多媒体帧分别对应的第二MD5均不相同,确定所述接收到的多媒体帧为第一多媒体帧。

可选的,所述多媒体帧包含帧序号;

所述将接收到的多媒体帧与本地缓存中所述流标识对应的多媒体帧进行比对,直到获取第一多媒体帧,包括:

将接收到的多媒体帧的帧序号与本地缓存中的最后一个多媒体帧的帧序号进行比对,直到获取到第一多媒体帧,其中,所述第一多媒体帧的帧序号大于所述本地缓存中的最后一个多媒体帧的帧序号。

可选的,所述多媒体帧包含时间戳;

所述将接收到的多媒体帧与本地缓存中所述流标识对应的多媒体帧进行比对,直到获取第一多媒体帧,包括:

将接收到的多媒体帧的时间戳与本地缓存中的最后一个多媒体帧的时间戳进行比对,直到获取到第一多媒体帧,其中,所述第一多媒体帧的时间戳晚于所述本地缓存中的最后一个多媒体帧的时间戳。

可选的,所述从所述第一多媒体帧开始缓存,包括:若所述第一多媒体帧为关键帧,则清空所述本地缓存中所述流标识对应的多媒体帧,从所述第一多媒体帧开始缓存;

若所述第一多媒体帧为非关键帧,则在所述本地缓存中所述流标识对应的多媒体帧的基础上,从所述第一多媒体帧开始缓存。

本公开第二方面提供一种多媒体帧的传输装置,包括:

发送模块,用于向上层节点发送拉流请求,所述拉流请求中包含流标识,所述拉流请求用于请求获取所述流标识对应的多媒体帧,所述多媒体帧为音频帧或者视频帧;

接收模块,用于接收所述上层节点发送的所述流标识对应的多媒体帧;

处理模块,用于将接收到的多媒体帧与本地缓存中所述流标识对应的多媒体帧进行比对,直到获取第一多媒体帧,其中,所述第一多媒体帧与所述本地缓存中所述流标识对应的多媒体帧均不同;

所述发送模块,还用于向客户端发送所述第一多媒体帧以及之后接收到的多媒体帧;

存储模块,用于从所述第一多媒体帧开始缓存。

可选的,所述处理模块具体用于将接收到的多媒体帧的属性信息与本地缓存中所述流标识对应的多媒体帧的属性信息进行初始比对,其中,所述属性信息包括:类型和大小;若接收到的多媒体帧的属性信息与本地缓存中所述流标识对应的多媒体帧的属性信息均不相同,确定所述接收到的多媒体帧为第一多媒体帧;若本地缓存中所述流标识对应的多媒体帧中存在至少一个候选多媒体帧,其中,所述候选多媒体帧的属性信息与接收到的多媒体帧的属性信息相同,将所述接收到的多媒体帧的数据内容分别与所述至少一个候选多媒体帧的数据内容进行再次比对,若接收到的多媒体帧的数据内容与所述至少一个候选多媒体帧的数据内容均不相同,确定所述接收到的多媒体帧为第一多媒体帧。

可选的,所述处理模块具体用于将接收到的多媒体帧的部分的数据内容分别与所述至少一个候选多媒体帧的部分的数据内容进行再次比对,其中,所述接收到的多媒体帧的部分的数据内容相对于起始位置的偏移量与所述至少一个候选多媒体帧的部分的数据内容相对于起始位置的偏移量相同。

可选的,所述处理模块具体用于获取接收到的多媒体帧的第一第五版信息摘要算法MD5和所述至少一个候选多媒体帧分别对应的第二MD5;若所述接收到的多媒体帧的第一MD5和所述至少一个候选多媒体帧分别对应的第二MD5均不相同,确定所述接收到的多媒体帧为第一多媒体帧。

可选的,所述多媒体帧包含帧序号;

所述处理模块具体用于将接收到的多媒体帧的帧序号与本地缓存中的最后一个多媒体帧的帧序号进行比对,直到获取到第一多媒体帧,其中,所述第一多媒体帧的帧序号大于所述本地缓存中的最后一个多媒体帧的帧序号。

可选的,所述多媒体帧包含时间戳;

所述处理模块具体用于将接收到的多媒体帧的时间戳与本地缓存中的最后一个多媒体帧的时间戳进行比对,直到获取到第一多媒体帧,其中,所述第一多媒体帧的时间戳晚于所述本地缓存中的最后一个多媒体帧的时间戳。

可选的,所述存储模块具体用于若所述第一多媒体帧为关键帧,则清空所述本地缓存中所述流标识对应的多媒体帧,从所述第一多媒体帧开始缓存;若所述第一多媒体帧为非关键帧,则在所述本地缓存中所述流标识对应的多媒体帧的基础上,从所述第一多媒体帧开始缓存。

本公开第三方面提供一种边缘节点,包括:处理器和存储器,所述处理器用于执行存储于所述存储器的计算机程序,所述计算机程序被处理器执行时实现第一方面所述的方法的步骤。

本公开第四方面提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现第一方面所述的方法的步骤。

本公开实施例提供的技术方案与现有技术相比具有如下优点:

通过边缘节点向上层节点发送拉流请求,接收上层节点发送的流标识对应的多媒体帧之后,将接收到的多媒体帧与本地缓存中所述流标识对应的多媒体帧进行比对,直到获取第一多媒体帧,向客户端发送所述第一多媒体帧以及之后接收到的多媒体帧,并从所述第一多媒体帧开始缓存,从而,避免将已经向客户端发送过的多媒体帧再次发送给客户端,避免客户端回播的现象,从而,提高用户体验。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。

为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本公开提供的直播的架构示意图;

图2为本公开提供的一种多媒体帧的传输方法的流程示意图;

图3为本公开提供的另一种多媒体帧的传输方法的流程示意图;

图4为本公开提供的另一种多媒体帧的传输方法的流程示意图;

图5为本公开提供的另一种多媒体帧的传输方法的流程示意图;

图6为本公开提供的一种多媒体帧的传输装置的结构示意图。

具体实施方式

为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。

在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。

图1为本公开提供的直播的架构示意图,其中,包括:多个客户端(图1中以两个客户端为例示出,分别为客户端1和客户端2)、CDN和源服务器,其中,CDN包括:至少一个边缘节点和至少一个上层节点(图1中以1个边缘节点和1个客户端为例示出),当客户端需要播放某直播时,客户端向边缘节点发送播放请求消息,播放请求消息中包含流标识,边缘节点如果没有命中该流标识,边缘节点向上层节点发送拉流请求,拉流请求中包含所述流标识,上层节点如果没有命中该流标识,上层节点向源服务器发送拉流请求,源服务器向上层节点实时发送流标识对应的多媒体帧,上层节点向边缘节点实时发送流标识对应的多媒体帧,并缓存流标识对应的多媒体帧,边缘节点向客户端实时发送流标识对应的多媒体帧,并流标识对应的多媒体帧。如果边缘节点接收到客户端发送的播放请求消息之后,边缘节点命中该流标识,边缘节点则直接向客户端发送缓存器中该流标识对应的多媒体帧,再发送实时接收到的多媒体帧;如果上层节点接收到客户端发送的拉流请求中,如果命中该流标识,上层节点则直接向边缘节点发送缓存器中该流标识对应的多媒体帧,再发送实时接收到的多媒体帧。其中,缓存器中的多媒体帧以gop为基础进行缓存,即缓存器中的第一个多媒体帧为关键帧。

当边缘节点与上层节点之间连接中断后,需要重新向上层节点发送拉流请求,或者,当边缘节点切换上层节点之后,需要向切换后的上层节点发送拉流请求,对于上层节点而言,无论边缘节点基于哪种情况向其发送拉流请求,其处理方式均相同,即上层节点先将缓存器中流标识对应的多媒体帧发送给边缘节点,再将实时接收到的多媒体帧发送给边缘节点。现有技术中,边缘节点将从上层节点接收到的多媒体帧发送给客户端,并缓存接收到的多媒体帧,然而,由于边缘节点从上层节点接收到的多媒体帧可能与连接中断之前接收到的多媒体帧存在重复,或者,与从切换之前的上层节点接收到的多媒体帧存在重复,因此,边缘节点发送给客户端的多媒体帧可能存在重复,从而,造成客户端回播的现象,影响用户体验。

本公开为了解决上述问题,边缘节点将从上层节点接收到的多媒体帧与本地缓存中所述流标识对应的多媒体帧进行比对,进行去重复处理,将接收到的新的多媒体帧发送给客户端,并从新的多媒体帧开始进行缓存,从而,避免将已经向客户端发送过的多媒体帧再次发送给客户端,避免客户端回播的现象,从而,提高用户体验。

下面以几个具体的实施例对本公开的技术方案进行描述,其中,相同或者相似的概念可以相互参考,本公开中不一一赘述。

图2为本公开提供的一种多媒体帧的传输方法的流程示意图,本实施例由边缘节点执行,本实施例的方法如下:

S201:向上层节点发送拉流请求。

其中,拉流请求中包含流标识,所述拉流请求用于请求获取所述流标识对应的多媒体帧,多媒体帧为音频帧或者视频帧。

其中,流标识可以通过但不限于如下方式确定:例如:可以根据直播的场次确定,例如,一场直播对应一个流标识,同一场直播的产生的多媒体帧的流标识均相同;流标识也可以根据直播间确定,例如,一个直播间对应一个流标识,通过该直播间产生的直播的多媒体帧的流标识均相同。流标识还可以根据账户信息确定,例如,一个账户信息对应一个流标识,同一个账号直播产生的多媒体帧的流标识均相同。

在直播的场景中,边缘节点向上层节点发送一次拉流请求之后,在边缘节点和上层节点没有连接中断的情况下,上层节点持续向边缘节点发送流标识对应的多媒体帧,直到直播结束。

边缘节点向上层节点发送拉流请求的场景包括但不限于如下几种可能的场景:

其中一种可能的场景为:当边缘节点接收到客户端发送的播放请求消息后,根据播放请求消息中携带得流标识,确定边缘节点是否命中该流标识,即确定边缘节点是否正在获取该流标识对应的多媒体帧,如果边缘节点正在获取该流标识对应的多媒体帧,即边缘节点命中该流标识,则将获取到的该流标识对应的多媒体帧发送给客户端;如果边缘节点没有正在获取该流标识对应的多媒体帧,即边缘节点没有命中该流标识,则边缘节点向上层节点发送拉流请求,以请求获取该流标识对应的多媒体帧。例如:边缘节点接收到客户端发送的播放请求,边缘节点没有正在获取流标识1对应的多媒体帧,即,边缘节点没有命中该流标识,边缘节点向上层节点1发送拉流请求,请求获取该流标识1对应的多媒体帧。

另一种可能的场景为:当边缘节点在接收上层节点发送的流标识对应的多媒体帧的过程中,边缘节点与上层节点之间连接中断,边缘节点再次向上层节点发送拉流请求,以请求上层节点发送流标识对应的多媒体帧。例如:边缘节点从上层节点1实时接收流标识1对应的多媒体帧,在接收的过程中,边缘节点与上层节点1之间连接中断,边缘节点与客户端之间连接正常,即,CDN内部之间出现连接中断,此时,边缘节点与上层节点1之间重新建立连接,边缘节点向上层节点1发送拉流请求,以继续实时接收流标识1对应的多媒体帧。

再一种可能的场景为:当边缘节点在接收其他上层节点发送的流标识对应的多媒体帧的过程中,检测到边缘节点与其他上层节点之间的网络状态不佳等原因,边缘节点需要切换上层节点,在这种场景中,边缘节点向上层节点发送拉流请求,接收上层节点发送的流标识对应的多媒体帧后,边缘节点再断开与其他上层节点的连接。例如:边缘节点从上层节点1实时接收流标识1对应的多媒体帧,在接收的过程中,检测到边缘节点与上层节点1之间的网络状态不佳等原因,边缘节点需要切换上层节点,如,要切换到上层节点2,此时,边缘节点向上层节点2发送拉流请求,接收到上层节点2发送的流标识1对应的多媒体帧之后,边缘节点断开与上层节点1之间的连接,边缘节点从上层节点2实时接收流标识1对应的多媒体帧。

S202:接收所述上层节点发送的所述流标识对应的多媒体帧。

CDN内的边缘节点或者上层节点均会设置缓存器,缓存器中会基于gop存储流标识对应的多媒体帧,即缓存器中存储的每个流标识对应的多媒体帧中第一个多媒体帧为关键帧。

上层节点接收到边缘节点发送的拉流请求之后,会先将缓存器中该流标识对应的多媒体帧发送给边缘节点,再将实时接收到的该流标识对应的多媒体帧实时发送给边缘节点。

对于上层节点而言,无论边缘节点基于哪种场景发送的拉流请求,上层节点的处理方式都是相同的,并不做场景区分,即,先将缓存器中该流标识对应的多媒体帧发送给边缘节点,再将实时接收到的该流标识对应的多媒体帧实时发送给边缘节点。

S203:将接收到的多媒体帧与本地缓存中所述流标识对应的多媒体帧进行比对,直到获取第一多媒体帧。

其中,第一多媒体帧与所述本地缓存中所述流标识对应的多媒体帧均不同;

边缘节点每接收到一个多媒体帧,便会对多媒体帧进行解析,将接收到的多媒体帧与本地缓存中所述流标识对应的多媒体帧逐一进行比对,如果与本地缓存中的任一多媒体帧相同,则丢弃,如果与本地缓存中所述流标识对应的多媒体帧均不同,则确定该多媒体帧为第一多媒体帧。

假设,针对一个流标识对应的多媒体帧,边缘节点本地缓存中最多缓存10个多媒体帧,边缘节点在向上层节点发送拉流请求之前,边缘节点缓存器中存储了多媒体帧11、多媒体帧12、多媒体帧13、多媒体帧14、多媒体帧15、多媒体帧16、多媒体帧17;其中,多媒体帧11和多媒体帧15为关键帧,边缘节点向上层节点发送拉流请求之后,上层节点缓存器中的多媒体帧为16、多媒体帧17、多媒体帧18、多媒体帧19、多媒体帧20、多媒体帧21、多媒体帧22、多媒体帧23、多媒体帧24、多媒体帧25,其中,多媒体帧16和多媒体帧21为关键帧;上层节点先向边缘节点发送缓存器中的多媒体帧,即依次发送多媒体帧16、多媒体帧17、多媒体帧18、多媒体帧19、多媒体帧20、多媒体帧21、多媒体帧22、多媒体帧23、多媒体帧24、多媒体帧25,边缘节点接收每解析一个接收到的多媒体帧,将其与本地缓存中的该流标识对应的多媒体帧进行比较,如果相同,则丢弃,如果与本地缓存该流标识对应的多媒体帧均不相同,则确定为第一多媒体帧,例如,将接收到多媒体帧16与本地缓存中所述流标识对应的多媒体帧从多媒体帧11、多媒体帧12、多媒体帧13、多媒体帧14、多媒体帧15、多媒体帧16、多媒体帧17依次进行比较,比较到多媒体帧16时,发现本地缓存中存在相同的多媒体帧,则将接收到的多媒体帧16丢弃;继续将接收到多媒体帧17与本地缓存中所述流标识对应的多媒体帧从多媒体帧11、多媒体帧12、多媒体帧13、多媒体帧14、多媒体帧15、多媒体帧16、多媒体帧17依次进行比较,发现本地缓存中存在相同的多媒体帧,则将接收到的多媒体帧17丢弃;继续将接收到多媒体帧18与本地缓存中所述流标识对应的多媒体帧从多媒体帧11、多媒体帧12、多媒体帧13、多媒体帧14、多媒体帧15、多媒体帧16、多媒体帧17依次进行比较,发现接收到的多媒体帧与本地缓存中所述流标识对应的多媒体帧均不相同,则确定多媒体帧18为第一多媒体帧。

S204:向客户端发送所述第一多媒体帧以及之后接收到的多媒体帧,并从所述第一多媒体帧开始缓存。

确定第一多媒体帧之后,将第一多媒体帧及其后接收到的多媒体帧发送给客户端,以使客户端继续播放当前的直播数据。

同时,从第一多媒体帧开始缓存,包括但不限于如下两种可能的实现方式:

其中,一种可能的实现方式为:若所述第一多媒体帧为关键帧,则清空所述本地缓存中所述流标识对应的多媒体帧,从所述第一多媒体帧开始缓存。

例如:边缘节点在向上层节点发送拉流请求之前,边缘节点缓存器中存储了多媒体帧11、多媒体帧12、多媒体帧13、多媒体帧14、多媒体帧15、多媒体帧16、多媒体帧17;其中,多媒体帧11和多媒体帧15为关键帧,边缘节点向上层节点发送拉流请求之后,上层节点缓存器中的多媒体帧为多媒体帧21、多媒体帧22、多媒体帧23、多媒体帧24、多媒体帧25、多媒体帧26、多媒体帧27、多媒体帧28、多媒体帧29,其中,多媒体帧21和多媒体帧26为关键帧;则根据S203中的描述,确定的第一多媒体帧为多媒体帧21。多媒体帧21与本地缓存中存储的多媒体帧已经不连续了,因此,需要将本地缓存中存储的多媒体帧清空,从多媒体帧21开始缓存,避免此时有其他播放器请求播放,边缘节点返回不连续的多媒体帧,影响用户体验,通过清空多媒体帧,从第一多媒体帧开始缓存,如果有其他播放器请求播放,边缘节点返回连续的多媒体帧,可以提高用户体验。

另一种可能的实现方式为:若所述第一多媒体帧为非关键帧,则在所述本地缓存中所述流标识对应的多媒体帧的基础上,从所述第一多媒体帧开始缓存。

例如:边缘节点在向上层节点发送拉流请求之前,边缘节点缓存器中存储了多媒体帧11、多媒体帧12、多媒体帧13、多媒体帧14、多媒体帧15、多媒体帧16、多媒体帧17;其中,多媒体帧11和多媒体帧15为关键帧,边缘节点向上层节点发送拉流请求之后,上层节点缓存器中的多媒体帧为16、多媒体帧17、多媒体帧18、多媒体帧19、多媒体帧20、多媒体帧21、多媒体帧22、多媒体帧23、多媒体帧24、多媒体帧25,其中,多媒体帧16和多媒体帧21为关键帧。则根据S203中的描述,确定的第一多媒体帧为多媒体帧18。则此时,直接在本地缓存的基础上,继续存储多媒体帧18以及之后的多媒体帧。

本实施例,通过边缘节点向上层节点发送拉流请求,接收上层节点发送的流标识对应的多媒体帧之后,将接收到的多媒体帧与本地缓存中所述流标识对应的多媒体帧进行比对,直到获取第一多媒体帧,从而,避免将已经向客户端发送过的多媒体帧再次发送给客户端,避免客户端回播的现象,从而,提高用户体验。

图3为本公开提供的另一种多媒体帧的传输方法的流程示意图,图3是在图2所示实施例的基础上,S203的一种可能的实现方式的描述:

S2031:将接收到的多媒体帧的属性信息与本地缓存中所述流标识对应的多媒体帧的属性信息进行初始比对。

其中,所述属性信息包括:类型和大小;

边缘节点接收到多媒体帧之后,会对多媒体帧进行解析,获取到多媒体帧的属性信息,其中,属性信息包括但不限于类型和大小。

如果属性信息不同,多媒体帧则必然不相同,如果属性信息相同,则需要进一步地判断多媒体帧的数据内容是否相同,确定多媒体帧是否相同。

通过多媒体帧的属性信息进行初始比对,可以提高对比的效率。

S2032:若接收到的多媒体帧的属性信息与本地缓存中所述流标识对应的多媒体帧的属性信息均不相同,确定所述接收到的多媒体帧为第一多媒体帧。

如果接收到的多媒体帧的属性信息与本地缓存中所述流标识对应的多媒体帧的属性信息均不相同,说明该多媒体帧与本地缓存中多媒体帧均不相同,则可以确定该多媒体帧为第一多媒体帧。

S2033:若本地缓存中所述流标识对应的多媒体帧中存在至少一个候选多媒体帧,其中,所述候选多媒体帧的属性信息与接收到的多媒体帧的属性信息相同。

如果属性信息相同,说明候选多媒体帧可能与接收到的多媒体帧相同,需要进一步地的比对多媒体帧的数据内容,如S2034。

S2034:将接收到的多媒体帧的数据内容分别与所述至少一个候选多媒体帧的数据内容进行再次比对,若接收到的多媒体帧的数据内容与所述至少一个候选多媒体帧的数据内容均不相同,确定所述接收到的多媒体帧为第一多媒体帧。

如果接收到的多媒体帧的数据内容与所述至少一个候选多媒体帧的数据内容均不相同,说明接收到的多媒体帧与所述至少一个候选多媒体帧的也均不相同,则可以确定所述接收到的多媒体帧为第一多媒体帧。

如果接收到的多媒体帧的数据内容与所述至少一个候选多媒体帧的数据内容存在一个相同的,则丢弃接收到的该多媒体帧。

其中,将所述接收到的多媒体帧的数据内容分别与所述至少一个候选多媒体帧的数据内容进行再次比对,包括但不限于如下可能的实现方式:

一种可能的实现方式:针对每个候选多媒体帧,将接收到的多媒体帧的全部的数据内容与候选多媒体帧的全部的数据内容进行再次比对,如果全部数据内容相同,确定接收到的多媒体帧与该候选多媒体帧相同,如果全部数据内容不相同,确定接收到的多媒体帧与该候选多媒体帧不相同。

另一种可能的实现方式为:将接收到的多媒体帧的部分的数据内容分别与所述至少一个候选多媒体帧的部分的数据内容进行再次比对。

其中,所述接收到的多媒体帧的部分的数据内容相对于起始位置的偏移量与所述至少一个候选多媒体帧的部分的数据内容相对于起始位置的偏移量相同。

由于相同的多媒体帧所有的数据内容均应相同,因此,可以通过采样的方式,只取其中一部分数据内容进行比较,例如,从数据部分的起始位置偏移N个比特,取M个比特长度的数据内容,其中,N为大于等于0的整数,M为大于等于1的整数,通过对比部分的数据内容确定多媒体帧是否相同,可以进一步地提高比对的效率。

再一种可能的实现方式为:获取接收到的多媒体帧的第一第五版信息摘要算法(Message-digest Algorithm 5,MD5)和所述至少一个候选多媒体帧分别对应的第二MD5;

若接收到的多媒体帧的第一MD5和所述至少一个候选多媒体帧分别对应的第二MD5均不相同,确定所述接收到的多媒体帧为第一多媒体帧。

当数据内容不同,确定的MD5值则不同,因此,可以根据MD5值进行比对,以确定数据内容是否相同,从而,确定多媒体帧是否相同,可以进一步地提高对比的效率。

本实施例,通过将接收到的多媒体帧的属性信息与本地缓存中所述流标识对应的多媒体帧的属性信息进行初始比对,若接收到的多媒体帧的属性信息与本地缓存中所述流标识对应的多媒体帧的属性信息均不相同,确定所述接收到的多媒体帧为第一多媒体帧,若本地缓存中所述流标识对应的多媒体帧中存在至少一个候选多媒体帧,其中,所述候选多媒体帧的属性信息与接收到的多媒体帧的属性信息相同,将接收到的多媒体帧的数据内容分别与所述至少一个候选多媒体帧的数据内容进行再次比对,若接收到的多媒体帧的数据内容与所述至少一个候选多媒体帧的数据内容均不相同,确定所述接收到的多媒体帧为第一多媒体帧,本实施例通过初始比对,可以将属性信息均不同的第一多媒体帧直接确定出来,提高了确定第一多媒体帧的效率,通过初始比对可以减小需要进行内容比对的多媒体帧的数量,然后,再进行数据内容比对,也提高了确定第一多媒体帧的效率。

图4为本公开提供的另一种多媒体帧的传输方法的流程示意图,本实施例中的多媒体帧包含帧序号,图4是在图2所示实施例的基础上,S203的另一种可能的实现方式的描述:

S203a:将接收到的多媒体帧的帧序号与本地缓存中的最后一个多媒体帧的帧序号进行比对,直到获取到第一多媒体帧,其中,所述第一多媒体帧的帧序号大于所述本地缓存中的最后一个多媒体帧的帧序号。

可选的,如果源服务器向CDN发送的多媒体帧携带帧序号,则可以直接使用该帧序号。

CDN可以在从源服务器接收到多媒体帧之后,为多媒体帧添加帧序号,在一次直播中,帧序号唯一标识每一帧的内容,CDN在向客户端发送时,可以去除帧序号,即帧序号只在CDN内部的各节点之间传输时使用。

帧序号按照顺序进行排列,后产生的多媒体帧的帧序号大于先产生的多媒体帧的帧序号。只有接收到的帧序号大于边缘节点本地缓存中的最后一个多媒体帧的帧序号,接收到的多媒体帧才可能与本地缓存中所述流标识对应的多媒体帧不同,因此,可以将接收到的多媒体帧的帧序号与本地缓存中的最后一个多媒体帧的帧序号进行比对,直到获取到第一多媒体帧,其中,所述第一多媒体帧的帧序号大于所述本地缓存中的最后一个多媒体帧的帧序号。

本实施例,通过将接收到的多媒体帧的帧序号与本地缓存中的最后一个多媒体帧的帧序号进行比对,直到获取到第一多媒体帧,可以提高确定第一多媒体帧的比对的效率。

图5为本公开提供的另一种多媒体帧的传输方法的流程示意图,本实施例中的多媒体帧包含时间戳,图5是在图2所示实施例的基础上,S203的另一种可能的实现方式的描述:

S203b:将接收到的多媒体帧的时间戳与本地缓存中的最后一个多媒体帧的时间戳进行比对,直到获取到第一多媒体帧,其中,所述第一多媒体帧的时间戳晚于所述本地缓存中的最后一个多媒体帧的时间戳。

可选的,如果源服务器向CDN发送的多媒体帧携带时间戳,则可以直接使用该时间戳。

如果源服务器向CDN发送的多媒体帧未携带时间戳,CDN可以在从源服务器接收到多媒体帧之后,为多媒体帧添加时间戳,在一次直播中,时间戳唯一标识每一帧的内容,CDN在向客户端发送时,可以去除时间戳,即时间戳只在CDN内部的各节点之间传输时使用。

时间戳可以按照接收到多媒体帧的时间确定。只有接收到多媒体帧的时间戳晚于边缘节点本地缓存中的最后一个多媒体帧的时间戳,接收到的多媒体帧才可能与本地缓存中所述流标识对应的多媒体帧不同,因此,可以将接收到的多媒体帧的时间戳与本地缓存中的最后一个多媒体帧的时间戳进行比对,直到获取到第一多媒体帧。

本实施例,通过将接收到的多媒体帧的时间戳与本地缓存中的最后一个多媒体帧的时间戳进行比对,直到获取到第一多媒体帧,可以提高确定第一多媒体帧的比对的效率。

图6为本公开提供的一种多媒体帧的传输装置的结构示意图,本实施例的装置发送模块601、接收模块602、处理模块603和存储模块604,其中,发送模块601用于向上层节点发送拉流请求,所述拉流请求中包含流标识,所述拉流请求用于请求获取所述流标识对应的多媒体帧,所述多媒体帧为音频帧或者视频帧;接收模块602用于接收所述上层节点发送的所述流标识对应的多媒体帧;处理模块603用于将接收到的多媒体帧与本地缓存中所述流标识对应的多媒体帧进行比对,直到获取第一多媒体帧,其中,所述第一多媒体帧与所述本地缓存中所述流标识对应的多媒体帧均不同;所述发送模块601还用于向客户端发送所述第一多媒体帧以及之后接收到的多媒体帧;存储模块604用于从所述第一多媒体帧开始缓存。

可选的,所述处理模块603具体用于将接收到的多媒体帧的属性信息与本地缓存中所述流标识对应的多媒体帧的属性信息进行初始比对,其中,所述属性信息包括:类型和大小;若接收到的多媒体帧的属性信息与本地缓存中所述流标识对应的多媒体帧的属性信息均不相同,确定所述接收到的多媒体帧为第一多媒体帧;若本地缓存中所述流标识对应的多媒体帧中存在至少一个候选多媒体帧,其中,所述候选多媒体帧的属性信息与接收到的多媒体帧的属性信息相同,将所述接收到的多媒体帧的数据内容分别与所述至少一个候选多媒体帧的数据内容进行再次比对,若接收到的多媒体帧的数据内容与所述至少一个候选多媒体帧的数据内容均不相同,确定所述接收到的多媒体帧为第一多媒体帧。

可选的,所述处理模块603具体用于将接收到的多媒体帧的部分的数据内容分别与所述至少一个候选多媒体帧的部分的数据内容进行再次比对,其中,所述接收到的多媒体帧的部分的数据内容相对于起始位置的偏移量与所述至少一个候选多媒体帧的部分的数据内容相对于起始位置的偏移量相同。

可选的,所述处理模块603具体用于获取接收到的多媒体帧的第一第五版信息摘要算法MD5和所述至少一个候选多媒体帧分别对应的第二MD5;若所述接收到的多媒体帧的第一MD5和所述至少一个候选多媒体帧分别对应的第二MD5均不相同,确定所述接收到的多媒体帧为第一多媒体帧。

可选的,所述多媒体帧包含帧序号;

所述处理模块603具体用于将接收到的多媒体帧的帧序号与本地缓存中的最后一个多媒体帧的帧序号进行比对,直到获取到第一多媒体帧,其中,所述第一多媒体帧的帧序号大于所述本地缓存中的最后一个多媒体帧的帧序号。

可选的,所述多媒体帧包含时间戳;

所述处理模块603具体用于将接收到的多媒体帧的时间戳与本地缓存中的最后一个多媒体帧的时间戳进行比对,直到获取到第一多媒体帧,其中,所述第一多媒体帧的时间戳晚于所述本地缓存中的最后一个多媒体帧的时间戳。

可选的,所述存储模块604具体用于若所述第一多媒体帧为关键帧,则清空所述本地缓存中所述流标识对应的多媒体帧,从所述第一多媒体帧开始缓存;若所述第一多媒体帧为非关键帧,则在所述本地缓存中所述流标识对应的多媒体帧的基础上,从所述第一多媒体帧开始缓存。

本实施例的装置对应的可用于执行上述各方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。

本公开还提供一种边缘节点,包括:处理器和存储器,所述处理器用于执行存储于存储器的计算机程序,所述计算机程序被处理器执行时实现图2-图5任一项所述的方法的步骤。

本公开还提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现图2-图5任一项所述的方法的步骤。

需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

相关技术
  • 多媒体帧的传输方法、装置和计算机可读存储介质
  • 多媒体数据传输方法、装置及计算机可读存储介质
技术分类

06120112980483