发明内容
本发明的目的之一是提供提供一种基于安卓操作***的视频播放方法,以解决目前安卓操作***无法支持m3u8格式视频连续播放的问题。
本发明的另一目的是提供一种基于安卓操作***的视频播放装置,以解决目前安卓操作***无法支持m3u8格式视频连续播放的问题。
本发明的另一目的是提供一种无线通信设备,包含上述的视频播放装置,该设备可以解决目前安卓操作***无法支持m3u8格式视频连续播放的问题。
根据本发明的一个方面,提供一种基于安卓操作***的视频播放方法,包括:
根据视频播放请求获取视频播放列表文件,所述视频播放列表文件包括至少一个视频资源的URL;
根据所述视频播放列表文件中的URL,确认需要进行视频切换的URL;
在视频播放列表文件中于所确认出的URL之前或之后设置连续播放标记,生成标记后的视频播放列表文件;
播放所述标记后的视频播放列表文件。
在上述方面的一个或多个示例中,在视频播放列表文件中于所确认出的URL之前或之后设置连续播放标记,生成标记后的视频播放列表文件之后,包括;
生成所述标记后的视频播放列表文件的URL。
在上述方面的一个或多个示例中,所述播放所述标记后的视频播放列表文件包括:
根据所述标记后的视频列表文件的URL调用视频播放组件播放所述标记后的视频播放列表文件。
在上述方面的一个或多个示例中,所述生成所述标记后的视频播放列表文件的URL包括:
利用至少一个HTTP服务器为所述标记后的视频播放列表文件生成至少一个符合HTTP协议的所述标记后的视频播放列表文件的URL。
根据本发明的另一方面,其中,所述根据所述视频播放列表文件中的URL,确认需要进行视频切换的URL包括:
逐行分析所述视频播放列表文件中的所有视频资源的URL;
判断出当前视频资源的URL跟上一个视频资源的URL指向不同的视频资源文件时,则确认当前视频资源的URL是需要进行视频切换的URL。
在上述方面的一个或多个示例中,所述连续播放标记是“#EXT-X-DISCONTINUITY”。
在上述方面的一个或多个示例中,所述根据视频播放请求获取视频播放列表文件之前,包括:
启动至少一个HTTP服务器,所述至少一个HTTP服务器映射到本地的至少一个文件夹。
在上述方面的一个或多个示例中,在视频播放列表文件中于所确认出的URL之前或之后设置连续播放标记,生成标记后的视频播放列表文件之后,包括:
将标记后的视频播放列表文件存放在所述至少一个HTTP服务器映射的本地的至少一个文件夹中。
在上述方面的一个或多个示例中,根据视频播放请求获取视频播放列表文件之前,包括:
判断所述视频播放请求是否指向视频播放列表文件,如果是,则根据视频播放请求获取所述视频播放列表文件,如果不是,则根据视频播放请求播放视频资源文件。
根据本发明的另一方面,提供一种基于安卓操作***的视频播放装置,其中,包括:
获取单元,用于根据视频播放请求获取视频播放列表文件,所述视频播放列表文件包括至少一个视频资源的URL;
确认单元,根据所述视频播放列表文件中的URL,确认需要进行视频切换的URL;
标记单元,用于在视频播放列表文件中于所确认出的URL之前或之后设置连续播放标记,生成标记后的视频播放列表文件;
播放单元,播放所述标记后的视频播放列表文件。
在上述方面的一个或多个示例中,进一步包括:
标记文件URL生成单元,用于为所述标记后的视频播放列表文件生成至少一个符合HTTP协议的所述视频播放列表文件的URL。
在上述方面的一个或多个示例中,所述确认单元进一步包括:
分析单元,用于逐行分析所述视频播放列表文件中的所有视频资源的URL;
判断单元,用于判断当前视频资源的URL跟上一个视频资源文件的URL指向是否相同,如当前视频资源的URL跟上一个视频资源文件的URL指向不同的视频资源文件,则确认当前视频资源的URL为需要进行视频切换的URL。
根据本发明的另一方面,提供一种无线通信设备,包含上述的视频播放装置。
通过本发明提供的基于安卓操作***的视频播放方法及装置使得安卓操作***在播放m3u8格式的视频时,原视频资源片段的切换不会导致视频的停止,视频能够连续播放。
为了实现上述以及相关目的,本发明的一个或多个方面包括后面将详细说明并在权利要求中特别指出的特征。下面的说明以及附图详细说明了本发明的某些示例性方面。然而,这些方面指示的仅仅是可使用本发明的原理的各种方式中的一些方式。此外,本发明旨在包括所有这些方面以及它们的等同物。
具体实施方式
下面描述本发明公开的一种基于安卓操作***的视频播放方法及装置的各个方面。应该明白的是,本文的教导可以以多种多样形式具体体现,并且在本文中公开的任何具体结构、功能或两者仅仅是代表性的。基于本文的教导,本领域技术人员应该明白的是,本文所公开的一个方面可以独立于任何其它方面实现,并且这些方面中的两个或多个方面可以按照各种方式组合。例如,可以使用本文所阐述的任何数目的方面,实现装置或实践方法。另外,可以使用其它结构、功能、或除了本文所阐述的一个或多个方面之外或不是本文所阐述的一个或多个方面的结构和功能,实现这种装置或实践这种方法。此外,本文所描述的任何方面可以包括权利要求的至少一个元素。
安卓操作***提供了视频播放控制相关功能的类,我们称这些类为MediaPlayer(媒体播放器)组件,这些类是安卓操作***提供给开发者用于编写播放视频相关的程序的,开发者使用这些类就能在安卓操作***上编写一个视频播放程序。这些类提供的功能不仅是播放本身,还包含了播放控制。例如安卓操作***上的浏览器通过传递一个URL给安卓操作***的MediaPlayer组件,安卓操作***利用MediaPlayer组件就能播放这个URL指向的视频。m3u8格式文件必须以IP或者域名等HTTP链接方式传给MediaPlayer组件供其访问,否则Android操作***会创建错误的播放器去解析m3u8并最终不能播放。
下面将参照附图描述本发明的各个实施例。
第一实施例
图1示出了根据本发明的第一实施例的基于安卓操作***的视频播放方法的流程图,其中,该方法由安装在基于安卓操作***的无线通信设备中的浏览器客户端程序执行。
如图1所示,一种基于安卓操作***的视频播放方法,包括下述步骤:
在步骤S110中,根据视频播放请求获取视频播放列表文件,所述视频播放列表文件包括至少一个视频资源的URL。
具体地,无线通信设备中的浏览器客户端程序接收到一个视频播放请求,该视频播放请求可以是由用户点击视频网站页面上的视频的URL所直接产生的,也可以是基于用户的视频资源请求命令由***或任意客户端程序产生的,所述视频播放请求中包含用户点播的视频的URL。浏览器客户端程序将所述视频播放请求传递给***视频播放组件时,检查这个视频播放请求中的URL是否指向一个视频播放列表文件,如果是,则根据所述视频播放请求获取该视频播放列表文件,如果否,则根据所述视频播放请求中的URL播放所述URL所指向的视频资源文件。
在本发明的一个实例中,所述视频播放列表文件是m3u8格式文件,其内部记录了多个视频资源的URL。所述多个视频资源例如是多个视频片段,这些视频片段的内容组合起来是一个完整的视频资源,例如一部电影。
此外,本发明视频播放方法中的视频播放列表文件可以是m3u8格式,也可以是其它类似格式,只要其中记录了多个视频资源的URL即可。
根据视频播放请求获取视频播放列表文件之前,包括:
判断所述视频播放请求是否指向视频播放列表文件,如果是,则根据视频播放请求获取所述视频播放列表文件,如果不是,则根据视频播放请求播放视频资源文件。
判断所述视频播放请求是否指向视频播放列表文件,具体包括:判断所述视频播放请求所指向的文件名后缀,如果所述后缀名表明是视频播放列表文件,则确认所述视频播放请求指向视频播放列表文件,否则确认所述视频播放请求不是指向视频播放列表文件;或者,判断请求所述视频播放请求返回头部的mimetype,如果所述返回头部的mimetype表明是视频播放列表文件,则确认所述视频播放请求指向视频播放列表文件,否则确认所述视频播放请求不是指向视频播放列表文件。
在本发明的一个实例中,判断视频播放请求中的URL所指向的文件名后缀,例如所指向的文件名后缀为“.m3u8”,则确认所述视频播放请求指向一个视频播放列表文件。
在本发明的另一个实例中,通过向服务器请求这个视频的URL,服务器会返回头部的mimetype,这个mimetype标记了返回数据的类型,即通过这个mimetype来判断这个视频的URL是否指向一个m3u8格式文件。
在步骤S120中,根据所述视频播放列表文件中的URL,确认需要进行视频切换的URL。
具体地,逐行分析视频播放列表文件中的所有视频资源的URL。检查当前行是否为一个URL,如果不是,则跳过这一行,继续分析;如果是,则判断当前视频资源的URL跟上一个视频资源的URL是否指向相同的视频资源文件,如果是,则确认当前视频资源的URL为不需要进行视频切换的URL,不做进一步特殊处理,继续分析;如果不是,则说明这个位置已经做了视频资源文件的切换,即确认当前视频资源的URL为需要进行视频切换的URL。直到分析完m3u8格式文件中的所有视频资源的URL。
在步骤S130中,在视频播放列表文件中于所确认出的URL之前或之后设置连续播放标记,生成标记后的视频播放列表文件。
在一个优选的实例中,在上述步骤S120所确认出的URL之前,即在当前视频资源的URL和上一个视频资源的URL之间加上一行标记“#EXT-X-DISCONTINUITY”。
依据m3u8规范,当遇到“#EXT-X-DISCONTINUITY”标记的时候说明以下属性发生了变化:文件格式、视频轨的个数或者类型、编码参数、编码序列、时间戳。因此,操作***会做特殊的处理,例如重新实例化一些播放所需的对象等,从而使得视频片段切换时视频不会停止播放。具体操作***做怎样的特殊处理属于本领域的现有技术,不在此详述。
需要说明的是,此处标记不仅可以是“#EXT-X-DISCONTINUITY”,也可以是文件格式发生变化的其他标记,其设置也不仅可以是在当前视频资源的URL前面,也可以是其前面,只要其代表的含义是当前视频资源的URL与上一个视频资源的URL比较,发生了视频切换即可。
在一个优选的实例中,在所有分析并确认过的需要进行视频切换的URL之前均进行上述标记。将经过分析和标记过的文件内容写入一个文件,生成标记后的视频播放列表文件,如film.m3u8。
进一步地,在一个优选的实例中,将生成的标记后的视频播放列表文件film.m3u8存放在/sdcard/ucvideo/film.m3u8中。
在一个优选的实例中,生成标记后的视频播放列表文件之后,还为所述标记后的视频播放列表文件生成一个URL。具体地,操作***预先启动一个监听某个端口的本地HTTP服务器。假设监听的端口号为9000。这个服务器能映射到SDCARD的某个文件夹,如/sdcard/ucvideo/。这个HTTP服务器能将对某个文件的请求映射为对这个文件夹内的文件请求。如,若请求http://127.0.0.1:9000/film.m3u8,则这个服务器会读取/sdcard/ucvideo/film.m3u8的文件内容作为返回。预先启动这个HTTP服务器的原因是m3u8格式文件的地址必须以IP或者域名等HTTP链接方式传递给MediaPlayer组件,否则MediaPlayer组件会创建错误的播放器导致不能正确播放。HTTP服务器现有技术中存在较多的开源方案,因此,本优选实例中本地HTTP服务器的细节不在此详述。在生成标记后的视频播放列表文件后,利用预先启动的这个本地HTTP服务器生成所述标记后的视频播放列表的URL,如http://127.0.0.1:9000/film.m3u8,该URL直接链接到本地HTTP服务器映射的路径/sdcard/ucvideo/film.m3u8中。从而,当浏览器请求http://127.0.0.1:9000/film.m3u8时,本地服务器就会读取/sdcard/ucvideo/film.m3u8文件夹中的m3u8格式文件返回。
在步骤S140中,播放所述标记后的视频播放列表文件。
具体地,安卓操作***调用视频播放组件播放所述标记后的视频播放列表文件,即播放视频播放列表文件中记录的多个URL所指向的视频资源文件。
在一个优选的实例中,将所生成的所述标记后的视频播放列表文件的URL传递给操作***的视频播放组件,即MediaPlayer组件,MediaPlayer组件播放该标记后的视频播放列表文件,即对该标记后的视频播放列表文件中记载的URL所指向的所有视频资源逐一进行播放。
由于本方法中标记后的视频播放列表文件在需要进行视频切换的URL之前或之后进行了标记,因此,在MediaPlayer组件播放所述标记后的视频播放列表文件时,操作***可以判断出需要进行视频切换的URL,使得视频资源文件能够连续播放。
根据第一实施例的视频播放方法,通过在无线通信设备本地对视频播放列表文件进行修改,标记需要进行视频切换的URL,利用符合HTTP协议的URL定位修改后的m3u8格式文件,能够使得m3u8格式视频不会因为内部的视频切换而停止播放。大大优化了用户在基于安卓操作***的无线通信设备浏览器上观赏视频的体验。
需要说明的是该方法由安装在基于安卓操作***的无线通信设备中的浏览器客户端程序执行仅为一个优选的实施方式,该方法还可以由基于安卓操作***的无线通信设备中的其他客户端程序软件执行,具体由什么客户端程序软件执行本方法并不影响本发明方法保护的范围。
第二实施例
图2示出了根据本发明的第二实施例的基于安卓操作***的视频播放方法的流程图。其中,该方法由安装在基于安卓操作***的无线通信设备中的浏览器客户端程序执行。
步骤S210,操作***预先启动一个监听某个端口的本地HTTP服务器;
步骤S220,接收来自用户的视频播放请求URL,判断该视频播放请求URL是否指向一个m3u8格式文件,如果是,则转向步骤S230,如果否,则转向步骤S270;
步骤S230,发起网络请求以获取所述m3u8格式文件;
步骤S240,逐行分析所述m3u8格式文件;
步骤S241,判断所述m3u8格式文件是否已经分析完毕,如果是,则转到步骤S250,如果否,则转到步骤S242;
步骤S242,判断当前行是否为一个URL,如果是,则转到步骤S243,如果否,则返回步骤S240;
步骤S243,判断当前URL与上一个URL是否指向相同的视频文件,如果否,则转到S244,如果是,则返回步骤S240;
步骤S244,在当前URL前面、即当前URL和上一个URL之间加上一行标记:#EXT-X-DISCONTINUITY,然后返回步骤S240;
步骤S250,将分析完后的文件内容写入一个新文件生成标记后m3u8格式文件;
步骤S251,利用本地HTTP服务器,生成所述标记后的m3u8格式文件的URL;
步骤S260,将所生成的标记后的m3u8格式文件的URL传递给MediaPlayer组件;
步骤S270,MediaPlayer组件播放此标记后的m3u8格式文件。
需要说明的是,依据m3u8规范,当遇到“#EXT-X-DISCONTINUITY”标记的时候说明以下属性发生了变化:文件格式、视频轨的个数或者类型、编码参数、编码序列、时间戳。因此,操作***会做特殊的处理,例如重新实例化一些播放所需的对象等,从而使得视频片段切换时视频不会停止播放。
根据第二实施例的视频播放方法,通过在无线通信设备本地对m3u8格式文件进行修改,在进行了视频切换的URL之间进行标记并将标记后m3u8格式文件存放在无线通信设备本地,然后利用本地HTTP服务器生成标记后m3u8格式文件URL来定位标记后的m3u8格式文件,从而使得m3u8格式视频不会因为内部的视频切换而停止播放。大大优化了用户在基于安卓操作***的无线通信设备浏览器上观赏视频的体验。
第三实施例
图3示出了根据本发明的第三实施例的一种基于安卓操作***的视频播放装置300的方框示意图。
如图3所示,该视频播放装置300包括获取单元310、确认单元320、标记单元330、播放单元340。
所述获取单元310,用于根据视频播放请求获取视频播放列表文件,所述视频播放列表文件包括至少一个视频资源的URL;
所述确认单元320,用于根据视频播放请求获取视频播放列表文件,所述视频播放列表文件包括至少一个视频资源的URL,并根据所述视频播放列表文件中的URL,确认需要进行视频切换的URL;
所述标记单元330,用于在视频播放列表文件中于所确认出的URL之前或之后设置连续播放标记,生成标记后的视频播放列表文件;
所述播放单元340,播放所述标记后的视频播放列表文件。
如图3A所示,在一个优选的实例中,该视频播放装置300进一步包括:
标记文件URL生成单元350,用于根据所述标记后的视频播放列表文件生成至少一个符合HTTP协议的所述视频播放列表文件的URL。
如图3B所示,在一个优选的实例中,所述确认单元320进一步包括:
分析单元321,用于逐行分析所述视频播放列表文件中的所有视频资源的URL;
判断单元322,用于判断当前视频资源的URL跟上一个视频资源文件的URL指向是否相同,如当前视频资源的URL跟上一个视频资源文件的URL指向不同的视频资源文件,则确认当前视频资源的URL为需要进行视频切换的URL。如当前视频资源的URL跟上一个视频资源文件的URL指向相同的视频资源文件,则确认当前视频资源的URL为不需要进行视频切换的URL。
此外,还可以对本实施例的视频播放装置300进行各种修改。
第四实施例
图4示出了本发明第四实施例提供的一种包含第三实施例的视频播放装置300的无线通信设备400的方框示意图,该无线通信设备400还包括处理器410和存储装置420。
在一个优选的实例中,视频播放装置300中的所述标记单元330与存储装置420相连,当所述标记单元330在需要进行视频切换的URL之前或之后进行连续播放标记。生成标记后的视频播放列表文件之后,所述存储装置420用于存储所述标记后的视频播放列表文件。
在一个优选的实例中,操作***预先启动一个监听某个端口的本地HTTP服务器430。假设监听的端口号为9000。这个服务器能映射到所述本地存储装置420。
第五实施例
本发明第五实施例提供了一种无线通信设备,包括至少一个处理器,至少一个存储器和至少一个程序,所述至少一个程序存储在所述存储器中,所述至少一个程序配置为被所述处理器执行时,所述处理器执行以下步骤:
根据视频播放请求获取视频播放列表文件,所述视频播放列表文件包括至少一个视频资源的URL;
根据所述视频播放列表文件中的URL,确认需要进行视频切换的URL;
在视频播放列表文件中于所确认出的URL之前或之后设置连续播放标记,生成标记后的视频播放列表文件;
播放所述标记后的视频播放列表文件。此外,所述至少一个程序配置为被所述处理器执行时,所述处理器还可以执行第一实施例中所述的各步骤。
此外,典型地,本发明所述的无线通信设备可为各种手持终端设备,例如手机、个人数字助理(PDA)等,因此本发明的保护范围不应限定为某种特定类型的无线通信设备。
此外,根据本发明的方法还可以被实现为由CPU执行的计算机程序。在该计算机程序被CPU执行时,执行本发明的方法中限定的上述功能。
此外,上述方法步骤以及***单元也可以利用控制器以及用于存储使得控制器实现上述步骤或单元功能的计算机程序的计算机可读存储设备实现。
此外,应该明白的是,本文所述的计算机可读存储设备(例如,存储器)可以是易失性存储器或非易失性存储器,或者可以包括易失性存储器和非易失性存储器两者。作为例子而非限制性的,非易失性存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦写可编程ROM(EEPROM)或快闪存储器。易失性存储器可以包括随机存取存储器(RAM),该RAM可以充当外部高速缓存存储器。作为例子而非限制性的,RAM可以以多种形式获得,比如同步RAM(DRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据速率SDRAM(DDR SDRAM)、增强SDRAM(ESDRAM)、同步链路DRAM(SLDRAM)以及直接Rambus RAM(DRRAM)。所公开的方面的存储设备意在包括但不限于这些和其它合适类型的存储器。
本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、单元、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、单元、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个***的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现所述的功能,但是这种实现决定不应被解释为导致脱离本发明的范围。
结合这里的公开所描述的各种示例性逻辑块、单元和电路可以利用被设计成用于执行这里所述功能的下列部件来实现或执行:通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑器件、分立门或晶体管逻辑、分立的硬件组件或者这些部件的任何组合。通用处理器可以是微处理器,但是可替换地,处理器可以是任何传统处理器、控制器、微控制器或状态机。处理器也可以被实现为计算设备的组合,例如,DSP和微处理器的组合、多个微处理器、一个或多个微处理器结合DSP核、或任何其它这种配置。
结合这里的公开所描述的方法或算法的步骤可以直接包含在硬件中、由处理器执行的软件单元中或这两者的组合中。软件单元可以驻留在RAM存储器、快闪存储器、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动盘、CD-ROM、或本领域已知的任何其它形式的存储介质中。示例性的存储介质被耦合到处理器,使得处理器能够从该存储介质中读取信息或向该存储介质写入信息。在一个替换方案中,所述存储介质可以与处理器集成在一起。处理器和存储介质可以驻留在ASIC中。ASIC可以驻留在用户终端中。在一个替换方案中,处理器和存储介质可以作为分立组件驻留在用户终端中。
在一个或多个示例性设计中,所述功能可以在硬件、软件、固件或其任意组合中实现。如果在软件中实现,则可以将所述功能作为一个或多个指令或代码存储在计算机可读介质上或通过计算机可读介质来传送。计算机可读介质包括计算机存储介质和通信介质,该通信介质包括有助于将计算机程序从一个位置传送到另一个位置的任何介质。存储介质可以是能够被通用或专用计算机访问的任何可用介质。作为例子而非限制性的,该计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储设备、磁盘存储设备或其它磁性存储设备,或者是可以用于携带或存储形式为指令或数据结构的所需程序代码并且能够被通用或专用计算机或者通用或专用处理器访问的任何其它介质。此外,任何连接都可以适当地称为计算机可读介质。例如,如果使用同轴线缆、光纤线缆、双绞线、数字用户线路(DSL)或诸如红外线、无线电和微波的无线技术来从网站、服务器或其它远程源发送软件,则上述同轴线缆、光纤线缆、双绞线、DSL或诸如红外先、无线电和微波的无线技术均包括在介质的定义。如这里所使用的,磁盘和光盘包括压缩盘(CD)、激光盘、光盘、数字多功能盘(DVD)、软盘、蓝光盘,其中磁盘通常磁性地再现数据,而光盘利用激光光学地再现数据。上述内容的组合也应当包括在计算机可读介质的范围内。
尽管前面公开的内容示出了本发明的示例性实施例,但是应当注意,在不背离权利要求限定的本发明的范围的前提下,可以进行多种改变和修改。根据这里描述的发明实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明的元素可以以个体形式描述或要求,但是也可以设想多个,除非明确限制为单数。
虽然如上参照图描述了根据本发明的各个实施例进行了描述,但是本领域技术人员应当理解,对上述本发明所提出的各个实施例,还可以在不脱离本发明内容的基础上做出各种改进。