一种视频选段播放的方法以及系统与流程

文档序号:11657806阅读:445来源:国知局
一种视频选段播放的方法以及系统与流程
本发明涉及一种视频选段播放的方法以及系统。
背景技术
:近些年教育的现代化,电子化,伴随着国家在教育的加大投入,教育目前呈现其乐融融的景象。在实际教学过程中,视频教学已经成为一种最为普遍的教学方法之一,然而在教学过程中,老师往往需要抽取一个完整视频段其中的一部分,而不是整体,或者是抽取完整视频中的某几段进行讲解。目前针对这个问题的解决方案基本都是基于视频编解码的方式,其难度系数高,操作复杂,不易实现。技术实现要素:本发明要解决的技术问题,在于提供一种视频选段播放的方法以及系统,实现方式简单,操作方便。本发明之一是这样实现的:一种视频选段播放的方法,包括如下步骤:步骤1、创建播放器控件,将视频文件地址赋值给播放器控件属性;步骤2、设定播放数据,所述播放数据包括起始点和结束点,并设置每组播放数据的循环次数;步骤3、创建一定时器,获取当前播放位置以及播放次数,若当前播放位置大于或者等于结束点,且播放次数等于循环次数,则暂停播放;若当前播放位置大于或者等于结束点,且播放次数小于循环次数,则根据播放数据,重新播放该段视频;若当前播放位置小于结束点,则根据播放视频。进一步地,所述步骤2中,播放数据包括至少一起始点和结束点;播放时,根据起始点的前后顺序,依次播放每段视频。进一步地,还包括步骤4、将播放数据进行保存。本发明之二是这样实现的:一种视频选段播放的系统,包括如下模块:创建模块,创建播放器控件,将视频文件地址赋值给播放器控件属性;设置模块,设定播放数据,所述播放数据包括起始点和结束点,并设置每组播放数据的循环次数;播放模块,创建一定时器,获取当前播放位置以及播放次数,若当前播放位置大于或者等于结束点,且播放次数等于循环次数,则暂停播放;若当前播放位置大于或者等于结束点,且播放次数小于循环次数,则根据播放数据,重新播放该段视频;若当前播放位置小于结束点,则根据播放视频。进一步地,所述设置模块中,播放数据包括至少一起始点和结束点;播放时,根据起始点的前后顺序,依次播放每段视频。进一步地,还包括保存模块,将播放数据进行保存。本发明具有如下优点:本发明一种视频选段播放的方法以及系统,不破坏视频文件本身的数据,也不是从视频编解码方式出发,达到视频选段播放;其实现简单,操作友好;并且本发明方法以及系统不用去专门研发一个播放器,编解码,也不用管视频的具体格式,实现过程中也不会破坏视频本身的数据内容;非常简洁,实用。附图说明下面参照附图结合实施例对本发明作进一步的说明。图1为本发明方法执行流程图。图2为本发明系统的原理框图。具体实施方式如图1所示,本发明视频选段播放的方法,包括如下步骤:步骤1、创建播放器控件,将视频文件地址赋值给播放器控件属性;步骤2、设定播放数据,所述播放数据包括起始点和结束点,并设置每组播放数据的循环次数,播放数据包括至少一起始点和结束点;播放时,根据起始点的前后顺序,依次播放每段视频;步骤3、创建一定时器,获取当前播放位置以及播放次数,若当前播放位置大于或者等于结束点,且播放次数等于循环次数,则暂停播放;若当前播放位置大于或者等于结束点,且播放次数小于循环次数,则根据播放数据,重新播放该段视频;若当前播放位置小于结束点,则根据播放视频。步骤4、将播放数据进行保存。本发明视频选段播放的系统,包括如下模块:创建模块,创建播放器控件,将视频文件地址赋值给播放器控件属性;设置模块,设定播放数据,所述播放数据包括起始点和结束点,并设置每组播放数据的循环次数,播放数据包括至少一起始点和结束点;播放时,根据起始点的前后顺序,依次播放每段视频;播放模块,创建一定时器,获取当前播放位置以及播放次数,若当前播放位置大于或者等于结束点,且播放次数等于循环次数,则暂停播放;若当前播放位置大于或者等于结束点,且播放次数小于循环次数,则根据播放数据,重新播放该段视频;若当前播放位置小于结束点,则根据播放视频。保存模块,将播放数据进行保存。本实施例中采用delphi作为开发工具。一种基于软件实现的视频选段播放的方法,包括如下步骤:为了方便说明,我们这边假设有个播放时长为一小时(3600秒)的视频,需要被选段编辑并播放。步骤1:视频选段播放的功能描述;详细说明如下:步骤11:对任意一段完整播放的视频,在不修改其视频文件本身结构前提下,可以随意定义要播放的视频段;解释为:视频本身的编码结构不修改,也不破坏,不会因为经过本发明提供的方法处理后,视频就被“特殊处理”;使得视频文件用其他播放器播放不了。该点也是本发明的主要特色之一。步骤12:可以同时定义多个选段的视频,多个选段视频中允许存在播放时间上的交集;解释为:例子中的视频可以被选段为如下三段:第一段:第10秒-第100秒第二段:第1200秒-第2500秒第三段:第50秒-第2000秒很明显上面列出的,第一段选段视频与第三段选段视频有存在时间上的交集。在本发明中,如果三段视频连续播放下来,三段视频依次播放,互不干扰。步骤13:对选定好的任意一段视频可以再进行修改;举例说明如下:结合步骤12列出的第二段播放时间(第1200秒-第2500秒)一经确认后,仍然可以再修改其开始播放的时间与结束播放的时间。步骤14:对制作好的视频选段相关数据可以进行保存及恢复打开重现;举例说明如下:结合步骤12列出的三段选段视频,可以将各视频段的播放开始时间与播放结束时间、各个视频段的播放顺序、循环播放次数等信息保存起来,比如保存成一个记录文件;下次再用软件打开这个记录文件,那么各个视频段的播放时间段、视频段间的播放顺序、循环播放次数等信息仍然完好存在,使用者可以直接使用,而不用再重新制作。步骤2:视频选段播放的功能实现建模;详细说明如下:步骤21:建立模型,定义模型必需的参数;步骤22:根据模型,定义业务逻辑关系及实现方法;每个选段播放都是步骤21定义的数据结构的实例。例如,3600秒的视频被选段成三段如下:snamefstartposfendposisortbloopiplaycount第一段第一段视频101001false1第二段第二段视频120025002true0第三段第三段视频5020003false3第一段,开始时间为第10秒,结束时间为第100秒,播放顺序为1,不循环播放,播放次数1次;第二段,开始时间为第1200秒,结束时间为第2500秒,播放顺序为2,循环播放,播放次数为0次;特别说明:由于是循环播放,因此这边的播放次数就没有实际意义,如果没用户干预情况下,这段视频会一直循环播放下去;第三段,开始时间为第50秒,结束时间为第2000秒,播放顺序为3,不循环播放,播放次数为3次;即:这段视频会连续播放三次;由播放顺序(isort)从小到大排列,第一段播放完,播放第二段,最后播放第三段;步骤3:视频选段播放的数据保存及恢复方案;步骤31:定义并说明模型中的哪些参数需要保存,如何保存;显然步骤2中列出的参数都需要保存,而没列的参数可根据实际情况选择是否需要保存;保存的方式可以将相关参数写成配置文件,可以是文本文件,也可以是二进制文件;而至于文件的数据结构也可以根据实际情况来定,可以是xml结构、json结构,甚至是自定义的结构;步骤32:定义并说明模型中的那些参数允许恢复打开重现;显然不止2中列出的参数都需要支持恢复打开重现。即对步骤31定义的文件保存数据结构,都要存在一个读取配置文件的反过程。步骤31、步骤32涉及到的xml数据结构、json数据结构、自定义数据结构,根据所选择的开发工具及开发语言,一般都有相应的解析函数库可以调用,本发明提出的数据结构相对简单,容易实现。步骤4:视频选段播放的软件实现说明;这边选择了用delphi作为开发工具,视频播放器用twindowsmediaplayer。在实现过程中会利用播放器本身的播放、暂停、快进、后退等接口功能函数。此类为大多数编程语言及视频播放器会提供的调用接口,在形势上会有些差别,但其本质内容是一样的。步骤5:视频选段播放的现实使用意义;本发明提供的方法,完全独立于视频文件本身,不依赖于任何的视频编解码,不产生任何新的视频文件,只需要保存必要的一些模型参数即可,操作简便,定位准确,实现简单。现今电子白板软件在教育界得到普及应用,可以将本发明提供的思路结合到其视频播放功能上,比如结合之后,就可以在视频的播放画面上批注,图画等,并将这些批注图画保存下来,使得老师的上课更改生动。以下是用delphi作为编程工具的具体实现步骤:第一步,创建播放器控件twindowsmediaplayer实例fomediaplayer,并将视频文件的路径地址赋值给播放器控件属性:fomediaplayer.url:=fsvideofilename;fsvideofilename:为视频文件的路径。第二步,利用修改播放器的方法属性:fomediaplayer.controls.currentposition可以修改播放的位置,从而达到定义选段播放的开始跟结束位置点。并将这些位置信息保存起来。即定义模型的参数:fstartpos:real;//播放开始位置(播放开始时间)fendpos:real;//播放结束位置(播放结束时间)第三步,在第一步及第二步的基础上设置选段的播放次数及是否循环播放。第四步,将第一步到第三步编辑好的一个个选段形成有次序意义的列表。第五步,创建一个定时器,用户在误差允许的范围内实时判断播放位置,并记性相应的空间。//定时器focatchpostimer:=ttimer.create(focatchvideopnl);focatchpostimer.interval:=100;focatchpostimer.ontimer:=focatchpostimertimer;如上面列出的是创建一个定时器,定时器每隔100毫秒触发一次事件判断。定时器触发的事件在函数focatchpostimertimer中执行。这里面的100毫秒第六步,定义定时器触发事件的执行内容。每隔100毫秒执行判断一次。根据当前视频的播放位置:fomediaplayer.controls.currentposition判断当前播放位置跟当前播放的选段时间开始及结束位置,如果大于或者等于结束位置:fendpos:如果是循环播放或者播放次数不止一次,那么直接设置当前播放的位置回当前选段位置的开始位置:fomediaplayer.controls.currentposition:=fstartpos;然后开始继续播放:fomediaplayer.controls.play;(2)如果本选段播放不是循环播放或者已经达到播放次数;那么情形一:如果播放列表为顺序播放,且有下一个选段,那么设置播放器的播放位置为下一个选段的开始位置:fomediaplayer.controls.currentposition:=fstartposnext;然后开始播放:fomediaplayer.controls.play;情形二:如果播放列表为直播当前选段,或者没有先一个选段,那么久暂停播放器播放:fomediaplayer.controls.pause;第七步,跟一般的视音频播放器一样,可以随时点击想播放的“段子”。这边只要将要播放器的开始位置设置为想要播放的“选段位置”:fomediaplayer.controls.currentposition:=fstartposselect;同时,将结束位置设置为想要播放的“选段”结束位置:fendposselect;其他跟第六步一样。第八步,对选段视频的保存,只保存相应的选段信息,例如,保存成二进制文件,主要的核心处理如下:对选段视频的打开,刚好跟上面相反处理,主要的核心处理如下:stream.readbuffer(len,sizeof(len));setlength(sname,len);stream.readbuffer(sname[1],len);stream.readbuffer(fstartpos,sizeof(fstartpos));stream.readbuffer(fendpos,sizeof(fendpos));stream.readbuffer(isort,sizeof(isort));stream.readbuffer(bloop,sizeof(bloop));虽然以上描述了本发明的具体实施方式,但是熟悉本
技术领域
的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1