具体实施方式
下面结合说明书附图对本发明实施例进行详细说明。
如图1所示,本发明实施例中,多媒体文件(音视频文件等)的下载播放方法流程可以包括:
步骤101、根据用户下载多媒体文件的请求,从下载源下载所述多媒体文件数据。
步骤102、根据用户播放正在下载的多媒体文件的请求,播放已下载的多媒体文件数据。
步骤103、根据用户的播放进度控制操作行为,确定播放所需的多媒体文件数据。
步骤104、从下载源下载所述播放所需的多媒体文件数据,并播放。
所述根据用户下载多媒体文件的请求,从下载源下载所述多媒体文件数据,是指用户在下载软件(例如超级旋风、电骡、比特彗星等)中进行多媒体文件的下载。用户使用下载软件进行多媒体文件的下载时,当已下载了部分多媒体文件数据时,则可开始播放多媒体文件已下载的数据部分,而无须等待所有数据全部下载。
下载软件中集成的多媒体文件播放器通常会提供播放进度控制按键供用户进行播放进度的控制操作,例如播放进度控制条,时间输入窗口等。则较佳的,所述用户的播放进度控制操作行为可为:用户通过鼠标拖动播放进度条;或用户输入需要播放的多媒体文件的时间点;或其他任何能够确定需要播放多媒体文件的时间点的操作。
在下载多媒体文件的同时播放该未完成下载的多媒体文件的过程中,当用户通过操作选择了需要播放的多媒体时间点,而此时间点对应的数据尚未下载,则需要首先确定该时间点对应的数据,并从数据源优先获取该部分数据,以便能响应用户的操作,及时进行播放。
多媒体文件(视频或音频文件)通常由文件头、帧数据和索引三个部分组成。其中文件头描述了该多媒体文件和其中数据的总体信息,如文件类型、播放总时长、最大码率、视频图像的宽高(针对视频文件)及帧数等;帧数据包含了每个视频帧及/或音频帧的数据(视频文件同时包括了视频帧及音频帧);索引保存了每个帧的时间戳与它在多媒体文件中位置的对应关系。
例如用户拖动播放进度条至10分40秒处,通过对索引结构的读取与分析,可以找到时间戳在10分40秒的帧数据在整个多媒体文件中的位置。使用下载软件在下载多媒体文件时可从网络中多个数据源同时进行下载,从不同的数据源获取同一多媒体文件不同部分的数据,以提高下载速度,下载软件需要控制不会获取重复的数据部分或有未获取的数据部分,所以下载软件可确定正在下载的多媒体文件的各部分数据的数据源(即网络中存储了该多媒体文件数据的其他服务器或终端,但不一定每个服务器或终端都存储了完整的多媒体文件数据,可仅存储一部分),则下载软件优先从存储了10分40秒开始的多媒体文件数据的数据源开始下载。
则较佳地,所述根据用户的播放进度控制操作行为,确定播放所需的多媒体文件数据,可包括:
根据用户的播放进度控制操作行为,确定需播放的时间点;
根据该时间点从多媒体文件的文件头获取该时间点在多媒体文件中对应的数据存储位置。
可将多媒体文件在逻辑上分为多个片文件,当用户选择一个播放时间点时,可先确定该时间点的数据所在的片文件,而直接下载该片文件。
则较佳地,所述从下载源下载所述多媒体文件包括:将多媒体文件分为多个片文件,从下载源下载各片文件;
所述确定播放所需的多媒体文件数据包括:确定播放所需的多媒体文件数据所在的片文件;
所述从下载源下载所述播放所需的多媒体文件包括:从下载源下在所述播放所需的多媒体文件数据所在的片文件。
较佳地,所述将多媒体文件分为多个片文件,包括:
根据预设的片文件大小,将多媒体文件分为多个片文件;或根据预设的片文件数量,将多媒体文件分为预设数量个片文件。
当然,任何能将多媒体文件进行分片的规则均可用于本发明中。
较佳地,当下载了播放所需的片文件后则开始播放该片文件数据,此时可根据用户操作选择的时间点开始播放,也可直接从该片文件头开始播放,例如将一个多媒体文件分为多个片文件,每个片文件长度为30秒,当用户选择了播放第45秒的内容,由此确定了第45秒内容位于第二个片文件,在下载了第二个片文件后,可从第45秒开始播放,也可直接从片文件头部,即第31秒开始播放,如果采用直接从片文件头部开始播放,则可将每个片文件大小控制在一定范围(如1MB)以内,以便用户无需等待太长时间则可观看或听到所选择的时间点的内容。
较佳地,当将多媒体文件分为多个片文件时,所述根据用户的播放进度控制操作行为,确定播放所需的多媒体文件数据所在的片文件,包括:
根据用户的播放进度控制操作行为,确定需播放的时间点;
根据该时间点确定对应的片文件。
例如在将多媒体文件分为多个片文件时,可存储各片文件的数据对应于整个多媒体文件中的播放进度的起止时间点,根据该对应关系获取对应的片文件。
较佳地,所述从下载源下载所述多媒体文件数据可包括:优先下载指定片文件。例如多媒体文件的文件头,其中包含描述该多媒体文件和其中数据的总体信息,如媒体类型、播放总时长、最大码率、视频图像的宽高、帧数,需要先获取多媒体文件的文件头信息,才可进行播放多媒体文件。
在片文件下载开始执行后,可以将已下载的片文件转换为顺序流数据并进行播放。如图2所示,下载播放多媒体文件的一个具体实例流程可以包括:
步骤201、对多媒体文件进行分析,包括文件格式、码率等信息,并合理将多媒体文件按顺序模式进行分片。
步骤202、对分片后的文件进行顺序下载,并优先下载播放前需要的部分片区,例如AVI文件的文件头和文件尾。
步骤203、在获取需要的片文件后,将下载到的片文件转换为可播放的顺序流数据并进行播放。
步骤204、在播放过程中分析用户进行的播放进度控制操作,如拖动播放进度条,确定播放所需要的片文件。
步骤205、下载播放所需的片文件,转换为可播放的顺序流数据并进行播放。
由于使用下载软件进行多源下载时,从各个数据源获取的数据在未组织前是无序的,例如从多个数据源分别获取了第三个片文件(起止时间点:101秒-150秒)、第一个片文件(起止时间点:1秒-50秒)、第二个片文件(起止时间点:51秒-100秒),需要将这三个片文件按顺序组织起来,才能进行顺序播放。可根据各部分数据帧的时间属性将已下载的数据按顺序组织。该方式主要适用于流媒体格式的多媒体文件,例如RMVB、RM、SWF、3GP、MOV等。
图2所示流程中,播放的内容是由下载的片文件转换而成的顺序流数据。在另一实施例中,可以先创建所述多媒体文件对应的本地待填充文件,将已下载的多媒体文件数据(如果将多媒体文件分为了多个片文件,则对应的是片文件数据)写入该本地待填充文件并进行播放。在创建本地待填充文件后,多媒体文件播放器可以直接打开该本地待填充文件进行播放。在播放本地待填充文件的过程中,可以提交播放进度参数,根据该参数进行多媒体文件的顺序下载。此方法也可理解为:下载软件把一个未完成下载的多媒体文件伪装为一个已完成的文件,其中尚未下载的数据部分可用空白数据块填充,多媒体播放器则可播放该文件中已下载了的多媒体文件部分,而同时下载软件在下载其余部分。该方式除流媒体格式外,还可适用AVI、VOD、MKV、DAT等格式的非流媒体文件,因为此类格式的文件须拥有完整的本地文件才能通过多媒体播放器进行播放,所以需在本地生成所述本地待填充文件。
则较佳地,所述播放已下载的片文件,及所述从下载源下载所述播放所需的多媒体文件并播放,可分别包括:将已下载的多媒体文件数据转换为顺序流数据并进行播放;或
所述播放已下载的片文件,及所述从下载源下载所述播放所需的多媒体文件并播放,可分别包括:创建所述多媒体文件对应的本地待填充文件,将已下载的多媒体文件数据写入本地待填充文件的对应部分并播放该待填充文件。
较佳地,所述创建所述多媒体文件对应的本地待填充文件可包括:用空白数据块填充本地待填充文件中未下载的片文件部分。
较佳地,所述并播放该待填充文件,包括:
当播放进度至空白数据块时,显示为缓冲或等待状态,以提示用户。待对应的片文件数据下载至本地后,则开始播放。
较佳的,在步骤104从下载源下载播放所需的多媒体文件并播放之后,该方法还可包括:
根据播放进度参数顺序下载播放所需多媒体文件数据。当未接收到用户的播放进度控制操作时,表明用户需要连续观看或收听多媒体文件,所以只需要按照顺序进行多媒体文件数据下载即可。
本领域普通技术人员可以理解上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件完成,该程序可以存储于一计算装置(如电脑、手机等)可读存储介质中,存储介质可以包括:ROM、RAM、磁盘或光盘等。通常所述程序可为用于从网络中下载数据的下载软件。
基于同一发明构思,本发明实施例还提供一种多媒体文件的下载播放设备,其结构如图3所示,可以包括:
第一下载模块302,用于根据用户下载多媒体文件的请求,从下载源下载所述多媒体文件数据;
第一播放模块303,用于根据用户播放正在下载的多媒体文件的请求,播放已下载的多媒体文件数据;
确定模块304,用于用于根据用户的播放进度控制操作行为,确定播放所需的多媒体文件数据;
第二下载模块305,用于从下载源下载所述播放所需的多媒体文件数据;
第二播放模块306,用于播放所述第二下载模块305所下载的多媒体文件数据。
较佳地,所述用户的播放进度控制操作行为是:用户通过鼠标拖动播放进度条;或用户输入需要播放的多媒体文件的时间点。
较佳地,所述确定模块304进一步用于:根据用户的播放进度控制操作行为,确定需播放的时间点,根据该时间点从多媒体文件的文件头获取该时间点在多媒体文件中对应的数据存储位置。
较佳地,所述第一下载模块302包括:
分片子单元,用于将多媒体文件分为多个片文件;及
第一下载子单元,用于从下载源下载各片文件;
所述确定模块304进一步用于,根据用户的播放进度控制操作行为,确定播放所需的多媒体文件数据所在的片文件;
所述第二下载模块305进一步用于,从下载源下在所述播放所需的多媒体文件数据所在的片文件。
较佳地,所述分片子单元进一步用于:
根据预设的片文件大小,将多媒体文件分为多个片文件;或
根据预设的片文件数量,将多媒体文件分为预设数量个片文件。
较佳地,当将多媒体文件分为多个片文件时,所述确定模块304进一步用于:
根据用户的播放进度控制操作行为,确定需播放的时间点;
根据该时间点确定对应的片文件。
较佳地,所述第一下载模块302及/或所述第二下载模块305进一步用于:优先下载指定片文件。
较佳地,所述第一播放模块303及所述第二播放模块306分别用于:将已下载的多媒体文件数据转换为顺序流数据进行播放;该方式主要适用于流媒体格式的多媒体文件,例如RMVB、RM、SWF、3GP、MOV等。
所述第一播放模块303及所述第二播放模块306也可分别用于:创建所述多媒体文件对应的本地待填充文件,将已下载的多媒体文件数据写入本地待填充文件的对应部分并播放该待填充文件。该方式除流媒体格式外,还可适用AVI、VOD、MKV、DAT等格式的非流媒体文件,因为此类格式的文件须拥有完整的本地文件才能通过多媒体播放器进行播放,所以需在本地生成所述本地待填充文件。
所述第一播放模块303及/或第二播放模块306可有不同方式播放多媒体文件。
一个实施例中,所述第一播放模块303及/或第二播放模块306可以将已下载的片文件转换为顺序流数据进行播放;
另一个实施例中,所述第一播放模块303及第二播放模块306还可以先创建所述多媒体文件对应的本地待填充文件,将已下载的片文件数据写入该本地待填充文件并播放该本地待填充文件。在创建本地待填充文件后,第一播放模块303及第二播放模块306可以直接打开该本地待填充文件进行播放。在播放本地待填充文件的过程中,可以提交播放进度参数,根据该参数进行片文件的顺序下载。在该实施例中,第一播放模块303及第二播放模块306把未完成下载的多媒体文件伪装为一个已下载完成的文件,其中尚未下载的数据部分可用空白数据块填充,第一播放模块303及第二播放模块306则可播放该文件中已下载了的片文件部分,而同时所述第一下载模块302或第二下载模块305在下载多媒体文件的其余片文件部分。
较佳地,所述第一播放模块303及第二播放模块306分别包括:
填充模块,用空白数据块填充本地待填充文件中数据未下载的部分。
较佳地,所述第一播放模块303及第二播放模块306还可包括:显示模块,用于当播放进度至空白数据块时,则可显示缓冲或等待等状态以提示用户。待对应的片文件数据下载至本地后,则第一播放模块303及/或第二播放模块306开始播放下载到的片文件。
较佳的,所述第一下载模块302及第二下载模块305还可用于根据播放进度参数顺序下载播放所需片文件数据。当未接收到用户的播放进度控制操作时,表明用户需要连续观看或收听多媒体文件,所以只需要按照顺序进行多媒体文件的片文件下载即可。
所述第一下载模块302与第二下载模块305,以及第一播放模块303与第二播放模块306为逻辑上划分的模块,在实际应用中,可仅有一个下载模块用于下载多媒体文件,也可仅有一个播放模块用于播放下载到的多媒体文件。
本发明实施例当用户通过下载软件下载多媒体文件时,在播放尚未下载完成的多媒体文件的过程中,对用户操作行为进行分析,确定用户所需的多媒体文件数据,而优先下载播放所需的数据并播放,即能使用户通过其播放时间控制操作行为随意选择时间点的内容进行观看或收听;对于网络中存储的各类多媒体文件,不同服务器通过任何协议标准进行数据下载,如BT\Emule\HTTP等,均能通过本发明实施例在下载的过程中进行播放时,可根据用户选择的播放时间点及时下载对应数据以进行播放,从而无需等待顺序下载至所需时间点的数据才能播放。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若对本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。