HelixApp  专业流媒体影音防盗链 helixapp流媒体影音防盗链

previous next

Chapter 1: RealOne播放器环境

本部分提供RealOne播放器媒体和浏览环境介绍,涉及到创作媒体作品时所有可能用到技术。它也涉及到利用Javascript或者ActiveX来建立创新性Web页面的一些技术。

三面板环境

RealOne播放器可以通过HTML页面简单有效的整合流媒体。 因为它比以往的版本(不支持显示HTML页面,只能在系统默认的浏览器上显示连接到的页面)能力更强,支持在分割的区域专门显示HTML。 RealOne播放器连接了这些分离的部分,这有助于一起观看,而不必在不同的应用程序间切换,以使得创作者更方便的创作关联Web页面的流媒体作品。

像以往的RealPlayer一样,你仍然可以利用RealOne插件把流媒体嵌入到Web页并在用户喜欢的Web浏览器中显示。 尽管在HTML嵌入是创作包含流媒体的HTML内容最广泛的方法,但它需要烦琐的嵌入标记来完成。而利用RealOne播放器, 你可以保持你的流媒体和HTML页面的相对独立,等同两个独立的作品。它减少了开发同步显示流媒体和HTML的难度。

接下来的图形就是RealOne播放器三面板环境的示意图,它包含了"播放/更多信息/浏览器"。使用媒体播放块播放流媒体或者下载影片。 相关信息块面板提供关于作品的更多信息。一个可分割的媒体浏览器可以作为WWW浏览器。它设计来用一个面板提供播放媒体,一个面板显示关于媒体的简单HTML页面,另外的面板显示较大的Web页面,例如你的主页。

包含第二个浏览窗口的RealOne播放器三面板环境

包含第二个浏览窗口的RealOne播放器三面板环境

更多信息: RealNetworks产品指南(RealNetworks Production Guide)presentation planning章节有关于RealOne播放器面板的更深入内容。

媒体播放面板

媒体播放面板是媒体播放的区域和控制区域(包括了用于控制播放的按钮,比如播放、暂停、继续、声音控制等)。 所有的在线播放和下载后播放都要显示在这个面板上。它包含了最核心的RealOne播放支持影片类型和标记语言:

在附录中有RealOne播放器支持的所有媒体类型,它包括了对MPEG音视频的支持。

相关信息面板

相关信息面板(The related info pane也被叫作context pane),是 用于显示正在播放的媒体的版权信息的。它设计来显示一个提示影片信息的小HTML页面。 这些页面主要包含作品封面、著作权、广告等等。要提到的是相关信息面板不是必须要的, 使用它仅仅是为了增强观看时的用户体验。这个相关信息面板可以支持所有被微软IE4支持的HTML页面。

因为媒体播放面板和相关信息面板是相互分离的, 你可以十分简单的像一般作品在指定的媒体时间线上打开显示多个HTML页面。 你可以简单的打开一个新的HTML页面来更新相关信息面板。RealOne播放器可以使你利用简单的技术在播 放媒体时显示任意数量的附加HTML。

媒体浏览面板

媒体浏览面板可以与相关信息面板连接或者分离。当连接在一起时, 它看起来像在其他两个面板的下面。当分离时,它可以看着一个标准的可以单独关闭的窗口。 任何时候在地址栏中输入任何HTML页面的URL都可以再次打开媒体浏览面板。

通过媒体浏览面板,RealOne播放器用户可以在网上冲浪, 播放CD,访问个人媒体库,传输影片到便携播放器等。影片作者也可以使用这个面板在流式 播放时同时显示Web页面。这个媒体浏览面板支持任何IE4支持的内容,包括Javascript。 例如你可以在你的作品播放后在上面显示你的主页。

现在播放列表

在媒体浏览面板的左边,有一个可以点击的"现在播放(Now Playing)"列表。 在播放流媒体或者其他作品时,流媒体文件名或者作品标题会显示在这个列表中。此外这里可以接收从相关信息面板或者媒体浏览面板的HTML页面拖拽媒体链接。

RealOne播放器的现在播放列表

RealOne播放器的现在播放列表

第二个浏览窗口

像大多的Web浏览器一样,RealOne播放器能显示任意数量的 额外的浏览窗口,它们可以和三面板环境分离开。 你可以在第二个浏览窗口中显示关联你作品的Web页面,例如:在大多数情况下, 在媒体浏览面板显示完整的Web页面时最好的,但因为已经有很多信息已经显示在媒体播放和相关信息面板上了, 此外只有媒体播放面板才能包含“现在播放” 列表。

RealOne播放器面板上的控制和交互

RealOne播放器提供在多样的创作语言和技术来控制面板中的内容。 接下来的章节就是介绍这些语言和技术,以帮助你创作让你满意的作品和功能。

通过流媒体来显示HTML页面

在一个流媒体作品中,你有3个办法(技术)来在相关信息面板或者媒体浏览面板里打开URL。 但是这些技术里不包括脚本支持,关于脚本支持的内容在本指南的后部分。它允许你创建"媒体驱动(media-driven)"的作品, 可以让附加的信息HTML页面按时间线显示,或者进行交互。

注意: 虽然RealOne播放器在其他媒体播放器支持下能播放格式封闭的媒体文件,比如Windows Media和QuickTime, 但它不支持在Ram文件或SMIL文件中直接包含他们。当这些格式的流格式文件需要播放时, 你在创作作品时需要利用对应的播放器插件的标记来指明。

在Ram文件中把HTML的URL作为媒体URL进行添加

你可以利用Ram文件在RealOne播放器中打开影片。Ram文件 使用.ram为扩展名,它是纯文本文件。通过Ram文件你可以使用标准的 <a href>标记来链接到任何Web页面,通过HTTP或者RTSP的URL获取影片或者SMIL作品。 在Ram文件内,你还可以控制是在相关信息面板还是在媒体浏览面板中打开HTML页面。 Ram文件的方法是相当方便简单的,适合用于简单的作品,例如单个RealVideo影片HTML的共同显示。

更多信息: 要了解更多的Ram文件语法请看《RealNetworks产品指南》(RealNetworks Production Guide)作品发布章节(presentation delivery chapter)《RealOne播放器流媒体基础》 里的 Ram文件章节也有相关内容。

在RealVideo或者RealAudio中嵌入HTML的URL

在使用Helix Producer建立RealVideo或者RealAudio时可以写一个行为(events)文件来指定 一个或者多个URL,让RealOne播放器在播放文件时同时在所指定定的时间点展示URL对应的HTML页面。然后你使用一个把行为嵌 入文件的工具让行为嵌入到那个作品中,此后你播放那个作品,编码的URL就会按时自动打开了。 这个技术只能应用与RealAudio和RealVideo。因为URL行为是直接加入了影片作品的, 所以这个技术也不推荐用于经常会更改显示时间的情况,也不推荐用于你不想在流式播放影片时同步显示HTML页面的情况。

更多信息: 如何利用 rmevents.exe工具合并一个行为文件到影片作品的知识在《RealOne播放器流媒体基础》中。

使用SMIL来显示HTML页面

为了布局、定位、同步多个媒体,你可以利用SMIL(同步多媒体集成描述语言——Synchronized Multimedia Integration Language),你可以创建从简单到十分复杂的媒体作品。 一个SMIL作品会一直显示在媒体播放面板,不过它可以在其他面板打开一个HTML页面。 使用SMIL你可以比使用Ram文件或编码URL到影片中获得更多的HTML显示控制。在RealOne播放器环境下SMIL具有如下能力:

通过HTML面板控制内容

通过显示在相关信息面板或者媒体浏览面板上的HTML页面, 你可以像打开一个新的HTML页面一样控制媒体文件在媒体播放面板中播放显示。 这些方法支持你在基于媒体的技术上创建"用户驱动(user-driven)"的作品,作品中的影片和附加的信息通过HTML内的交互协调显示。

通过简单的链接打开URL

因为相关信息面板或者媒体浏览面板可以显示任何内容的 HTML页面,所以控制作品的最常见最基础的方法是通过<a href> 标记在HTML页面中添加简单的超级链接。

Javascript和ActiveX方法

RealOne播放器支持一些利用Javascript和 ActiveX的方法工作。这些方法可以让你通过在相关信息面板或者媒体浏览面板中的HTML实现大多数的作品控制。 接下来的章节就是介绍这些方法的。

RealOne播放器环境下使用Javascript和ActiveX

在RealOne播放器环境下,Javascript和ActiveX方法可以有效的通过超级链接来控制在媒体播放面板打开影片或者在媒体浏览面板中打开HTML。 此外这些方法还可以实现在"现在播放"列表中添加条目,在收藏列表中添加条目以及显示RealOne播放器对话框的功能。

注意: 这些扩展是只适用与RealOne播放器媒体环境的,不能在其他的Web页面上使用。此外这个环境还依赖与客户端的IE版本。当前RealOne播放器要求的IE版本是4.0以上。

这个RealOne播放器环境可以被自身或者播放器外的Web页面扩展访问。使用Javascript方法和行为可以实现从播放器自身访问执行功能。 利用RealOne播放器提供的ActiveX控件可以在外部的Web页面上实现控制RealOne播放器。

使用Javascript方法和行为

要使用这些Javascript方法和行为,你必须在媒体浏览面板或者相关信息面板显示的HTML页面中包含相关的脚本片断。

当在RealOne播放器环境下使用Javascrip方法和行为时,所有的 方法都是在文档对象模型(document object model ——DOM)的"扩展(external)"容器下,它们是附属于 window.parent.external的。在RealOne播放器下调用PlayClip的代码如下:

window.parent.external.PlayClip(...)

使用ActiveX控件

ActiveX控件是随RealOne播放提供的类似于Javascript方法和行为集会,它比在RealOne播放器环境下在能力受一定限制(例如预加载URL能力)。 但是它可以用于在RealOne播放器环境扩展的浏览器上实现定位和复杂控制。要使用ActiveX控件,你需要在Web页面中包含下面的类ID:

CLSID:FDC7A535-4070-4B92-A0EA-D9994BCC0DC5

例如:

<OBJECT ID="RealOneActiveXObject" WIDTH=0 HEIGHT=0 CLASSID="CLSID:FDC7A535-4070-4B92-A0EA-D9994BCC0DC5">
</OBJECT>

在脚本中,你可以通过这个对象ID调用对象方法:

RealOneActiveXObject.PlayClip(…)

现在观看: (观看例子的条件)
可以在额外的浏览器上打开这个指南附带的Active X例子文档,上面有对这些方法的使用示范。

使用RealOne播放器方法

RealOne播放器方法提供手段来在Web页面中直接访问播放或者更改内容。这些方法基本分成两大类别, 一部分是控制播放和动态打开URL的,另一部分是从播放器中获取信息的。

控制播放和动态打开URL

RealOne播放器环境可以在播放是同步显示关联的URL内容。一些方法允许你在播放时同步在 相关信息面板中显示URL指定内容。 此外,你可以在播放影片时在相关信息面板显示诸如影片尺寸信息。

为相关信息面板指定一个URL有如下的一些方法。 如果你不明确的为相关信息面板指定的URL描述一个正确的定位属性,则播放时不会打开相关信息面板,而是会把URL自动的在媒体浏览面板显示。

因为大多时候在一个新作品开始播放时相关信息面板是没有内容的,所以这个面板是默认关闭的,除非你在作品中明确的指明了要在相关信息面板 显示内容。

定制播放和打URL链接的方法
方法 说明 参考
AddToNowPlaying 在影片列表中添加一个影片URL。 点这里
ClearNowPlaying 清空当前的播放列表。 点这里
HandleAction 执行指定的动作。 点这里
OpenURLInPlayerBrowser 在媒体浏览面板打开一个URL。 点这里
PlayClip 发送一个媒体URL给媒体播放面板。 点这里
PreLoadURL 在播放前调用。 点这里
SetVideoBackgroundColor 设置视频背景色为指定的值。 点这里

播放一个影片

因为RealOne播放器环境的多样性,有很多种方法来播放一个影片。 一个影片可以从现有的Web页面中打开,也可以由你直接通过URL指定来打开,影片的相关信息还可以随着影片的播放显示。

在RealOne播放器环境下通过媒体浏览面板或者相关信息面板显示的web页最简单的播放影片方法是直接把 一个Javascript脚本行添加到Web页面中。这行脚本可以自动的开始播放一个你指定的影片。例如下面的一行就可以播放 welcome.rm 文件:

window.parent.external.PlayClip("rtsp://helixserver.example.com/welcome.rm")

注意: 包含例子的HTML+Javascript版本指南的zip压缩包可以从下面下载 http://service.real.com/help/library/encoders.html 。因为这些文件中有些URL使用了本地绝对路径,在使用前你必须复制整个 samples目录到C:盘(c:\samples)。

现在观看: (观看例子的条件)
这个例子示范如何播放一个影片.

你也可以从外部的Web页面打开RealOne播放器来播放影片。要这样作,你需要 通过类标示使用ActiveX控件来定位和控制RealOne播放器 (使用 ActiveX控件的说明在"使用ActiveX控件")。例如下面的一行就是在web页面中打开RealOne播放器来播放 welcome.rm:

RealOneActiveXObject.PlayClip("rtsp://helixserver.example.com/welcome.rm")

现在观看: (观看例子的条件)
这个例子让你从外部的web页面中打开RealOne播放器来 播放一个例子影片.

PlayClip方法还包含一些可以在RealOne播放器环境下定制你作品播放的选项。 这些选项能单独使用也可以一起使用来增强你的作品。

当你播放一个影片时,当前播放影片的信息会显示在RealOne播放器上。 这些信息可以通过GetClipInfo获取。 有时你可能想替换影片中原有的信息, PlayClip方法就包含 一个选项参数来编辑这些信息。例如下面的代码可以改变标题和作者名字:

// 播放影片显示新的状态信息
function clipPlay() {
window.parent.external.PlayClip(
"rtsp://helixserver.example.com/welcome.rm",
"Title=Glorious Day|Artist name=Me Alone")
}

现在观看: (观看例子的条件)
这个例子演示如何 改变影片信息.

注意: 关于 GetClipInfo 方法显示影片信息的介绍参考 "显示影片信息"

RealOne播放器可能不仅是个播放器。 RealOne播放器环境也可以在影片播放时显示影片的信息或者作为媒体浏览器浏览web页面。 所有的功能都可以受播放影片控制。 PlayClip 方法包含给相关信息面板添加信息的功能,以及在当前播放影片时在媒体浏览面板浏览web的能力。这些功能可以单独使用也可以混合使用。 例如下面的代码就是显示信息到相关信息面板并且在媒体浏览面板打开URL:

// 播放影片,显示相关信息并且在媒体浏览面板打开URL
function clipPlay() {
window.parent.external.PlayClip(
"rtsp://helixserver.example.com/welcome.rm","",
"http://www.example.com/welcome.htm", 300, 220,
"http://www.real.com", "_rpbrowser")
}

默认情况下相关信息面板的尺寸是在媒体播放面板开始播放影片时自动设置的,而且和媒体播放面板一样高, 但是你仍然可以像前面的例子示范的,通过在 PlayClip方法中设置widthheight参数来 指定。

前面的例子还在媒体浏览面板中显示了www.real.com 站点内容, 如果你想在一个分离的窗口中显示这个URL,你要把前面例子中的_rpbrowser字符串换成其它定位名字,这样URL就会在新的窗口中显示了。

在相关信息面板打开一个URL后你可以 播放其它影片时继续使用这些信息。一个保留的值_keep可以保护 相关信息面板中最后显示的URL内容直到下一个影片开始播放。

// 播放一个影片并且保留前个影片播放的相关信息
function clipPlay() {
window.parent.external.PlayClip(
"rtsp://helixserver.example.com/welcome.rm","",
"_keep", 300, 220)
}

下一个例子指示如何播放一个影片,同时在媒体浏览面板中打开一个URL,而且没有相关信息面板显示:

// 播放影片,在媒体浏览面板打开URL
function clipPlay() {
window.parent.external.PlayClip(
"rtsp://helixserver.example.com/welcome.rm","",
"", 0, 0, "http://www.real.com", "_rpbrowser")
}

在RealOne播放器媒体浏览面板的左边有一个 "现在播放"列表。 当你使用PlayClip方法播放一个影片时你可以描述是否将这个影片加入到"现在播放"列表。 默认情况下是加入。 为了禁止加入,你需要设置bnow_playing参数为false,例如:

// 播放影片,不加入现在播放列表
function clipPlay() {
window.parent.external.PlayClip(
"rtsp://helixserver.example.com/welcome.rm","",
"", 0, 0, "", "", false)
}

PlayClip方法有一个必须的 参数和7个可选参数。在调用这个方法时你不需要指明所有的参数。但是如果你需要使用一个可选参数时就 必须把该参数前面的所有的可选参数进行设定。对于那些没有用到的参数,字符串参数要设置为空字符串, 对于整数参数width和height,你必须设置为0。

使用现在播放列表

现在播放列表是在媒体浏览面板的左边。 它显示了现在播放的影片和最近已经播放过的影片的序列。 AddToNowPlaying方法可以打开现在播放列表(如果列表是关闭着的),并且把一个影片加入到这个列表中。 在播放列表使用前你可以使用AddToNowPlaying来加入多个影片。 这个方法只有一个用于指明需添加影片URL的必要参数。

这个方法也有一些可选参数来加载 URL和显示信息。这些参数与 PlayClip方法可选参数相同。 更多这些可选参数的信息参考"播放一个影片".

在加入一个新影片前清空现在播放列表是一个好的想法。这样你可以创建一个 空的播放列表。为了清空现在播放列表,你需要使用ClearNowPlaying方法。 它会移除现在播放列表中所有的已有影片。

parent.window.external.ClearNowPlaying()

现在观看: (观看例子的条件)
例子 在现在播放列表中加入条目和清空示范了怎么进行操作。

在媒体浏览面板中打开一个URL

PlayClip 方法使得你可以随着在媒体播放面板打开影片而在媒体浏览面板打开一个URL。 但是你可能想在开始播放影片前或者播放开始后单独的在媒体浏览面板打开一个URL。 要实现这样的功能,你需要使用OpenURLInPlayerBrowser方法。 下面的代码就演示了影片播放5秒后在媒体浏览面板打开一个URL:

// 播放开始5秒后打开URL
function RPOnPositionLengthChange(position, length)
{
if ( position == 5000) {
parent.window.external.OpenURLInPlayerBrowser("http://www.real.com")
}
}

现在观看: (观看例子的条件)
下面的例子影片播放5秒后在媒体浏览面板打开URL.

缓冲URL来提高播放性能

RealOne播放器提供一个行为句柄 (RPOnPreLoad)和(PreloadURL)方法 来在播放影片前对URL内容进行缓冲存储。 这个不是必须的,但缓冲URL内容到本地可以提高播放质量,因为在播放过程中RealOne播放器可以不必再持续的占用 带宽来获取远程的URL内容了。

PreloadURL方法可以在任何时候使用(除了发生 RPOnPreload行为时)以加载一个URL到浏览器缓冲区。 需要注意的是因为在RPOnPreload行为外使用了PreloadURL会导致减慢一些获取媒体流的带宽。 你可以利用GetPlayerState 方法来判断用户当前是否播放,如果没有播放就预加载更多的URL。

注意: 你应该测试你的作品以保证预加载多少URL可以使播放带宽不受影响。

接下来的例子就演示了一个使用PreloadURL在播放前加载URL到浏览器缓冲的可能情况:

// 在媒体播放前预加载web页面。
function RPOnPreload()
{
parent.window.external.PreloadURL("http://server/slide1.html")
parent.window.external.PreloadURL("http://server/slide2.html")
parent.window.external.PreloadURL("http://server/slide3.html")
}

行为

RealOne播放器环境包括一个处理多种行为的方法。 HandleAction 方法 就提供了在RealOne播放器环境下迁移用户、打开各种对话框和在媒体浏览面板或者另一个窗口打开浏览URL的手段。

在作品播放时,你可以在媒体浏览面板中移动用户到 各种tab表上,或者打开 "现在播放"列表来显示它们。 无论用户请求什么都可以使用HandleAction方法可以打开Web,我的媒体库,CD, 设备和收音机面板并显示相关信息。 此外,HandleAction 方法可以打开"现在播放"来显示当前播放的影片。 例如下面的一行就可以在媒体浏览面板打开我的媒体库:

parent.window.external.HandleAction("MyLibrary")

有时,你可能需要显示播放器的设置调整对话框。 HandleAction方法可以打开任何对话框。 实际上你可以打开在任意范围或页面的调整对话框。例如紧接着的一行就会打开连接范围下的播放设置页:

parent.window.external.HandleAction("ShowPreferences(Connection,Playback Settings)")

HandleAction 方法也提供手段来控制任意一个显示的媒体浏览面板的URL(包括第二个窗口面板的)。下面的一行就是在第二个窗口中打开URL:

parent.window.external.HandleAction("NavigateToURL(www.real.com, '_rpexternal')")

你还可以利用HandleAction方法控制是否显示当前影片的作者信息。下面的例子就是隐藏当前影片的 作者信息:

parent.window.external.HandleAction("ShowArtistInfo(0)")

现在观看: (观看例子的条件)
这些例子介绍如何操作RealOne播放器不同行为

设置背景颜色

默认的媒体播放面板的背景颜色是黑色。 如果媒体播放面板的大小大于影片的大小则,则播放的影片周围就会用背景颜色填充。

要改变背景颜色,要使用SetVideoBackgroundColor 方法。 这个方法通过一个字符串值来来定义背景色,它有两个格式。 这第一个格式是利用#RRGGBB样式的格式(16进制数)来指定背景色的RGB值,其中RR是红色值 GG是绿色值,BB是蓝色值。每个值的范围是00到FF的16进制数。例如下面就设置背景色为红色:

parent.window.external.SetVideoBackgroundColor("#FF0000")

第二种格式是把红绿蓝的值放在一个数组中形如 rgb(x,x,x)的样式来指定。 每个x是值为0到255的整数。例如下面把背景色设置为蓝色:

parent.window.external.SetVideoBackgroundColor("rgb(0,0,255)")

现在观看: (观看例子的条件)
例子是如何设置媒体播放面板的背景色

获取RealOne播放器信息

接下来的部分介绍一些方法可以获取RealOne播放器的信息。

获取RealOne播放器信息的方法
方法 说明 参考
ComponentVersion 获取组件版本。 点这里
GetClipInfo 在一个字符串中返回影片信息。 点这里
GetPlayerState 返回当前播放器状态。 点这里
InstalledComponents 获取已经安装在RealOne播放器中的DLL列表。 点这里
PlayerProperty 返回描述RealOne播放器属性的值,它包括语言版本和操作系统名字。 点这里
RealPlayerVersion 用一个包格式返回RealOne播放器版本。 点这里

获取版本信息

如果你在web页面中准备了较新的内容,而且 它可能需要在播放前了解用户的播放器版本和组件版本信息以决定是否要求用户更新。 RealOne播放器提供了两个方法来实现对播放器版本信息获取和单独的组件版本信息获取。

RealPlayerVersion方法 是获取播放器版本,它返回一个整数值的包格式数据。你可以使用这个信息来判断用户的播放器是否 适用于播放你的页面中的内容。 如果不能,你可以控制只显示能支持的部分或者你可以提示用户升级播放器。 下面的例子就获取了播放器的版本值并显示在浏览器中:

// 获取RealOne播放器版本
function playerVersion() {
var vers=window.parent.external.RealPlayerVersion()
document.write("The version of RealPlayer is " + vers)
}

注意: 在使用RealPlayerVersion方法时,在方法名字后面必须接有一对无内容的括号。

现在观看: (观看例子的条件)
例子示范如何获取并解包RealOne播放器版本

有时你只需要获取播放器中某个独立组件的版本信息。 如果一个单独的解码器更新了,但包含新解码器的RealOne播放器版本没有更新,则 ComponentVersion方法可以获取 单独的组件版本信息。这个方法需要一个包含你需要检查信息的解码器版本的作为参数。 下面的例子就是示范如何检查Flash 6.0解码器版本信息的:

// 获取包组件版本信息
function CompVersion() {
var vers=RealOneActiveXObject.ComponentVersion("Flash:6.0")
document.write("The Flash plugin version is " + vers)
}

现在观看: (观看例子的条件)
例子示范如何 获取并解包组件版本信息

通过ComponentVersionRealPlayerVersion方法获取的版本信息是一个包格式的整数值。 要解包这个信息为可读的格式需要使用"解包版本信息"里介绍的UnpackVersionNumber函数

解包版本信息

ComponentVersionRealPlayerVersion方法的返回值都是打包的整数值, 这些值可以用于比较你需要的版本和获取的版本是否相符。

这个版本信息也可以解包为字符串来观看。 解包后的字符串版本信息是可以直接阅读的格式,它包括主版本号,副版本号,编译建立号以及附加的表示时间顺序的描述号。 这个版本号是RealOne播放器关于对话框中显示的版本格式。例如:

6.0.10.290

下面列出的Javascript UnpackVersionNumber函数可以解包 ComponentVersionRealPlayerVersion获取的信息为可读格式字符串。 完整代码的UnpackVersionNumber 函数必须在需要这个功能的页面里定义或者作为脚本引入。

function UnpackVersionNumber(n)
{
return "" + (n >> 28) + "." +
((n & 0xFF00000) >> 20) + "." +
((n & 0xFF000) >> 12) + "." +
( n & 0xFFF);
}

你也可以使用 VBScript版本的 UnpackVersionNumber函数:

Function UnpackVersionNumber(n)
UnpackVersionNumber = (((n And &HF0000000) / &H10000000) & "." & _
((n And &HFF00000) / &H100000) & "." & _
((n And &HFF000) / &H1000) & "." & _
(n And &HFFF))
End Function

接下来的Javascript例子示范了如何使用UnpackVersionNumber函数。 首先,在页面的某个部分定义这个函数,当然也可以通过外播脚本引入(可能这样更好)。 其次就是调用RealPlayerVersion获取了数据, 然后使用定义的函数来转换成可读的字符串放置在变量 szPlayerVersion中。

//解包版本数字
function UnpackVersionNumber(n)
{
return "" + (n >> 28) + "." + ((n & 0xFF00000) >> 20) + "." +
((n & 0xFF000) >> 12) + "." + ( n & 0xFFF);
}
...
{
var nRPVersion = window.parent.external.RealPlayerVersion
{
szPlayerVersion= UnpackVersionNumber(nRPVersion)
}

现在观看: (观看例子的条件)
这个例子从外部浏览器中获取 RealOne版本信息并显示了打包的格式和解包的格式。

获取播放器信息

当在一个系统中安装了RealOne播放器后,在用户系统中就包含了播放器安装的系列信息。你可以 通过PlayerProperty方法来获取这些信息。 PlayerProperty方法需要一个指示你想获取的属性类型的描述参数。例如下面的代码技术演示了 如何获取用户系统信息以及播放器版本和带宽设置信息:

// 获取播放器属性信息
function getProperty() {
document.write("Operating system: " +
parent.write.external.PlayerProperty("OSNAME") + "<BR>")
document.write("Product version: " +
parent.write.external.PlayerProperty("PRODUCTVERSION") + "<BR>")
document.write("Player bandwidth: " +
parent.write.external.PlayerProperty("BANDWIDTH"))
}

现在观看: (观看例子的条件)
例子示范如何 获取播放器属性

显示影片信息

RealOne播放器包含两个方法来获取 正在播放面板播放的影片信息以及播放状态。 第一个是 GetClipInfo, 它返回关于影片的信息,第二个是 GetPlayerState它返回影片当前状态。

加载在媒体播放面板的影片通常具有一些描述影片内容的信息。很多影片包含了专集名和演出作者名, 此外还可能包括流派、语言、发布日期等等信息。 GetClipInfo 方法可以获取这些信息。 GetClipInfo方法需要一个请求信息的类型描述作为参数,例如作者名等, 下面的例子就示范了获取专集名和演出作者名:

// 获取专集名和演出者
function getInfo() {
document.write("Album name: " +
parent.window.external.GetClipInfo("Album name")
document.write("Artist name: " +
parent.window.external.GetClipInfo("Artist name")
}

现在观看: (观看例子的条件)
例子示范如何 获取影片信息.

在一个影片加载到媒体播放面板后,你就可以获取这个影片的播放状态,以决定下一步的操作。 例如如果用户收听这个影片,你可能想让影片加入到现在播放列表中。使用GetPlayerState method to retrieve the state of the clip. The GetPlayerState方法可以判断影片十分停止、正在链接到URL、在缓冲、正在播放、暂停、以及正在影片内定位。下面的例子 就介绍了在播放器播放状态改变时显示新的状态:

// 获取新状态
function getPlayerState() {
document.write("The player is currently " +
parent.window.external.GetPlayerState( ))
}

现在观看: (观看例子的条件)
例子示范如何 获取当前播放状态

获取已经安装的组件

在播放你的作品前你可能需要确认用户的RealOne播放器是否完整包含了你需要用到的组件。 InstalledComponents方法就能够完成这样的任务, 它返回一个当前用户播放器已经安装的DLL列表,这个列表可以用于比对是否包含你要求的组件。

接下来的例子就是确认用户播放器安装组件信息的。InstalledComponents 包括每个组件的名字和版本。 在返回的值中,每个组件名称和版本之间用冒号(:)分割, 而组件之间用管道号(一个竖线号"|")进行分割。这个例子完成返回组件列表,并使用管道分割符信息对返回的列表进行 分析成为一个一个的组件名:版本号对来显示:

// 分析已经安装的组件
function installComp(){
var install=RealOneActiveXObject.InstalledComponents()
document.write("The following components are currently installed:<BR><BR>")
while(install.indexOf("|")>0){
component = install.substring(0,install.indexOf("|"));
document.write(component + "<BR>");
install = install.substring(install.indexOf("|") + 1, install.length);
};
document.write(install)
}

注意: 这个方法必须使用没有参数的括号接在方法名后面。

现在观看: (观看例子的条件)
例子示范如何 RealOne播放器获取已经安装的组件信息

RealOne播放器行为操作(event handlers)

RealOne播放器在发生预先设定的一些功能的行为时,会把行为信息作为行为操作(event handlers)进行报告反馈。 在Web页面中你可以利用这些行为操作信息来进行中断处理,例如在发生程序控制时捕获交互,或者监控你的作品播放。 下面的一个表介绍了有效(可捕获)的行为。

可获取的RealOne播放器行为
方法或者行为名称 说明 参考
RPOnBuffering 在RealOne播放器缓冲影片时调用。 点这里
RPOnPositionLengthChange 在影片播放达到规定的间隔时调用。 点这里
RPOnPreLoad 在正式播放前调用。 点这里
RPOnStateChange 在RealOne播放器状态改变时调用。 点这里

现在观看: (观看例子的条件)
例子示范如何 使用RealOne播放器的回调.

操作影片缓冲

RPOnBuffering 在影片缓冲时返回缓冲行为信息。它返回的是已经完成的缓冲百分比值。

接下拉的例子就是显示当前影片缓冲情况:

// 显示当前缓冲状态的百分比数值
function RPOnBuffering(flags, percent)
{
buffer = "Buffering: " + flags + ", " + percent + "%<BR>"
document.write(buffer)
}

定位当前播放位置

任何在播放面板播放的影片 关于影片播放到的位置信息都会每半秒自动更新一次。你可以使用这个信息来完成 随页影片播放的定时执行操作,例如在媒体浏览面板上加载一个URL。

RPOnPositionLengthChange 在影片播放中返回当前时间定位和影片总长信息。返回的定位信息是一个按半秒更新微秒为单位的数字,500是前个半秒,1000是第二个半秒一次类推。

接下来的例子展示了在影片播放5秒后打开一个URL:

// 与作品同步显示HTML
function RPOnPositionLengthChange(position, length)
{
if ( postion == 5000 ) {
flag = 1
document.location = "http://www.real.com"
}
}

播放影片前的预处理

在开始正式播放前,你可以定义一些预处理任务,而这些任务如果在 影片播放时执行会影响到带宽,特别是对于那些低带宽用户(比如利用56k 的Modem上网用户) 的影响特别大。

RPOnPreload 可以定义一些操作,它们在影片播放前执行。 例如你可以利用这些时间来预加载URL到相关信息面板或者媒体浏览面板。预加载了的URL可以在 以后的播放中快速的显示,尤其在影片播放时需要同步URL显示的情况下效果良好。

RPOnPreload 行为在播放器发生?rpcontexturl查询.RAM.RM或者.SMI时触发。 通常情况下,先是作品的HTML相关信息URL被预加载。你需要测试你的作品,以确认你预加载URL的数目,它不会造成你的正式播放 延迟太久。

接下来的例子是在最后的播放前预加载了两个URL:

// 预加载URL 
function RPOnPreload()
{
window.parent.PreloadURL("http://www.real.com")
window.parent.PreloadURL("http://service.real.com")
}

检测状态改变

有时可能需要检测当前播放器状态。 例如你想知道在用户已经在播放你的影片后利用PlayClip在现在播放列表中进行添加。

RPOnStateChange 行为操作就返回播放器播放影片开始后的所有状态的变化信息。它的返回值是指示影片停止、播放中、暂停等等的一个整数值。

下面的例子展示了利用返回的状态完成工作:

// 显示当前影片播放状态
function RPOnStateChange(newstate)
{
var statestring=""
switch(newstate) {
case 0:
statestring += "Stopped"
break
case 1:
statestring += "Contacting"
break
case 2:
statestring += "Buffering"
break
case 3:
statestring += "Playing"
break
case 4:
statestring += "Paused"
break
case 5:
statestring += "Seeking"
break
default:
break
}
document.write("The player is currently " + statestring)
}


RealNetworks, Inc. ©2002 RealNetworks, Inc.版权所有。xdsnet(xdsnet ◎ gmail)独立汉化(Ver:1.0.0 最后更新2007.2.21)。
更多信息请访问RealNetworks
点这里处理看不见左侧目录的情况。
previous next