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

文档序号:19105637发布日期:2019-11-12 22:38阅读:125来源:国知局
一种视频传输方法和装置与流程

本申请涉及传输技术领域,尤其涉及一种视频传输方法和装置。



背景技术:

HLS(HTTP live streaming)是基于超文本传输协议(hyper text transfer protocol,HTTP)的一种流媒体传输协议,可实现流媒体的直播和点播。在HLS点播场景中,服务器对视频内容进行编码,得到不同码率的多个视频文件,然后按照时间将该多个视频文件中的每个视频文件分为多个分片。终端需要播放视频时,按照播放时间和当前网络状况请求需要的分片,并对所请求到的分片进行缓存、解码和播放。

在HLS技术中,终端所请求的分片从低码率切换为高码率时,已缓存但未播放的低码率分片会失去作用,从而造成传输资源和缓存资源的浪费。



技术实现要素:

本申请实施例提供一种视频传输方法和装置,用以节省传输资源和缓存资源。

第一方面,提供一种视频传输方法,该视频包括主编码流和辅编码流,辅编码流用于提高主编码流的码率,主编码流包括至少两个主流分片,辅编码流包括至少两个辅流分片,每个主流分片与一个辅流分片对应。该方法包括:终端向服务器发送第一主流分片请求,其中,第一主流分片请求用于请求第一主流分片,第一主流分片是至少两个主流分片中的一个主流分片;接收服务器发送的第一主流分片;若当前实时网络状况满足预设条件,则向服务器发送第一辅流分片请求,其中,第一辅流分片请求用于请求第一主流分片对应的第一辅流分片;接收服务器发送的第一辅流分片。该技术方案中,终端请求主流分片,并按需请求辅流分片;其中,辅流分片用于提高主流分片的码率。由于在本申请实施例中,主编码流可以单独播放,或者,主编码流与辅编码流叠加重构后播放,因此已缓存的主编码流不会因缓存辅编码流而失去作用。与现有技术相比,能够节省传输资源和缓存资源。

可选的,终端和服务器之间通过HTTP/2协议通信。该服务器可以是支持HTTP/2协议的任一个服务器,例如可以是WEB服务器。

在一种可能的实现方式中,该方法还可以包括:终端将第一主流分片和第一辅流分片叠加并重构,播放重构后生成的码流。这样,能够提高视频播放质量。

在一种可能的实现方式中,终端接收服务器发送的第一主流分片,可以包括:在一链路上接收服务器发送的第一主流分片,其中,该链路可以是终端与服务器之间的任一条链路。该情况下,上述接收服务器发送的第一辅流分片,包括:在链路上接收服务器发送的第一辅流分片。这样,终端和服务器均只需要维护一条链路即可,因此实现简单。

在一种可能的实现方式中,该方法还可以包括:终端向服务器发送第二主流分片请求,其中,第二主流分片请求用于请求第二主流分片,第二主流分片是至少两个主流分片中的除第一主流分片之外的一个主流分片;接收服务器发送的第二主流分片;若当前实时网络状况满足预设条件,则向服务器发送第二辅流分片请求,其中,第二辅流分片请求用于请求第二主流分片对应的第二辅流分片;若在向服务器发送第二辅流分片请求之后且接收到第二辅流分片之前,检测到当前实时网络状况不满足预设条件,则向服务器发送中断请求,其中,中断请求用于请求中断第二辅流分片的传输流程。这样,能够在一定程度上减少终端获取第二主流分片的下一个主流分片,从而有效较少终端播放视频的过程中出现卡顿的现象的发生。可以理解的,该可能的实现方式可以不依赖于上文提供的任一技术方案,而单独执行,这样,第二主流分片具有任性。

第二方面,提供一种视频传输方法,该视频包括主编码流和辅编码流,主编码流包括至少两个主流分片,辅编码流包括至少两个辅流分片,每个主流分片与一个辅流分片对应;该方法可以包括:服务器接收终端发送的第一主流分片请求,其中,第一主流分片请求用于请求第一主流分片,第一主流分片是至少两个主流分片中的一个主流分片;向终端发送第一主流分片;接收终端发送的第一辅流分片请求,其中,第一辅流分片请求用于请求第一主流分片对应的第一辅流分片;第一辅流分片请求是终端在当前网络状况满足预设条件的情况下发送的;向终端发送第一辅流分片。

在一种可能的实现方式中,向终端发送第一主流分片,可以包括:在一链路上向终端发送第一主流分片。该情况下,向终端发送第一辅流分片,可以包括:在该链路上向终端发送第一辅流分片。

在一种可能的实现方式中,主流分片的优先级高于该主流分片对应的辅流分片的优先级。该情况下,向终端发送第一辅流分片,可以包括:若确定已向终端发送第一主流分片,则向终端发送第一辅流分片。这样,能够保证主流分片可以优先传输,从而保证主流分片的播放连续性。

在一种可能的实现方式中,该方法还可以包括:服务器接收终端发送的第二主流分片请求,其中,第二主流分片请求用于请求第二主流分片,第二主流分片是至少两个主流分片中的除第一主流分片之外的一个主流分片;向终端发送第二主流分片;接收终端发送的第二辅流分片请求,其中,第二辅流分片请求用于请求第二主流分片对应的第二辅流分片;若在向终端发送第二辅流分片请求之前,接收到终端发送的中断请求,则中断第二辅流分片的传输流程。可以理解的,该可能的实现方式可以不依赖于上文提供的任一技术方案,而是单独执行,这样,第二主流分片具有任性。

第二方面或第二方面的任一种可能的实现方式提供的技术方案的有益效果均可以参考上述第一方面或第一方面可能的实现方式,此处不再赘述。

第三方面,提供一种终端,视频包括主编码流和辅编码流,辅编码流用于提高主编码流的码率,主编码流包括至少两个主流分片,辅编码流包括至少两个辅流分片,每个主流分片与一个辅流分片对应。该终端可以包括:发送单元和接收单元。其中,发送单元,用于向服务器发送第一主流分片请求,其中,第一主流分片请求用于请求第一主流分片,第一主流分片是至少两个主流分片中的一个主流分片。接收单元,用于接收服务器发送的第一主流分片。发送单元还用于,若当前实时网络状况满足预设条件,则向服务器发送第一辅流分片请求,其中,第一辅流分片请求用于请求第一主流分片对应的第一辅流分片。接收单元还用于,接收服务器发送的第一辅流分片。

在一种可能的实现方式中,该终端还可以包括:重构单元和播放单元。其中,重构单元,用于将第一主流分片和第一辅流分片叠加并重构。播放单元,用于播放重构后生成的码流。

在一种可能的实现方式中,接收单元具体用于,在一链路上接收服务器发送的第一主流分片;在该链路上接收服务器发送的第一辅流分片。

在一种可能的实现方式中,发送单元还可以用于,向服务器发送第二主流分片请求,其中,第二主流分片请求用于请求第二主流分片,第二主流分片是至少两个主流分片中的除第一主流分片之外的一个主流分片。接收单元还可以用于,接收服务器发送的第二主流分片。发送单元还可以用于,若当前实时网络状况满足预设条件,则向服务器发送第二辅流分片请求,其中,第二辅流分片请求用于请求第二主流分片对应的第二辅流分片。发送单元还可以用于,若在向服务器发送第二辅流分片请求之后且接收到第二辅流分片之前,检测到当前实时网络状况不满足预设条件,则向服务器发送中断请求,其中,中断请求用于请求中断第二辅流分片的传输流程。

第四方面,提供一种服务器,视频包括主编码流和辅编码流,主编码流包括至少两个主流分片,辅编码流包括至少两个辅流分片,每个主流分片与一个辅流分片对应。该服务器可以包括:接收单元和发送单元。其中,接收单元,用于接收终端发送的第一主流分片请求,其中,第一主流分片请求用于请求第一主流分片,第一主流分片是至少两个主流分片中的一个主流分片。发送单元,用于向终端发送第一主流分片。接收单元还用于,接收终端发送的第一辅流分片请求,其中,第一辅流分片请求用于请求第一主流分片对应的第一辅流分片;第一辅流分片请求是终端在当前网络状况满足预设条件的情况下发送的。发送单元还用于,向终端发送第一辅流分片。

在一种可能的实现方式中,发送单元具体用于:在一链路上向终端发送第一主流分片;在该链路上向终端发送第一辅流分片。

在一种可能的实现方式中,主流分片的优先级高于该主流分片对应的辅流分片的优先级;该情况下,发送单元具体用于:若确定已向终端发送第一主流分片,则向终端发送第一辅流分片。

在一种可能的实现方式中,接收单元还用于,接收终端发送的第二主流分片请求,其中,第二主流分片请求用于请求第二主流分片,第二主流分片是至少两个主流分片中的除第一主流分片之外的一个主流分片。发送单元还用于,向终端发送第二主流分片。接收单元还用于,接收终端发送的第二辅流分片请求,其中,第二辅流分片请求用于请求第二主流分片对应的第二辅流分片。接收单元还用于,接收终端发送的中断请求。该服务器还可以包括:中断单元,用于若在发送单元向终端发送第二辅流分片请求之前,接收单元接收到终端发送的中断请求,则中断第二辅流分片的传输流程。

可选的,上文第一方面至第四方面中的中断请求可以包括:HTTP/2中的RST_STREM帧。另外,中断请求还可以是一种新设计的帧,或者可以复用现有技术中提供的其他帧,本申请实施例对此不进行限定。

第五方面,提供一种终端,该终端具有实现上述方法实施例中终端行为的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。

在一种可能的实现方式中,该终端可以包括:处理器、存储器、通信总线和通信接口;其中,存储器用于存储计算机执行指令,处理器与存储器通过通信总线连接,当终端运行时,处理器执行存储器存储的计算机执行指令,以使终端执行上述第一方面或第一方面的任一种实现方式提供的视频传输方法。

第六方面,提供一种计算机可读存储介质,用于储存为上述终端所用的计算机软件指令,当其在计算机上运行时,使得计算机可以执行上述第一方面中任一项的视频传输方法。

第七方面,提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机可以执行上述第一方面中任一项的视频传输方法。

另外,第三方面、第五方面和第六方面中任一种设计方式所带来的技术效果可参见第一方面中不同设计方式所带来的技术效果,此处不再赘述。

第八方面,提供一种服务器,该服务器具有实现上述方法实施例中服务器行为的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。

在一种可能的实现方式中,该服务器可以包括:处理器、存储器、通信总线和通信接口。其中,存储器用于存储计算机执行指令,处理器与存储器通过通信总线连接,当服务器运行时,处理器执行存储器存储的计算机执行指令,以使服务器执行上述第二方面或第二方面的任一种实现方式提供的视频传输方法。

第九方面,提供一种计算机可读存储介质,用于储存为上述服务器所用的计算机软件指令,当其在计算机上运行时,使得计算机可以执行上述第二方面中任一项的视频传输方法。

第十方面,提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机可以执行上述第二方面中任一项的视频传输方法。

另外,第四方面、第九方面和第十方面中任一种设计方式所带来的技术效果可参见第一方面中不同设计方式所带来的技术效果,此处不再赘述。

附图说明

图1为本申请实施例提供的技术方案所适用的一种系统架构的示意图;

图2为本申请实施例提供的一种编码服务器的结构示意图;

图3为本申请实施例提供的一种传输服务器的结构示意图;

图4为本申请实施例提供的一种终端的结构示意图;

图5为本申请实施例提供的一种视频传输方法的交互示意图;

图6为本申请实施例提供的另一种视频传输方法的交互示意图;

图7为本申请实施例提供的一种视频传输方法的流程示意图;

图8为本申请实施例提供的一种播放视频的流程示意图;

图9为本申请实施例提供的另一种视频传输方法的交互示意图;

图10为本申请实施例提供的另一种终端的结构示意图;

图11为本申请实施例提供的另一种服务器的结构示意图。

具体实施方式

在HLS技术中,终端所请求的分片从低码率切换为高码率时,已缓存但未播放的低码率分片会失去作用,从而造成传输资源和缓存资源的浪费。例如,假设终端已请求并缓存了低码率分片1~10,且当前正在播放分片5;若终端在播放分片5时,检测到当前网络状况较好,则可以向服务器请求高码率的分片6,这样,已缓存但未播放的低码率的分片6会失去作用,从而造成传输资源和缓存资源的浪费。

基于此,本申请实施例提供了一种视频传输方法和装置,其基本原理为:终端请求主流分片,并按需请求辅流分片;其中,辅流分片用于提高主流分片的码率。现有技术中,不同码率的同一内容的分片独立存在、独立传输、且择一播放。而本申请中,辅编码流的作用是为了提高主编码流的码率,即:主编码流可以单独播放,或者,主编码流与辅编码流叠加重构后播放,因此已缓存的主编码流不会因缓存辅编码流而失去作用。与现有技术相比,能够节省传输资源和缓存资源。

本申请实施例中所涉及的主编码流和辅编码流可以是服务器根据重构视频编码(reconstructive video coding,RVC)技术等编码后得到的码流。其中,在RVC技术中,编码器可以同时生成两路流,其中一路为主编码流,一路为辅编码流。主编码流为分辨率较低的视频码流,播放器可以直接解码播放。辅编码流的作用是协助播放器对主编码流进行分辨率的提升。比如,主编码流的码率为720p,通过进行超分辨率操作,叠加辅编码流后进行重构,即可将该码率提升到1080p,从而提升视频的播放质量。当然,本申请实施例不限定于RVC技术这一种编码技术,还可以是其他的编码技术。

本申请实施例提供的技术方案可以应用于如图1所示的系统架构中,图1所示的系统包:编码服务器11、传输服务器12和终端13。编码服务器11用于按照某种编码技术对视频内容进行编码,并将编码结果传输至传输服务器12。传输服务器12用于保存编码结果,并在接收到终端13发送的分片请求时,向终端13发送编码后的分片。终端13用于根据用户指示或者自身触发向传输服务器12发送分片请求,并对接收到传输服务器12发送的编码后的分片进行解码和播放。

需要说明的是,图1仅为示例图,其中,本申请实施例对编码服务器11的个数、传输服务器12的个数和至少一个终端13的个数均不进行限定,在实际应用中,可以根据需要以不同于图1所示的个数进行网络部署。

可选的,传输服务器12与终端13之间可以建立一条或多条链路,并在这些链路上传输分片请求和分片。其中,这里的链路可以是HTTP/2链路,该情况下,传输服务器12可以是支持HTTP/2的服务器。当然,具体实现时不限于此。

为了实现本申请实施例提供的技术方案,如图2所示,图1中的编码服务器11可以包括:下采样模块1101、主流编码器1102、辅流生成模块1103、分片控制模块1104、主流封装分片模块1105和辅流封装分片模块1106。

其中,下采样模块1101用于接收原始视频输入流,并对所输入的原始视频输入流进行降码率,并将降码率后得到的视频流输出至主流编码器1102。例如,接收4K的YUV格式的视频输入流,并对4K的YUV格式的视频输入流降码率,生成2K的YUV格式的视频流,然后将该2K的YUV格式的视频流输出至主流编码器1102。其中,YUV是一种色彩数据的编码格式。

主流编码器1102用于接收下采样模块1101输入的视频流,并对该视频流进行编码,例如H.264编码等,生成主编码流,然后将主编码流输出至主流封装分片模块1105。

辅流信息生成模块1103用于比较下采样模块1101输出的视频流与主流编码器1102输出的主编码流,生成辅编码流。其中,辅编码流包含重构用于提高视频质量的内容,例如对主编码流中的部分像素点进行修正的信息等。

主流封装分片模块1105用于接收主流编码器1102输出的主编码流,并在分片控制模块1104的控制下,按照时间点对主编码流进行分片及封装,得到至少两个主流分片,例如TS(transport stream)分片或者mp4分片等,然后输出该至少两个主流分片。

辅流封装切片模块1106用于接收辅流生成模块1103输出的辅编码流,并在分片控制模块1104的控制下,按照时间对辅编码流进行分片及封装,得到至少两个辅流分片,然后输出该至少两个辅流分片。其中,辅流分片的格式可以是自定义格式,每个辅流分片与一个主流分片对应,每个辅流分片的时间点与其对应的主流分片的时间点相同,每个辅流分片用于提高其所对应的主流分片的码率。

分片控制模块1104用于对主流封装分片模块1105的执行过程和辅流封装分片模块1106的执行过程进行控制,并生成描述分片(包括主流分片和辅流分片)的仓单文件,然后输出该仓单文件。其中,仓单文件可以包括每个分片的时间点,每个主流分片与每个主流分片的对应关系等等。

另外,编码服务器11还可以包括通信接口,用于与外部设备(例如传输服务器2)进行通信。例如,用于接收主流封装分片模块1105输出的主流分片、辅流封装分片模块1106输出的辅流分片,以及分片控制模块1104输出的仓单文件;并将这些信息,发送至WEB服务器,其中,该WEB服务器可以是支持HTTP/2协议的WEB服务器,该服务器可以为上文中的传输服务器12。

在硬件实现上,通信接口1107可以是收发器,下采样模块1101、主流编码器1102、辅流信息生成模块1103、分片控制模块1104、主流封装分片模块1105和辅流封装分片模块1106均可以以硬件形式内嵌于或独立于编码服务器11的处理器中,也可以以软件的形式存储于编码服务器11的存储器中,以便于处理器调用执行以上各个模块对应的操作。另外,编码服务器11除了包含收发器、处理器和存储器之外,还可以包含通信总线,用于使收发器、处理器和存储器相互连接。

为了实现本申请实施例提供的技术方案,如图3所示,图1中的传输服务器12可以包括:通信接口1201、处理器1202、存储器1203和通信总线1204。其中,通信接口1201、处理器1202以及存储器1203通过通信总线1204相互连接。

通信接口1201为传输服务器12与外部网元(如编码服务器11和终端13)之间进行业务数据流交互的单元。具体的,通信接口1201可以用于接收编码服务器11发送的各主流分片、各辅流分片以及仓单文件。或者,接收终端13发送的主流分片请求、辅流编码请求或者中断请求,或者,向终端13回复所请求的主流分片、辅流分片或者仓单文件等。存储器1203可以用于存储数据和/或代码,处理器1302可以通过运行或执行存储在存储器1203内的程序代码,以及调用存储在存储器1203内的数据,实现传输服务器12的各种功能。

可以理解的,图3中示出的传输服务器12并不构成对传输服务器12的限定,实际实现时,传输服务器12还可以包括比图示更多的部件,或者组合某些部件,或者不同的部件布置。例如传输服务器12还可以包含电源(power)、风扇(fan)、时钟(clock,CLK)等。

为了实现本申请实施例提供的技术方案,如图4所示,图1中的终端13可以包括:通信接口1301、处理器1302、存储器1303、通信总线1304、播放器1305和显示屏1306。其中,通信接口1301、处理器1302、存储器1303、播放器1305以及显示屏1306通过通信总线1304相互连接。

通信接口1303为终端13与外部网元(如传输服务器12)之间进行业务数据流交互的单元。具体的,通信接口1303可以用于向传输服务器12发送主流分片请求、辅流编码请求或者中断请求,或者,接收传输服务器发送的主流分片、辅流分片或者仓单文件等。存储器1303可以用于存储数据和/或代码,处理器1302可以通过运行或执行存储在存储器1303内的程序代码,以及调用存储在存储器1303内的数据,实现终端13的各种功能。

可以理解的,图4中示出的终端13并不构成对终端13的限定,实际实现时,终端13还可以包括比图示更多的部件,或者组合某些部件,或者不同的部件布置。例如终端13还可以包含电源、风扇、时钟等。

另外,通信接口1201和通信接口1301均可以包括接收单元和发送单元,具体可以是收发器或者传输接口等。

处理器1202和处理器1302可以包含多个中央处理器(central processing unit,CPU)或者包含多个网络处理器(network processing unit,CPU),可以是特定集成电路(application specific integrated circuit,ASIC),或者是被配置成实施本申请实施例的一个或多个集成电路,例如:一个或多个微处理器(digital signal processor,DSP),或,一个或者多个现场可编程门阵列(field programmable gate array,FPGA),也可以为多核系统级芯片(system on chip,SoC)。

存储器1203和存储器1303均可以是易失性存储器(volatile memory),如:随机存取存储器(random-access memory,RAM);也可以是非易失性存储器(non-volatile memory),如:只读存储器(read-only memory,ROM)、快闪存储器(flash memory),硬盘(hard disk drive,HDD),还可以是固态硬盘(solid-state drive,SSD),或者上述种类的存储器的组合。通信总线1204和通信总线1304均可以分为地址总线、数据总线、控制总线等,可以是以太网总线、工业标准体系结构(industry standard architecture,ISA)总线、外部设备互连(peripheral component,PCI)总线或扩展工业标准体系结构(extended industry standard architecture,EISA)总线等。为便于表示,图3和图4中仅用一条粗线表示各个通信总线,但并不表示仅有一根总线或一种类型的总线。

需要说明的是,上文中均是是编码服务器11和传输服务器12为独立的设备进行描述的,具体实现时,这两个设备还可以是集成在一起的,另外,这两个设备中的任一个设备还可以与其他的网络侧设备集成在一起,本申请实施例对此不进行限定。

为了便于描述,以下实施例以步骤的形式示出并详细描述了本发明提供的视频传输方法,其中,示出的步骤也可以在除图3所示的传输服务器12和图4所示的终端13之外的其他任一计算机中执行。此外,虽然在方法流程图中示出了本申请实施例提供的视频传输方法的逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

需要说明的是,下文中提供的实施例中所描述的“服务器”具体可以是上文中描述的传输服务器12。本文中的“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。本文中的“多个”是指两个或两个以上。

如图5所示,为本申请实施例提供的一种视频传输方法的交互示意图。图5所示的方法可以包括以下步骤S101~S104:

S101:终端向服务器获取待播放视频的仓单文件。

待播放视频可以是终端向服务器请求的任意一段视频。该视频可以包括主编码流和辅编码流,辅编码流用于提高主编码流的码率,主编码流包括至少两个主流分片,辅编码流包括至少两个辅流分片,每个主流分片与一个辅流分片对应。其中,主编码流和辅编码流的生成过程及其分片过程,可以参考上文,此处不再赘述。

待播放视频的仓单文件可以包括但不限于:该至少两个主流分片中的每个主流分片的信息,以及该至少两个辅流分片中的每个辅流分片的信息。例如,每个分片(包括主流分片和辅流分片)的时间点,主流分片与辅流分片的对应关系等等。每个主流分片的时间点和与其对应的辅流分片的时间点相同。

当用户需要播放一个视频时,可以向终端发送指示信息,例如通过触屏操作,文字输入,语音输入等方式发送指示信息;终端检测到该指示信息之后,若确定该终端已与服务器之间建立连接,则向该服务器请求待播放视频的仓单文件;若确定该终端没有与服务器之间建立连接,则先与该服务器之间建立连接,再向该服务器请求待播放时频的仓单文件。其中,关于终端与服务器之间建立连接的过程,以及终端向服务器请求仓单文件的具体实现过程可参考现有技术,此处不再赘述。

S102:终端解析仓单文件,得到待播放视频的每个分片的时间点,每个主流分片与辅流分片的对应关系等。

S103:终端向服务器获取待播放视频的主流分片,并在当前实时网络状况满足预设条件时,获取主流分片对应的辅流分片;以及缓存获取到的每个分片。

终端可以根据检测到的用户发送的指示信息,确定向服务器请求待播放时频中的哪个主流分片,接着,终端可以在接收到服务器回复的该主流分片之后,向该服务器请求该主流分片的下一个主流分片,依次类推,直至终端向服务器请求到该待播放视频的最后一个分片为止。例如,假设待播放视频包括10个主流分片,那么,用户发送的指示信息所指示的播放起始时刻所对应的主流分片可以是第1个主流分片,也可以是第5个主流分片等。若所指示的播放起始时刻所对应的主流分片是第5个主流分片,则终端可以向服务器请求第5个主流分片,并在接收到服务器回复的第5个主流分片之后,向服务器请求第6个主流分片,依次类推,直至终端请求到第10个主流分片为止。

当前网络状况不是一成不变的,其可以随着环境、负载等因素的变化而实时变化。终端可以周期性地检测当前网络状况,当检测周期较小时,可以认为是实时检测当前网络状况。其中,检测当前网络状况可以包括但不限于检测以下参数中的至少一种:网络时延,网络丢包率和网络波动系统。其具体检测过程可以参考现有技术,此处不再赘述。

需要说明的是,在本申请实施例提供的技术方案中,当前实时网络状况,是指终端执行检测网络状况这一动作时,所检测到的网络状况。也就是说,本申请实施例的不同步骤中涉及到的“当前实时网络状况”所代表的含义,需要根据实际实现或实际语境确定,而不能认为不同步骤中的同一个词“当前实时网络状况”表示同一时刻测量得到的网络状况。类似地,“当前播放时刻”是指终端正在播放的时刻。

当前实时网络状况满足预设条件,可以理解为,当前网络状况的质量较好,即通信质量较好。该情况下,终端可以向服务器请求辅流分片,以将该辅流分片与主流分片叠加并重构,从而提高该辅流分片对应的主流分片的码率,进而提高用户观看视频的体验。当前实时网络状况满足预设条件,可以包括以下至少一种:当前网络时延小于或等于第一阈值,当前网络丢包率小于或等于第二阈值,当前网络波动系数小于或等于第三阈值。本申请实施例对第一阈值、第二阈值和第三阈值的具体取值以及如何取值不进行限定。

在本申请实施例中,终端可以独立缓存主流分片和辅流分片,例如,在终端中开辟特定的两部分存储空间,其中一部分存储空间用于存储主流分片,另一部分存储空间用于存储辅流分片。或者,终端可以集成缓存主流分片和辅流分片,例如,在终端中开辟特定的存储空间,并在该存储空间中存储主流分片和辅流分片。

下面说明终端获取一个主流分片和其对应的辅流分片的过程。如图6所示,该方法包括以下步骤S11~S16:

S11:终端向服务器发送第一主流分片请求,第一主流分片请求用于请求第一主流分片。

第一主流分片请求中可以包括第一主流分片的标识,例如第一主流分片的时间点,或者第一主流分片的索引等。第一主流分片,可以是该至少两个主流分片中的任意一个主流分片,具体可以是从指示信息所指示的播放起始时刻所对应的主流分片开始至待播放视频包括的最后一个主流分片中的任意一个主流分片。

S12:服务器接收终端发送的第一主流分片请求,并根据第一主流分片请求向终端发送第一主流分片。

S13:终端接收服务器发送的第一主流分片,并缓存第一主流分片。

S14:若当前实时网络状况满足预设条件,则终端向服务器发送第一辅流分片请求,其中,第一辅流分片请求用于请求第一主流分片对应的第一辅流分片。

第一辅流分片请求中可以包括第一辅流分片的标识,例如第一辅流分片的时间点,或者第一辅流分片的索引等。

S15:服务器接收终端发送的第一辅流分片请求,并向终端发送第一辅流分片。

S16:终端接收服务器发送的第一辅流分片,并缓存第一辅流分片。

S11~S13为获取第一主流分片的过程,S14~S16为获取第一辅流分片的过程;本申请实施例对S11~S13和S14~S16的执行顺序不进行限定,例如,可以先执行S11~S13再执行S14~S16,也可以先执行S14~S16再执行S11~S13,还可以在执行S11~S13的过程中执行S14~S16。也就是说,终端获取一个主流分片的过程和获取该主流分片对应的辅流分片的过程可以不分先后。

下面说明终端获取多个主流分片和每个主流分片对应的辅流分片的过程。

对于终端来说,其一般是按照时间点区分请求各主流分片的先后顺序;并且,可以按照时间点区分请求各辅流分片的先后顺序,也可以不按照时间点区分请求各辅流分片的先后顺序。对于同一个时间点的主流分片和辅流分片(即主流分片和该主流分片对应的辅流分片)的请求顺序,可以不进行限定。

对于服务器来说,其一般也是按照时间点向终端发送各主流分片,并按照时间向终端发送各辅流分片。对于同一个时间点的主流分片和辅流分片(即主流分片和该主流分片对应的辅流分片)的发送顺序,在本申请实施例中,可以通过设置优先级的方式确定。可选的,服务器和终端可以预先约定好,或者服务器和终端之间通过信令方式约定主流分片和该主流分片对应的辅流分片的优先级。例如,使用HTTP/2的PRIORITY帧设置优先级。例如,终端在向服务器发送主流分片请求和/或辅流分片请求时,携带所请求的主流分片和/或辅流分片的优先级。可选的,考虑到主流分片可以单独播放,而辅流分片需要与主流分片一起才可播放,可以设置主流分片的优先级高于该主流分片对应的辅流分片的优先级,从而保证主流分片可以优先传输,进而保证主流分片的播放连续性;也就是说,服务器在向终端发送一个主流分片之后,才会向其发送该主流分片对应的辅流分片。

基于此,终端获取多个主流分片和每个主流分片对应的辅流分片的过程,如图7所示,具体可以包括如下步骤S21~S24:

S21:终端向服务器获取第i个主流分片,并缓存第i个主流分片。

其中,第i个主流分片是指待播放视频的第i个主流分片,i是大于等于1的整数,i的初始值为1,i的最大值为待播放视频中包含的主流分片的数量。

S22:终端判断是否请求第i个主流分片对应的辅流分片。

若是,则执行步骤S23,若否,则执行步骤S24。

具体的,终端在检测到当前实时网络状况满足预设条件,且没有缓存第i个辅流分片的情况下,确定需要请求第i个辅流分片;在检测到当前实时网络状况不满足预设条件,或已缓存第i个辅流分片的情况下,确定不需要请求第i个辅流分片。

S23:终端获取第i个主流分片对应的辅流分片,并缓存该辅流分片。

执行步骤S23之后,执行步骤S24。

S24:终端判断第i个主流分片是否是待播放的最后一个主流分片。

若是,则结束。若否,则执行i=i+1,并返回步骤S21。

可以理解的,在终端获取最后一个主流分片之后,获取该主流分片对应的辅流分片之前,可以不判断当前实时网络状况是否满足预设条件。另外,在执行完上述S21~S24之后,终端已获取到待播放的每个主流分片,以及部分或全部主流分片对应的辅流分片。可选的,该方法还可以包括:终端获取未播放的主流分片对应的未缓存的辅流分片。例如,假设待播放的主流分片按照时间点先后排序后为主流分片1~5,主流分片1~5与辅流分片1~5一一对应,那么,终端获取的主流分片和辅流分片的顺序可以是:主流分片1、辅流分片1、主流分片2、主流分片3、主流分片4、辅流分片4、主流分片5、辅流分片5。进一步地,若在获取了辅流分片5时,当前播放时刻正在播放主流分片1对应的视频内容,则终端还可以依次获取以下辅流分片:辅流分片2和辅流分片3。

需要说明的是,具体实现时,终端在获取每个主流分片之后,若检测到当前实时网络状况满足预设条件,则获取未播放的主流分片对应的未缓存的首个辅流分片,直至获取到最后一个主流分片,接着,再获取未播放的主流分片对应的未缓存的辅流分片。或者,终端可以在获取多个主流分片之后,获取一个或多个未播放的主流分片对应的未缓存的辅流分片等,本申请实施例对此不进行限定。

S104:终端根据所缓存的分片,播放视频。

终端在请求到每个分片(包括主流分片和辅流分片)之后,先缓存该分片,并在缓存至一定数量的主流分片之后,开始按照主流分片的时间点依次根据所缓存的主流分片播放待播放视频,以保证播放的连续性。需要说明的是,由于终端向服务器获取到的主流分片和辅流分片是服务器编码后得到的码流,因此,终端在播放之前,还需要对主流分片和辅流分片进行解码。另外,本申请实施例对该一定数量的具体取值以及如何取值不进行限定。

可以理解的,对于包含多个主流分片的待播放视频而言,终端可以边获取视频边播放已缓存的视频,但是对于同一个主流分片来说,终端先获取该主流分片,再播放已缓存的该主流分片。

基于此,终端播放视频的过程,如图8所示,具体可以包括如下步骤S31~S35:

S31:终端按照主流分片的时间点确定第j个主流分片。其中,第j个主流分片表示终端最近将要播放的主流分片,例如,若终端当前正在播放主流分片1,则终端最近将要播放的主流分片是主流分片2。

其中,第j个主流分片是指待播放视频的第j个主流分片,j是大于等于1的整数,j的初始值为1,j的最大值为待播放视频中包含的主流分片的数量。

S32:终端判断是否缓存了第j个主流分片对应的辅流分片。

若是,则执行步骤S33;若否,则执行步骤S34。

S33:终端播放第j个主流分片。即,播放第j个主流分片对应的视频内容。

执行步骤S33之后,执行步骤S35。

S34:终端将第j个主流分片和该辅流分片进行叠加并重构,得到合成分片,播放该合成分片。

执行步骤S34之后,执行步骤S35。

可以理解的,步骤S33中所播放的视频内容对应的视频内容与步骤S34中所播放的合成分片对应的视频内容相同,只是二者的码率不同,因此播放质量不同。

主流分片与叠加辅流分片并重构是重构视频编码的关键步骤。由于编码服务器在对视频内容进行编码,生成主流分片的过程中,会进行降码率处理,例如将4K的视频流进行降码率,生成2K的视频流。因此,终端对主流分片解码后得到的图像帧的分辨率较低。一般地,终端在对主流分片解码之后,会对解码得到的图像进行超分辨率处理,重新将码率提升至4K;但是,提升过程中,相比原始的4K的视频流的时频质量会下降,因此可以利用辅编码流进行修正,例如补充丢失的细节,修正编码过程中引入的误差等。

S35:终端判断第j个主流分片是否是待播放的最后一个主流分片。

若是,则结束。若否,则执行i=i+1,并返回步骤S31。

例如,假设待播放视频包括10个主流分片,每个主流分片对应一个辅流分片,当前播放时刻所指示的主流分片为第5个主流分片,已缓存第6~10个主流分片,以及第6~7个辅流分片,则一种可能的情况为:依次播放合成分片6、合成分片7,第8~10个主流分片。其中,合成分片6是第6个主流分片和第6个辅流分片叠加并重构后得到的合成分片,合成分片7是第7个主流分片和第7个辅流分片叠加并重构后得到的合成分片。

本申请实施例提供的视频传输方法,终端请求主流分片,并按需请求辅流分片;其中,辅流分片用于提高主流分片的码率。由于在本申请实施例中,主编码流可以单独播放,或者,主编码流与辅编码流叠加重构后播放,因此已缓存的主编码流不会因缓存辅编码流而失去作用。与现有技术相比,能够节省传输资源和缓存资源。

可以理解的,终端与服务器之间可以建立一条或多条链路,在本申请实施例中,主流分片与辅流分片可以在独立的两条链路上传输,也可以在同一条链路上传输。若在同一条链路上传输,终端和服务器均只需要维护这一条链路即可,因此实现简单。示例的,这里的链路可以是HTTP/2链路。也就是说,终端在发送主流分片请求和辅流分片请求时,使用同一HTTP/2链路,即主流分片和辅流分片使用不同的HTTP/2的帧,两路流复用到同一HTTP/2链路中。

上述S11~S16提供了获取第一主流分片和第一辅流分片的过程。在该过程中,还可以设置中断请求,以中断辅流分片的传输流程。如图9所示,具体可以包括以下步骤S41~S47。其中,为了与第一主流分片进行区分,下面使用第二主流分片为例进行说明。可以理解的,第二主流分片具有任意性,即终端可以中断待播放时频中的任一个辅流分片的传输流程。

S41:终端向服务器发送第二主流分片请求,其中,第二主流分片请求用于请求第二主流分片,第二主流分片是至少两个主流分片中的除第一主流分片之外的一个主流分片。

S42:服务器接收终端发送的第二主流分片请求,并根据第二主流分片请求向服务器发送第二主流分片。

S43:终端接收服务器发送的第二主流分片,并缓存第二主流分片。

S44:若当前实时网络状况满足预设条件,则终端向服务器发送第二辅流分片请求,其中,第二辅流分片请求用于请求第二主流分片对应的第二辅流分片。

其中,S41~S44的具体实现方式可以参考上文中的S11~S14。

S45:服务器接收终端发送的第二辅流分片请求。

S46:若在向服务器发送第二辅流分片请求之后且接收到第二辅流分片之前,终端检测到当前实时网络状况不满足预设条件,则向服务器发送中断请求,其中,中断请求用于请求中断第二辅流分片的传输流程。

由于终端可以实时检测当前网络状况,因此,若终端在向服务器发送第二辅流分片请求之后且接收到第二辅流分片之前,终端检测到当前实时网络状况不满足预设条件,说明此时网络状况较差,若服务器向终端发送第二辅流分片,则可能需要很长时间,从而导致终端播放视频的过程中出现卡顿等,基于此,本申请实施例提供了终端发送中断请求的技术方案。其中,该终端请求可以是HTTP/2中的RST_STREM帧,也可以是一种新的帧,或者是其他的帧,本申请实施例对此不进行限定。

可以理解的,若在向服务器发送第二辅流分片请求之后且接收到第二辅流分片之前,终端检测到当前实时网络状况仍然满足预设条件,则不向服务器发送中断请求,即服务器不会接收到中断请求。该情况下,服务器会向终端发送第二辅流分片请求,终端接收第二辅流分片,并缓存该第二辅流分片,其具体实现过程可参考上文。

S47:服务器接收终端发送的中断请求,并在确定还未向终端发送第二辅流分片的情况下,根据中断请求中断第二辅流分片的传输流程。

具体的,服务器在接收到中断请求之后,可以不响应第二辅流分片请求消息,即不向终端发送第二辅流分片。若服务器在接收到终端发送的中断请求时,已经向终端发送了第二辅流分片,则服务器可以丢弃该中断请求。

可以理解的,在执行S41~S47之后,终端可能接收不到服务器发送的第二辅流分片,但是终端已获取到了第二主流分片,因此,终端可以继续向服务器请求第二主流分片的下一个主流分片。

本实施例提供的技术方案,终端在已向服务器发送辅流分片请求之后且未接收到所请求的辅流分片之前,若检测到当前实时网络状况不满足预设条件,可以触发中断所请求的辅流分片的传输流程。这样,能够在一定程度上减少终端获取该辅流分片对应的主流分片的下一个主流分片,从而有效较少终端播放视频的过程中出现卡顿的现象的发生。

上述主要从各个网元之间交互的角度对本申请实施例提供的方案进行了介绍。可以理解的是,各个网元,例如终端或者服务器。为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

本申请实施例可以根据上述方法示例对终端或者服务器进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

比如,在采用对应各个功能划分各个功能模块的情况下,图10示出了上述实施例中所涉及的终端100的一种可能的结构示意图。该终端100包括发送单元1401和接收单元1402。可选的,还可以包括:重构单元1403和播放单元1404。其中,发送单元1401可以用于执行图6中的S11和S14中终端执行的动作,图9中的S41和S46中终端执行的动作,和/或用于支持本文所描述的技术的其它过程。接收单元可以用于执行图6中的S12和S15中终端执行的动作,图9中的S42中终端执行的动作,和/或用于支持本文所描述的技术的其它过程。重构单元1403可以用于执行图8中的S34中重构的动作,和/或用于支持本文所描述的技术的其它过程。播放单元1404可以用于执行图8中的S34中播放的动作,和/或用于支持本文所描述的技术的其它过程。

其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。

在本申请实施例中,该终端对应各个功能划分各个功能模块的形式来呈现,或者,该策略实体以采用集成的方式划分各个功能模块的形式来呈现。这里的“模块”可以指特定应用集成电路(Application-Specific Integrated Circuit,ASIC),执行一个或多个软件或固件程序的处理器和存储器,集成逻辑电路,和/或其他可以提供上述功能的器件。在一个简单的实施例中,本领域的技术人员可以想到该终端可以通过图4所示的形式。比如,上文提供的发送单元1401可以是发送器,接收单元1402可以是接收器,发送器可以与接收器一起构成收发器,其具体可以是图4中的通信接口1301。另外,重构单元1403可以以硬件形式内嵌于或独立于终端的处理器(如图4中的处理器1302)中,也可以以软件形式存储于终端的存储器(如图4中的存储器1303)中。播放单元1404可以是图4中的播放器1305和/或显示屏1306。

由于本申请实施例提供的终端可用于执行上述视频传输方法,因此其所能获得的技术效果可参考上述方法实施例,本申请实施例在此不再赘述。

比如,在采用对应各个功能划分各个功能模块的情况下,图11示出了上述实施例中所涉及的服务器110的一种可能的结构示意图。该服务器110可以包括接收单元1501和发送单元1502。可选的,还可以包括:中断单元1503。其中,接收单元1501可以用于执行图6中的S11和S14中服务器执行的动作,图9中S41和S44中服务器执行的动作,和/或用于支持本文所描述的技术的其它过程。发送单元1502可以用于执行图6中的S12和S15中服务器执行的动作,图9中S45和S46中服务器执行的动作,和/或用于支持本文所描述的技术的其它过程。中断单元1503可以用于执行图9中S47的动作,和/或用于支持本文所描述的技术的其它过程。

其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。

在本申请实施例中,该服务器对应各个功能划分各个功能模块的形式来呈现,或者,该服务器以采用集成的方式划分各个功能模块的形式来呈现。这里的“模块”可以指特定ASIC电路,执行一个或多个软件或固件程序的处理器和存储器,集成逻辑电路,和/或其他可以提供上述功能的器件。在一个简单的实施例中,本领域的技术人员可以想到该终端可以通过图3所示的形式。比如,上文提供的发送单元1502可以是发送器,接收单元1501可以是接收器,发送器可以与接收器一起构成收发器,其具体可以是图3中的通信接口1201。另外,中断单元1503可以以硬件形式内嵌于或独立于终端的处理器(如图3中的处理器1202)中,也可以以软件形式存储于终端的存储器(如图3中的存储器1203)中。

由于本申请实施例提供的终端可用于执行上述视频传输方法,因此其所能获得的技术效果可参考上述方法实施例,本申请实施例在此不再赘述。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式来实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可以用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带),光介质(例如,DVD)、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。

尽管在此结合各实施例对本申请进行了描述,然而,在实施所要求保护的本申请过程中,本领域技术人员通过查看所述附图、公开内容、以及所附权利要求书,可理解并实现所述公开实施例的其他变化。在权利要求中,“包括”(comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。单个处理器或其他单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。

尽管结合具体特征及其实施例对本申请进行了描述,显而易见的,在不脱离本申请的精神和范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本申请的示例性说明,且视为已覆盖本申请范围内的任意和所有修改、变化、组合或等同物。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

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