Mp4视频点播的数据流传输方法、客户端及点播系统的制作方法

文档序号:8343182阅读:1001来源:国知局
Mp4视频点播的数据流传输方法、客户端及点播系统的制作方法
【专利说明】MP4视频点播的数据流传输方法、客户端及点播系统
[0001]
技术领域
[0002]本申请涉及视频点播技术领域,具体涉及一种MP4视频点播的数据流传输方法、客户端及点播系统。
[0003]
【背景技术】
[0004]现有的视频网站普遍使用flash播放器插件,MP4视频文件的播放都是需要先下载完视频文件的文件头信息,解析文件头信息得到视频播放所需要的文件信息和音视频帧相关信息后,才能实现播放。
[0005]—般MP4视频文件的文件头信息都比较大,主流编码的300M左右大小的文件,文件头信息长度差不多占到1.5-2M,在下载速度为200kb/s的环境下,需要下载7-10S的时间,才能显示画面实现视频播放。所以普通下载方式对于MP4视频的播放启动,速度较慢,用户体验不佳。
[0006]

【发明内容】

[0007]为了减少缓冲等待时间,优化用户体验,本申请提出一种MP4视频点播的数据流传输方法、客户端及点播系统,使得用户在使用flash播放器播放MP4视频文件时,能够更快得到响应,并获得更流畅的播放体验。
[0008]本申请提供一种MP4视频点播的数据流传输方法,包括如下步骤:S1:客户端根据视频播放请求向索引服务器请求下载索引数据,所述索引数据为存储于所述索引服务器中的视频文件的文件头信息的解析数据;S2:索引服务器检获被请求下载的所述索引数据后,向客户端分段推送索引数据;S3:客户端根据分段获取的索引数据分段向视频服务器请求下载视频文件的音视频内容数据;S4:视频服务器分段向客户端推送被请求下载的所述音视频内容数据。
[0009]本申请还提供一种视频客户端,包括:下载模块和编码模块;所述下载模块向索引服务器请求下载索引数据,根据从所述索引服务器分段获取的索引数据分段向视频服务器请求下载并接收音视频内容数据;所述索引数据为存储于所述索引服务器中的视频文件的文件头信息的解析数据;所述编码模块对接收的音视频内容数据进行编码后推送至播放器播放。
[0010]本申请还提供一种视频点播系统,包括:客户端和视频服务器,所述视频服务器用于提供视频文件,所述视频文件包括文件头信息和音视频内容数据,所述视频点播系统还包括:索引服务器,所述索引服务器根据所述客户端的下载请求推送索引数据,所述索引数据为存储于所述索引服务器中的文件头信息的解析数据;所述客户端根据视频播放请求向索引服务器请求下载索引数据,根据分段获取的索引数据分段向视频服务器请求下载音视频内容数据;所述视频服务器分段向客户端推送被请求下载的所述音视频内容数据。
[0011]本申请中的技术方案,在请求播放视频文件时,从索引服务器下载一个分段的索引数据后,即可以启动视频播放,提高了视频点播的反应速度。
[0012]其中的一个优选实施方式中,视频地址中的视频文件被首次请求播放时,首次请求的客户端将该视频文件中的文件头信息进行解析生成索引数据,并将索引数据上传存储在索引服务器上。同一地址的视频文件被再次请求播放时,从索引服务器下载一个分段的索引数据后,即可以启动视频播放,提高了视频点播的反应速度。
[0013]
【附图说明】
[0014]图1为本申请中实施例一的流程图;
图2为本申请中实施例二的原理框图;
图3为本申请中实施例三的原理框图。
[0015]
【具体实施方式】
[0016]下面通过【具体实施方式】结合附图对本发明作进一步详细说明。
[0017]在MP4视频文件中,数据都封装在box中(也叫atom),MP4视频文件包括file typebox (文件类型包)、movie box (影片包)、free space box 和 media data box (媒体数据包)。file type box主要描述文件类型,movie box中包括一个视频文件的全部关键信息,media data box中包含音视频内容数据。
[0018]movie box包括四个子box,分别为:movie header box (影片头包),定义了整个文件的总体信息,如时长、宽高、仓Il建时间等;两个轨迹包,一个aud1 track box(音频轨迹包),一个video track box (视频轨迹包),两个轨迹包中包含了整个视频文件解码所需的音视频帧的偏移量和长度信息;user data box (用户数据包),用于存储一些用户数据。
[0019]本申请实施例中,文件头信息指的是movie box中的数据,音视频内容数据指的是media data box中的数据,包括音频内容数据和视频内容数据。
[0020]实施例一
请参考图1,本例中的MP4视频点播的数据流传输方法,包括步骤:
S1:客户端根据视频播放请求向索引服务器请求下载索引数据。具体包括步骤:
Sll:客户端收到视频播放请求。客户端,是指与服务器相对应,为用户提供本地服务的程序。一般安装在普通的客户机上,本例中,客户端指flash播放器插件。
[0021]S12:客户端根据视频播放请求向索引服务器请求下载索引数据。索引服务器用于根据客户端的下载请求推送索引数据,索引数据存储在索引服务器中,索引数据为视频文件的文件头信息的解析数据,主要包括音视频帧的偏移量、大小(通过解析aud1/videotrack box得到,使用数组来保存)和基本播放信息(通过解析movie header box得到)。
[0022]S2:索引服务器检获被请求下载的索引数据后,向客户端分段推送索引数据。具体包括步骤:S21:索引服务器收到客户端的下载请求后,查询是否存储有该下载请求的索引数据。
[0023]若是,执行步骤S22:索引服务器向客户端分段推送索引数据。再执行步骤S3、S4。
[0024]本例中,客户端向索引服务器请求下载索引数据的起始依据是时间点,单位是秒,即视频播放请求是从该请求所在的时间点开始请求播放,索引服务器根据该时间点,检获索引数据。分段推送索引数据,即将索引数据从请求的时间点开始按时间分段推送。
[0025]例如,客户端向索引服务器请求时间点为Os的索引数据。索引服务器检获时间点为Os索引数据,如音频帧偏移量数组,包含了 100000个值,如{ 10,1000,2000,3000...},就是说第一帧音频数据在视频文件的10个字节的位置,第二帧音频数据在视频文件的第1000个字节位置;如音频帧大小数组,比如{600,700,800,90(l...};综合起来就是第一帧音频数据是在视频文件第10个字节开始后面的600个字节大小的数据。本例中,客户端向索引服务器请求时间点为Os的索引数据时,索引服务器计算出该时间点的索引数据的开始位置以及从该时间点之后需要多少索引数据可以从该时间点开始持续播放一个时间段,如一个时间段设为30s时,则大概有20K的索引数据,索引服务器则将该时间点之后的20K索引数据推送给客户端,再间隔推送该时间点之后剩余的索引数据。索引服务器根据视频播放请求推送第一段索引数据时,该第一段索引数据中还包括基本播放信息。
[0026]S3:客户端根据分段获取的索引数据分段向视频服务器请求下载视频文件的音视频内容数据。
[0027]S4:视频服务器分段向客户端推送被请求下载的音视频内容数据。
[0028]若否,执行步骤S2,:客户端直接从视频服务器请求下载视频文件,获取视频文件中的文件头信息,解析文件头信息生成索引数据,将索引数据上传至索引服务器保存。
[0029]本例中,客户端获取文件头信息的过程,具体包括:客户端采用分块下载的方式向视频服务器请求下载视频文件,根据下载的分块数据判断该分块数据中是否包含文件头信息;若是,则从该分块数据中解析出文件头信息的长度,获取完整的文件头信息;若否,则包含音视频内容数据的媒体数据包在文件头信息之前(这是因为不同的网站可能有不同的编码规则,视频文件中各个box的封装顺序也不尽相同),解析媒体数据包的长度,根据媒体数据包的长度计算文件头信息的开始位置,向该开始位置请求获取文件头信息。
[0030]一个视频地址中的视频文件是被首次请求播放时,需要获取视频文件中的文件头信息,并进行解析。如前所述,客户端采用分块下载的方式向视频服务器请求下载视频文件,下载完第一个分块数据时,需要判断文件头信息是否被包含在该分块数据中。MP4视频文件格式一般只包含 4 个 box:file type box、movie box、free space box 和 media databox,其中,file type box大小固定在100个字节以内,一般都是32个字节,free spacebox 一般是空的,O个字节,或者最多几百个字节。因此,本例中,分块请求下载视频文件时,为便于判断文件头信息并减少判断次数,一个分块数据的大小设置的比file type box和free space box的总大小要大,因此第一个分块数据则会包含部分movie box或者mediadata box的开始部分数据,通过这部分数据,则可以判断出当前分块数据中包含的是moviebox中的数据还是media data box中的数据,如果当前分块数据中包含的是media databox 中的数据,则 movie box 在 media data box 之后。
[0031]客户端获取到完整的文件头信息后,开始解析文件头信息。本例中,采用for循环通过逐步匹配的方式来对文件头信息进行解析,得到编码FLV格式所需的相关信息,即索引数据,主要包括视频的时长、宽高(通过解析movie header box得到)、关键帧和所有音视频中贞信息(通过解析aud1/video
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1