直播延迟监控方法、装置、电子设备及可读存储介质与流程

文档序号:19730843发布日期:2020-01-18 03:55阅读:253来源:国知局
直播延迟监控方法、装置、电子设备及可读存储介质与流程

本发明涉及图像处理技术领域,具体而言,本发明涉及一种直播延迟监控方法、装置、电子设备及可读存储介质。



背景技术:

目前,越来越多的用户喜欢采用直播的方式进行沟通,而主播直播画面进行传输时,需要将主播直播画面先进行编码、封装、传输才能到达观看端,观看端则需要接收、解封装、解码才能正确看到主播直播画面。但是在主播直播画面传输中一般会存在延迟,一般表示为一帧画面从主播终端到观众终端的时间差,通常延迟越小用户的观看体验越好,并且延迟越小,观看者和主播进行实时交互的可能性越高。

现有技术中,通常是通过rtmp(realtimemessagingprotocol,实时消息传输协议)协议传输主播直播画面。其中,主播终端需要在rtmp协议中插入时间戳,得到rtmp数据并发送至服务器,服务器在接收到rtmp数据之后将其转码为flv(flashvideo,流媒体格式)格式,并把rtmp中的时间戳插入flv中;观看终端接收到后解析flv,并使用本地的时间戳减去flv中的时间戳得到时间延迟。但是,这种计算延迟的方案仅能得到主播终端与观众终端之间的时间延迟,无法得到传输链路中其它节点之间的时间延迟,灵活性差,无法满足实际需求。



技术实现要素:

本发明的目的旨在至少能解决上述的技术缺陷之一,特别是无法得到直播视频图像传输链路中各节点之间的时间延迟的技术缺陷。

第一方面,本发明实施例提供了一种直播延迟监控方法,该方法包括:

获取待传输的直播视频图像的待传输数据;

根据待传输数据和当前节点的节点数据生成待传输码流,其中,节点数据包括当前节点的当前时间戳;

将待传输码流发送至下一节点,以使目的节点对接收到的码流解码,并将解码出的各节点数据和目的节点的节点数据发送至监控服务器。

第一方面可选的实施例中,下一节点为目的节点或非目的节点;

在下一节点为目的节点时,目的节点接收到的码流为待传输码流;

在下一节点为非目的节点时,下一节点在接收到待传输码流后,将下一节点的节点数据添加至待传输码流中并继续传输,其中,目的节点接收到的码流为目的节点的上一节点发送的码流。

第一方面可选的实施例中,当前节点的节点数据还包括当前节点的节点标识。

第一方面可选的实施例中,目的节点为直播观众终端,当前节点为主播终端、或者主播终端与直播观众终端之间的传输链路上的中间节点;

在当前节点为主播终端时,获取待传输的直播视频图像的待传输数据,包括:

对直播视频图像进行编码,生成待传输数据;

在当前节点为中间节点时,获取待传输的直播视频图像的待传输数据,包括:

接收上一节点发送的图像码流,图像码流中包括待传输数据和当前节点的各前序节点的节点数据;

解析图像码流,得到待传输数据和当前节点的各前序节点的节点数据;

根据待传输数据和当前节点的节点数据生成待传输码流,包括:

根据待传输数据、当前节点的各前序节点的节点数据、以及当前节点的节点数据生成待传输码流。

第一方面可选的实施例中,待传输码流为h264码流,待传输数据包括直播视频图像的nalu;

在当前节点为主播终端时,根据待传输数据和当前节点的节点数据生成待传输码流,包括:

基于当前节点的节点数据生成sei;

根据图像nalu和sei生成待传输码流;

在当前节点为中间节点时,图像码流中包括sei,sei中包含当前节点的各前序节点的节点数据,解析图像码流,得到待传输数据和当前节点的各前序节点的节点数据,包括:

解析图像码流,得到待传输数据和sei;

解析sei,得到当前节点的各前序节点的节点数据;

根据图像码流和当前节点的节点数据生成待传输码流,包括:

根据当前节点的节点数据和当前节点的各前序节点的节点数据,生成新的sei;

根据待传输数据和新的sei,生成待传输码流。

第一方面可选的实施例中,根据待传输数据和当前节点的节点数据生成待传输码流,包括:

在当前节点为非指定节点时,则根据待传输数据和当前节点的节点数据生成待传输码流;

在当前节点为指定节点时,方法还包括:

将包含待传输数据的待传输码流发送至下一节点。

第一方面可选的实施例中,当前节点的节点数据包含在待传输码流的用户自定义数据结构部分。

第一方面可选的实施例中,在待传输码流为h264码流时,用户自定数据结构部分为sei的子类型为5的数据结构部分。

第二方面,本发明实施例提供了一种直播延迟监控方法,该方法包括:接收直播视频图像的码流;

对接收到的码流进行解码,得到码流中携带的各节点的节点数据,节点数据包括节点的时间戳;

将解码出的各节点数据和当前节点的节点数据发送至监控服务器,以使监控服务器能够根据接收到的节点数据,确定出各节点之间的直播延迟。

第二方面可选的实施例中,节点数据还包括各节点的节点标识;各节点为主播终端、或者主播终端与直播观众终端之间的传输链路上的中间节点。

第二方面可选的实施例中,该码流为h264码流,各节点的节点数据包含在h264码流的sei中,对接收到的码流进行解码,得到码流中携带的各节点的节点数据,包括:

对接收到的码流进行解码,得到码流中包括的sei;

解析sei,得到码流中携带的各节点的节点数据。

第二方面可选的实施例中,各节点数据包含在码流的用户自定义数据结构部分。

第二方面可选的实施例中,在码流为h264码流时,节点数据包含在sei的子类型为5的数据结构部分。

第三方面,本发明实施例提供了一种直播延迟监控装置,该装置包括:

图像数据获取模块,用于获取待传输的直播视频图像的待传输数据;

待传输码流生成模块,用于根据待传输数据和当前节点的节点数据生成待传输码流,其中,节点数据包括当前节点的当前时间戳;

待传输码流发送模块,用于将待传输码流发送至下一节点,以使目的节点对接收到的码流解码,并将解码出的各节点数据和目的节点的节点数据发送至监控服务器。

第三方面可选的实施例中,下一节点为目的节点或非目的节点;

在下一节点为目的节点时,目的节点接收到的码流为待传输码流;

在下一节点为非目的节点时,下一节点在接收到待传输码流后,将下一节点的节点数据添加至待传输码流中并继续传输,其中,目的节点接收到的码流为目的节点的上一节点发送的码流。

第三方面可选的实施例中,当前节点的节点数据还包括当前节点的节点标识。

第三方面可选的实施例中,目的节点为直播观众终端,当前节点为主播终端、或者主播终端与直播观众终端之间的传输链路上的中间节点;

在当前节点为主播终端时,图像数据获取模块在获取待传输的直播视频图像的待传输数据时,具体用于:

对直播视频图像进行编码,生成待传输数据;

在当前节点为中间节点时,获取待传输的直播视频图像的待传输数据时,具体用于:

接收上一节点发送的图像码流,图像码流中包括待传输数据和当前节点的各前序节点的节点数据;

解析图像码流,得到待传输数据和当前节点的各前序节点的节点数据;

待传输码流生成模块在根据待传输数据和当前节点的节点数据生成待传输码流时,具体用于:

根据待传输数据、当前节点的各前序节点的节点数据、以及当前节点的节点数据生成待传输码流。

第三方面可选的实施例中,待传输码流为h264码流,待传输数据包括直播视频图像的nalu;

在当前节点为主播终端时,待传输码流生成模块在根据待传输数据和当前节点的节点数据生成待传输码流时,具体用于:

基于当前节点的节点数据生成sei;

根据图像nalu和sei生成待传输码流;

在当前节点为中间节点时,图像码流中包括sei,sei中包含当前节点的各前序节点的节点数据,待传输码流生成模块在解析图像码流,得到待传输数据和当前节点的各前序节点的节点数据时,具体用于:

解析图像码流,得到待传输数据和sei;

解析sei,得到当前节点的各前序节点的节点数据;

待传输码流生成模块在根据图像码流和当前节点的节点数据生成待传输码流时,具体用于:

根据当前节点的节点数据和当前节点的各前序节点的节点数据,生成新的sei;

根据待传输数据和新的sei,生成待传输码流。

第三方面可选的实施例中,待传输码流生成模块在根据待传输数据和当前节点的节点数据生成待传输码流时,具体用于:

在当前节点为非指定节点时,根据待传输数据和当前节点的节点数据生成待传输码流;

待传输码流发送模块还用于:

在当前节点为指定节点时,将包含待传输数据的待传输码流发送至下一节点。

第三方面可选的实施例中,当前节点的节点数据包含在待传输码流的用户自定义数据结构部分。

第三方面可选的实施例中,在待传输码流为h264码流时,用户自定数据结构部分为sei的子类型为5的数据结构部分。

第四方面,本发明实施例提供了一种直播延迟监控装置,该装置包括:

码流接收模块,用于接收直播视频图像的码流;

码流解码模块,用于对接收到的码流进行解码,得到码流中携带的各节点的节点数据,节点数据包括节点的时间戳;

节点数据发送模块,用于将解码出的各节点数据和当前节点的节点数据发送至监控服务器,以使监控服务器能够根据接收到的节点数据,确定出各节点之间的直播延迟。

第四方面可选的实施例中,节点数据还包括各节点的节点标识;各节点为主播终端、或者主播终端与直播观众终端之间的传输链路上的中间节点。

第四方面可选的实施例中,该码流为h264码流,各节点的节点数据包含在h264码流的sei中,码流解码模块在对接收到的码流进行解码,得到码流中携带的各节点的节点数据时,具体用于:

对接收到的码流进行解码,得到码流中包括的sei;

解析sei,得到码流中携带的各节点的节点数据。

第四方面可选的实施例中,各节点数据包含在码流的用户自定义数据结构部分。

第四方面可选的实施例中,在码流为h264码流时,节点数据包含在sei的子类型为5的数据结构部分。

第五方面,本发明实施例提供了一种电子设备,该电子设备包括:

处理器;以及存储器,该储器配置用于存储计算机程序,该计算机程序在由该处理器执行时,使得该处理器执行第一方面和第二方面中的任一项方法。

第六方面,本发明实施例提供了一种计算机可读存储介质,计算机存储介质用于存储计算机程序,当计算机程序在计算机上运行时,使得计算机可以执行上述第一方面和第二方面中的任一项方法。

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

在本发明实施例中,在传输直播视频图像的待传输数据时,可以根据待传输数据和各非目的节点的时间戳生成待传输码流,并且目的节点可以将解码出的各非目的节点的时间戳和自身的时间戳(对应于目的节点的时间戳)发送至监控服务器,从而监控服务器可以根据各节点的时间戳得到各个节点之间的时间延迟,实现了直播视频图像传输过程中的全链路监控,可以有效的统计各个节点之间具体时延,进而可以根据得到的具体时延进行针对性的延迟优化。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对本发明实施例描述中所需要使用的附图作简单地介绍。

图1为本发明实施例提供的一种直播延迟监控方法的流程示意图;

图2为本发明实施例提供的另一种直播延迟监控方法的流程示意图;

图3为本发明实施例提供的一种生成待传输码流的流程示意图;

图4为本发明实施例提供的一种中间节点所执行的操作的流程示意图;

图5为本发明实施例提供的一种节点数据示意图;

图6为本发明实施例提供的一种直播延迟监控装置的结构示意图;

图7为本发明实施例提供的另一种直播延迟监控装置的结构示意图;

图8为本发明实施例提供的一种电子设备的结构示意图。

具体实施方式

下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。

本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。

首先对本发明涉及的几个名词进行介绍和解释:

h264:一种高度压缩数字视频编解码器标准,被广泛用于直播、电影、视频等领域。

h264码流:采用h264解码器标准编码生成的码流,其包含一串类型为nalu的数据流。

nalu(networkabstractionlayerunit,图像网络提取层单元):也可以称为网络抽象层,是h264编码标准的一部份,是h264编码的最小单元,可以表示一个编码后的图像信息或者辅助增强信息。

sei(supplementalenhancementinformation,补充增强信息):图像的辅助增强信息,其为nalu中的一种类型。

下面以具体地实施例对本发明的技术方案以及本发明的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本发明的实施例进行描述。

图1示出了本发明实施例中所提供的一种直播延迟监控方法的流程示意图,该方法具体可以由主播终端、或者主播终端与直播观众终端之间的传输链路上的任意一个中间节点执行。其中,主播终端指的生成直播视频图像的终端。直播观众终端为将待传输码流中的待传输数据提供给用户的终端,在本发明实施例中直播观众终端可作为目的节点。中间节点为在直播视频图像传送过程中执行编码、分发等处理的各直播服务器。如图1所示,该方法包括:

步骤s101,获取待传输的直播视频图像的待传输数据。

在实际应用中,在将直播视频图像传输至观众端(即直播观众终端)时,需要将待传输的直播视频图像进行编码,得到编码后的图像数据,然后将编码后的图像数据传输至观众端。本发明实施例中,直播视频图像的待传输数据即对应于直播视频图像编码后的图像数据。

步骤s102,根据待传输数据和当前节点的节点数据生成待传输码流,其中,节点数据包括当前节点的当前时间戳。

其中,当前节点的当前时间戳可以是当前节点获取到待传输数据的时间戳。其中,待传输码流指的是按照一定的编码标准,对待传输数据和当前节点的节点数据进行编码后所得到的数据流。

在实际应用中,当前节点在获取到待传输数据后,可以根据接收到的待传输数据以及当前节点的当前时间戳,按照设定的编码标准生成传输码流。其中,由于编码标准不同,根据接收到的待传输数据以及当前节点的当前时间戳生成待传输码流的方式也是不同的,因此,本发明实施例对于根据待传输数据和当前节点的节点数据生成待传输码流的具体实现方式不做限定。

步骤s103,将待传输码流发送至下一节点,以使目的节点对接收到的码流解码,并将解码出的各节点数据和目的节点的节点数据发送至监控服务器。

其中,监控服务器可以是独立于直播服务器,且与目的节点进行通信连接的其它服务器,也可以是从各直播服务器中指定的直播服务器。

本发明可选的实施例中,下一节点为目的节点或非目的节点;

在下一节点为目的节点时,目的节点接收到的码流为待传输码流;

在下一节点为非目的节点时,下一节点在接收到待传输码流后,将下一节点的节点数据添加至待传输码流中并继续传输,其中,目的节点接收到的码流为目的节点的上一节点发送的码流。

在实际应用中,当前节点在生成待传输码流后,可以将待传输码流发送至下一节点,下一节点在接收到待传输码流后执行相应的操作。而当下一节点的类型不同时,下一节点在接收到待传输码流后所执行的相应的操作也是不同的。其中,下一节点的类型可以为目的节点或非目的节点。

下面针对下一节点的两种类型,对其在接收到待传输码流后所执行相应的操作进行说明。

1、当下一节点为目的节点时:

在实际应用中,当下一节点为目的节点时,也就是当下一节点为直播观众终端时,目的节点所接收到码流为上一节点所发送的待传输码流,此时目的节点可以对接收到的码流进行解码,得到直播视频图像,并将得到的直播视频图像提供给用户。

此外,由于目的节点所接收到的码流是各前序节点根据待传输数据和各前序节点的节点数据生成的,因此,目的节点在接收到码流时,可以对码流进行解码得到各前序节点的节点数据,然后可以将各前序节点的节点数据以及对应于自身的节点数据一并发送至监控服务器,从而监控服务器可以根据对应于各节点的时间戳确定出各节点之间的直播延迟。

2、当下一节点作为非目的节点时:

在实际应用中,在下一节点为非目的节点时,下一节点在接收到上一节点发送的待传输码流时,该下一节点可以将对应于自身的节点数据添加至接收到的待传输码流中,并将添加当前节点数据的待传输码流发送至当前节点的下一节点(即下一节点的下一节点),以使目的节点在接收到上一节点发送的流后可以对码流解码,并将解码出的各节点数据和目的节点的节点数据发送至监控服务器。

在本发明实施例中,在传输直播视频图像的待传输数据时,可以根据待传输数据和各非目的节点的时间戳生成待传输码流,并且目的节点将解码出的各非目的节点的时间戳和自身的时间戳(对应于目的节点的时间戳)发送至监控服务器,从而监控服务器可以根据各节点的时间戳得到各个节点之间的时间延迟,实现了直播视频图像传输过程中的全链路监控,可以有效的统计各个节点之间具体时延,进而可以根据得到的具体时延进行针对性的延迟优化。

本发明可选的实施例中,当前节点的节点数据还包括当前节点的节点标识。

其中,视频直播图像在传输链路中所经过的节点顺序是可以预先设置的,此时所得到的各节点数据中所包括的各时间戳的顺序自然也是与节点顺序相同的(即时间戳是与节点一一对应的)。并且由于节点顺序是预先设置的,此时每个节点的前后顺序是可以提前知晓的,进而也就可以根据时间戳的顺序以及节点顺序得到每个时间戳所对应的节点。

而在实际应用中,为了可以更方便、更快速的知晓每个时间戳所对应的节点,节点数据中还可以包括当前节点的节点标识,节点标识即用于唯一标识一个节点。也就是说,本发明实施例中在确定当前时间戳对应于哪一个节点时,可以直接基于对应的节点标识知晓,进而提升了效率。

本发明可选的实施例中,目的节点为直播观众终端,当前节点为主播终端、或者主播终端与直播观众终端之间的传输链路上的中间节点;

在当前节点为主播终端时,获取待传输的直播视频图像的待传输数据,包括:

对直播视频图像进行编码,生成待传输数据;

在当前节点为中间节点时,获取待传输的直播视频图像的待传输数据,包括:

接收上一节点发送的图像码流,图像码流中包括待传输数据和当前节点的各前序节点的节点数据;

解析图像码流,得到待传输数据和当前节点的各前序节点的节点数据;

根据待传输数据和当前节点的节点数据生成待传输码流,包括:

根据待传输数据、当前节点的各前序节点的节点数据、以及当前节点的节点数据生成待传输码流。

在实际应用中,在将主播终端生成的直播视频图像传送至直播观众终端的过程中,通常可能需要经过中间节点进行相应的处理,如通过不同的中间节点分别进行编码、分发等处理,此时主播终端与直播观众终端之间的传输链路上的中间节点也为当前节点。

在实际应用中,在当前节点为主播终端时,此时主播终端可以按照预设的编码标准对产生的直播视频图像进行编码,生成对应于该直播视频图像的待传输数据,进一步的可以根据对应于主播终端的节点数据和待传输数据生成待传输码流,并将生成的待传输码流发送至下一节点;下一节点在接收到主播终端发送的待传输码流后,若作为目的节点,则进行对应于目的节点时所对应的操作,若作为非目的节点,则进行对应于非目的节点时所对应的操作。

在当前节点为中间节点时,此时获取到的待传输码流为上一节点所发送的图像码流(即在上一节点作为当前节点时,根据待传输数据和该节点的节点数据所生成的待传输码流),该图像码流中包括待传输数据和处于当前节点之前的各前序节点的节点数据;相应的,中间节点可以对接收到的图像码流进行解析,得到该图像码流中所包括的待传输数据和各前序节点的节点数据。进一步的,中间节点可以根据解析得到的待传输数据、各前序节点的节点数据、以及对应于自身的节点数据生成待传输码流,并将生成的待传输码流发送至下一节点;下一节点在接收到发送的待传输码流后,若作为目的节点,则进行对应于目的节点时所对应的操作,若作为非目的节点,则进行对应于非目的节点时所对应的操作。其中,关于下一节点作为于目的节点时的操作、以及下一节点作为非目的节点时的操作可参见前文中的描述,在此就不再赘述。

在本发明可选的实施例中,待传输码流为h264码流,待传输数据包括直播视频图像的nalu;

在当前节点为主播终端时,根据待传输数据和当前节点的节点数据生成待传输码流,包括:

基于当前节点的节点数据生成sei;

根据图像nalu和sei生成待传输码流;

在当前节点为中间节点时,图像码流中包括sei,sei中包含当前节点的各前序节点的节点数据,解析图像码流,得到待传输数据和当前节点的各前序节点的节点数据,包括:

解析图像码流,得到待传输数据和sei;

解析sei,得到当前节点的各前序节点的节点数据;

根据图像码流和当前节点的节点数据生成待传输码流,包括:

根据当前节点的节点数据和当前节点的各前序节点的节点数据,生成新的sei;

根据待传输数据和新的sei,生成待传输码流。

其中,待传输码流可以为h264码流,此时待传输码流中所包括的待传输数据为直播视频图像编码后得到的数据流,并且对应于h264码流中的nalu。

在实际应用中,若当前节点为主播终端,在生成直播视频图像后可以按照h264编码标准对直播视频图像进行编码,生成待传输数据(即h264码流中的nalu),然后可以生成sei并将对应于自身的节点数据添加至sei中,并根据由直播视频图像得到的图像nalu、以及sei生成待传输码流(即h264码流)并发送至下一节点。

在当前节点为中间节点时,中间节点所接收到的图像码流中不仅包括待传输数据,还包括了包含各前序节点的节点数据的sei;中间节点接收到中间节点后可以解析接收到的图像码流,得到图像码流中所包括的sei和待传输数据;进一步的,中间节点可以对得到的sei进行解析,获得sei中所包含的各前序节点的节点数据,然后根据从sei中解析得到的各前序节点的节点数据以及对应于自身的节点数据生成新的sei,并根据待传输数据和该新的sei生成待传输码流,并将生成的待传输码流发送至下一节点,下一节点在接收到待传输码流后,根据自身的类型执行相应的操作,具体可参见前文描述,在此就不再赘述。

在本发明可选的实施例中,根据待传输数据和当前节点的节点数据生成待传输码流,包括:

在当前节点为非指定节点时,则根据待传输数据和当前节点的节点数据生成待传输码流;

在当前节点为指定节点时,该方法还包括:

将包含待传输数据的待传输码流发送至下一节点。

在实际应用中,有时有些节点的延迟时间用户可能并不关心,或者在整个直播视频图像传输的过程中并不会造成很大的延迟时间,此时可以将这些节点配置为指定节点。

相应地,若当前节点为非指定节点,则当前节点可以根据待传输数据和对应于自身的节点数据生成待传输码流,并发送至下一节点;若当前节点为指定节点,此时当前节点可以将包含待传输数据的待传输码流直接转发至下一节点,即不需要将对应于自身的节点数据添加至sei中。

其中,若当前节点为指定节点,且当前节点为主播终端,此时包含待传输数据的待传输码流为主播终端对直播视频图像进行编码后所得到的待传输数据;若当前节点为指定节点,且当前节点为任意一个中间节点,此时包含待传输数据的待传输码流为从上一节点接收到的待传输码流。

在本发明可选的实施例中,当前节点是节点数据包含在待传输码流的用户自定义数据结构部分。

在实际应用中,由于除目的节点之外的其他各节点均需要将节点数据添加至待传输码流中,而为了保证添加节点数据后的待传输码流中的直播视频图像的质量,在将各节点的节点数据添加至待传输码流时,可以将各节点的节点数据包含在待传输码流中用户自定义数据结构部分。

在本发明可选的实施例中,在待传输码流为h264码流时,用户自定数据结构部分为sei的子类型为5的数据结构部分。

在实际应用中,若对h264码流中的信息进行破坏,可能会导致解码出来的图像出现绿屏和灰屏的情况,进而直播观众无法正常观看直播视频图像。同时,如果随意在h264码流中插入业务数据也会导致图像出问题。在本发明实施例中,由于除目的节点之外的其他各节点均需要将节点数据添加至待传输码流中,因此,需要确定h264码流中可以存放节点数据的位置。

基于此,在本发明实施例中,通过查看h264编码规范中nalu的类型发现:类型为6的nalu是属于视频图像的sei。其中,sei在解码、显示或其它过程中起辅助作用,不会影响正常的编解码,所以可以选取nalu中的sei作为存放节点数据的位置。进一步的,继续查看sei的内部类型,可以发现sei的内部中对于子类型为5的描述为用户未注册类型,用户可以在里面定义需要的数据结构。因此,当待传输码流为h264码流时,此时用户自定数据结构部分可以为sei的子类型为5的数据结构部分,即将节点数据存放在sei的子类型为5的数据结构部分中。

图2示出了本发明实施例中所提供的一种直播延迟监控方法的流程示意图,该方法具体可以由直播观众终端(即目的节点)执行,如图2所示,该方法包括:

步骤s201,接收直播视频图像的码流。

步骤s202,对接收到的码流进行解码,得到码流中携带的各节点的节点数据,节点数据包括节点的时间戳。

在实际应用中,直播观众终端所接收到的直播视频图像的码流中携带各节点的节点数据。相应的,直播观众终端可以对接收到的码流进行解码,得到该码流中所携带的各节点的节点数据。其中,各节点的节点数据包括对应于各节点的时间戳,该时间戳可以是各节点获取到待传输数据的时间戳。

步骤s203,将解码出的各节点数据和当前节点的节点数据发送至监控服务器,以使监控服务器能够根据接收到的节点数据,确定出各节点之间的直播延迟。

在实际应用中,直播观众终端得到码流中携带的各节点的节点数据后,可将解码出的各节点数据和当前节点的节点(即对应于直播观众终端的节点数据)数据发送至监控服务器,以使监控服务器能够根据接收到的节点数据,确定出各节点之间的直播延迟。其中,关于监控服务器的描述可参见对侧方法中的描述,在此就不再赘述。

在一示例中,假设整个直播视频传输的传输链路中包主播终端、中间节点1、中间节点2和直播观众终端。此时,监控服务器所接收到的节点数据中包括主播终端的节点数据、中间节点1的节点数据、中间节点2的节点数据以及直播视频传输的节点数据,相应的,监控服务器可以根据对应于各节点数据的节点数据确定各节点之间的直播延迟。例如,监控服务器可以根据主播终端的节点数据中的时间戳和中间节点1的节点数据中的时间戳,确定主播终端与中间节点1之间的直播延迟,也可以根据主播终端的节点数据中的时间戳和直播观众终端的节点数据中的时间戳,确定主播终端与直播观众终端之间的直播延迟。

在本发明实施例中,目的节点可以将解码出待传输码流中的各非目的节点的时间戳,以及将各非目的节点的时间戳和目的节点的时间戳发送至监控服务器,从而监控服务器可以根据对应于各节点的时间戳得到各个节点之间的时间延迟,灵活性比较高。

在本发明可选的实施例中,节点数据还包括各节点的节点标识;各节点为主播终端、或者主播终端与直播观众终端之间的传输链路上的中间节点。

其中,该各节点数据为在直播视频图像的传输链路中处于直播观众终端之前的各节点的各节点数据,如可以是对应于主播终端的节点数据、各中间节点所对应的节点数据等。

在实际应用中,节点数据中还可以包括当前节点的节点标识,当想要知晓时间戳对应于哪一个节点时,即可通过节点标识知晓时间戳为哪一个节点的时间戳。

在本发明可选的实施例中,该码流为h264码流,各节点的节点数据包含在h264码流的sei中,对接收到的码流进行解码,得到码流中携带的各节点的节点数据,包括:

对接收到的码流进行解码,得到码流中包括的sei;

解析sei,得到码流中携带的各节点的节点数据。

在实际应用中,该码流为h264码流时,各节点的节点数据可以包含在码流的sei中,当直播观众终端接收到码流时,可以对接收到的码流进行解码,得到该码流中包括的sei;进一步的,可以对该sei进行解析,得到码流中携带的各节点的节点数据。

在本发明可选的实施例中,各节点数据包含在码流的用户自定义数据结构部分。

在本发明可选的实施例中,在码流为h264码流时,节点数据包含在sei的子类型为5的数据结构部分。

在实际应用中,所解码出的各节点数据通常包含在码流的用户自定义数据结构部分,当节点数据包含在码流的用户自定义数据结构部分时,可以保证待传输码流中的直播视频的质量。

其中,当码流为h264码流时,解码出的各节点数据可以包含在sei的子类型为5的数据结构部分。其中,选取将sei的子类型为5的数据结构部分作为存储各节点的节点数据的原因,可以参见对侧方法中的描述,在此就不再赘述。

下面结合具体场景,以直播视频图像的传输链路中包括节点1、节点2、……、节点n以及目的节点(即直播观众终端),其中,节点1为主播终端,节点2至节点n为中间节点为例,对本发明实施例中所提供的一种直播延迟监控方法进行详细描述。

在实际应用中,节点1将直播视频图像进行编码,生成待传输数据(即h264码流中的图像nalu),然后可以根据待传输数据和对应于自身的节点标识1和时间戳1(即对应于主播终端的节点数据)生成待传输码流,并将待传输码流发送至节点2。其中,节点1根据待传输数据和对应于自身的节点标识和时间戳生成待传输码流的具体流程如图3所示:

步骤s301、生成sei;

步骤s302、初始化时间戳(即时间戳1);

步骤s303、初始化节点标识(即节点标识1);

步骤s304、将初始化后的时间戳和节点标识插入生成的sei;

步骤s305、将sei添加至h264码流中。

相应的,节点2在接收的待传输码流后,执行如图4所示的操作:

步骤s401、解析待传输码流,得到sei和待传输数据;

步骤s402、解析sei,得到各前序节点的节点数据;

步骤s403、是否将节点2的节点数据(节点标识2和时间戳2)插入sei,若是执行步骤s404,否则执行步骤s407;

步骤s404、根据各前序节点的节点数据,以及节点2的节点数据(节点标识2和时间戳2)生成新的sei;

步骤s405、根据待传输数据和新的sei,生成待传输码流;

步骤s406、将生成的待传输码流发送至节点3;

步骤s407、将从节点1接收到的待传输码流直接发送至节点3。

进一步的,由于节点3至节点n均为非目的节点,节点3至节点n在接收到待传输码流后,执行与节点2相同的操作,在此就不再赘述。

进一步的,目的节点(即直播观众终端)接收到节点n发送的待传输码流时,可以对接收到的待传输码流进行解码,得到待传输码流中所包括的直播视频图像的待传输数据和sei,并对sei进行解析,得到待传输码流中携带的各前序节点的节点数据(即节点1至节点n的节点数据)。其中,待传输码流中携带的各前序节点的节点数据的形式如图5所示;相应的,目的节点可以将直播视频图像的待传输数据提供给用户,并将解码出的各节点数据和以及对应于自身的节点数据发送至监控服务器;进一步的,监控服务器在接收到后,可以根据各节点数据中的时间戳差值确定出各节点之间的直播延迟。

本发明实施例提供了一种直播延迟监控装置,如图6所示,该直播延迟监控装置60可以包括:图像数据获取模块601、待传输码流生成模块602以及待传输码流发送模块603,其中,

图像数据获取模块601,用于获取待传输的直播视频图像的待传输数据;

待传输码流生成模块602,用于根据待传输数据和当前节点的节点数据生成待传输码流,其中,节点数据包括当前节点的当前时间戳;

待传输码流发送模块603,用于将待传输码流发送至下一节点,以使目的节点对接收到的码流解码,并将解码出的各节点数据和目的节点的节点数据发送至监控服务器。

本发明可选的实施例中,下一节点为目的节点或非目的节点;

在下一节点为目的节点时,目的节点接收到的码流为待传输码流;

在下一节点为非目的节点时,下一节点在接收到待传输码流后,将下一节点的节点数据添加至待传输码流中并继续传输,其中,目的节点接收到的码流为目的节点的上一节点发送的码流。

本发明可选的实施例中,当前节点的节点数据还包括当前节点的节点标识。

本发明可选的实施例中,目的节点为直播观众终端,当前节点为主播终端、或者主播终端与直播观众终端之间的传输链路上的中间节点;

在当前节点为主播终端时,图像数据获取模块在获取待传输的直播视频图像的待传输数据时,具体用于:

对直播视频图像进行编码,生成待传输数据;

在当前节点为中间节点时,获取待传输的直播视频图像的待传输数据时,具体用于:

接收上一节点发送的图像码流,图像码流中包括待传输数据和当前节点的各前序节点的节点数据;

解析图像码流,得到待传输数据和当前节点的各前序节点的节点数据;

待传输码流生成模块在根据待传输数据和当前节点的节点数据生成待传输码流时,具体用于:

根据待传输数据、当前节点的各前序节点的节点数据、以及当前节点的节点数据生成待传输码流。

本发明可选的实施例中,待传输码流为h264码流,待传输数据包括直播视频图像的nalu;

在当前节点为主播终端时,待传输码流生成模块在根据待传输数据和当前节点的节点数据生成待传输码流时,具体用于:

基于当前节点的节点数据生成sei;

根据图像nalu和sei生成待传输码流;

在当前节点为中间节点时,图像码流中包括sei,sei中包含当前节点的各前序节点的节点数据,待传输码流生成模块在解析图像码流,得到待传输数据和当前节点的各前序节点的节点数据时,具体用于:

解析图像码流,得到待传输数据和sei;

解析sei,得到当前节点的各前序节点的节点数据;

待传输码流生成模块在根据图像码流和当前节点的节点数据生成待传输码流时,具体用于:

根据当前节点的节点数据和当前节点的各前序节点的节点数据,生成新的sei;

根据待传输数据和新的sei,生成待传输码流。

本发明可选的实施例中,待传输码流生成模块在根据待传输数据和当前节点的节点数据生成待传输码流时,具体用于:

在当前节点为非指定节点时,根据待传输数据和当前节点的节点数据生成待传输码流;

待传输码流发送模块还用于:

在当前节点为指定节点时,将包含待传输数据的待传输码流发送至下一节点。

本发明可选的实施例中,当前节点的节点数据包含在待传输码流的用户自定义数据结构部分。

本发明可选的实施例中,在待传输码流为h264码流时,用户自定数据结构部分为sei的子类型为5的数据结构部分。

本发明实施例的直播延迟监控装置可执行本发明实施例提供的一种直播延迟监控方法,其实现原理相类似,此处不再赘述。

本发明实施例提供了一种直播延迟监控装置,如图7所示,该直播延迟监控装置70可以包括:码流接收模块701、码流解码模块702以及节点数据发送模块703,其中,

码流接收模块701,用于接收直播视频图像的码流;

码流解码模块702,用于对接收到的码流进行解码,得到码流中携带的各节点的节点数据,节点数据包括节点的时间戳;

节点数据发送模块703,用于将解码出的各节点数据和当前节点的节点数据发送至监控服务器,以使监控服务器能够根据接收到的节点数据,确定出各节点之间的直播延迟。

本发明可选的实施例中,节点数据还包括各节点的节点标识;各节点为主播终端、或者主播终端与直播观众终端之间的传输链路上的中间节点。

本发明可选的实施例中,该码流为h264码流,各节点的节点数据包含在h264码流的sei中,码流解码模块在对接收到的码流进行解码,得到码流中携带的各节点的节点数据时,具体用于:

对接收到的码流进行解码,得到码流中包括的sei;

解析sei,得到码流中携带的各节点的节点数据。

本发明可选的实施例中,各节点数据包含在码流的用户自定义数据结构部分。

本发明可选的实施例中,在码流为h264码流时,节点数据包含在sei的子类型为5的数据结构部分。

本发明实施例的直播延迟监控装置可执行本发明实施例提供的一种直播延迟监控方法,其实现原理相类似,此处不再赘述。

本发明实施例提供了一种电子设备,如图8所示,图8所示的电子设备2000包括:处理器2001和存储器2003。其中,处理器2001和存储器2003相连,如通过总线2002相连。可选地,电子设备2000还可以包括收发器2004。需要说明的是,实际应用中收发器2004不限于一个,该电子设备2000的结构并不构成对本发明实施例的限定。

其中,处理器2001应用于本发明实施例中,用于实现图6和图7所示的各模块的功能。

处理器2001可以是cpu,通用处理器,dsp,asic,fpga或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本发明公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器2001也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,dsp和微处理器的组合等。

总线2002可包括一通路,在上述组件之间传送信息。总线2002可以是pci总线或eisa总线等。总线2002可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

存储器2003可以是rom或可存储静态信息和计算机程序的其他类型的静态存储设备,ram或者可存储信息和计算机程序的其他类型的动态存储设备,也可以是eeprom、cd-rom或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储或以数据结构形式的期望的计算机程序并能够由计算机存取的任何其他介质,但不限于此。

存储器2003用于存储执行本发明方案的应用程序的计算机程序,并由处理器2001来控制执行。处理器2001用于执行存储器2003中存储的应用程序的计算机程序,以实现图6和图7所示实施例提供的直播延迟监控装置的动作。

本发明实施例提供了一种电子设备,本发明实施例中的电子设备包括:处理器;以及存储器,存储器配置用于存储机器计算机程序,该计算机程序在由该处理器执行时,使得该处理器执行直播延迟监控装置方法。

本发明实施例提供了一种计算机可读存储介质,该计算机可读存储介质上用于存储计算机程序,当计算机程序程序在计算机上运行时,使得计算机可以执行实现直播延迟监控装置方法。

本发明中的一种计算机可读存储介质所涉及的名词及实现原理具体可以参照本发明实施例中的一种直播延迟监控装置方法,在此不再赘述。

应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

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