一种传输直播视频的方法和装置与流程

文档序号:12183720阅读:277来源:国知局
一种传输直播视频的方法和装置与流程

本发明涉及计算机技术领域,特别涉及一种传输直播视频的方法和装置。



背景技术:

随着视频技术和网络技术的飞速发展,网络直播得到了快速的推广,成为了人们生活中最常用的娱乐方式之一。直播视频的图像帧一般可分为关键帧和非关键帧,一般,在直播视频中,间隔设置有关键帧,其余图像帧则为非关键帧,每个非关键帧的解码需要参考其前面最近的一个关键帧。

在网络直播的过程中,主播终端会持续向服务器上传其拍摄的直播视频,服务器将接收到的直播视频发送给该主播的直播间中的观众终端。观众终端进入直播间时会向服务器发送视频请求,服务器会将接收到视频请求后主播终端上传的所有图像帧都发送给该观众终端。然而,服务器发送给观众终端的前几个图像帧很可能是非关键帧,由于非关键帧的解码需要参考其前面的关键帧,观众终端在没有之前的关键帧的情况下是无法对接收到的非关键帧进行解码的,所以这样做会导致传输资源浪费。因此,现在一般采用的做法是从视频请求后主播终端发送的第一个关键帧开始,向该观众终端发送图像帧。

在实现本发明的过程中,发明人发现现有技术至少存在以下问题:

通过上述方式发送直播视频,会导致观众终端在发送视频请求后需要间隔一段时间(服务器接收到下一个关键帧并发送给观众终端时)才能够开始播放直播视频,导致直播视频播放滞后。



技术实现要素:

为了解决现有技术的问题,本发明实施例提供了一种传输直播视频的方法和装置。所述技术方案如下:

第一方面,提供了一种传输直播视频的方法,所述方法包括:

接收第一终端发送的目标直播视频的视频请求;

从缓存的所述目标直播视频的第一关键帧开始,向所述第一终端发送缓存的所述目标直播视频的图像帧,其中,所述第一关键帧是当前接收到的所述目标直播视频的主播终端发送的图像帧之前的关键帧;

当接收到所述主播终端发送的第二关键帧后,从所述第二关键帧开始,向所述第一终端发送所述目标直播视频的图像帧。

可选的,所述方法还包括:

在接收所述主播终端发送的所述目标直播视频的过程中,对接收到的所述目标视频的图像帧进行缓存,如果接收到的图像帧为关键帧,则删除之前缓存的所述目标直播视频的所有图像帧。

这样,可以在缓存图像帧的过程中降低存储空间的占用。

可选的,所述第一关键帧是当前接收到的所述目标直播视频的主播终端发送的图像帧之前的最近的关键帧。

这样,可以在缓存图像帧的过程中降低存储空间的占用。

可选的,所述从缓存的所述目标直播视频的第一关键帧开始,向所述第一终端发送缓存的所述目标直播视频的图像帧,包括:

当接收到所述目标直播视频的在所述视频请求后的第M个图像帧时,获取缓存的所述目标直播视频的从第一关键帧开始的第N个图像帧,其中,M和N为正整数,且N等于M;

将所述第N个图像帧,发送给所述第一终端。

可选的,所述将所述第N个图像帧,发送给所述第一终端,包括:

将所述第N个图像帧的时间戳,修改为所述第M个图像帧的时间戳;

将修改时间戳后的第N个图像帧,发送给所述第一终端。

可选的,所述接收第一终端发送的目标直播视频的视频请求之后,还包括:

将后续接收到的所述主播终端发送的目标直播视频的音频帧,发送给所述第一终端。

这样,可以保证目标直播视频在第一终端稳定播放。

第二方面,提供了一种传输直播视频的装置,所述装置包括:

接收模块,用于接收第一终端发送的目标直播视频的视频请求;

第一发送模块,用于从缓存的所述目标直播视频的第一关键帧开始,向所述第一终端发送缓存的所述目标直播视频的图像帧,其中,所述第一关键帧是当前接收到的所述目标直播视频的主播终端发送的图像帧之前的关键帧;

第二发送模块,用于当接收到所述主播终端发送的第二关键帧后,从所述第二关键帧开始,向所述第一终端发送所述目标直播视频的图像帧。

可选的,所述装置还包括缓存模块,用于:

在接收所述主播终端发送的所述目标直播视频的过程中,对接收到的所述目标视频的图像帧进行缓存,如果接收到的图像帧为关键帧,则删除之前缓存的所述目标直播视频的所有图像帧。

可选的,所述第一关键帧是当前接收到的所述目标直播视频的主播终端发送的图像帧之前的最近的关键帧。

可选的,所述第一发送模块,用于:

当接收到所述目标直播视频的在所述视频请求后的第M个图像帧时,获取缓存的所述目标直播视频的从第一关键帧开始的第N个图像帧,其中,M和N为正整数,且N等于M;

将所述第N个图像帧,发送给所述第一终端。

可选的,所述第一发送模块,用于:

将所述第N个图像帧的时间戳,修改为所述第M个图像帧的时间戳;

将修改时间戳后的第N个图像帧,发送给所述第一终端。

可选的,所述第二发送模块,还用于:

在接收第一终端发送的目标直播视频的视频请求之后,将后续接收到的所述主播终端发送的目标直播视频的音频帧,发送给所述第一终端。

本发明实施例提供的技术方案带来的有益效果是:

本发明实施例中,接收第一终端发送的目标直播视频的视频请求,从缓存的目标直播视频的第一关键帧开始,向第一终端发送缓存的目标直播视频的图像帧,其中,第一关键帧是当前接收的目标直播视频的主播终端发送的图像帧之前的关键帧,当接收到主播终端发送的第二关键帧后,从第二关键帧开始,向第一终端发送目标直播视频的图像帧。这样,在第一终端发送视频请求后无需等待下一个关键帧,就能够开始播放目标直播视频,从而,可以防止直播视频播放滞后。

附图说明

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

图1是本发明实施例提供的一种系统框架的示意图;

图2是本发明实施例提供的一种传输直播视频的方法的流程示意图;

图3是本发明实施例提供的一种传输直播视频的装置的结构示意图;

图4是本发明实施例提供的一种服务器的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

本发明实施例提供了一种传输直播视频的方法,该方法可以由服务器实现。其中,该服务器可以是视频直播应用程序的后台服务器,或者视频直播网站的网站服务器。服务器可以包括处理器、存储器、收发器等部件。处理器,可以为CPU(Central Processing Unit,中央处理单元)等,可以用于调取缓存的图像帧,确定图像帧是否为关键帧,为图像帧修改时间戳,等处理。存储器,可以为RAM(Random Access Memory,随机存取存储器),Flash(闪存)等,可以用于存储接收到的数据、处理过程所需的数据、处理过程中生成的数据等,如接收到的图像帧,图像帧的时间戳、帧号,音频帧等。收发器,可以用于与终端进行数据传输,例如,接收主播终端发送的目标直播视频的图像帧,将图像帧发送给直播间中的观众终端,可以包括天线、匹配电路、调制解调器等。

本发明实施例的系统框架图可以如图1所示。

本发明实施例中,某主播可以在其终端(即主播终端)上登录视频直播应用程序,在视频直播应用程序进行操作开始视频直播。在视频直播的过程中,主播终端会通过摄像头拍摄本地的直播视频(即目标直播视频),并实时上传给服务器。服务器可以将接收到的目标直播视频,发送给主播终端对应的直播间中的观众账户的登录终端,这些终端可以对目标直播视频进行播放,直播间中的观众就可以观看目标直播视频了。

服务器在接收主播终端发送的目标直播视频的过程中,可以对目标直播视频的图像帧进行缓存。缓存的机制可以多种多样,以下给出了几种可行的缓存方式:

方式一,可以缓存最近的一组视频图像编码序列(其中,视频图像编码序列包括一个关键帧和所有基于该关键帧解码的非关键帧),相应的处理可以如下:在接收主播终端发送的目标直播视频的过程中,对接收到的目标视频的图像帧进行缓存,如果接收到的图像帧为关键帧,则删除之前缓存的目标直播视频的所有图像帧。

在实施中,服务器在接收主播终端发送的目标直播视频的过程中,每接收到一个图像帧,则可以判断该图像帧是否为关键帧。判断的方式可以是通过图像帧中的配置信息确定其是否为关键帧,或者通过目标直播视频最初开始传输时主播终端发送的配置信息(可以记录关键帧的在视频中的分布方式)确定该图像帧是否为关键帧。如果当前接收的图像帧为关键帧,则服务器可以对该图像帧进行缓存,同时对之前缓存的目标直播视频的所有图像帧进行删除,这里实际删除的是该关键帧之前的一组视频图像编码序列,若该关键帧是目标直播视频的第一个图像帧,则此时没有缓存,没有需要删除的图像帧。如果当前接收的图像帧为非关键帧,则服务器可以对该图像帧进行缓存,同时不进行删除的操作。

基于上述的处理,服务器则可以始终保持缓存最近的一组视频图像编码序列。

方式二,可以对目标直播视频进行完整缓存,即从目标直播视频开播开始缓存目标直播视频的图像帧,直到目标直播视频结束直播。

方式三,可以缓存时间最近的预设时长的直播视频,超过预设时长的历史视频部分则删除。

如图2所示,本发明实施例提供的传输直播视频的方法的处理流程可以包括如下的步骤:

步骤201,接收第一终端发送的目标直播视频的视频请求。

在实施中,某个用户想要观看上述主播的直播视频(即目标直播视频)时,可以在他的终端(即第一终端)上启动上述视频直播应用程序,并在视频直播应用程序中选择该主播的直播间,应用程序则会开启直播间界面。同时,会触发第一终端向服务器发送目标直播视频的视频请求,该视频请求中可以携带有该直播间的标识信息。服务器接收视频请求,对视频请求进行解析,根据其中的直播间的标识信息,确定对应的目标直播视频。

步骤202,从缓存的目标直播视频的第一关键帧开始,向第一终端发送缓存的目标直播视频的图像帧。

其中,第一关键帧可以是当前接收到的目标直播视频的主播终端发送的图像帧之前的关键帧。优选的,第一关键帧是当前接收到的目标直播视频的主播终端发送的图像帧之前的最近的关键帧。基于上述方式一的缓存机制,第一关键帧可以是缓存的一组视频图像编码序列中的关键帧。

在实施中,以上述方式一为例,在缓存的一组视频图像编码序列中只包括一个关键帧,而且该关键帧为缓存的各图像帧中时间最早的一个图像帧。服务器在接收到目标直播视频的视频请求后,可以获取缓存的关键帧(即第一关键帧)。从这个第一关键帧开始,将缓存的目标直播视频的图像帧依次发送给第一终端。具体的发送方式可以根据需求任意设置,例如,每接收到目标直播视频的一个新的图像帧,则向第一终端发送一个缓存的图像帧,或者,按照一定时间间隔向第一终端发送缓存的图像帧。

第一终端在接收到服务器发送的目标直播视频的图像帧后,可以根据图像帧的时间顺序(可以基于图像帧的时间戳)进行播放。

可选的,服务器可以每接收到目标直播视频的一个新的图像帧,则向第一终端发送一个缓存的图像帧,相应的处理方式可以包括如下步骤:

步骤一,当接收到目标直播视频的在视频请求后的第M个图像帧时,获取缓存的目标直播视频的从第一关键帧开始的第N个图像帧(按图像帧时间顺序),其中,M和N为正整数,且N等于M。

其中,第一关键帧即为从第一关键帧开始的第一个图像帧,即当N=1时,第N个图像帧即为缓存的第一关键帧。

在实施中,服务器接收到目标直播视频的视频请求后,接收到视频请求后主播终端发送的第一个图像帧时,可以获取缓存的第一关键帧(假设第一关键帧的帧号为P),进行后续的发送处理。当接收到视频请求后主播终端发送的第二个图像帧时,可以在缓存的图像帧中获取第一关键帧的后一个图像帧(帧号为P+1的图像帧),进行后续的发送处理。当接收到视频请求后主播终端发送的第三个图像帧时,可以在缓存的图像帧中获取第一关键帧后的第二个图像帧(帧号为P+2的图像帧),进行后续的发送处理,依此类推。

以上述方式一为例,当接收到目标直播视频的在视频请求后的第M个图像帧时,服务器可以在缓存的目标直播视频的图像帧中获取按时序排列的第N个图像帧,N=M。

步骤二,将第N个图像帧,发送给第一终端。

可选的,在发送缓存的图像帧时,可以进行如下处理:将上述第N个图像帧的时间戳,修改为上述第M个图像帧的时间戳;将修改时间戳后的第N个图像帧,发送给第一终端。

在实施中,服务器在接收到目标直播视频的在视频请求后的第M个图像帧时,可以获取该图像帧的时间戳(记做时间戳X)。进而,服务器在缓存的目标直播视频的图像帧中,获取从第一关键帧开始的第N个图像帧后,可以将此第N个图像帧的时间戳修改为时间戳X。然后,将修改时间戳后的图像帧发送给第一终端。

步骤203,当接收到主播终端发送的第二关键帧后,从第二关键帧开始,向第一终端发送目标直播视频的图像帧。

在实施中,服务器会持续接收主播终端发送目标直播视频的图像帧,并可以对每个图像帧确定是否为关键帧。当服务器确定当前接收图像帧为关键帧时,服务器则可以将该图像帧(即第二关键帧)发送给第一终端,并且将后续接收自主播终端的目标直播视频的图像帧逐一转发给第一终端。自此,第一终端播放的直播视频便与直播间中其它终端达到同步(在此之前,播放的是缓存的视频)。

第一终端在接收到服务器发送的目标直播视频的图像帧后,可以根据图像帧的时间顺序(可以基于图像帧的时间戳)进行播放。

本发明实施例中,上述介绍了目标直播视频的图像帧的处理方式,如果目标直播视频中还包括音频数据,则服务器在接收第一终端发送的目标直播视频的视频请求之后,还可以进行如下处理:将后续接收到的主播终端发送的目标直播视频的音频帧,发送给第一终端。

在实施中,因为每个音频帧都可以独立解码,无需参考其它音频帧,所以也不存在关键帧,服务器可以将后续接收自主播终端的音频帧逐一转发给第一终端。

本发明实施例中,接收第一终端发送的目标直播视频的视频请求,从缓存的目标直播视频的第一关键帧开始,向第一终端发送缓存的目标直播视频的图像帧,其中,第一关键帧是当前接收的目标直播视频的主播终端发送的图像帧之前的关键帧,当接收到主播终端发送的第二关键帧后,从第二关键帧开始,向第一终端发送目标直播视频的图像帧。这样,在第一终端发送视频请求后无需等待下一个关键帧,就能够开始播放目标直播视频,从而,可以防止直播视频播放滞后。

基于相同的技术构思,本发明实施例还提供了一种传输直播视频的装置,该装置可以是上述实施例中的服务器,如图3所示,该装置包括:

接收模块310,用于接收第一终端发送的目标直播视频的视频请求;

第一发送模块320,用于从缓存的所述目标直播视频的第一关键帧开始,向所述第一终端发送缓存的所述目标直播视频的图像帧,其中,所述第一关键帧是当前接收到的所述目标直播视频的主播终端发送的图像帧之前的关键帧;

第二发送模块330,用于当接收到所述主播终端发送的第二关键帧后,从所述第二关键帧开始,向所述第一终端发送所述目标直播视频的图像帧。

可选的,所述装置还包括缓存模块,用于:

在接收所述主播终端发送的所述目标直播视频的过程中,对接收到的所述目标视频的图像帧进行缓存,如果接收到的图像帧为关键帧,则删除之前缓存的所述目标直播视频的所有图像帧。

可选的,所述第一关键帧是当前接收到的所述目标直播视频的主播终端发送的图像帧之前的最近的关键帧。

可选的,所述第一发送模块320,用于:

当接收到所述目标直播视频的在所述视频请求后的第M个图像帧时,获取缓存的所述目标直播视频的从第一关键帧开始的第N个图像帧,其中,M和N为正整数,且N等于M;

将所述第N个图像帧,发送给所述第一终端。

可选的,所述第一发送模块320,用于:

将所述第N个图像帧的时间戳,修改为所述第M个图像帧的时间戳;

将修改时间戳后的第N个图像帧,发送给所述第一终端。

可选的,所述第二发送模块330,还用于:

在接收第一终端发送的目标直播视频的视频请求之后,将后续接收到的所述主播终端发送的目标直播视频的音频帧,发送给所述第一终端。

本发明实施例中,接收第一终端发送的目标直播视频的视频请求,从缓存的目标直播视频的第一关键帧开始,向第一终端发送缓存的目标直播视频的图像帧,其中,第一关键帧是当前接收的目标直播视频的主播终端发送的图像帧之前的关键帧,当接收到主播终端发送的第二关键帧后,从第二关键帧开始,向第一终端发送目标直播视频的图像帧。这样,在第一终端发送视频请求后无需等待下一个关键帧,就能够开始播放目标直播视频,从而,可以防止直播视频播放滞后。

需要说明的是:上述实施例提供的获取歌曲信息的装置在获取歌曲信息时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的获取歌曲信息的装置与获取歌曲信息的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

图4是本发明实施例提供的服务器的结构示意图。该服务器1900可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processing units,CPU)1922(例如,一个或一个以上处理器)和存储器1932,一个或一个以上存储应用程序1942或数据1944的存储介质1930(例如一个或一个以上海量存储设备)。其中,存储器1932和存储介质1930可以是短暂存储或持久存储。存储在存储介质1930的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器1922可以设置为与存储介质1930通信,在服务器1900上执行存储介质1930中的一系列指令操作。

服务器1900还可以包括一个或一个以上电源1926,一个或一个以上有线或无线网络接口1950,一个或一个以上输入输出接口1958,一个或一个以上键盘1956,和/或,一个或一个以上操作系统1941,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。

服务器1900可以包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行以下操作的指令:

接收第一终端发送的目标直播视频的视频请求;

从缓存的所述目标直播视频的第一关键帧开始,向所述第一终端发送缓存的所述目标直播视频的图像帧,其中,所述第一关键帧是当前接收到的所述目标直播视频的主播终端发送的图像帧之前的关键帧;

当接收到所述主播终端发送的第二关键帧后,从所述第二关键帧开始,向所述第一终端发送所述目标直播视频的图像帧。

可选的,所述方法还包括:

在接收所述主播终端发送的所述目标直播视频的过程中,对接收到的所述目标视频的图像帧进行缓存,如果接收到的图像帧为关键帧,则删除之前缓存的所述目标直播视频的所有图像帧。

可选的,所述第一关键帧是当前接收到的所述目标直播视频的主播终端发送的图像帧之前的最近的关键帧。

可选的,所述从缓存的所述目标直播视频的第一关键帧开始,向所述第一终端发送缓存的所述目标直播视频的图像帧,包括:

当接收到所述目标直播视频的在所述视频请求后的第M个图像帧时,获取缓存的所述目标直播视频的从第一关键帧开始的第N个图像帧,其中,M和N为正整数,且N等于M;

将所述第N个图像帧,发送给所述第一终端。

可选的,所述将所述第N个图像帧,发送给所述第一终端,包括:

将所述第N个图像帧的时间戳,修改为所述第M个图像帧的时间戳;

将修改时间戳后的第N个图像帧,发送给所述第一终端。

可选的,所述接收第一终端发送的目标直播视频的视频请求之后,还包括:

将后续接收到的所述主播终端发送的目标直播视频的音频帧,发送给所述第一终端。

本发明实施例中,接收第一终端发送的目标直播视频的视频请求,从缓存的目标直播视频的第一关键帧开始,向第一终端发送缓存的目标直播视频的图像帧,其中,第一关键帧是当前接收的目标直播视频的主播终端发送的图像帧之前的关键帧,当接收到主播终端发送的第二关键帧后,从第二关键帧开始,向第一终端发送目标直播视频的图像帧。这样,在第一终端发送视频请求后无需等待下一个关键帧,就能够开始播放目标直播视频,从而,可以防止直播视频播放滞后。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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