自适应播放flv媒体流的方法、客户端和系统的制作方法

文档序号:7761331阅读:225来源:国知局
专利名称:自适应播放flv媒体流的方法、客户端和系统的制作方法
技术领域
本发明涉及媒体流播放领域,尤其涉及一种自适应播放FLV媒体流的方法、客户%5和系统。
背景技术
目前自适应移动流媒体协议主要包括自适应RTSP协议(Real Time StreamingProtocol,实时流传输协议)、自适应RTMP协议(Real Time Messaging Protocol,实时消息传输协议)、Smooth streaming (平滑流)和自适应 HTTP (HyperText Transfer Protocol,超文本传输协议)渐进下载(Adaptive Progressive Downloading)。RTSP协议在3GPP中已经制定,RTMP、HTTP PD (HTTP Progressive Downloading, HTTP 渐进下载)在互联网上已经取代了 RTSP流媒体协议,随着移动网的带宽的增加,手机流媒体协议也将由RTSP向HTTP PD演进,这个趋势已经在iPHONE、Silverlight和Adobe上得到验证。HTTP流媒体是以HTTP为基础传输协议的流媒体协议族的统称。国内外已有多种形式的HTTP流媒体应用,典型的有简单HTTP PD协议,特征是使用HTTP协议对3GP ( 一种3G流媒体的视频编码格式)、MP4、FLV(FLASH VIDEO)格式的文件进行渐进下载,边下载边播放。典型应用是各大互联网视频网站,以及这些网站的手机版本。HTTP Adaptive streaming.由苹果公司首创,已经在苹果公司产品及部分互联网视频公司采用。协议已提交IETF作为Draft标准。特征是采用m2ts切片封装,支持动态自适应多码率。Smooth streaming由微软公司发明,使用Smooth streaming的流媒体服务器称为Silver light。主要特征是修改了 3GP/MP4文件的封装,采用文件内分片的方式,同样支持动态自适应多码率。Dynamic streaming. Adobe公司的HTTP流媒体协议,媒体传输方式可以采用Adobe的私有协议RTMP (Real Time Messaging Protocol),也支持目前流媒体流行米用的HTTP PD (Progressive Download)协议,主要通过服务器侧控制码率切换,适用于FLV视频。在以上协议中,除第一种简单ro外,其他几种都采用了更进一步的机制支持多码率。目前制约流媒体宽带应用发展的核心问题在于服务质量。简单地说,由于因特网的状况是不可靠的,其带宽、负荷等变化剧烈,这难以满足流媒体宽带业务的实时性服务质量要求,常常造成播放卡壳、延迟、视频质量抖动剧烈等不良情况,给使用者感官造成很大影响。所以解决好流媒体宽带应用的服务质量问题对于流媒体宽带应用是极为重要的。

发明内容
有鉴于此,本发明要解决的一个技术问题是提供一种自适应播放FLV媒体流的方法,提高FLV媒体流的播放质量。
一种自适应播放FLV媒体流的方法,包括下载FLV索引文件;其中,所述FLV索引文件包含视频编码关键帧在时间轴上的时间点与FLV媒体流的字节偏移量之间的映射关系;当监测到当前网络带宽与播放的FLV媒体流的码率不相匹配时,根据FLV索引文件确定与当前网络带宽匹配的码率的FLV媒体流的当前关键帧;从所述当前关键帧开始从服务器下载并播放码率与网络带宽匹配的FLV媒体流。根据本发明方法的一个实施例,所述监测当前网络带宽具体为根据客户端缓冲区接收下载的FLV媒体流字节数和FLV媒体流下载时间确定当前网络带宽,判断是否需要
调整码率。根据本发明方法的一个实施例,所述下载FLV索引文件包括对于点播类业务,在播放FLV媒体流之前,客户端向服务器请求下载与所述FLV媒体流对应的FLV索引文件;客户端接收服务器返回的所述FLV媒体不同码率的媒体文件所对应的索引文件。根据本发明方法的一个实施例,所述当监测到当前网络带宽与播放的FLV媒体流的码率不相匹配时,根据FLV索引文件确定与当前网络带宽匹配的码率的FLV媒体流的当前关键帧包括客户端开始下载并播放低码率的所述FLV媒体流;客户端实时计算网络带宽,当网络带宽达到下载高码率的所述FLV媒体流所需的带宽时,所述客户端根据所述FLV索引文件,确定媒体流切换的关键帧位置,获取高码率的所述FLV媒体流中最接近所述关键帧位置的关键帧所对应的字节偏移量;从所述当前关键帧开始从服务器下载并播放码率与网络带宽匹配的FLV媒体流包括从所述字节偏移量开始下载高码率的所述FLV媒体流,并播放高码率的所述FLV媒体流。根据本发明方法的一个实施例,所述当监测到当前网络带宽与播放的FLV媒体流的码率不相匹配时,根据FLV索引文件确定与当前网络带宽匹配的码率的FLV媒体流的当前关键帧包括当网络带宽不满足高码率的所述FLV媒体流所需的带宽时,所述客户端根据所述FLV索引文件,确定媒体流切换的关键帧位置,获取低码率的所述FLV媒体流中最接近所述关键帧位置的关键帧所对应的字节偏移量;所述从所述当前关键帧开始从服务器下载并播放码率与网络带宽匹配的FLV媒体流包括从所述字节偏移量开始下载低码率的所述FLV媒体流,并播放低码率的所述FLV媒体流。根据本发明方法的一个实施例,客户端使用多个缓存区,隔离分开缓存下载的不同码率的所述FLV媒体流。根据本发明方法的一个实施例,所述客户端开始下载并播放低码率的所述FLV媒体流时,在所述客户端输入或点击所述FLV媒体流对应的逻辑URL地址,所述客户端解析所述逻辑URL地址,将所述逻辑URL地址映射为物理地址。本发明方法通过计算网络接入速率,播放后根据可用带宽大小,自动切换到与带宽匹配的码流上,降低网络带宽影响,利用带宽,更好的保证用户观看的流畅性,提高FLV媒体流的播放质量。本发明要解决的另一个技术问题是提供一种自适应播放FLV媒体流的客户端,提高FLV媒体流的播放质量。一种自适应播放FLV媒体流的客户端,包括播放器,用于播放FLV媒体流;FLV索弓I文件下载单元,用于在播放FLV媒体流之前,下载所述FLV媒体流不同码率的媒体文件所对应的索引文件;其中,每个不同码率的FLV媒体流有对应的FLV索引文件,所述FLV索引文件包含视频编码关键帧在时间轴上的时间点与FLV媒体流字的节偏移量之间的映射关系;当前关键帧确定单元,用于当监测到当前网络带宽与播放的FLV媒体流的码率不相匹配时,根据FLV索引文件确定与当前网络带宽匹配的码率的FLV媒体流的当前关键帧;媒体流下载单元,用于从所述当前关键帧开始从服务器下载并播放码率与网络带宽匹配的FLV媒体流。根据本发明客户端的一个实施例,所述客户端还包括带宽计算单元,用于根据客户端缓冲区接收下载的FLV媒体流字节数和FLV媒体流下载时间确定当前网络带宽。根据本发明客户端的一个实施例,所述客户端还包括网址解析单元,用于解析在所述客户端输入或点击所述FLV媒体流对应的逻辑URL地址,将所述逻辑URL地址映射为物理地址;FLV媒体流下载单元,用于下载FLV媒体流;在开始下载并播放所述FLV媒体流时,下载低码率的所述FLV媒体流;所述当前关键帧确定单元,用于当网络带宽达到下载高码率的所述FLV媒体流所需的带宽时,根据所述FLV索引文件,确定媒体流切换的关键帧位置,获取高码率的所述FLV媒体流中最接近所述关键帧位置的关键帧所对应的字节偏移 量;所述媒体流下载单元,用于从所述字节偏移量开始下载高码率的所述FLV媒体流,并控制所述播放器切换到高码率的所述FLV媒体流上。根据本发明客户端的一个实施例,所述当前关键帧确定单元进一步用于,当网络带宽不满足下载高码率所述FLV媒体流所需的带宽时,根据所述FLV索引文件,确定媒体流切换的关键帧位置,获取低码率的所述FLV媒体流中最接近所述关键帧位置的关键帧所对应的字节偏移量;所述媒体流下载单元进一步用于,从所述字节偏移量开始下载低码率的所述FLV媒体流,并控制所述播放器切换到低码率的所述FLV媒体流上。根据本发明客户端的一个实施例,所述客户端包括多个缓存区,用于隔离分开缓存下载的不同码率的所述FLV媒体流。根据本发明客户端的一个实施例,所述客户端包括低速缓存区,用于缓存下载的低码率的所述FLV媒体流;所述客户端包括高速缓存区,用于缓存下载的高码率的所述FLV媒体流。本发明要解决的另一个技术问题是提供一种自适应播放FLV媒体流的系统,包括上述的客户端,还包括服务器;所述服务器存储不同码率的FLV媒体文件,并且存储每个FLV媒体文件对应的FLV索引文件。根据本发明系统的一个实施例,所述服务器为HTTP服务器。本发明的客户端和系统通过计算网络接入速率,播放FLV媒体流后根据可用带宽大小,自动切换到与带宽匹配的码流上,减少网络带宽影响,更好的保证用户观看的流畅性,提高FLV媒体流的播放质量。本发明的服务器存储FLV媒体文件和索引文件,提供HTTP下载。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图I为根据本发明的自适应播放FLV媒体流的方法的一个实施例的流程图;图2为根据本发明的一个实施例的FLV索引文件的示意图;图3为根据本发明的自适应播放FLV媒体流的方法的另一个实施例的流程图;
图4为根据本发明的自适应播放FLV媒体流的方法中切换码率的一个实施例的流程图;图5为根据本发明的自适应播放FLV媒体流的方法中切换码率的另一个实施例的流程图;图6为本发明一个实施例的自适应播放FLV媒体流客户端的示意图;图7为本发明另一个实施例的自适应播放FLV媒体流客户端的示意图;图8为本发明一个实施例的自适应播放FLV媒体流系统的不意图。图9为本发明一个实施例的自适应播放FLV媒体流系统的客户端判断切换FLV媒体流的示意图。
具体实施例方式下面参照附图对本发明进行更全面的描述,其中说明本发明的示例性实施例。下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本发明对于点播类业务,将不同编码方式的FLV封装的文件及文件索引置于服务器,客户端根据自身的策略判断网络环境的变化并请求服务,服务器接受请求并响应,通过客户端请求服务器响应的方式进行自适应多码率间的切换,实现自适应多码率的切换源视频文件完整,不需分片即可实现,能够在服务端提供多码率的情况下,尽可能地减少用户观看的停顿,保障最大的播放流畅性;并在保证流畅的前提下提供尽可能提高FLV媒体流的播放质量。下面结合各个图和实施例对本发明的技术方案进行多方面的描述。图I为根据本发明的自适应播放FLV媒体流的方法的一个实施例的流程图。如图I所示步骤102,下载FLV索引文件;其中,FLV索引文件包含视频编码关键帧在时间轴上的时间点与FLV媒体流字的节偏移量之间的映射关系。步骤103,当监测到当前网络带宽与播放的FLV媒体流的码率不相匹配时,根据FLV索引文件确定与当前网络带宽匹配的码率的FLV媒体流的当前关键帧。步骤104,从当前关键帧开始从服务器下载并播放码率与网络带宽匹配的FLV媒体流。通过判断当前带宽情况,调整需要传送视频码率,保证客户的观看需求,将减少网络带宽影响,更好的保证用户观看的流畅性,提高FLV媒体流的播放质量。根据本发明的一个实施例,客户端设置缓冲区接收下载的FLV媒体流,获取已经下载的时间和在此时间内下载的FLV媒体流字节数,计算网络的带宽。根据本发明的一个实施例,在服务器上有不同码率的FLV媒体文件,并且每个FLV媒体文件都有对应的FLV索引文件。图2为根据本发明的FLV索引文件的一个实施例的示意图。FLV媒体流封装结构由文件头FLV header和很多tag组成。tag又可以分成三类audio, video, script,分别代表音频流,视频流,脚本流,不同码率的音视频流封装在不同的FLV文件中。图2中的码率索引用于标识该视频文件包含的码率基本信息及对应索引的位置。码率索引I标识用于标识该码率的基本信息,如分辨率、帧率,文件长度等。帧数I为关键帧I的帧数,时间点I为帧数I的时间轴上的时间点,偏移量I为视频编码关键帧在时间轴上的时间点的字节偏移量。帧数2为关键帧2的帧数,时间点2为帧数2的时间轴上的时间点,偏移量2为视频编码关键帧在时间轴上的时间点的字节偏移量。不同码率索引的格式都相同。根据本发明的一个实施例,FLV索引文件是二进制文件,包含了不 同码率媒体流的索引信息,即在单个FLV索引文件内包含了不同码率媒体流的索引信息。例如,对于一个低码率的FLV媒体流,时间点字段的值为10598毫秒,对应于频编码关键帧I在时间轴上10598毫秒处的字节偏移量为123456字节,字节偏移量字段的值为123456。对于一个高码率的FLV媒体流,时间点字段的值为10598毫秒,对应于频编码关键帧I在时间轴上10598毫秒处的字节偏移量为654321字节,所以字节偏移量字段的值为654321。客户端根据FLV索引文件下载并播放FLV媒体流。根据本发明的一个实施例,对于不同码率媒体流,分别有对应的FLV索引文件,SP不同码率的媒体流对应有不同的索引文件。图3为根据本发明的自适应播放FLV媒体流的方法的另一个实施例的流程图。如图所示步骤301,对于点播类业务,在客户端输入或点击节目内容对应的逻辑URL地址。步骤302,客户端解析该逻辑URL地址,将逻辑URL地址映射为物理地址。根据本发明的一个实施例,为了减少用户观看影片的等待时延,获得较好的用户体验,保证客户端能够快速启动,在客户端首次连接服务器观看节目时,选用低码率视频为客户提供服务。步骤303,客户端连接服务器,向服务器请求索引文件。步骤304,服务器响应客户端请求,向客户端返回索引文件。步骤305,客户端向服务器请求低码率的视频文件。步骤306,服务器向客户端提供低码率视频文件的渐进下载。步骤307,客户端通过缓冲区接收处理下载的视频文件,获取当前已经下载的时间;通过播放器API获取缓冲区已下载的字节数,计算当前下载速率;匹配码率和下载速率的对应关系并进行切换时机的选择;播放中N秒内计算缓冲速度,在缓冲区足够大,并达到高码率速度时,停止低速缓冲,开始高码率缓冲。步骤308,客户端向服务器请求高码率的视频文件,根据索引文件中的时间戳信息和文件偏移信息从关键帧开始切换,确定出新码率的码流中最接近该参数的关键帧的位置,以此关键帧开始,发送媒体数据。步骤309,当新的码流的缓冲区达到可播放的时,向高码率视频进行切换;在新码率的码流能够播放之前,播放原有码率码流的缓冲区。步骤310,继续监听缓冲区加载的快慢,当缓冲区填充的速度不足以满足高码率视频播放时,选择相应的时机向低码率进行切换。步骤311,向服务器请求低码率的视频文件。步骤312,服务器提供低码率的视频文件下载,向客户端提供服务。如此反复,直至用户选择停止播放为止。用户开始播放时,可以采取先提供低码率码流的方式。开始播放后可以根据可用带宽大小,自动切换到与带宽匹配的码流上。当前网络状态不稳定或是持续低下的时候,通过缓冲区策略判断当前带宽情况 ,调整需要传送视频码率,保证客户的观看需求,将网络带宽影响降到最低,同时最大限度利用带宽,更好的保证用户观看的流畅性,为用户提供最佳的流媒体质量。根据本发明的一个实施例,用户开始播放时,也可以采取先提供高码率码流的方式,开始播放后可以根据可用带宽大小,自动切换到与带宽匹配的码流上。根据本发明的一个实施例,在播放FLV媒体流之前,客户端向服务器请求下载与FLV媒体对应的FLV索引文件;服务器响应客户端的请求,向客户端返回FLV媒体不同码率的媒体文件所对应的索引文件。图4为根据本发明的自适应播放FLV媒体流的方法中切换码率的一个实施例的流程图。如图所不步骤401,客户端根据当前播放的低码率的FLV媒体的索引文件,确定媒体流切换的关键帧位置。步骤402,查询高码率的FLV媒体流的索引文件,获取高码率的FLV媒体流中最接近关键帧位置的关键帧所对应的字节偏移量。根据本发明的一个实施例,在单个FLV索引文件内包含了不同码率媒体流的索引信息的场景下,客户端根据FLV索引文件,确定媒体流切换的关键帧位置。获取高码率的FLV媒体流中最接近关键帧位置的关键帧所对应的字节偏移量。步骤403,从字节偏移量开始下载,客户端切换到并播放高码率的FLV媒体流。根据本发明的一个实施例,假设当前低码率的媒体流的播放时间为10598毫秒,此时网络速率达到向高码率的媒体流切换的条件,通过查索引文件,10598毫秒对应一个关键帧,发现高码率的媒体流的10598毫秒对应的字节偏移量为654321字节,此时,停止低码率的缓冲,通过ht tp协议range get高码率的媒体流654321字节后的内容,并填充到高码率的缓冲区,并切换到高码率的媒体流。反之亦然,通过查询索引文件,停止高码率缓冲,接收低码率的媒体流数据。通过索引文件的映射关系实现播放器在不同码率FLV封装的视频文件间的无缝切换播放。对于直播内容,不同的码率的流媒体视频可由编码器直接生成,前提条件要求不同码率的视频的关键帧数据对齐,另外通过工具生成码率的索引;对于点播的内容,不同码率的FLV视频文件和索引文件直接放置在HTTP server上即可。图5为根据本发明的自适应播放FLV媒体流的方法中切换码率的另一个实施例的流程图。如图5所示当网络带宽不满足下载高码率的FLV媒体流所需的带宽时,客户端向服务器请求下载低码率的FLV媒体流。步骤501,客户端根据当前播放的高码率的FLV媒体流的索引文件,确定媒体流切换的关键帧位置。步骤502,查询低码率的FLV媒体流的索引文件,获取低码率的FLV媒体流中最接近关键帧位置的关键帧所对应的字节偏移量。
根据本发明的一个实施例,在单个FLV索引文件内包含了不同码率媒体流的索引信息的场景下,客户端根据FLV索引文件,确定媒体流切换的关键帧位置,获取低码率的FLV媒体流中最接近关键帧位置的关键帧所对应的字节偏移量。步骤503,从此字节偏移量开始下载,客户端切换到并播放低码率的FLV媒体流。客户端通过索引信息文件的映射关系实现播放器在不同码率FLV封装的视频文件间的无缝切换播放。在播放FLV媒体流后可以根据可用带宽大小,自动切换到与带宽匹配的码流上,当前网络状态不稳定或是持续低下的时候,通过缓冲区策略判断当前带宽情况,调整需要传送视频码率,保证客户的观看需求,将网络带宽影响降到最低。图6为本发明一个实施例的自适应播放FLV媒体流客户端的示意图。如图6所示客户端61包括FLV索引文件下载单元611,在播放FLV媒体流之前,下载全部所述FLV媒体流不同码率的媒体文件所对应的索引文件;其中,每个不同码率的FLV媒体流有对应的FLV索引文件,FLV索引文件包含视频编码关键帧在时间轴上的时间点与FLV媒体流字的节偏 移量之间的映射关系;播放器614播放FLV媒体流;当监测到当前网络带宽与播放的FLV媒体流的码率不相匹配时,当前关键帧确定单元612根据FLV索引文件确定与当前网络带宽匹配的码率的FLV媒体流的当前关键帧;媒体流下载单元613从当前关键帧开始从服务器下载并播放码率与网络带宽匹配的FLV媒体流。播放器614可以为Flash Player等FLV视频格式文件的播放器。根据本发明的一个实施例,在单个FLV索引文件内包含了不同码率媒体流的索引信息的场景下,FLV索引文件下载单元611在播放FLV媒体流之前,下载所述FLV媒体流不同码率的媒体文件所对应的索引文件。客户端可以部署或安装在PC、PDA或手机等终端上。该自适应客户端能在任何已有网络环境下工作,极大地降低了技术推广的难度,很好地屏蔽网络带宽的短时间尺度波动对视频播放质量的影响,并能够通过码率切换方式,在网络带宽长时间下降时,提供流畅的播放。图7为本发明另一个实施例的自适应播放FLV媒体流客户端的示意图。如图7所示,客户端71进包括FLV索引文件下载单元711,在播放FLV媒体流之前,下载全部所述FLV媒体流不同码率的媒体文件所对应的索引文件;播放器716播放FLV媒体流;网址解析单元714,解析用户输入或所点击的节目内容对应的逻辑URL地址,将逻辑URL地址映射为物理地址;在开始下载并播放FLV媒体流时,媒体流下载单元715服务器请求下载低码率的FLV媒体流。带宽计算单元713获取缓冲区已经下载的时间和在此时间内下载的FLV媒体流字节数,计算当前网络的带宽。当网络带宽达到下载高码率的FLV媒体流所需的带宽时,当前关键帧确定单元712根据当前播放的低码率的FLV媒体的索引文件,确定媒体流切换的关键帧位置,查询高码率的FLV媒体流的索引文件,获取高码率的FLV媒体流中最接近关键帧位置的关键帧所对应的字节偏移量;媒体流下载单元715从字节偏移量开始下载高码率的FLV媒体流,并控制播放器716切换到高码率的FLV媒体流上。根据本发明的一个实施例,在单个FLV索引文件内包含了不同码率媒体流的索引信息的场景下,当网络带宽达到下载高码率的FLV媒体流所需的带宽时,当前关键帧确定单元712根据FLV索引文件,确定媒体流切换的关键帧位置,获取高码率的FLV媒体流中最接近关键帧位置的关键帧所对应的字节偏移量。
根据本发明的另一个实施例,当网络带宽不满足下载高码率FLV媒体流所需的带宽时,当前关键帧确定单元712根据当前播放的高码率的FLV媒体流的FLV索引文件,确定媒体流切换的关键帧位置,查询低码率的FLV媒体流的FLV索引文件,获取低码率的FLV媒体流中最接近关键帧位置的关键帧所对应的字节偏移量;媒体流下载单元713从字节偏移量开始下载低码率的FLV媒体流,并控制播放器714切换到低码率的FLV媒体流上。根据本发明的一个实施例,在单个FLV索引文件内包含了不同码率媒体流的索引信息的场景下,当网络带宽不满足下载高码率FLV媒体流所需的带宽时,当前关键帧确定单元712根据FLV索引文件,确定媒体流切换的关键帧位置,获取低码率的FLV媒体流中最接近关键帧位置的关键帧所对应的字节偏移量。客户端通过索引信息文件的映射关系实现播放器在不同码率FLV封装的视频文件间的无缝切换播放,极大地简化了调节难度,由于FLV封装结构决定了视频源数据不用进行切片处理,对CMS管理带来了极大的改善。图8为本发明一个实施例的自适应播放FLV媒体流系统的示意图。如图8所示, 自适应播放FLV媒体流的系统包括客户端82和服务器81,服务器81存储不同码率的FLV媒体文件811 ;每个FLV媒体文件都有对应的FLV索引文件812 ;FLV索引文件包含视频编码关键帧在时间轴上的时间点与字节偏移量之间的映射关系,例如可以是二进制文件或者文本文件。根据本发明的一个实施例,在单个FLV索引文件内包含了不同码率媒体流的索引信息的场景下,不同码率的FLV媒体文件811都对应单个的FLV索引文件812。客户端82包括播放器824、媒体流下载单元821 ;客户端可以包括两个或者多个缓存区,隔离分开缓存下载的不同码率的FLV媒体流。根据本发明的一个实施例,低速缓存区823接收下载的低码率的FLV媒体流,高速缓存区822接收下载的高码率的FLV媒体流。在下载多个不同码率的FLV媒体流时,多个不同码率的FLV媒体流可以共享缓存区。将不同码率的视频隔离分开缓冲,避免解码器解码过程中反复切换引起的图像黑屏及卡顿现象。月艮务器81可以为HTTP服务器,数据代理单元821可以为HTTP代理单元。图9为本发明一个实施例的自适应播放FLV媒体流系统的客户端判断切换FLV媒体流的示意图。如图所示,客户端91的实现参照上述图6至8的实施例的客户端。客户端91能够检测播放过程中的各种情况,并计算出几个典型的考量指标,最后根据预设的门限值作出合适的码率切换判决。客户端91可以根据可用码率、缓冲区的大小和下载的平均速度判断是否需要调整码率。当网络带宽与客户端91正在播放的FLV媒体流的码率不相匹配时,客户端91从服务器下载码率与网络带宽匹配的FLV媒体流,并自动切换到码率与网络带宽匹配的FLV媒体流上。当网络带宽发生变化时,其中当网络带宽达到下载高码率的FLV媒体流所需的带宽时,下载高码率的FLV媒体流,并切换到高码率的FLV媒体流。当网络带宽不满足高码率的FLV媒体流所需的带宽时,客户端91向服务器请求下载低码率的所述FLV媒体流,并切换到低码率的媒体流。如果带宽不发生变换,并满足播放质量时,客户端91继续保持目前的码率,下载并播放FLV媒体流。客户端91设置缓存区,缓存下载的FLV媒体流。在客户端91的缓存区缓存FLV媒体流时,客户端91可暂停播放。从上面所述的实施例可以看出,本发明的实施例通过先提供低码率码流,开始播放后可以根据可用带宽大小,自动切换到与带宽匹配的码流上,当前网络状态不稳定或是持续低下的时候,通过缓冲区策略判断当前带宽情况,调整需要传送视频码率,保证客户的观看需求,降低网络带宽影响,同时可以最大限度利用带宽,更好的保证用户观看的流畅性,提高流媒体的播放质量,特别是更加适应无线网络的特性。
本发明的描述是为了示例和描述起见而给出的,而并不是无遗漏的或者将本发明限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。选择和描述实施例是为了更好说明本发明的原理和实际应用,并且使本领域的普通技术人员能够理解本发明从而设计适于特定用途的带有各种修改的各种实施例。
权利要求
1.一种自适应播放FLV媒体流的方法,其特征在于,包括 下载FLV索引文件;其中所述FLV索引文件包含视频编码关键帧在时间轴上的时间点与FLV媒体流的字节偏移量之间的映射关系; 当监测到当前网络带宽与播放的FLV媒体流的码率不相匹配时,根据FLV索引文件确定与当前网络带宽匹配的码率的FLV媒体流的当前关键帧; 从所述当前关键帧开始从服务器下载并播放码率与网络带宽匹配的FLV媒体流。
2.如权利要求I所述的方法,其特征在于,所述监测当前网络带宽,具体为 根据客户端缓冲区接收下载的媒体流字节数和媒体流下载时间确定当前网络带宽。
3.如权利要求I所述的方法,其特征在于,所述下载FLV索引文件包括 在播放FLV媒体流之前,客户端向服务器请求下载与所述FLV媒体流对应的FLV索引文件; 客户端接收服务器返回的所述FLV媒体不同码率的媒体文件所对应的索引文件。
4.如权利要求I所述的方法,其特征在于,所述当监测到当前网络带宽与播放的FLV媒体流的码率不相匹配时、根据FLV索引文件确定与当前网络带宽匹配的码率的FLV媒体流的当前关键帧包括 客户端开始下载并播放低码率的所述FLV媒体流; 客户端实时计算网络带宽,当网络带宽达到下载高码率的所述FLV媒体流所需的带宽时,所述客户端根据所述FLV索引文件,确定媒体流切换的关键帧位置,获取高码率的所述FLV媒体流中最接近所述关键帧位置的关键帧所对应的字节偏移量; 所述从所述当前关键帧开始从服务器下载并播放码率与网络带宽匹配的FLV媒体流包括 从所述字节偏移量开始下载高码率的所述FLV媒体流,并播放高码率的所述FLV媒体流。
5.如权利要求I所述的方法,其特征在于,所述当监测到当前网络带宽与播放的FLV媒体流的码率不相匹配时,根据FLV索引文件确定与当前网络带宽匹配的码率的FLV媒体流的当前关键帧包括 当网络带宽不满足高码率的所述FLV媒体流所需的带宽时,所述客户端根据所述FLV索引文件,确定媒体流切换的关键帧位置,获取低码率的所述FLV媒体流中最接近所述关键帧位置的关键帧所对应的字节偏移量; 所述从所述当前关键帧开始从服务器下载并播放码率与网络带宽匹配的FLV媒体流包括 从所述字节偏移量开始下载低码率的所述FLV媒体流,并播放低码率的所述FLV媒体流。
6.如权利要求4或5所述的方法,其特征在于 客户端使用两个或者两个以上个缓存区,隔离分开缓存下载的不同码率的所述FLV媒体流。
7.如权利要求4所述的方法,其特征在于,所述客户端开始下载并播放低码率的所述FLV媒体流时,在所述客户端输入或点击所述FLV媒体流对应的逻辑URL地址,所述客户端解析所述逻辑URL地址,将所述逻辑URL地址映射为物理地址。
8.一种自适应播放FLV媒体流的客户端,其特征在于,包括 播放器,用于播放FLV媒体流; FLV索引文件下载单元,用于在播放FLV媒体流之前,下载所述FLV媒体流不同码率的媒体文件所对应的索引文件;其中,所述FLV索引文件包含视频编码关键帧在时间轴上的时间点与FLV媒体流的字节偏移量之间的映射关系; 当前关键帧确定单元,用于当监测到当前网络带宽与播放的FLV媒体流的码率不相匹配时,根据FLV索引文件确定与当前网络带宽匹配的码率的FLV媒体流的当前关键帧; 媒体流下载单元,用于从所述当前关键帧开始从服务器下载并播放码率与网络带宽匹配的FLV媒体流。
9.如权利要求8所述的客户端,其特征在于,所述客户端还包括 带宽计算单元,用于根据客户端缓冲区接收下载的FLV媒体流字节数和FLV媒体流下载时间确定当前网络带宽。
10.如权利要求8所述的客户端,其特征在于,所述客户端还包括 网址解析单元,用于解析在所述客户端输入或点击所述FLV媒体流对应的逻辑URL地址,将所述逻辑URL地址映射为物理地址; 所述当前关键帧确定单元,用于当网络带宽达到下载高码率的所述FLV媒体流所需的带宽时,根据所述FLV索引文件,确定媒体流切换的关键帧位置,获取高码率的所述FLV媒体流中最接近所述关键帧位置的关键帧所对应的字节偏移量; 所述媒体流下载单元,用于从所述字节偏移量开始下载高码率的所述FLV媒体流,并控制所述播放器播放高码率的所述FLV媒体流。
11.如权利要求8所述的客户端,其特征在于 所述当前关键帧确定单元进一步用于,当网络带宽不满足下载高码率所述FLV媒体流所需的带宽时,根据所述FLV索引文件,确定媒体流切换的关键帧位置,获取低码率的所述FLV媒体流中最接近所述关键帧位置的关键帧所对应的字节偏移量; 所述媒体流下载单元进一步用于,从所述字节偏移量开始下载低码率的所述FLV媒体流,并控制所述播放器播放低码率的所述FLV媒体流。
12.如权利要求11所述的客户端,其特征在于 所述客户端包括两个或者两个以上个缓存区,用于隔离分开缓存下载的不同码率的所述FLV媒体流。
13.一种自适应播放FLV媒体流的系统,其特征在于 包括如权利要求8至12任一项所述的客户端;所述系统还包括服务器,用于存储不同码率的FLV媒体文件,并且存储所述FLV媒体文件对应的FLV索引文件。
14.如权利要求13所述的系统,其特征在于 所述服务器为HTTP服务器。
全文摘要
本发明公开了一种自适应播放FLV媒体流的方法、客户端和系统。下载FLV索引文件,当监测到当前网络带宽与播放的FLV媒体流的码率不相匹配时,根据FLV索引文件确定与当前网络带宽匹配的码率的FLV媒体流的当前关键帧,从当前关键帧开始从服务器下载并播放码率与网络带宽匹配的FLV媒体流。本发明公开的方法、客户端和系统通过计算网络接入速率,播放FLV媒体流后根据可用带宽大小,自动切换到与带宽匹配的码流上,降低网络带宽影响,更加有效地利用带宽,更好的保证用户观看的流畅性,提高了流媒体的播放质量。
文档编号H04L29/06GK102957672SQ20111024458
公开日2013年3月6日 申请日期2011年8月25日 优先权日2011年8月25日
发明者董石磊, 于建港, 李奕群, 陈杲 申请人:中国电信股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1