本发明涉及通信技术领域,特别涉及一种播放网络视频的方法和终端设备。
背景技术:
随着网络技术和智能设备的普及,视频播放器成了智能电视和智能手机中必不可少的功能,用户可以通过视频播放器从网络服务器上获取视频、音频等流媒体,并在智能电视或智能手机上播放,因此,视频播放器在生活中得到了广泛应用。
除了网络速度外,视频播放器的下载缓存机制也是影响视频播放器的起播速度的重要因素,而视频播放器的起播速度直接影响到用户体验。以安卓5.1(Android 5.1)版本中使用的NuPlayer播放器为例,智能电视通过超文本传输协议(HyperText Transfer Protocol,简称HTTP)从网络中下载的网络视频会缓存在NuPlayer播放器的NuCache中,NuCache是NuPlayer播放器中用于缓存数据段的内存,其结构如图1所示,NuCacheOffset表示NuCache中所缓存的数据段的起始位置,TotalSize表示NuCache的最大容量。
当视频播放器需要播放MP4格式的网络视频时,视频播放器在起播之前,需要先下载该网络视频的一段文件头数据和一段文件尾数据,具体的:先下载该网络视频的一段文件头数据,由于NuCache中缓存的数据都是连续的,读取并分析该文件头数据后,需要删除已缓存的文件头数据,然后再下载该网络视频的一段文件尾数据,读取并分析该文件尾,从而获取到该网络视频的元数据(Metadata)。
网络视频开始播放时,如果NuCache中缓存的数据是从该网络视频的起始位置开始的,即从0开始的,则只要缓冲数据量足够了就可以播放;如果NuCache中缓存的数据不是从该网络视频的起始位置开始的,例如,NuCache中缓存的数据是一段文件尾数据,由于播放时需要从该网络视频的起始位置开始读取数据,则需要将NuCache中已缓存的数据清空,重新从该网络视频的起始位置开始下载数据,这样就会导致数据的重复下载,延长了网络视频的起播时间,从而降低了用户体验。
技术实现要素:
本发明实施例提供了一种播放网络视频的方法和终端设备,用于解决现有网络视频起播时间长的问题。
第一方面,提供了一种播放网络视频的方法,包括:
接收到播放指令后,根据所述播放指令所指示播放的网络视频的文件头数据段和文件尾数据段,获取到所述网络视频的元数据,并在视频播放器的内存中缓存所述文件头数据段和所述文件尾数据段,其中,在所述内存中记录所述文件头数据段的参数信息和所述文件尾数据段的参数信息,所述参数信息包括所表征的数据段在所述网络视频中的位置信息和数据量信息;
播放所述网络视频时,根据所述内存中所缓存的数据段的参数信息,查找到所述文件头数据段,并根据所述元数据,播放查找到的所述文件头数据段。
第二方面,提供了一种计算机可读存储介质,其中存储有可执行的程序代码,该程序代码用以实现第一方面所述的方法。
第三方面,提供了一种终端设备,包括:
处理模块,用于接收到播放指令后,根据所述播放指令所指示播放的网络视频的文件头数据段和文件尾数据段,获取到所述网络视频的元数据,并在视频播放器的内存中缓存所述文件头数据段和所述文件尾数据段,其中,在所述内存中记录所述文件头数据段的参数信息和所述文件尾数据段的参数信息,所述参数信息包括所表征的数据段在所述网络视频中的位置信息和数据量信息;
播放模块,用于在播放所述网络视频时,根据所述内存中所缓存的数据段的参数信息,查找到所述文件头数据段,并根据所述元数据,播放查找到的所述文件头数据段。
本发明实施例提供的方法和终端设备中,在接收到播放指令后,根据所述播放指令所指示播放的网络视频的文件头数据段和文件尾数据段,获取到所述网络视频的元数据,并在视频播放器的内存中缓存所述文件头数据段和所述文件尾数据段,以及在所述内存中记录所述文件头数据段的参数信息和所述文件尾数据段的参数信息,由于将视频播放器的内存虚拟成多个缓存区,并通过参数信息来表征每个缓存区所缓存的数据段,使得视频播放器的内存中可以缓存不连续的数据段,从而在解析完网络视频的文件头数据段后,无需删除该文件头数据段,这样,播放所述网络视频时,可以根据所述内存中所缓存的数据段的参数信息,查找到所述文件头数据段并播放,由于无需重新下载文件头数据段,大大加快了网络视频的起播速度,提高了用户体验。
附图说明
图1为NuPlayer播放器中的NuCache的结构示意图;
图2为本发明实施例中的一种播放网络视频的方法的流程示意图;
图3A为本发明实施例中的一种网络视频的数据结构示意图;
图3B为本发明实施例中的另一种网络视频的数据结构示意图;
图4为本发明实施例中的一种终端设备的示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合说明书附图对本发明实施例作进一步详细描述。应当理解,此处所描述的实施例仅用于说明和解释本发明,并不用于限定本发明。
图2所示的实施例中,提供了一种播放网络视频的方法,所述方法包括:
S21、接收到播放指令后,根据所述播放指令所指示播放的网络视频的文件头数据段和文件尾数据段,获取到所述网络视频的元数据,并在视频播放器的内存中缓存所述文件头数据段和所述文件尾数据段,其中,在所述内存中记录所述文件头数据段的参数信息和所述文件尾数据段的参数信息,所述参数信息包括所表征的数据段(也可称为数据块)在所述网络视频中的位置信息和数据量信息。
具体的,在接收到播放指令后,先下载所述播放指令所指示播放的网络视频的文件头数据段和文件尾数据段,以获取到播放所述网络视频所需的元数据,并存储文件头数据段和文件尾数据段。
其中,网络视频的元数据包括但不限于以下信息中的至少一种:视频编码格式,音频编码格式,播放总时长,比特率,帧率等。视频播放器需要根据网络视频的元数据,对下载的网络视频的数据段进行解码等处理,以播放所下载的网络视频。
可选的,所表征的数据段在所述网络视频中的位置信息可以是所表征的数据段在所述网络视频的所有数据段中的位置,也可以是所表征的数据段中的起始数据在所述网络视频的所有数据中的位置。
举例说明,所述文件头数据段的位置信息可以是所述文件头数据在所述网络视频的所有数据段中的位置,也可以是所述文件头数据中的起始数据在所述网络视频的所有数据中的位置。
本步骤中,根据网络视频的文件头数据段和文件尾数据,可以获取到所述网络视频的元数据。
S22、播放所述网络视频时,根据所述内存中所缓存的数据段的参数信息,查找到所述文件头数据,并根据所述元数据,播放所述文件头数据。
本发明实施例中,在接收到播放指令后,根据所述播放指令所指示播放的网络视频的文件头数据段和文件尾数据段,获取到所述网络视频的元数据,并在视频播放器的内存中缓存所述文件头数据段和所述文件尾数据段,其中,在所述内存中记录所述文件头数据段的参数信息和所述文件尾数据段的参数信息,由于将视频播放器的内存虚拟成多个缓存区,并通过参数信息来表征每个缓存区所缓存的数据段,使得视频播放器的内存中可以缓存不连续的数据,从而在解析完网络视频的文件头数据段后,无需删除该文件头数据段,这样,播放所述网络视频时,可以根据所述内存中所缓存的数据段的参数信息,查找到所述文件头数据段并播放,由于无需重新下载文件头数据段,大大加快了网络视频的起播速度,提高了用户体验。
本发明实施例中,所述方法还包括:
在所述网络视频的播放过程中,下载所述网络视频的除所述文件头数据段和所述文件尾数据段外的其他数据段;
将所下载的数据段缓存在所述内存中,并在所述内存中记录所下载的数据段的参数信息;
在播放完所述网络视频的当前数据段后,根据所述内存中缓存的各数据段的位置信息,查找到当前数据段的下一个数据段,并根据所述元数据,播放所述下一个数据段。
具体的,所述网络视频播放期间,不断下载所述网络视频的其他数据段,这样在当前数据段播放完后,可以直接播放下一个数据段,提高播放的连续性,从而提高用户观看体验。
在实施中,将所下载的数据段缓存在所述内存中,包括以下两种可能的实现方式:
方式1、若所下载的数据段的数据量与所述内存已缓存的数据段的数据量之和大于或等于所述内存能够缓存的最大数据量,先从所述内存中,依次删除数据起始位置最靠前的数据段,以使所下载的数据段的数据量与所述内存已缓存的数据段的数据量之和小于所述内存能够缓存的最大数据量;再将所下载的数据段和所下载的数据段的参数信息,缓存在所述内存中。
该方式中,当新下载的数据段数据量与所述内存已缓存的数据段的数据量之和超过所述内存能够缓存的最大数据量时,先删除所述内存中所缓存的部分已播放的数据段,再将新下载的数据段缓存到所述内存中。由于已播放的数据段在所述网络视频中的位置一般比未播放的数据段在所述网络视频中的位置靠前,因此,可以根据已缓存的数据段的位置信息选择所删除的数据段,例如,从已缓存的数据段中,依次删除在所述网络视频中的位置最靠前的数据段,以使所下载的数据段的数据量与所述内存已缓存的数据段的数据量之和小于所述内存能够缓存的最大数据量。
方式2、若所下载的数据段的数据量与所述内存已缓存的数据段的数据量之和大于或等于所述内存能够缓存的最大数据量,先从所述内存中,删除已播放的所有数据段;再将所下载的数据段和所下载的数据段的参数信息,缓存在所述内存中。
该方式中,当新下载的数据段数据量与所述内存已缓存的数据段的数据量之和超过所述内存能够缓存的最大数据量时,先删除所述内存中所缓存的全部已播放的数据段,再将新下载的数据段缓存到所述内存中。
该方式中,可以对所述内存中已缓存的数据段是否已播放进行标记,根据标记信息,从已缓存的数据段中,删除部分或全部已播放的数据段。
方式3、所述方法还包括:
在播放完所述网络视频的任一数据段后,从所述内存中删除所述任一数据段。
该方式中,每次播放完所述内存中的已缓存的数据段后,就从所述内存中删除该数据段,以使所述内存中能够缓存新下载的数据段。
基于上述任一实施例,可选的,所述视频播放器的内存以列表的形式缓存已下载的数据段和已下载的数据段的参数信息,所述列表中的每条记录包括一个已下载的数据段和该数据段的参数信息。
举例说明,所述列表的一种可能的实现形式如表1所示:
其中,NuCacheOffset1表示所述内存中缓存的第一个数据段的位置信息,TotalSize1表示所述内存中缓存的第一个数据段的数据量;NuCacheOffset2表示所述内存中缓存的第二个数据段的位置信息,TotalSize2表示所述内存中缓存的第二个数据段的数据量;依此类推。
基于上述任一实施例,可选的,本发明实施例中在网络视频的数据格式,可以采用如下两种可选的方式:
方式一、音频数据和视频数据交替顺序排列的方式。
图3A所示的实施例中给出了任一网络视频的数据格式,假设该网络视频被划分为m段数据,V1表示该网络视频包含的第一个数据段对应的视频数据,A1表示第一个数据段对应的音频数据;V2表示该网络视频包含的第二个数据段对应的视频数据,A2表示第二个数据段对应的音频数据,依此类推。
方式二、音频数据和视频数据分别顺序排列的方式。
图3B所示的实施例中给出了任一网络视频的数据格式,假设该网络视频被划分为m段数据,V1~Vm分别表示该网络视频包含的各数据段对应的视频数据,A1~Am分别表示该网络视频包含的各数据段对应的所有音频数据。
该方式中,假设1~50M为视频数据,51~70M为该视频数据对应的音频数据,若采用现有播放机制,假设内存能够缓存的最大数据量为80M,先通过HTTP从网络下载50M视频数据缓存到视频播放器的内存中,然后将所述视频播放器的内存已下载的50M视频数据中的部分(如1~20M)数据复制到所述视频播放器的播放缓存中进行解码等处理,由于播放视频时还需要音频数据,所以需要先清除内存中已下载的数据,再通过HTTP从网络下载51~70M的音频数据,并将与1~20M的视频数据对应的音频数据(假设为51~60M)复制到所述视频播放器的播放缓存中进行解码等处理,这样就可以播放该部分视频了。继续播放21~50M网络视频时,由于此时所述视频播放器的内存中已经没有1~50M的视频数据了,需要清除51~70M的音频数据并重新从网络下载21~50M的视频数据,从而增加了缓存次数和视频播放的缓冲时间。若采用本发明实施例提供的方案,由于内存中能够缓存不连续的数据,则可将1~50M的视频数据和51~70M的音频数据缓存在内存中,并标识每个数据段的在所属的网络视频中的位置信息和数据量信息,假设1~50M的视频数据为内存中的第一个数据块,51~70M的音频数据缓为内存中的第二个数据块,这样,在播放完1~20M的视频数据后,先从内存中查询21~50M所属的数据块,确定出21~50M所属的数据块为第一个数据块后,再第一个数据块中读取21~50M的视频数据即可,由于不需要重新下载数据,减少了缓存次数和视频播放的缓冲时间。
下面以NuPlayer播放器为例,对本发明实施例提供的一种视频播放器中播放网络视频的方法进行详细说明。
NuPlayer播放器中的NuCache可以看作一个列表(NuCacheList),可以缓存不连续的数据段,NuCache中配置了NuCacheOffset(起始位置)和TotalSize(总大小)两个参数,来表征所缓存的不同数据段。NuCache中可以缓存以不同Offset(起始位置)开头的数据段,其中,NuCacheOffsetN表征所缓存的第N个数据段中的起始数据在所述网络视频中所有数据段的位置信息,TotalSizeN表征所缓存的第N个数据段对应的数据量总大小。
在接收到播放指令后,且网络视频起播之前,通过HTTP从网络下载需要播放的网络视频的文件头数据段和文件尾数据段,以读取所述网络视频的Metadata,并在NuCache中缓存文件头数据段和文件尾数据段。
具体的,当下载文件头数据段时,将该文件头数据段缓存在NuCacheList中的NuCacheOffset1和TotalSize1对应的NuCacheList(1)中,并通过NuCacheOffset1标记该文件头数据段的位置信息,以及通过TotalSize1标记该文件头数据段的数据量;分析完文件头数据段后,下载文件尾数据段,并将该文件尾数据段缓存在NuCacheList中的NuCacheOffset2和TotalSize2对应的NuCacheList(2)中,并通过NuCacheOffset2标记该文件尾数据段的位置信息,以及通过TotalSize2标记该文件尾数据段的数据量。
网络视频起播时,因为之前读取文件头数据段时已经缓存在NuCache中的NuCacheList(1)中了,因此,直接从NuCache中读取该文件头数据段即可,由于可以直接使用,因此不必清空NuCache重新下载该文件头数据段了,这样在网络带宽一定条件下,大大加快了网络文件的起播速度,提升了用户体验。
上述方法处理流程可以用软件程序实现,该软件程序可以存储在存储介质中,当存储的软件程序被调用时,执行上述方法步骤。
基于同一发明构思,图4所示的实施例中,提供了一种终端设备,由于该终端设备解决问题的原理与图2所示的实施例提供的方法相似,因此该终端设备的实施可以参见方法的实施,重复之处不再赘述。所述终端设备包括:
处理模块41,用于接收到播放指令后,根据所述播放指令所指示播放的网络视频的文件头数据段和文件尾数据段,获取到所述网络视频的元数据,并在视频播放器的内存中缓存所述文件头数据段和所述文件尾数据段,其中,在所述内存中记录所述文件头数据段的参数信息和所述文件尾数据段的参数信息,所述参数信息包括所表征的数据段在所述网络视频中的位置信息和数据量信息;
播放模块42,用于在播放所述网络视频时,根据所述内存中所缓存的数据段的参数信息,查找到所述文件头数据段,并根据所述元数据,播放所述文件头数据段。
本发明实施例中,由于将视频播放器的内存虚拟成多个缓存区,并通过参数信息来表征每个缓存区所缓存的数据段,使得视频播放器的内存中可以缓存不连续的数据段,从而在解析完网络视频的文件头数据段后,无需删除该文件头数据段,这样,在播放所述网络视频时,可以根据所述内存中所缓存的数据段的参数信息,查找到所述文件头数据段并播放,由于无需重新下载文件头数据段,大大加快了网络视频的起播速度,提高了用户体验。
一种可能的实施方式中,所述处理模块还用于:
在所述网络视频的播放过程中,下载所述网络视频的除所述文件头数据段和所述文件尾数据段外的其他数据段;将所下载的数据段缓存在所述内存中,并在所述内存中记录所下载的数据段的参数信息;
相应的,所述播放模块还用于:在所述网络视频的当前数据段播放完后,根据所述内存中缓存的各数据段的位置信息,查找到当前数据段的下一个数据段,并根据所述元数据,播放所述下一个数据段。
作为一种可能的实施方式,所述处理模块具体用于:
若所下载的数据段的数据量与所述内存已缓存的数据段的数据量之和大于或等于所述内存能够缓存的最大数据量,先从所述内存中,依次删除数据起始位置最靠前的数据段,以使所下载的数据段的数据量与所述内存已缓存的数据段的数据量之和小于所述内存能够缓存的最大数据量;再将所下载的数据段和所下载的数据段的参数信息,缓存在所述内存中;或者
若所下载的数据段的数据量与所述内存已缓存的数据段的数据量之和大于或等于所述内存能够缓存的最大数据量,先从所述内存中,删除已播放的所有数据段;再将所下载的数据段和所下载的数据段的参数信息,缓存在所述内存中。
作为另一种可能的实施方式,所述处理模块具体用于:
在所述播放模块播放完所述网络视频的任一数据段后,从所述内存中删除所述任一数据段。
基于上述任一实施例,一种可能的实施方式中,所述内存以列表的形式缓存已下载的数据段和已下载的数据段的参数信息,所述列表中的每条记录包括一个已下载的数据段和该数据段的参数信息。
在本实施例中,处理模块41和播放模块42是以功能模块的形式来呈现。这里的“模块”可以指特定应用集成电路(application-specific integrated circuit,ASIC),电路,执行一个或多个软件或固件程序的处理器和存储器,集成逻辑电路,和/或其他可以提供上述功能的器件。在一个简单的实施例中,本领域的技术人员可以想到处理模块41可以通过计算机设备的处理器、存储器和输入接口来实现,播放模块42可以通过计算机设备的处理器和存储器来实现。
本发明实施例提供的终端设备可以是手机、平板电脑、笔记本电脑等具有网络视频播放功能的设备。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。