基于关键帧的视频流索引播放方法 【技术领域】
本发明涉及一种基于关键帧的视频流索引播放方法,尤指一种在视频播放器中加入一个预览播放窗口,实现根据预览播放窗口的内容选择主播放的内容的方法。背景技术
近年来随着各种宽带网的建设,基于视频的网上应用例如视频会议、视频点播和远程教育等迅速发展。基于视频的应用同以前的Web应用相比,一个重要的不同是视频应用数据量大,对网络的要求高,而且检索和流览比文本内容困难。因此,寻找一种通用的符合一定标准规范的视频内容预览方法,通过这种方法用户就可以在很短的时间内或者利用较少地网络资源对视频内容有一个预览,来决定是否对其感兴趣就变得越来越重要。
目前存在的预览方法,一般是在媒体播放器中提供快进方式,即采用固定的大于正常播放速度的帧率播放视频,这样虽然也可以达到对视频内容的预览,但不能实现对某些特定帧的播放,例如基于镜头分割、场景分割或内容分析得到的关键帧,它们之间的时间间隔一般并不固定,采用固定时间间隔的播放方式显然无法播放这些关键帧。发明内容
本发明的目的在于提供一种基于关键帧的视频流索引播放方法,在视频播放器中加入一个预览播放窗口,视频文件中针对需要索引浏览的视频轨道,建立一个新的索引预览轨道,视频播放器可以根据索引预览轨道中记录索引关键帧的时间戳信息计算出此索引帧所对应的正常播放时间,从而实现根据预览播放窗口的内容选择主播放的内容。
为实现上述目的,基于关键帧的视频流索引播放方法包括步骤:
在视频播放器中加入预览播放窗口;
在视频文件中的每个视频流中建立一个索引轨道;
视频播放器根据预览播放窗口的内容选择主播放的内容。附图说明
以下结合附图及实施例对本发明作进一步的详细说明:
图1为本发明的流程示意图。
图2为本发明的播放器界面示意图。
图3为本发明视频文件索引预览轨道生成方法流程示意图。
图4为本发明的视频播放器根据预览播放窗口的索引预览内容选择主播放窗口的内容的方法流程示意图。具体实施方式
如图1所示,视频关键帧提取计算机提取视频关键帧,然后,将提取的视频关键帧送入视频文件制作计算机,视频发布系统将视频文件和提取的视频关键帧通过互联网发送给客户端播放器。
如图2所示,在视频播放器中加入一个预览播放窗口,视频文件中针对需要索引浏览的视频轨道,建立一个新的索引预览轨道,视频播放器可以根据索引预览轨道中记录索引关键帧的时间戳信息计算出此索引帧所对应的正常播放时间,从而实现根据预览播放窗口的内容选择主播放的内容的方法。
本发明的视频播放器播放方式,视频播放器包括主播放窗口和一个预览播放窗口,主播放窗口中进行正常的视频播放;预览窗口中依次按固定帧率播放多幅索引关键帧。
如图3所示,本发明的视频文件索引预览轨道生成方法,在视频文件中针对需要索引浏览的视频轨道,建立一个新的索引预览轨道。它的建立方法为在新的索引预览轨道中记录索引关键帧的时间戳信息。
上述的索引预览轨道生成方法包括如下步骤:
1.用关键帧选择算法从视频流中选出关键帧,这一步既可以在生成过程中在压缩域同步进行,也可以预先在原始视频流中对关键帧进行标注;
2.生成trak.meda.minf.stbl.stsd对象,在其中设定预览索引轨道的timescale(时标)为视频流的正常索引轨道中的timescale;
3.生成预览索引轨道中的timesstamp(时间戳)信息时,相邻帧之间时间戳的差值应该为常数Idifference。设视频流的正常播放帧率为NframeRate,希望的预览索引流的播放帧率为IframeRate,在制作节目时确定,正常播放的视频流相邻帧之间的时间戳差为Ndifference,则预览索引轨道流的相邻时间戳差Idifference由下式确定:
Idifference=Ndifference*Iframerate/NframeRate
4.在生成预览索引轨道的样本数据时,记录下此样本数据对应的在视频流正常播放时的时间戳信息,例如,如果正在生成预览索引轨道的第5帧,它所对应的时间戳信息为(5-1)*Idifference,这一帧对应于视频流正常播放时的第100帧,它的时间戳信息为(100-1)*Ndifference,我们可以在索引轨道样本数据RTP成包信息中记录值AddDifference,它由下式得到:
AddDifference=(5-1)*Idifference-(100-1)*Ndifference;
5.设置索引轨道样本数据头信息‘X’位为1。
6.在实际生成并进行发送时,根据头信息中的‘X’=1而采用扩展头,在扩展头中存放AddDifference。格式如下:
0 10 20 30
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
profile | length
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| AddDifference |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
其中设置profile=999,length=1。
如图4所示:本发明的视频播放器根据预览播放窗口的索引预览内容选择主播放窗口的内容的方法,视频播放器可以根据索引预览轨道中记录索引关键帧的时间戳信息计算出此索引帧所对应的正常播放时间,从而实现根据预览播放窗口的内容选择主播放的内容。
上述的根据预览播放窗口的索引预览内容选择主播放窗口的内容的方法包括如下步骤:
1.在有预览索引信息的情况下,播放界面做调整,增加预览播放窗口;
2.在有预览索引信息的情况下,进行各个媒体流同步时,应该排除预览索引流;
3.对预览索引流,需要记录下包头中的扩展信息;
4.当用户点击某一索引帧时,可以根据扩展头中记录的信息计算出此索引帧所对应的正常播放时间,计算方法如下:
假设条件和上面预览索引轨道生成中的例子相同,即用户点击了正在播放的预览视频流的第5帧,而此帧对应于正常视频流中的第100帧,此时对应的正常播放时间为NormalTime,则:
NormalTime=(100-1)*Ndifference=AddDifference+(5-1)*Idifference;
其中AddDiffernce为包扩展头中的数据,(5-1)*Idifference对应于包头中timestamp值;
5.播放器应该能够根据前一步得到的NormalTime通过上行请求从新的播放时间开始播放。