视频文件提供方法及装置的制造方法_2

文档序号:9277127阅读:来源:国知局
视频文件的提供速度,并可以同时减小对磁盘造成的读写压力,提升用户的使用体验。
[0041]进一步地,通过所确定的数据帧的前一数据帧的帧类型和数据大小的信息,对所确定的请求时间对应数据帧进行验证,可以提高所确定的与所述请求时间对应的数据帧的位置的准确性。
[0042]进一步地,通过所确定的数据帧的后一数据帧的帧类型和数据大小的信息,来对所确定的请求时间对应的数据帧进行验证,可以提高所确定的与所述请求时间对应的数据帧的位置的准确性。
【附图说明】
[0043]图1是本发明实施例中一种的视频文件提供方法的流程图;
[0044]图2是本发明实施例中另一种的视频文件提供方法的流程图;
[0045]图3是本发明实施例中的一种视频文件提供装置的结构示意图。
【具体实施方式】
[0046]视频拖动是一种按照范围请求视频内容的方法,分为按时间范围和文件偏移量范围两种方式。对于按照时间范围的视频拖动,服务端需要通过计算得到对应在文件中的偏移量,根据偏移量范围将数据返回给用户。
[0047]现有技术中,FLV视频文件拖动一般是根据脚本标记(script tag)中的关键帧(keyframes)列表实现的,所述关键帧列表将关键帧的时间和在文件中的偏移量对应起来,但FLV文件不一定都带有keyframes列表。
[0048]对于没有keyframes列表的FLV文件,现有的视频文件提供方法是从文件的第一个数据帧到位于文件末尾的最后一个数据帧进行一一遍历,查找关键帧,并将查找到的关键帧和用户的播放请求起始时间--进行比较,以确定和所述播放请求起始时间最为接近的文件位置,得到用户需要的起始位置和结束位置,并将起始位置至结束位置对应的视频文件数据返回给用户。但是,这种视频文件的提供方法存在处理速度缓慢,对磁盘压力过大的问题。
[0049]为解决上述问题,本发明实施例中的视频文件提供方法,通过根据用户的请求时间计算搜索起始位置,并以所述搜索起始位置向前和向后搜索确定与所述请求时间对应的数据帧的起始位置和结束位置,而无需遍历整个视频文件以确定用户需求的起始位置和终止位置,因此,可以提高视频文件的提供速度,并可以同时减小对磁盘造成的读写压力,提升用户的使用体验。
[0050]为使本发明的上述目的、特征和优点能够更为明显易懂,下面结合附图对本发明的具体实施例做详细的说明。
[0051]图1是本发明实施例中的一种视频文件播放方法的流程图。如图1所示的视频文件播放方法,可以包括:
[0052]步骤SlOl:根据接收到的来自客户端的播放请求,获取视频文件的搜索起始位置。
[0053]步骤S102:根据所述搜索起始位置,确定对应的数据帧,并将所确定的所述关键帧对应的视频文件的内容返回给所述客户端进行播放,其中,所述视频文件包括两个以上的数据帧。
[0054]下面将结合图2对本发明实施例中的视频文件播放方法做进一步详细的介绍。
[0055]图2是本发明实施例中的另一种视频文件提供方法的流程图。如图2所示的视频文件提供方法,可以包括:
[0056]步骤S201:根据来自客户端对视频文件的播放请求,获取播放起始时间点的信息。
[0057]在具体实施中,所述视频文件为FLV文件。各个FLV视频文件都有唯一的统一资源定位符(Uniform Resource Locator,URL)与之对应。当用户在浏览器中输入FLV视频文件对应的URL时,客户端便可以向相应的服务器请求对应的FLV视频文件。
[0058]在FLV视频文件对应的视频播放过程中,并非所有的用户都需要从头至尾观看所述视频的内容。用户可以根据自身的需要,从视频文件的任意位置请求开始观看所述FLV视频文件。此时,用户只需要拖动播放进度按钮至播放进度条的相应位置,客户端便可以向对应的服务器发送相应的请求。
[0059]其中,客户端通过发送请求URL的方式,向存储有所述FLV视频文件的服务器发送请求。其中,客户端发送的请求URL中包括请求播放范围对应的播放请求起始时间点(start参数)和播放请求结束时间点(end参数)的信息。
[0060]在具体实施中,可以采用客户端发送的请求URL中的开始时间点,作为所述播放起始时间点,也可以将客户端发送的请求URL中的结束时间点作为所述播放起始时间点。[0061 ] 步骤S202:根据播放起始时间点、所述FLV视频文件的总大小和总时间的信息,计算搜索起始位置。
[0062]在具体实施中,可以从FLV视频文件的文件头中获取FLV视频文件的总大小和总时间的信息。
[0063]当获取到用户的播放起始时间点的信息,FLV视频文件的文件头中记录的总大小和总时间的信息时,便可以采用如下的公式计算搜索起始位置:
[0064]P = t*M/T (I)
[0065]其中,P表示所述搜索起始位置,t表示所述播放起始时间点,M表示所述视频文件的总大小,T表示所述视频文件的总时间。
[0066]步骤S203:判断所述搜索起始位置是否为一具有数据帧帧头特征的位置,当判断结果为是时,可以直接执行步骤S205,反之,则可以执行步骤S204。
[0067]在具体实施中,FLV视频文件的每个数据帧的帧头中具有StreamID字段,用于标识数据帧的帧头,其中,StreamID字段由3个字节(24位)的O构成。因此,当所确定的搜索起始位置具有数值为24位的O构成的StreamID字段时,此时,还不足以确定所述搜索起始位置就是一数据帧的帧头,此时仅能将其作为具有数据帧帧头特征的位置。反之,则所述搜索起始位置不是一数据帧的帧头所在的位置。
[0068]这里需要指出的是,计算得出的搜索起始位置,可能是一数据帧的开始(帧头)、中间或者结尾(帧尾)。由于各个数据帧的大小是确定的,当确定一个数据帧的帧头位置时,该数据帧的帧尾位置便可以确定,同时,其他数据帧的位置也随之确定。因此,为了后续步骤中方便确定与所述搜索起始位置对应的数据帧,可以首先判断所确定的搜索起始位置是否为一数据帧的帧头。
[0069]步骤S204:逐步进行位置偏移,搜索得到一具有数据帧帧头特征值的位置。
[0070]在本发明一实施例中,当确定所述搜索起始位置不是一具有数据帧帧头特征的位置时,可以从所述搜索起始位置开始向前或者向后偏移。其中,当确定所述搜索起始位置不是一具有数据帧帧头特征的位置时,可以确定的是所述搜索起始位置已经位于一数据帧的帧头的距离可能已经非常小,因此,在本发明一实施例中,可以通过每次一个字节的方式逐步向同一个方向偏移,以查找得到一具有数据帧帧头特征的位置。当然,在从所述搜索起始位置进行位置偏移时偏移方向可以根据实际的需要进行选择,如可以向所述搜索起始位置前方偏移,也可以向所述搜索起始位置的后方偏移。
[0071]步骤S205:从所述具有数据帧帧头特征的位置第一位置中获取第一数值的信息,并判断所述第一数值是否为预设的第一预设数值,其中,当判断结果为是时,可以执行步骤S206,反之,则继续进行位置偏移。
[0072]在具体实施中,FLV视频文件的数据帧包括音频帧、视频帧和脚本帧三种不同类型的帧。不同类型的帧可以通过帧头中的帧类型字段中存储的数值的信息进行判断。其中,当帧类型字段中存储的数值为8时表示音频帧,9表示视频帧,18表示脚本帧。这里需要指出的是,视频帧和音频帧可以统称为数据帧,而脚本帧则可以称为非数据帧。
[0073]在具体实施中,在数据帧的帧头的开头的第一个字节即为帧类型字段,因此,可以通过所述具有数据帧帧头特征的位置的第一位置,即开头的第一字节获取第一数值的信息,判断所述第一数值是否为8或者9,以确定所述具有数据帧帧头特征的位置中的第一位置是否为数据帧的帧类型字段所在的位置。
[0074]步骤S206:从所述具有数据帧帧头特征的位置中的第二位置处获取第二数值信息,并从所述具有数据帧帧头特征的位置处向后偏移一个数据帧大小至第三位置处,并从所述第三位置处获取第三数值的信息,并判断所述第二数值与第二预设数值之和是否等于所述第三数值,当判断结果为是时,可以执行步骤S207,反之,则继续进行位置偏移。
[0075]在具体实施中,FLV视频文件的各个音频帧和视频帧
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1