专利名称:一种显示字幕的方法
技术领域:
本发明涉及字幕处理技术,更具体地说,本发明涉及一种显示字幕的方法。
背景技术:
字幕是一种在电视、电影等音视频播放领域广泛运用的技术。字幕的出现,使得观众更容易地理解所播放的音视频内容。在音视频节目播放中,通过文字对节目中的口语内容,或其他任何与节目内容相关的附加信息进行显示。例如,一般的电视剧都会以字幕的方式同步显示电视剧中人物正在说的话,而音乐节目中通常都会以字幕的方式显示歌词。
通常情况下,在发布源的数据流中,通过编解码的方式将预定的字幕数据压缩到视频流中,等到到达最终用户时,对视频流进行播放时就可以同步显示字幕。
随着互联网的出现及p2p技术的发展,已经不仅仅只能在电视机上观看电视信号或在电影院里观看电影。目前,已经可以将电视信号、电影信号、电台广播信号等各种音视频信号转换为实时数据流,然后再通过p2p技术传到个人计算机(PC)上,最后由用户在PC上直接观看电视、电影等实时视频内容或收听电台广播等实时音频内容。
图1所示为现有技术中显示字幕数据的示意图。由图1可见,首先在发送端将字幕数据和视频流进行压缩混合以形成数据流,然后通过互联网等传播媒介将数据流发送到PC,最后由PC对数据流进行解析,并播放视频流和显示字幕数据。
由此可见,现有技术中字幕是被混合在视频流中进行传送的,因此在PC上显示字幕数据时,用户只能被动地观看视频上的字幕,而无法实现和字幕的交互。
通常情况下,PC用户执行交互的愿望会比较强烈,他们已经习惯了通过鼠标、键盘等计算机外设来进行各种交互操作,因此用户在PC上观看或收听节目的同时也可能希望通过鼠标、键盘等计算机外设来达到与字幕交互的目的。比如,当在PC上播放某个节目时,用户也许会对节目中的某位主角非常感兴趣,很想了解这位主角的基本信息,然而现在技术中用户只能被动地观看视频上的字幕,却无法利用字幕来实现用户交互功能,也就无法利用字幕来直接获取关于该主角的相关信息。因此,现有技术的这种字幕显示方法给用户带来了极大的不便。
发明内容
有鉴于此,本发明的主要目的是提出一种显示字幕的方法,以使得用户能够与字幕实现交互。
为达到上述目的,本发明的技术方案是这样实现的一种显示字幕的方法,该方法包括A、在视频显示界面上新增窗口,并将该窗口叠加到所述视频显示界面上;B、在所叠加的窗口中显示字幕。
在步骤B后,该方法进一步包括C、利用计算机外围设备选中所显示的字幕,以触发与字幕的交互操作。
步骤A所述视频为基于实时数据流的视频,步骤A所述在视频显示界面上叠加窗口包括A1、接收来自远端的控制流,所述控制流中包含叠加窗口指令及字幕;A2、根据所述叠加窗口指令,在所述视频显示界面上新增窗口并将该窗口叠加到所述视频显示界面上;步骤B所述显示字幕为在所叠加的窗口中显示控制流中的所述字幕。
在步骤A之前,该方法进一步包括预先确定所述窗口在该视频显示界面上的叠加位置;步骤A所述在视频显示界面上叠加窗口为在所述视频显示界面上的预定叠加位置处,叠加所述窗口。
步骤B所述在所叠加的窗口中显示字幕包括B11、通过图像设备接口(GDI)在所述叠加的窗口中绘制文字;B21、改变所绘制文字在所述窗口中的显示位置,以实现所绘制文字的字幕滚动效果。
所述GDI包括DrawText应用编程接口API、或TextOutAPI。
步骤B所述在所叠加的窗口中显示字幕包括B21、在所述叠加的窗口中创建排版交互引擎控件;B22、利用所述排版交互引擎控件显示字幕。
所述排版交互引擎控件为HtmlView控件。
所述窗口为透明色或加重色。
所述与字幕的交互操作包括以下操作中的任一种或其中多于一种的任意组合打开新的窗口;打开新的浏览器界面;打开新的应用程序;关闭已运行的应用程序;关闭已存在的浏览器界面;关闭已存在的窗口。
从上述技术方案中可以看出,在本发明中,首先,在视频显示界面上新增窗口,并将该窗口叠加到所述视频显示界面上;然后再在所叠加的窗口中显示字幕。由此可见,应用本发明以后,由于不再是通过解析视频流来显示字幕,而是新增窗口并在窗口中显示字幕,所以本发明的字幕与视频数据相独立,用户不再是单纯地被动接收字幕,而是能够与字幕进行交互以触发各种操作。
另外,由于对窗口有非常多的成熟操作命令,所以本发明执行交互起来也非常的方便。
图1为现有技术中显示字幕的示意图。
图2为本发明显示字幕的示范性方法流程图。
图3为根据本发明一示范性实施例的显示字幕的示意图。
图4为根据本发明另一示范性实施例的显示字幕的示意图。
具体实施例方式
为使本发明的目的、技术方案和优点表达得更加清楚明白,下面结合附图及具体实施例对本发明再作进一步详细的说明。
本发明的主要思想是首先,在视频显示界面上新增窗口,并将该窗口叠加到所述视频显示界面上;然后再在所叠加的窗口中显示字幕。因此,本发明通过在窗口中显示字幕,而不是通过解析视频流来显示字幕,所以本发明的字幕与视频数据相独立,用户不再是单纯地被动接收字幕,而是能够与字幕进行交互以触发各种操作。而且,由于对窗口有非常多的成熟操作命令,所以本发明执行交互起来也非常的方便。
图2为本发明显示字幕的示范性方法流程图。如图2所示,该方法包括步骤201在视频显示界面上新增窗口,并将该窗口叠加到所述视频显示界面上;步骤202在所叠加的窗口中显示字幕。
在这里,优选预先确定所述窗口在该视频显示界面上的叠加位置,然后再在视频显示界面上的该预定叠加位置处叠加所述窗口。更加优选地,该预定叠加位置可以位于视频显示界面的底部、顶部,或右下角等处。
一般地,窗口在视频显示界面上的位置由四个值确定左边(Left)、上边(Top)、宽度(Width)以及高度(Height)。同时,可以使用算术表达式来表示窗口的位置,规定表达式中允许用scr_width代表视频宽度、scr_height代表视频高度,这样的话,就可以实现在视频显示界面上的任意位置处显示字幕。
比如假如希望在距离视频右边界限200像素、显示宽度为150,距离视频上边界限10像素、高度为120处显示一字幕,可以通过设置左scr_width-200上10宽150高120来实现。
在这里,所述视频既可以是基于实时数据流的视频,也可以是由本地存储的普通视频文件。
当视频为基于实时数据流的视频时,视频显示界面的客户端接收来自远端的控制流,所述控制流中包含叠加窗口指令及字幕;然后客户端再根据所述叠加窗口指令,在所述视频显示界面上新增窗口,并将该窗口叠加到视频显示界面上,从而利用该叠加的窗口来显示包含于控制流中的字幕。其中,叠加窗口指令可以具体包括CreateWindow命令及指示窗口叠加位置的信息。CreateWindow命令是打开新窗口的标准命令,指示窗口叠加位置的信息用于指示窗口在视频显示界面上的叠加位置。
该包含叠加窗口指令及字幕的控制流既可以和实时视频数据流同时传送到客户端,也可以不同时传送到客户端。
当字幕内容与视频内容直接相关时,比如该字幕为视频内容的翻译时,在播放时需要实现视频内容与字幕的同步,此时可以设置定时器以控制视频播放时间和字幕显示时间的同步。
当字幕内容与视频内容不直接相关时,比如当字幕中播放广告信息、主角介绍信息、或者即时重大新闻信息等时候,字幕可以与视频内容不同步。
当视频为存储在本地的视频文件时,可以在视频播放端本地创建叠加窗口指令,并将叠加窗口指令和视频文件相关联。叠加窗口指令同样优选包括CreateWindow命令及指示窗口叠加位置的信息,其中CreateWindow命令是打开新窗口的标准命令,指示窗口叠加位置的信息用于指示窗口在视频显示界面上的叠加位置。当播放该视频文件时,同时执行相关联的叠加窗口指令,此时弹出新的窗口,并且该窗口叠加到视频显示界面上,以能够在该窗口中显示字幕。此时,该字幕既可以是由服务器从远端传送过来的字幕,也可以是本地所保存的字幕。
无论是基于实时数据流的视频,还是本地的视频文件,由于在叠加的窗口中显示字幕,而不是现有技术中被动地从数据流中解析出字幕数据,因此本发明能够利用窗口,实现基于字幕的各种交互操作。比如,可以在用户点击字幕后打开新的窗口、打开新的浏览器界面、打开新的应用程序、关闭已运行的应用程序、关闭已存在的浏览器界面;关闭已存在的窗口,等等,从而用户能够同字幕进行丰富地交互。
以上过程中,无论是基于实时数据流的视频,还是本地的普通视频文件,本发明中可以通过各种方式来在所叠加的窗口中显示字幕。比如,可以首先通过GDI在所述叠加的窗口中绘制文字,然后通过改变所绘制文字在窗口中的显示位置来实现所绘制文字的字幕滚动效果。
在这里,可以利用各种GDI来绘制文字,比如采用DrawText API、或TextOut API等。
下面以采用DrawTextAPI为例对如何利用GDI来绘制文字进行详细说明。本领域技术人员可以意识到,这仅是示范性的,而并不用于对利用GDI来绘制文字的方式进行任何限定。
图3为根据本发明一示范性实施例的显示字幕的示意图,其中用DrawTextAPI在所叠加的窗口中显示字幕。当采用DrawTextAPI时,首先通过DrawTextAPI在窗口上坐标(x,y)位置处绘制文字,并通过SetTimer设置一个定时器,当定时器触发时,x就相应减小,再重绘窗口,从而就能实现字幕向左滚动的效果。同理,如果x就相应增加,再重绘窗口,从而就能实现字幕向右滚动的效果。显然,要想实现其他方向的字幕滚动,只要相应地增减x或y值就可以。在这个窗口的消息循环里面,响应WM_LBUTTONUP消息,如果此消息能够获取到,就表示用户通过鼠标点击了字幕,然后就可以通过需求,执行相关的动作。
采用GDI绘制文字来显示字幕的方式非常简洁,并且占用系统资源小,不过实现字幕图文混排比较困难。优选地,还可以在所述叠加的窗口中创建排版交互引擎控件,然后再利用所述排版交互引擎控件显示字幕。
下面以采用HtmlView控件为例对如何利用排版交互引擎控件来显示字幕进行详细说明。本领域技术人员可以意识到,这仅是示范性的,而并不用于对利用排版交互引擎控件来显示字幕的方式进行任何限定。
HtmlView控件是由微软提供的免费控件,它可以很简单的浏览一个网页及执行html代码。与利用各种GDI来绘制文字不相同,利用排版交互引擎控件的方式并不直接实现字幕,而是首先在叠加的窗口上创建一个HtmlView控件,并且优选将该HtmlView的控件的大小和叠加的窗口设置成一样。
图4为根据本发明另一示范性实施例的显示字幕的示意图,其中利用HtmlView控件在所叠加的窗口中显示字幕。首先在新增的窗口中创建HtmlView控件,创建完HtmlView控件后,通过HtmlView控件所支持的Html代码,就能够实现显示字幕,并执行各种交互操作。
比如,当需要显示字幕“你好!请点击!”,并且当用户点击字幕后链接到http//xx.xxx.com时,只需将<marquee>
<a href=”http//xx.xxx.com”>
你好!请点击!</a></marquee>
这段简单的html代码让htmlView控件去解析,就可以实现对“你好!请点击!”的字幕滚动,并且点击字幕后就能够链接到http//xx.xxx.com。
另外,利用HtmlView控件可以非常简单地实现各种丰富的表现,比如RichText、图片等。
为了在显示字幕时不影响用户观看视频的效果,所叠加的窗口可以为透明色。当需要让用户对字幕进行重点关注时,所叠加的窗口可以为黑色、红色等能强烈吸引视觉的加重色。
优选地,在显示完字幕以后,用户利用计算机外围设备点击所显示的字幕,以触发与字幕的交互操作。这些操作包括打开新的窗口、打开新的浏览器界面、打开新的应用程序、关闭已运行的应用程序、关闭已存在的浏览器界面;关闭已存在的窗口等。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种显示字幕的方法,其特征在于,该方法包括A、在视频显示界面上新增窗口,并将该窗口叠加到所述视频显示界面上;B、在所叠加的窗口中显示字幕。
2.根据权利要求1所述的方法,其特征在于,在步骤B后,该方法进一步包括C、利用计算机外围设备选中所显示的字幕,以触发与字幕的交互操作。
3.根据权利要求1所述的方法,其特征在于,步骤A所述视频为基于实时数据流的视频,步骤A所述在视频显示界面上叠加窗口包括A1、接收来自远端的控制流,所述控制流中包含叠加窗口指令及字幕;A2、根据所述叠加窗口指令,在所述视频显示界面上新增窗口并将该窗口叠加到所述视频显示界面上;步骤B所述显示字幕为在所叠加的窗口中显示控制流中的所述字幕。
4.根据权利要求1-3中任一项所述的方法,其特征在于,在步骤A之前,该方法进一步包括预先确定所述窗口在该视频显示界面上的叠加位置;步骤A所述在视频显示界面上叠加窗口为在所述视频显示界面上的预定叠加位置处,叠加所述窗口。
5.根据权利要求1所述的方法,其特征在于,步骤B所述在所叠加的窗口中显示字幕包括B11、通过图像设备接口GDI在所述叠加的窗口中绘制文字;B21、改变所绘制文字在所述窗口中的显示位置,以实现所绘制文字的字幕滚动效果。
6.根据权利要求5所述的方法,其特征在于,所述GDI包括DrawText应用编程接口API、或TextOut API。
7.根据权利要求1所述的方法,其特征在于,步骤B所述在所叠加的窗口中显示字幕包括B21、在所述叠加的窗口中创建排版交互引擎控件;B22、利用所述排版交互引擎控件显示字幕。
8.根据权利要求7所述的方法,其特征在于,所述排版交互引擎控件为HtmlView控件。
9.根据权利要求1-3中任一项、5、6、7、或8所述的方法,其特征在于,所述窗口为透明色或加重色。
10.根据权利要求2所述的方法,其特征在于,所述与字幕的交互操作包括以下操作中的任一种或其中多于一种的任意组合打开新的窗口;打开新的浏览器界面;打开新的应用程序;关闭已运行的应用程序;关闭已存在的浏览器界面;关闭已存在的窗口。
全文摘要
本发明公开了一种显示字幕的方法,包括A、在视频显示界面上新增窗口,并将该窗口叠加到所述视频显示界面上;B、在所叠加的窗口中显示字幕。应用本发明以后,用户不再是单纯地被动接收字幕,而是能够与字幕进行交互以触发各种操作。另外,由于对窗口有非常多的成熟操作命令,所以本发明执行交互起来也非常的方便。
文档编号H04N5/445GK101076089SQ20061009040
公开日2007年11月21日 申请日期2006年6月23日 优先权日2006年6月23日
发明者彭建波 申请人:腾讯科技(深圳)有限公司