一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种媒体文件播放方法、装置、计算设备与可读存储介质与流程

2022-03-09 00:34:41 来源:中国专利 TAG:


1.本发明涉及媒体文件播放技术领域,尤其是一种媒体文件播放方法、装置、计算设备与可读存储介质。


背景技术:

2.媒体播放器是用来播放媒体文件的软件。常见的媒体播放器,例如vlc播放器等,能够播放多种格式的媒体文件(以下简称文件),并且提供了播放列表功能,用户将文件添加到播放列表中,当用户选择顺序播放模式时,媒体播放器将自动按照播放列表中各文件的排序进行播放,播放完一个文件后,自动播放下一个文件。
3.现有的媒体播放器在播放完一个文件时(例如顺序播放模式下播放完一个文件时),会间隔2-3秒的时间才能播放下一个文件,原因是在播放一个文件时,媒体播放器先要读取文件的一些信息,例如文件格式、文件大小、播放时长等,然后取文件的第一帧进行解码,解码完成后进行渲染播放,然后取文件的第二帧进行解码,解码完成后进行渲染播放
……
,直到一个文件全部播放完为止。在顺序播放模式下,播放完播放列表中第一个文件的最后一帧后,媒体播放器会读取播放列表中第二个文件的文件格式、文件大小、播放时长等常规信息,而读取这些信息耗时较长,所以会出现2-3秒的卡顿现象,降低了用户的观影体验。
4.综上,上述现有的媒体播放器存在由于读取文件信息耗时长而导致的无法在两个文件之间无缝切换的问题。


技术实现要素:

5.为此,本发明提供了一种媒体文件播放方法、装置、计算设备与可读存储介质,以力图解决或者至少缓解上面存在的至少一个问题。
6.根据本发明的一个方面,提供了一种媒体文件播放方法,适用于媒体播放器,所述方法包括:并行执行第一线程和第二线程;所述第一线程执行的任务包括:根据第一播放列表和播放模式创建代表真实播放顺序的第二播放列表;获取所述第二播放列表中当前的首个文件信息,并在获取到该信息后将所述文件从所述第二播放列表中删除;依次对所述文件的各帧数据进行解码,并将每帧解码后的数据分别作为一个节点存入缓存队列;以及待所述文件全部解码完成后,返回获取所述第二播放列表中当前的首个文件信息的步骤,直至所述第二播放列表中无文件为止;所述第二线程执行的任务包括:从所述缓存队列中依次读取并播放各帧数据。
7.可选地,在根据本发明的媒体文件播放方法中,所述信息包括:文件格式、文件大小、总帧数以及播放时长。
8.可选地,在根据本发明的媒体文件播放方法中,所述将每帧解码后的数据作分别为一个节点存入缓存队列的步骤包括:对于每帧解码后的数据,判断所述缓存队列是否已满;当所述缓存队列未满时,将所述解码后的数据存入所述缓存队列中;当所述缓存队列已
满时,返回判断所述缓存队列是否已满的步骤。
9.可选地,在根据本发明的媒体文件播放方法中,判断所述缓存队列是否已满的步骤包括:判断所述缓存队列中节点的数量是否达到预设的上限,若达到所述上限,则所述缓存队列已满。
10.可选地,在根据本发明的媒体文件播放方法中,从所述缓存队列中依次获取并播放各帧数据的步骤包括:从所述缓存队列中读取最先存入的一帧数据;将读取到的数据从所述缓存队列中删除;以及播放读取到的数据,然后返回从所述缓存队列中读取最先存入的一帧数据的步骤。
11.可选地,在根据本发明的媒体文件播放方法中,播放读取到的数据的步骤包括:将读取到的数据分割为视频数据和音频数据;以及对所述视频数据进行渲染,同时播放所述音频数据。
12.可选地,在根据本发明的媒体文件播放方法中,所述视频数据为yuv数据。
13.根据本发明的另一方面,还提供了一种媒体文件播放装置,包括:列表创建单元,适于根据第一播放列表和播放模式创建代表真实播放顺序的第二播放列表;解析单元,适于获取所述第二播放列表中当前的首个文件信息,并在获取到该信息后将所述文件从所述第二播放列表中删除;解码单元,适于依次对所述文件的各帧数据进行解码,并将每帧解码后的数据分别作为一个节点存入缓存队列;以及播放单元,适于从所述缓存队列中依次读取并播放各帧数据。
14.根据本发明的又一方面,还提供了一种计算设备,包括:至少一个处理器和存储有程序指令的存储器;当程序指令被处理器读取并执行时,使得计算设备执行如上的媒体文件播放方法。
15.根据本发明的再一方面,还提供了一种存储有程序指令的可读存储介质,当程序指令被计算设备读取并执行时,使得计算设备执行如上的媒体文件播放方法。
16.本发明的媒体文件播放方法的使用场景是连续播放多个媒体文件,前提是用户把全部待播放的媒体文件添加到播放列表中,并设定了播放模式。本发明利用解码速度比播放速度快的特点,把媒体文件解压后缓冲到一个队列中,播放时从队列中获取缓存视频数据进行渲染,同时播放音频数据。
17.根据本发明的媒体文件播放方法、装置、计算设备与可读存储介质,能够实现以下有益效果中的至少一种:将解码和播放分为两个线程,使得解码速度不受播放速度的限制;由于解码速度很快,缓存队列中可以存储大量的待播放的已解码数据,为读取下一个文件的信息争取了足够长的时间,使得多个媒体文件连续播放时,中间没有等待时间,对于大码率视频文件之间的切换,效果极其明显;解码过程中不必按照时间戳管理解码时间,只需要根据第二播放列表的文件不断循环解码即可。
附图说明
18.为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的
部件或元素。
19.图1示出了根据本发明一个实施例的媒体播放方法300的应用环境示意图;
20.图2示出了根据本发明一个实施例的计算设备200的示意图;
21.图3示出了根据本发明一个实施例的媒体播放方法300的流程图;
22.图4示出了根据本发明一个实施例的媒体播放装置400的结构示意图;
23.图5示出了根据本发明一个实施例的播放单元450的结构示意图。
具体实施方式
24.下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
25.针对上述现有媒体播放器存在由于读取文件信息耗时长而无法在两个文件之间无缝切换的问题,本发明提供了一种用于媒体播放器的媒体播放方法。
26.图1示出了根据本发明一个实施例的媒体播放方法300的应用环境示意图。如图1所示,媒体播放器100提供播放列表和播放模式功能,第一播放列表110是展现给用户的列表,用户可以在第一播放列表110中添加文件,还可以在播放模式120中选择播放模式,例如顺序播放、随机播放等,当用户选择了某一播放模式时,媒体播放器100按照用户所选的播放模式对第一播放列表110中的文件顺序进行调整,得到表示真实播放顺序的第二播放列表130,第二播放列表130不需要展示给用户。媒体播放方法300将按照第二播放列表130顺序播放文件,并通过播放窗口120展示播放内容。
27.媒体播放器100作为应用,应当安装在计算设备中,相应地,本发明的媒体播放方法300也应当在计算设备中执行。计算设备可以是任意具有存储和计算能力的设备,其例如可以实现为服务器、工作站等,也可以实现为桌面计算机、笔记本计算机等个人配置的计算机,或者实现为手机、平板电脑、智能可穿戴设备、物联网设备等终端设备,但不限于此。
28.图2示出了根据本发明一个实施例的计算设备200的结构示意图。需要说明的是,图2所示的计算设备200仅为一个示例,在实践中,用于实施本发明的媒体播放方法300的计算设备可以是任意型号的设备,其硬件配置情况可以与图2所示的计算设备200相同,也可以与图2所示的计算设备200不同。实践中用于实施本发明的媒体播放方法300的计算设备可以对图2所示的计算设备200的硬件组件进行增加或删减,本发明对计算设备的具体硬件配置情况不做限制。
29.如图2所示,在基本的配置202中,计算设备200典型地包括系统存储器206和一个或者多个处理器204。存储器总线208可以用于在处理器204和系统存储器206之间的通信。
30.取决于期望的配置,处理器204可以是任何类型的处理,包括但不限于:微处理器(up)、微控制器(uc)、数字信息处理器(dsp)或者它们的任何组合。处理器204可以包括诸如一级高速缓存210和二级高速缓存212之类的一个或者多个级别的高速缓存、处理器核心214和寄存器216。示例的处理器核心214可以包括运算逻辑单元(alu)、浮点数单元(fpu)、数字信号处理核心(dsp核心)或者它们的任何组合。示例的存储器控制器218可以与处理器204一起使用,或者在一些实现中,存储器控制器218可以是处理器204的一个内部部分。
31.取决于期望的配置,系统存储器206可以是任意类型的存储器,包括但不限于:易失性存储器(诸如ram)、非易失性存储器(诸如rom、闪存等)或者它们的任何组合。系统存储器106可以包括操作系统220、一个或者多个应用222以及程序数据224,媒体播放器100即为一个应用222。应用222实际上是多条程序指令,其用于指示处理器204执行相应的操作。在一些实施方式中,应用222可以布置为在操作系统上使得处理器204利用程序数据224进行操作。
32.计算设备200还可以包括储存接口总线234。储存接口总线234实现了从储存设备232(例如,可移除储存器236和不可移除储存器238)经由总线/接口控制器230到基本配置202的通信。操作系统220、应用222以及数据224的至少一部分可以存储在可移除储存器236和/或不可移除储存器238上,并且在计算设备200上电或者要执行应用222时,经由储存接口总线234而加载到系统存储器206中,并由一个或者多个处理器204来执行。
33.计算设备200还可以包括有助于从各种接口设备(例如,输出设备242、外设接口244和通信设备246)到基本配置202经由总线/接口控制器230的通信的接口总线240。示例的输出设备242包括图形处理单元248和音频处理单元250。它们可以被配置为有助于经由一个或者多个a/v端口252与诸如显示器或者扬声器之类的各种外部设备进行通信。示例外设接口244可以包括串行接口控制器254和并行接口控制器256,它们可以被配置为有助于经由一个或者多个i/o端口258和诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备)或者其他外设(例如打印机、扫描仪等)之类的外部设备进行通信。示例的通信设备246可以包括网络控制器260,其可以被布置为便于经由一个或者多个通信端口264与一个或者多个其他计算设备262通过网络通信链路的通信。
34.网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块,并且可以包括任何信息递送介质。“调制数据信号”可以这样的信号,它的数据集中的一个或者多个或者它的改变可以在信号中以编码信息的方式进行。作为非限制性的示例,通信介质可以包括诸如有线网络或者专线网络之类的有线介质,以及诸如声音、射频(rf)、微波、红外(ir)或者其它无线介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存储介质和通信介质二者。
35.在根据本发明的计算设备200中,应用222包括执行媒体文件播放方法300的多条程序指令,这些程序指令可以指示处理器204执行本发明的媒体文件播放方法300,以便计算设备200执行本发明的媒体文件播放方法300。
36.图3示出了根据本发明一个实施例的媒体文件播放方法300的流程图。方法300适于在前述计算设备200中执行。如图3所示,方法300包括两个并行执行的线程,即:第一线程和第二线程。
37.第一线程始于步骤s310。在步骤s310中,根据第一播放列表110和播放模式120创建代表真实播放顺序的第二播放列表130。例如,用户选择了顺序播放模式,那么得到的第二播放列表130将与第一播放列表110相同;如果用户选择了随机播放模式,那么媒体播放器100对第一播放列表110中的所有文件随机排序,得到第二播放列表130;如果用户选择了一个文件d,并选择了单文件循环播放模式,那么,第二播放列表130将包含若干个文件d,即,第二播放列表130中的所有文件均是同一文件。
38.在步骤s320中,对第二播放列表130中当前的首个文件进行解析,以获取第二播放列表130中当前的首个文件的信息,获取到的信息主要包括文件格式、文件大小、总帧数以及播放时长等。为了节约内存,在获取到这些信息后可以将当前的首个文件从第二播放列表130中删除。首个文件是指第二播放列表130中排在最前面的文件。按照上述节约内存的原则,在任意一个播放模式下,即将播放的文件都是第二播放列表130中的首个文件。例如,第二播放列表130依次包含文件a、文件b以及文件c,文件a为当前的首个文件,首先读取文件a的信息,读取完信息后,将文件a从第二播放列表130中删除,相应地,文件b上升为首个文件。
39.在步骤s330中,依次对步骤s320解析完的文件(以下简称“文件”)的各帧数据进行解码,并将解码后的数据存入预先创建的缓存队列中,缓存队列的初始状态为空。首先读取文件的第一帧数据,然后对第一帧数据进行解码,并将解码后的第一帧数据作为一个节点存入缓存队列中;接下来读取文件的第二帧数据,然后对第二帧数据进行解码,并将解码后的第二帧数据也作为一个节点存入缓存队列中;然后读取文件的第三帧数据
……
,每解码完一帧数据并放入缓存队列之后,需要根据文件大小来判断当前解码的文件是否完成解码,如果未完成解码,则继续读取下一帧数据进行解码,直到将文件最后一帧解码后的数据存入缓存队列中。
40.步骤s330结束后,第一个文件解码完成,然后返回步骤s320,再次读取第二播放列表130中当前的首个文件。由于已经完成解码的文件名已经从第二播放列表130中删除,因此,返回步骤s320后再次读取的首个文件信息实际上是播放的第二个文件的信息。
41.步骤s320和步骤s330循环执行,直到步骤s320获取第二播放列表130当前的首个文件信息失败,说明此时第二播放列表130的所有文件全部完成解码并存入缓存队列中。
42.在第一线程进行的同时,第二线程也在进行。第二线程包括步骤s340,在步骤s340中,从缓存队列中依次读取并播放各帧数据。播放刚刚开始时,媒体播放器100还没有完成第一个文件的第一帧的解码,此时缓存队列是空的,此时需要等待,待缓存队列中已存入解码数据后,步骤s340按照缓存队列中数据存入的顺序进行读取,即:先存入的数据先被读取并播放。每从缓存队列中读取到一帧数据,先判断是否播放结束,播放结束是指用户选择了结束播放或者暂停播放,如果是播放结束,则结束方法300,如果未播放结束,则将读取到的数据其分割为视频数据和音频数据,这里的视频数据指代yuv数据,播放音频数据,同时渲染视频数据。然后利用媒体帧数据的时间戳信息等待下一帧的播放时间,当到达下一帧的播放时间时,从缓存队列中读取下一帧数据,以此循环。
43.受硬件设备的限制,缓存队列中的节点数量是有限的,所以步骤s340中,从缓存队列中每读取一个节点的数据(每次读取的数据都是缓存队列中最先存入的数据),便将该节点从缓存队列中删除,然后再播放读取到的数据,循环读取-播放的过程。
44.为确保文件能够顺利播放,在一个实施例中,可以预先设定缓存队列中节点数量的上限。相应地,步骤s330中,将解码后的数据存入缓存队列的过程中,首先应当判断缓存队列是否已满,判断缓存队列是否已满的依据是缓存队列中节点数量是否达到预设的上限,若达到上限,则说明缓存队列已满,无法加入新的节点,此时需要等待,待有节点从缓存队列中出列(节点出列表示节点从缓存队列中删除)时才可以加入新节点;如果缓存队列未满,则可以直接将解码后的一帧数据作为新的节点加入到缓存队列中。
45.综上所述,与现有媒体播放方法不同的是,方法300将解码和播放分为两个线程,两个线程共用一个队列,由于相比于播放速度,解码速度更快,因此,两个线程使得解码速度不受播放速度的限制,缓存队列中可以存储大量的待播放的已解码数据,换言之,上一个文件的最后一帧解码完成时,该文件仍然存在很多未播放的帧,这就为读取下一个文件的信息争取了足够长的时间。通常情况下,当上一个文件的最后一帧播放完成时,媒体播放器100已经获取到了下一个文件的信息,并已经完成了前几帧的解码,那么,上一个文件播放结束后,可以在最短的时间内播放下一个文件,实现两个文件的无缝切换。此外,方法300在解码过程中不必按照时间戳管理解码时间,只需要根据第二播放列表130的文件不断循环解码即可。
46.本发明的实施例还提供了一种媒体文件播放装置。图4示出了根据本发明一个实施例的媒体播放装置400的结构示意图,如图4所示,本发明的实施例还的媒体文件播放装置400包括:列表创建单元410,适于根据第一播放列表和播放模式创建代表真实播放顺序的第二播放列表;解析单元420,适于获取第二播放列表130中当前的首个文件信息,并在获取到该信息后将该文件从第二播放列表130中删除;解码单元430,依次对该文件的各帧数据进行解码,并将每帧解码后的数据分别作为一个节点存入缓存队列440;以及播放单元450,适于从缓存队列440中依次读取并播放各帧数据。
47.在一个实施例中,解析单元420中获取的信息包括:文件格式、文件大小、总帧数以及播放时长等信息。
48.在一个实施例中,解码单元430通过以下步骤实现将每帧解码后的数据作为一个节点存入缓存队列440:对于每帧解码后的数据,判断缓存队列440是否已满;当缓存队列440未满时,将解码后的数据存入缓存队列440中;当缓存队列440已满时,返回判断缓存队列440是否已满的步骤。
49.在一个实施例中,解码单元430通过以下步骤判断缓存队列是否已满:判断缓存队列中440节点的数量是否达到预设的上限,若达到上限,则缓存队列440已满,否则,缓存队列440未满。
50.图5示出了根据本发明一个实施例的播放单元450的结构示意图。如图5所示,播放单元450包括:数据读取子单元451,适于从缓存队列440中读取最先存入的一帧数据;数据删除子单元452,适于将读取到的数据从缓存队列440中删除;以及播放子单元453,适于播放读取到的数据,然后返回数据读取子单元451。
51.在一个实施例中,播放子单元453通过以下步骤实现播放读取到的数据:将读取到的数据分割为视频数据和音频数据;以及对视频数据进行渲染,同时播放音频数据。
52.在一个实施例中,视频数据为yuv数据。
53.本发明的实施例的媒体文件播放装置400的原理与媒体文件播放方法300相同,并且能够达到与媒体文件播放方法300同样的技术效果,在此不再赘述。
54.这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如可移动硬盘、u盘、软盘、cd-rom或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。
55.在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的自动校验方法。
56.以示例而非限制的方式,可读介质包括可读存储介质和通信介质。可读存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在可读介质的范围之内。
57.在此处所提供的说明书中,算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与本发明的示例一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的优选实施方式。
58.在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
59.类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
60.本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
61.此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
62.如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来
描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
63.尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献