一种进度条的实现方法及装置与流程

文档序号:14726682发布日期:2018-06-19 10:47阅读:236来源:国知局

本发明涉及多媒体视频技术领域,尤其涉及一种进度条的实现方法及装置。



背景技术:

进度条即计算机在处理文件时,实时的,以图片形式显示处理文件的速度,完成度,剩余未完成文件的大小,和可能需要处理时间。目前在各种计算机软件中,经常采用进度条表示某个任务的执行过程,如视频播放相关应用软件。

随着多媒体视频技术的发展,目前的视频播放器或在开发视频播放器时会使用播放进度条。现有的播放进度条以长方形条状显示,包括两部分:第一部分是背景条,是指视频还没有播放时显示的那根长条;第二部分是状态条,是指当前播放的进度(播放的时长)。随着播放的进度变化,计算播放进度和播放总时长的进度比值,状态条的显示长度是背景条长度与进度比值的乘积。

在实现本发明过程中,发明人发现现有技术中的播放进度条技术至少存在以下缺陷:现有的播放进度条,仅能够显示视频文件的播放进度,呈现方式较为单一,无法满足用户需求。



技术实现要素:

鉴于上述问题,本发明实施例提出了一种进度条的实现方法及装置,能够以进度条的呈现形式丰富形象地实现视频文件的下载状态的显示,使得用户能够很好地感知当前视频文件的下载状态,提升用户在视频观看过程中的体验。

本发明的一个方面,提供了一种进度条的实现方法,所述方法包括:

创建视频文件的进度条;

监测当前播放的视频文件的数据块下载状态;

获取每一下载数据块在所述视频文件中的起始地址和结束地址;

根据各个下载数据块在所述视频文件中的起始地址和结束地址以及所述视频文件的最大数据量,在所述视频文件的进度条上显示该视频文件的下载状态。

可选地,所述根据各个下载数据块在所述视频文件中的起始地址和结束地址以及所述视频文件的最大数据量,在所述视频文件的进度条控件上显示该视频文件的下载状态,包括:

采用双缓存技术创建与所述进度条对应的位图对象;

根据预设的背景图片对所述位图对象进行背景条渲染;

根据各个下载数据块在所述视频文件中的起始地址和结束地址确定各下载数据块在所述进度条中对应的下载状态像素区域;

背景条渲染完成后,根据各下载数据块在所述进度条中对应的下载状态像素区域,对所述位图对象进行下载状态条渲染;

将渲染后的位图对象绘制到所述进度条。

可选地,在所述对所述位图对象进行下载状态条渲染之后,所述方法还包括:

获取所述视频文件的当前播放进度,根据所述视频文件的当前播放进度以及所述视频文件的最大播放时长,对所述位图对象进行播放状态条渲染。

可选地,所述获取每一下载数据块在所述视频文件中的起始地址和结束地址之后,所述方法还包括:

将每一下载数据块在所述视频文件中的起始地址和结束地址作为该下载数据块对应的下载数据块结构体的属性值;

将各个下载数据块对应的下载数据块结构体进行组合,生成所述视频文件的下载数据块结构体列表。

可选地,在所述生成所述视频文件的下载数据块结构体列表之后,所述方法还包括:

对所述下载数据块结构体列表中的下载数据块结构体进行排序;

遍历所述下载数据块结构体列表,对所述下载数据块结构体列表中的下载数据块结构体对应的下载数据块进行去重处理和/或合并处理,并更新所述下载数据块结构体列表。

本发明的又一个方面,提供了一种进度条的实现装置,所述装置包括:

生成模块,用于创建视频文件的进度条;

监测模块,用于监测当前播放的视频文件的数据块下载状态;

获取模块,用于获取每一下载数据块在所述视频文件中的起始地址和结束地址;

显示模块,用于根据各个下载数据块在所述视频文件中的起始地址和结束地址以及所述视频文件的最大数据量,在所述视频文件的进度条上显示该视频文件的下载状态。

可选地,所述显示模块,包括:

创建单元,用于采用双缓存技术创建与所述进度条对应的位图对象;

渲染单元,用于根据预设的背景图片对所述位图对象进行背景条渲染;

确定单元,用于根据各个下载数据块在所述视频文件中的起始地址和结束地址确定各下载数据块在所述进度条中对应的下载状态像素区域;

所述渲染单元,还用于背景条渲染完成后,根据各下载数据块在所述进度条中对应的下载状态像素区域,对所述位图对象进行下载状态条渲染;

显示单元,用于将渲染后的位图对象绘制到所述进度条。

可选地,所述获取模块,还用于获取所述视频文件的当前播放进度;

所述渲染单元,还用于在对所述位图对象进行下载状态条渲染之后,根据所述获取模块获取的视频文件的当前播放进度以及所述视频文件的最大播放时长,对所述位图对象进行播放状态条渲染。

可选地,所述装置还包括:

配置模块,用于在所述获取每一下载数据块在所述视频文件中的起始地址和结束地址之后,将每一下载数据块在所述视频文件中的起始地址和结束地址配置为该下载数据块对应的下载数据块结构体的属性值;

组合模块,用于将各个下载数据块对应的下载数据块结构体进行组合,生成所述视频文件的下载数据块结构体列表。

可选地,所述装置还包括:

优化模块,用于在所述生成所述视频文件的下载数据块结构体列表之后,对所述下载数据块结构体列表中的下载数据块结构体进行排序,遍历所述下载数据块结构体列表,对所述下载数据块结构体列表中的下载数据块结构体对应的下载数据块进行去重处理和/或合并处理,并更新所述下载数据块结构体列表。

本发明实施例提供的进度条的实现方法及装置,通过对当前播放的视频文件的数据块下载状态进行实时监测,并在创建的视频文件的进度条上显示该视频文件的下载状态,实现了一种能够显示视频文件的下载状态的进度条。本发明实施例提出的进度条的实现方法及装置,能够以进度条的呈现形式丰富形象地实现视频文件的下载状态的显示,使得用户能够很好地感知当前视频文件的下载状态,提升用户在视频观看过程中的体验。而且,还能够协助研发人员在开发视频播放相关的应用程序时更好的完成视频播放功能测试。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1示出了本发明实施例的一种进度条的实现方法的流程图;

图2示出了本发明实施例的进度条的实现方法中步骤S14的细分流程图;

图3示出了本发明实施例的一种进度条的实现装置的结构示意图;

图4示出了本发明实施例的进度条的实现装置中显示模块的内部结构示意图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非被特定定义,否则不会用理想化或过于正式的含义来解释。

针对现有技术中现有的播放进度条,呈现方式较为单一,仅能够显示视频文件的播放进度,无法提供给用户关于当前视频文件的下载进度的信息,使得用户无法很好地感知当前视频文件的下载状态的技术问题,提出本发明以提供一种能够以进度条的呈现形式丰富形象地实现视频文件的下载状态的显示,使得用户无法很好地感知当前视频文件的下载状态的进度条的实现方法,提升用户在视频观看过程中使用体验。

图1示意性示出了本发明实施例的一种进度条的实现方法的流程图。参照图1,本发明实施例的进度条的实现方法具体包括以下步骤:

S11、创建视频文件的进度条。

S12、监测当前播放的视频文件的数据块下载状态。

S13、获取每一下载数据块在所述视频文件中的起始地址和结束地址。

本发明实施例,通过对当前播放的视频文件的数据块下载状态进行实时监测,并获取每一下载数据块在所述视频文件中的起始地址和结束地址,以确定下载数据块在视频文件中的位置,供后续对视频文件的下载状态进行显示。

S14、根据各个下载数据块在所述视频文件中的起始地址和结束地址以及所述视频文件的最大数据量,在所述视频文件的进度条上显示该视频文件的下载状态。

在确定出下载数据块在视频文件中的位置之后,本发明实施例通过将视频文件的数据量对应与进度条的宽度值进行设置,并根据下载数据块在视频文件中的位置确定该下载数据块对应的下载状态进度在进度条上的位置。可理解的,如果下载数据是连续的,上一块的结束地址是下一块的开始地址以此类推,那么下载进度条与播放进度条一样是连续的长条,否则就是不连续的。

本发明实施例中,通过在MFC中创建一个CWnd控件,以用来作为绘制进度条的容器(或称为画板),然后通过为CWnd控件设置用于消息回调的回调函数,如OnPain()窗口绘制消息,OnMouseMove()鼠标移动消息,OnLButtonDown()鼠标左键按下消息,OnLButtonUp()鼠标左键抬起,OnMouseLeave()鼠标移出消息等,并通过CWnd控件的消息回调来绘制一个视频进度条,实现视频文件的进度条创建。

回调函数是通过BOOST库提供的函数绑定方法定义函数回调,然后用库提供的方法将外部的函数设置到内部中定义的回调函数值中,最后在控件内部调用回调,函数实现其实是在外部定义的。例如SlideEventCallbackOnLButtonUp回调函数,这个回调是外部来实现的,当进度条滑块位置变化时调用这个回调并传递位置参数,让控件的外部来实现业务逻辑。

本发明实施例提供的进度条的实现方法,通过对当前播放的视频文件的数据块下载状态进行实时监测,并在创建的视频文件的进度条上显示该视频文件的下载状态,实现了一种能够显示视频文件的下载状态的进度条。本发明实施例提出的进度条的实现方法及装置,能够以进度条的呈现形式丰富形象地实现视频文件的下载状态的显示,使得用户能够很好地感知当前视频文件的下载状态,提升用户在视频观看过程中的体验。

为了进一步体现发明的优越性,如下进一步揭示本发明进度条的实现方法中步骤S14的细分步骤,来体现依据本步骤实现的另一实施例。参照图2,本步骤的细分步骤包括:

S141、采用双缓存技术创建与所述进度条对应的位图对象。

操作流程具体如下,创建GDI双缓冲,首先通过CreateCompatibleDC方法创建一个临时DC,然后通过CreateCompatibleBitmap方法创建一个HBITMAP,最后通过SelectObject方法将HBITMAP选到临时DC中,这样就完成双缓冲创建。

S142、根据预设的背景图片对所述位图对象进行背景条渲染。

CWnd控件配置有一些属性,包括下载数据块的结构体列表属性、下载视频的最大值属性,包括最大数据量和最大播放时长;背景图片,状态条图片等。本发明实施例可根据CWnd控件配置的背景图片属性,实现对所述位图对象背景条的渲染。

S143、根据各个下载数据块在所述视频文件中的起始地址和结束地址确定各下载数据块在所述进度条中对应的下载状态像素区域。

S144、背景条渲染完成后,根据各下载数据块在所述进度条中对应的下载状态像素区域,对所述位图对象进行下载状态条渲染。具体的,可根据CWnd控件配置的状态条图片属性,实现对所述位图对象下载状态条的渲染。

S145、将渲染后的位图对象绘制到所述进度条。

现有技术中,窗体在刷新时,总要有一个擦除原来图象的过程OnEraseBkgnd,它利用背景色填充窗体绘图区,然后在调用新的绘图代码进行重绘,这样一擦一写造成了图象颜色的反差。当WM_PAINT的响应很频繁的时候,这种反差也就越发明显。于是用户就看到了闪烁现象。避免背景色的填充是最直接的办法。但是那样的话,窗体上会变的一团糟。因为每次绘制图象的时候都没有将原来的图象清除,造成了图象的残留,于是窗体重绘时,画面往往会变的乱七八糟。所以单纯的禁止背景重绘是不够的。因此还要进行重新绘图,但要求速度很快,于是想到了使用BitBlt函数。它可以支持图形块的复制,速度很快。通过先在内存中作图,然后用此函数将做好的图复制到前台,同时禁止背景刷新,这样就消除了闪烁,即实现双缓冲绘图技术。

OnPain消息回调:分为三部分绘制,背景条绘制;播放状态条绘制;下载状态条绘制;然后使用GDI+双缓冲技术定义一个Bitmap,按照先绘制背景条,在绘制下载进度条最后绘制播放条的顺序渲染到双缓冲(Bitmap)中,最后把双缓冲绘制到CWnd中通过GDI+的DrawImage方法。

DrawDownBitmap()方法:根据输入的下载数据块结构体绘制一次,用来表明一个数据块被下载,据此如果下载了许多个数据块该方法被调用多次,如果下载数据块是连续的则下载进度条是连续的;工作流程,首先计算下载块开始地址和视频文件总大小比值乘以控件的宽度(通过CWnd::GetClientRect方法)设为A点像素值,即下载数据块对应的下载状态片段在进度条中的开始位置,公式如下:

A点像素值=rc.Width()*nValue.m_begin/(m_maxD-m_minD);

计算结束地址和视频文件总大小的比值乘以控件的宽度(通过CWnd::GetClientRect方法)设为B点像素值,即下载数据块对应的下载状态片段在进度条中的结束位置,公式如下:

B点像素值=rc.Width()*nValue.m_end/(m_maxD-m_minD);

其中,rc.Width()为控件的宽度、nValue.m_begin为下载数据块的开始地址、nValue.m_end为下载数据块的结束地址、m_maxD为视频文件的结束地址m_minD视频文件的开始地址。

最后根据GDI+的FillRectangle方法绘制从A点到B点的像素区域。

此外,本发明实施例还可以通过OnSize()方法实现控件大小改变的回调。一旦控件大小改变就要重新绘制,首先清空下载进度条双缓冲,然后遍历下载数据块结构体列表并调用DrawDownBitmap()方法重新绘制下载进度条。

本发明实施例中,在所述对所述位图对象进行下载状态条渲染之后,所述方法还包括以下步骤:获取所述视频文件的当前播放进度,根据所述视频文件的当前播放进度以及所述视频文件的最大播放时长,对所述位图对象进行播放状态条渲染。

在本实施例中,前景条除了视频文件的下载状态条以外,还包括视频文件的播放进度对应的播放状态条。初始状态背景有一定的长度,播放状态条从0或小于背景长度的某个值开始增加长度,当增长到和背景一样长时,表示播放任务完成,实现对视频文件的下载进度状态、播放进度状态以及播放总时长的显示。本发明实施例中,不仅能够以进度条的呈现形式丰富形象地实现视频文件的下载状态的显示,还能够同时实现视频文件的播放进度状态的显示,使得用户能够同时感知到当前视频文件的下载状态和播放进度状态,进一步提升用户在视频观看过程中的体验。

为了进一步体现发明的优越性,如下进一步揭示本发明进度条的实现方法的另一实施例。本发明实施例中的进度条的实现方法,在步骤S13之后,还包括以下步骤:

将每一下载数据块在所述视频文件中的起始地址和结束地址作为该下载数据块对应的下载数据块结构体的属性值;将各个下载数据块对应的下载数据块结构体进行组合,生成所述视频文件的下载数据块结构体列表。

本发明实施例中,通过定义下载数据块结构体,用来保存每一个下载数据块的开始和结束地址,通常下载的数据块是不连续的,每一个下载数据块需要一个对应的下载数据块结构体来保存下载的数据块在当前视频文件中的开始和结束地址。本发明实施例还使用了列表数据结构,通过将各个下载数据块对应的下载数据块结构体进行组合,生成所述视频文件的下载数据块结构体列表。其中,下载数据块结构体列表属性,用来保存所有的下载数据块的开始和结束地址,后面的下载状态显示就是通过这个列表来渲染的。

进一步地,在所述生成所述视频文件的下载数据块结构体列表之后,所述方法还包括:对所述下载数据块结构体列表中的下载数据块结构体进行排序;遍历所述下载数据块结构体列表,对所述下载数据块结构体列表中的下载数据块结构体对应的下载数据块进行去重处理和/或合并处理,并更新所述下载数据块结构体列表。

随着下载块的不断增加,下载数据块结构体会不断增多,这些结构体保存在一个列表中,如果视频文件很大很大就会造成很多麻烦,比如结构体无限增多,每次DrawDownBitmap()绘制调用无限增多等,因此本发明实施例使用了排序优化以实现数据的去重。这里有三种可能,1、一个数据看被下载两次。2、一个数据块比较大,另一个比较小,小的数据块被包含在打的数据块开始和结束地址中。3、两个相邻的数据块,第一个数据块的结束地址是第二个的开始地址,这样就可以对两个数据块进行合并。本发明实施例通过对下载数据块结构体列表进行从小到大进行排序,然后遍历列表项进行比较发现上面的三种可能中的任何一种,删除重复项重,进而实现本发明进度条实现方法的性能优化,提供后续渲染效率。

本发明实施例提供的进度条的实现与普通的进度条实现的不同之处在与给进度条增加第三层,用来表示下载进度信息,第三层的绘制是通过将所有的下载块的开始和结束的地址保存到结构体中,然后通过遍历结构体根据开始地址和视频总大小的比值,结束地址和视频总大小比值,二者都同时乘以进度条的宽度来计算像素值,然后通过像素值进行绘制。本发明实施例还通过对列表进行排序、比较、去掉重复项等优化操作,使得控件的效率变得更高。

此外,本发明实施例提供的进度条的实现装置,对于频播放相关的应用程序的开发,还能够协助研发人员在开发视频播放相关的应用程序时更好的完成视频播放功能测试。

对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。

图3示意性示出了本发明实施例的一种进度条的实现装置的结构示意图。参照图3,本发明实施例的进度条的实现装置具体包括生成模块301、监测模块302、获取模块303以及显示模块304,其中:所述的生成模块301,用于创建视频文件的进度条;所述的监测模块302,用于监测当前播放的视频文件的数据块下载状态;所述的获取模块303,用于获取每一下载数据块在所述视频文件中的起始地址和结束地址;所述的显示模块304,用于根据各个下载数据块在所述视频文件中的起始地址和结束地址以及所述视频文件的最大数据量,在所述生成模块301创建的视频文件的进度条上显示该视频文件的下载状态。

本发明实施例提供的进度条的实现装置,监测模块302通过对当前播放的视频文件的数据块下载状态进行实时监测,显示模块304在生成模块301创建的视频文件的进度条上显示该视频文件的下载状态,实现了一种能够显示视频文件的下载状态的进度条。本发明实施例提出的进度条的实现方法及装置,能够以进度条的呈现形式丰富形象地实现视频文件的下载状态的显示,使得用户能够很好地感知当前视频文件的下载状态,提升用户在视频观看过程中的体验。

为了进一步体现发明的优越性,如下进一步揭示本发明进度条的实现装置中显示模块304的内部结构图,来体现依据本步骤实现的另一实施例。参照图4,本实施例中的显示模块304,具体包括创建单元3041、渲染单元3042、确定单元3043以及显示单元3044,其中:所述的创建单元3041,用于采用双缓存技术创建与所述进度条对应的位图对象;所述的渲染单元3042,用于根据预设的背景图片对所述位图对象进行背景条渲染;所述的确定单元3043,用于根据各个下载数据块在所述视频文件中的起始地址和结束地址确定各下载数据块在所述进度条中对应的下载状态像素区域;所述的渲染单元3042,还用于背景条渲染完成后,根据各下载数据块在所述进度条中对应的下载状态像素区域,对所述位图对象进行下载状态条渲染;所述的显示单元3044,用于将渲染后的位图对象绘制到所述进度条。

本发明实施例中,所述获取模块303,还用于获取所述视频文件的当前播放进度;

进一步地,所述渲染单元3042,还用于对所述位图对象进行下载状态条渲染之后,根据所述获取模块获取的视频文件的当前播放进度以及所述视频文件的最大播放时长,对所述位图对象进行播放状态条渲染。

在本发明的一个可选实施例中,所述装置还包括附图中未示出的配置模块和组合模块,其中,所述的配置模块,用于在所述获取每一下载数据块在所述视频文件中的起始地址和结束地址之后,将每一下载数据块在所述视频文件中的起始地址和结束地址配置为该下载数据块对应的下载数据块结构体的属性值;所述的组合模块,用于将各个下载数据块对应的下载数据块结构体进行组合,生成所述视频文件的下载数据块结构体列表。

本发明实施例中,所述装置还包括附图中未示出的优化模块,所述的优化模块,用于在所述生成所述视频文件的下载数据块结构体列表之后,对所述下载数据块结构体列表中的下载数据块结构体进行排序,遍历所述下载数据块结构体列表,对所述下载数据块结构体列表中的下载数据块结构体对应的下载数据块进行去重处理和/或合并处理,并更新所述下载数据块结构体列表。

对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本发明实施例提供的进度条的实现方法及装置,通过对当前播放的视频文件的数据块下载状态进行实时监测,并在创建的视频文件的进度条上显示该视频文件的下载状态,实现了一种能够显示视频文件的下载状态的进度条。本发明实施例提出的进度条的实现方法及装置,能够以进度条的呈现形式丰富形象地实现视频文件的下载状态的显示,使得用户能够很好地感知当前视频文件的下载状态,提升用户在视频观看过程中的体验。此外,本发明实施例还能够协助研发人员在开发视频播放相关的应用程序时更好的完成视频播放功能测试。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1