对移动终端中非支持格式的视频进行转换的方法及***
技术领域
本申请涉及视频播放领域,具体地说,是涉及一种对移动终端中非支持格式的视频进行转换的方法及***。
背景技术
目前,移动终端从互联网多媒体中点播视频越来越广泛,而常用的视频又具有各种不同的格式。视频格式就是指将视频中的视频数据、音频数据和相关信息数据组织起来的方式。视频数据在存储和传输过程中都是按照某种特定的格式来实现的,不同的视频格式实现方式也不相同的。现阶段常用的视频格式主要有TS、FLV、HLS等。
TS(TransportStream),全称为MPEG2-TS,是高清摄像机拍摄下进行的文件封装格式。TS文件是通过分包发送的,每一个包长为188字节。包的结构为:包头为4个字节,负载为184个字节。在TS流里可以填入很多类型的数据,如视频、音频、自定义信息等。TS主要应用于实时传送视频,比如实时广播的电视节目。TS格式的视频文件的特点是从视频流的任一片段开始都是可以独立解码播放的,目前的移动终端播放器都是可以独立播放TS格式视频文件的。
HLS(HTTPLiveStreaming)是基于HTTP的流媒体传输协议,可实现流媒体的直播和点播,主要应用在IOS***,为IOS设备提供音视频直播和点播方案。HLS点播,基本上就是常见的分段HTTP点播,不同在于,它的分段非常小。要实现HLS点播,重点在于对媒体文件分段,目前有不少开源工具可以使用。HLS文件包括一个m3u8的索引文件、TS媒体分片文件和key加密串文件。
为了播放某个视频,终端上的视频播放器首选需要识别出该视频的格式,并按照相关协议对视频进行正确的分析。在实际应用中,出于成本等因素的考虑,一种播放器往往仅支持一种或某几种特定的视频播放格式,而对于其它不支持的格式是不能进行播放的。
然而,在某些情况下,用户还希望终端播放器能够播放其它不支持的视频格式。随着移动终端的普及,这种需求也越来越普遍。
就以现在的IOS***播放器为例,正如本领域公知的,IOS***的***播放器是不支持FLV格式的视频播放的,但是IOS***支持HLS格式的视频播放。并且IOS***版本也没有开放硬件解码接口,只有***播放器具有硬件解码的能力。如此,在IOS***的视频播放器播放FLV等非***播放器支持格式的视频播放时,因无法使用硬件解码功能,会导致***帧率低、发热多以及耗电量高等问题。
目前的解决方式是通过服务器完成FLV格式的转换,再传输给本地播放器播放。这种方式的服务器包括:流化模块、格式转换模块和存储模块。客户端通过网络向服务器请求视频数据,如果请求的视频为播放器支持的格式,流化模块直接从存储模块读取数据并发送至播放器播放;如果播放器请求的数据不是其支持的格式,则流化模块将请求发送给格式转换模块,格式转换模块从存储模块读取原始的视频数据,并将其转换成播放器支持的视频格式(通常是HLS格式),并将转换后的视频数据返回给流化模块,再通过流化模块将转换后的视频数据发送给播放器。按照此种方案,格式的转换过程全部是在后台服务器完成的,播放器收到的永远是其支持的视频格式。
以下结合图1和2说明现有技术中移动终端播放非支持格式视频的方法:
其中,图1为现有技术中移动终端播放非支持格式视频的***结构示意图,具体内容为:
互联网分别连接移动终端和服务器,通过互联网实现移动终端和服务器的数据信息传输。并且,服务器还包括:存储模块、格式转换模块和流化模块,存储模块、格式转换模块和流化模块上述模块之间彼此两两相连接。
如图2所示,为现有技术中移动终端播放非支持格式视频的示意图,具体内容为:
步骤201,移动终端向网络服务器发送视频播放请求;
步骤202,网络服务器经过解析、读取和计算处理后向移动终端发送索引文件及第一片TS文件;
步骤203,移动终端获取第一片TS文件;
步骤204,移动终端的播放器播放第一片TS文件;
步骤205,网络服务器向移动终端发送第二片TS文件;
步骤206,移动终端获取第二片TS文件;
步骤207,移动终端的播放器播放第二片TS文件;
步骤208,网络服务器向移动终端发送第三片TS文件;
步骤209,移动终端获取第三片TS文件;
步骤210,移动终端的播放器播放第三片TS文件;
如此,网络服务器将移动终端非支持格式的视频转换为移动终端支持视频格式的TS分片文件发送至移动终端,移动终端依次接收网络服务器发送的经过转换的TS分片文件进行播放。
移动终端通过互联网向服务器请求视频数据时,如果请求的视频为移动终端播放器支持的格式,流化模块直接从存储模块读取数据并发送至移动终端播放器;若移动终端请求的是非移动终端播放器支持的格式视频,则流化模块将请求信息发送至格式转换模块,格式转换模块收到请求信息之后从存储模块中读取原始的视频数据,并将原始的视频数据转换成终端播放器支持的视频格式(通常是HLS格式),再将转换后的视频数据返回给流化模块,通过流化模块将转换后的视频数据发送至移动终端。
但是按照上述的现有方法,终端播放器就无法播放本地的非支持格式视频,只能播放在服务器转换好的终端播放器支持的视频格式。而且,当移动终端较多时,服务器就需要同时进行大量的格式转换工作,这对服务器本身性能要求较高,大大增加了服务器成本。在实际部署中,为了增加网络效率,往往将服务器的流化模块部署在边缘节点,而将格式转换模块部署在中心节点,如此,流化模块和格式转换模块之间的网络传输又会成为性能瓶颈。
从上述内容可以看出,现有在IOS支持的设备上,解决移动终端播放本地不支持格式视频,尤其是FLV格式视频会出现以下问题:
1、现有技术中在IOS支持的移动终端上移动终端不能播放本地的不支持格式视频如FLV格式视频,要想播放不支持格式视频只能通过从服务器下载。
2、在服务器上转换视频格式然后下载的不足就是,当移动终端较多时,服务器就需要同时进行大量的格式转换工作,加大了服务器本身性能要求,大大增加了服务器成本。
3、现有技术中,服务器的流化模块和格式转换模块之间的网络传输性能效率低,从而导致移动终端视频播放不流畅的问题。
发明内容
为了解决在上述现有技术中出现的问题,本发明的目的是提供一种对移动终端中非支持格式的视频进行转换的方法及***,以解决现有技术中在IOS支持的移动终端上不能播放本地的不支持格式视频,如FLV格式视频的问题。
本发明提供了一种对移动终端中非支持格式的视频进行转换的方法,该方法包括:
所述移动终端接收向网络服务器发送非支持格式的视频请求信息后返回的带有该视频对应的索引文件信息,并对该索引文件信息转换为本地索引文件信息保存;
所述移动终端向该移动终端内的代理服务器发送该非支持格式的视频的转换请求信息,所述代理服务器对该视频进行分片处理,生成分片后的至少一个TS文件,并将所述TS文件与所述本地索引文件建立对应关系,保存在该移动终端的内存队列中;
所述移动终端的播放器根据在所述内存队列中所述本地索引文件调取所述TS文件进行播放。
进一步地,其中,所述代理服务器对该视频进行分片处理,生成分片后的至少一个TS文件,进一步包括:
所述代理服务器根据所述非支持格式的视频的转换请求信息中的请求分片数,计算得出所述视频在视频流中的偏移量,所述代理服务器根据所述偏移量确定seek操作中该视频的分片位置,进而对所述视频进行分片处理,生成分片后的至少一个TS文件。
进一步地,其中,进而对所述视频进行分片处理,进一步为:
所述代理服务器对所述视频的视频帧进行判断,当判断到当前的视频帧不是关键帧和/或当前帧的时间戳时,对下一视频帧进行判断;当判断到当前的视频帧是关键帧且该视频帧为当前帧的时间戳时,对所述视频的该视频帧进行分片处理。
进一步地,其中,对所述视频的该视频帧进行分片处理,进一步为:
所述代理服务器根据所述本地索引文件计算出每一视频帧相对应于所述视频绝对开始时间的绝对结束时间,并根据该绝对结束时间将每个所述视频帧的原始时间戳调整为对应的绝对时间戳,再根据每个视频帧的绝对时间戳对所述视频的该视频帧进行分片处理。
进一步地,其中,所述索引文件信息,进一步为:m3u8文件。
进一步地,其中,该***设置在所述移动终端中,该***包括:接收模块、处理模块和播放模块;其中,
所述接收模块,用于接收向网络服务器发送非支持格式的视频请求信息后返回的带有该视频对应的索引文件信息,并对该索引文件信息转换为本地索引文件信息保存;
所述处理模块,用于接收该移动终端发送该非支持格式的视频的转换请求信息,对该视频进行分片处理,生成分片后的至少一个TS文件,并将所述TS文件与所述本地索引文件建立对应关系,保存在该移动终端的内存队列中;
所述播放模块,根据在所述内存队列中所述本地索引文件调取所述TS文件进行播放。
进一步地,其中,所述处理模块,进一步用于:
根据所述非支持格式的视频的转换请求信息中的请求分片数,计算得出所述视频在视频流中的偏移量,根据所述偏移量确定seek操作中该视频的分片位置,进而对所述视频进行分片处理,生成分片后的至少一个TS文件。
进一步地,其中,所述处理模块,进一步还用于:
对所述视频的视频帧进行判断,当判断到当前的视频帧不是关键帧和/或当前帧的时间戳时,对下一视频帧进行判断;当判断到当前的视频帧是关键帧且该视频帧为当前帧的时间戳时,对所述视频的该视频帧进行分片处理。
进一步地,其中,所述处理模块,进一步还用于:
根据所述本地索引文件计算出每一视频帧相对应于所述视频绝对开始时间的绝对结束时间,并根据该绝对结束时间将每个所述视频帧的原始时间戳调整为对应的绝对时间戳,再根据每个视频帧的绝对时间戳对所述视频的该视频帧进行分片处理。
进一步地,其中,所述索引文件信息,进一步为:m3u8文件。
与现有技术相比,本申请所述的一种对移动终端中非支持格式的视频进行转换的方法,具有以下优点:
(1)本发明将移动终端非支持格式的视频文件到HLS格式视频文件的转换操作从网络服务器移动到移动终端进行操作。由于非支持格式视频文件到HLS格式视频文件的转换操作被分布到每个移动终端的本地进行,减小了服务器的压力。
(2)本发明在播放非支持格式的本地视频时,利用移动终端预先生成本地播放的m3u8文件以及在移动终端将非支持格式的视频转换为支持的视频格式形式,实现了本地非支持格式视频的播放。
(3)本发明通过m3u8文件传输信息,在移动终端转换视频格式,避免了由网络端缓存格式转换与流化之间传输数据所引起的网络问题,使得移动终端更流畅地播放视频。
(4)本发明在移动终端本地转换视频格式,避免了由移动终端***转换视频格式增加移动终端CPU工作强度带来的发热问题,同时还节省了移动终端的***资源。
当然,实施本申请的任一产品必不一定需要同时达到以上所述的所有技术效果。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是现有技术的基于服务器转换的视频播放***结构示意图;
图2是现有技术中基于服务器转换的视频播放示意图;
图3是本发明实施例1所述的对移动终端中非支持格式的视频进行转换的方法流程示意图;
图4是本发明实施例2所述的对移动终端中非支持格式的视频进行转换的方法流程示意图;
图5是本发明应用实施例所述的对移动终端中非支持格式的视频进行转换的方法流程示意图;
图6是本发明实施例4所述的对移动终端中非支持格式的视频进行转换的***结构框图。
具体实施方式
如在说明书及权利要求当中使用了某些词汇来指称特定组件。本领域技术人员应可理解,硬件制造商可能会用不同名词来称呼同一个组件。本说明书及权利要求并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的准则。如在通篇说明书及权利要求当中所提及的“包含”为一开放式用语,故应解释成“包含但不限定于”。“大致”是指在可接收的误差范围内,本领域技术人员能够在一定误差范围内解决所述技术问题,基本达到所述技术效果。此外,“耦接”一词在此包含任何直接及间接的电性耦接手段。因此,若文中描述一第一装置耦接于一第二装置,则代表所述第一装置可直接电性耦接于所述第二装置,或通过其他装置或耦接手段间接地电性耦接至所述第二装置。说明书后续描述为实施本申请的较佳实施方式,然所述描述乃以说明本申请的一般原则为目的,并非用以限定本申请的范围。本申请的保护范围当视所附权利要求所界定者为准。
以下结合附图对本申请作进一步详细说明,但不作为对本申请的限定。
实施例1:
如图3所示,为本发明实施例1所述的一种对移动终端中非支持格式的视频进行转换的方法,包括:
步骤301,所述移动终端接收向网络服务器发送非支持格式的视频请求信息后返回的带有该视频对应的索引文件信息,并对该索引文件信息转换为本地索引文件信息保存;
步骤302,所述移动终端向该移动终端内的代理服务器发送该非支持格式的视频的转换请求信息,所述代理服务器对该视频进行分片处理,生成分片后的至少一个TS文件,并将所述TS文件与所述本地索引文件建立对应关系,保存在该移动终端的内存队列中;
步骤303,所述移动终端的播放器根据在所述内存队列中所述本地索引文件调取所述TS文件进行播放。
实施例2:
如图4所示,在实施例1的基础上,该发明所述的一种对移动终端中非支持格式的视频进行转换的方法,其特征在于,包括:
步骤401,所述移动终端接收向网络服务器发送非支持格式的视频请求信息后返回的带有该视频对应的索引文件信息,并对该索引文件信息转换为本地索引文件信息保存;
步骤402,所述移动终端向该移动终端内的代理服务器发送该非支持格式的视频的转换请求信息,所述代理服务器根据所述非支持格式的视频的转换请求信息中的请求分片数(该请求分片数是在请求信息中预设置的分片数),计算得出所述视频在视频流中的偏移量,所述代理服务器根据所述偏移量确定seek操作中该视频的分片位置,进而对所述视频进行分片处理,生成分片后的至少一个TS文件,并将所述TS文件与所述本地索引文件建立对应关系,保存在该移动终端的内存队列中;
具体地,其中,进而对所述视频进行分片处理,进一步为:
所述代理服务器对所述视频的视频帧进行判断,当判断到当前的视频帧不是关键帧和/或当前帧的时间戳,即不满足分片条件时,对下一视频帧进行判断;当判断到当前的视频帧是关键帧且该视频帧为当前帧的时间戳,即满足分片条件时,对所述视频的该视频帧进行分片处理。
其中,对所述视频的该视频帧进行分片处理,进一步为:
所述代理服务器根据所述本地索引文件计算出每一视频帧相对应于所述视频绝对开始时间的绝对结束时间,并根据该绝对结束时间将每个所述视频帧的原始时间戳调整为对应的绝对时间戳,再根据每个视频帧的绝对时间戳对所述视频的该视频帧进行分片处理。
步骤403,所述移动终端的播放器根据在所述内存队列中所述本地索引文件调取所述TS文件进行播放。
上述实施例中提到的所述索引文件信息,进一步为:m3u8文件。
实施例3:
如图5所示,为本发明实施例所述的一种对移动终端中非支持格式的视频进行转换的方法的一个应用实施例,其特征在于,包括:
步骤501,所述移动终端接收向网络服务器发送非支持格式的视频请求信息后返回的带有该视频对应的索引文件信息,并对该索引文件信息转换为本地索引文件信息保存;
步骤502,所述移动终端向该移动终端内的代理服务器发送该非支持格式的视频的转换请求信息,所述代理服务器对该视频进行分片处理,生成分片后的至少一个TS文件,并将所述TS文件与所述本地索引文件建立对应关系,保存在该移动终端的内存队列中;
步骤503,所述移动终端的播放器根据在所述内存队列中所述本地索引文件调取所述TS文件进行播放。
上述步骤501中,对于索引文件信息(即m3u8文件)是由网络服务器在转码时提前生成好,m3u8文件除了有标准索引文件所具有的信息外,还包括有每个分片的开始时间信息和结束时间信息。
在该实施例中,步骤501获取m3u8文件的目的,保持视频的每个分片的时长不变,修改分片的统一资源定位符(url)为移动终端本地分片所对应的位置信息,步骤501中将修改后的m3u8文件存放在本地。步骤501主要目的是利用m3u8文件非常小,因此转换过程是比较快,不会耗费太长时间。
生成且保存在移动终端上的m3u8文件,在后续播放时,移动终端的播放器就可以获取到这个本地索引文件并根据其中的分片位置信息请求分片数据,当相应的分片文件生成完成之后,由播放器接收到分片文件就可以进行视频播放,最终播放流畅的视频。
上述实施例所述的本发明的方法可以应用于手机、电脑、平板电脑等视频播放终端。
实施例4:
如图6所示,为本发明所述一种对移动终端中非支持格式的视频进行转换的***,其特征在于,该***设置在所述移动终端中,该***包括:接收模块601、处理模块602和播放模块603;其中,
所述接收模块601,与所述处理模块602相耦接,用于接收向网络服务器发送非支持格式的视频请求信息后返回的带有该视频对应的索引文件信息,并对该索引文件信息转换为本地索引文件信息保存;
所述处理模块602,分别与所述接收模块601和播放模块603相耦接,用于接收该移动终端发送该非支持格式的视频的转换请求信息,对该视频进行分片处理,生成分片后的至少一个TS文件,并将所述TS文件与所述本地索引文件建立对应关系,保存在该移动终端的内存队列604中;
所述播放模块603,与所述处理模块602相耦接,根据在所述内存队列中所述本地索引文件调取所述TS文件进行播放。
其中,所述处理模块602,进一步用于:
根据所述非支持格式的视频的转换请求信息中的请求分片数,计算得出所述视频在视频流中的偏移量,根据所述偏移量确定seek操作中该视频的分片位置,进而对所述视频进行分片处理,生成分片后的至少一个TS文件。
进一步还用于:
对所述视频的视频帧进行判断,当判断到当前的视频帧不是关键帧和/或当前帧的时间戳,即不满足分片条件时,对下一视频帧进行判断;当判断到当前的视频帧是关键帧且该视频帧为当前帧的时间戳,即满足分片条件时,对所述视频的该视频帧进行分片处理。
进一步还用于:
根据所述本地索引文件计算出每一视频帧相对应于所述视频绝对开始时间的绝对结束时间,并根据该绝对结束时间将每个所述视频帧的原始时间戳调整为对应的绝对时间戳,再根据每个视频帧的绝对时间戳对所述视频的该视频帧进行分片处理。
实施例中所述索引文件信息,进一步为:m3u8文件。
与现有技术相比,本申请所述的一种对移动终端中非支持格式的视频进行转换的方法及***,具有以下优点:
(1)本发明将移动终端非支持格式的视频文件到HLS格式视频文件的转换操作从网络服务器移多到用移动终端进行操作。由于非支持格式视频文件到HLS格式视频文件的转换操作被分布到每个移动终端的本地进行,减小了服务器的压力。
(2)本发明在播放非支持格式的本地视频时,利用移动终端预先生成本地播放的m3u8文件以及在移动终端将非支持格式的视频转换为支持的视频格式形式,实现了本地非支持格式视频的播放。
(3)本发明通过m3u8文件传输信息,在移动终端转换视频格式,避免了由网络端缓存格式转换与流化之间传输数据所引起的网络问题,使得移动终端更流畅地播放视频。
(4)本发明在移动终端本地转换视频格式,避免了由移动终端***转换视频格式而增加移动终端CPU工作强度带来的发热问题,同时还节省了移动终端的***资源。
上述说明示出并描述了本申请的若干优选实施例,但如前所述,应当理解本申请并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述申请构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本申请的精神和范围,则都应在本申请所附权利要求的保护范围内。