-->
为五月的纽约流媒体保留座位吧. Register Now!

检测流媒体播放器和连接速度教程

难道我们不都喜欢一个所有流媒体视频内容都可以用任何流媒体视频播放器播放的世界吗? Sure ... 就像任何浏览器都可以呈现任何HTML页面一样? Unfortunately, 我们面对的现实是三大流媒体系统在很大程度上互不兼容. What's more, 您的用户将使用各种操作系统, browsers, media players, and types of internet connections. 这个问题的一个解决方案是选择一种要支持的流媒体格式. 如果您可以控制查看者计算机的配置,这可能是一个不错的选择, as in many corporate or educational settings. 如果你能做到这一点,这当然是一个非常划算的方法.

But if you're like many of us, 您需要支持多种流媒体格式,以便让尽可能多的用户轻松访问您的内容. Well, roll up your sleeves, 因为我们将使用一些代码来确定用户安装了哪些播放器, 以及他们的互联网连接上有多少带宽可以传输你的内容.  为简单起见,我们将这些信息设置在一个cookie中.  In a real-world implementation, 您可以显示一个表单,让用户选择他们想要使用哪个播放器来查看您的内容, 或者您可以在服务器端读取cookie,并选择最适合其配置的流媒体格式. 

确定用户安装了哪些媒体播放器(或其他插件)需要两种主要方法:一种用于使用插件的浏览器,另一种用于使用ActiveX控件的浏览器.  

Browsers that use plugins: Opera、Mozilla、Netscape Navigator/Communicator、Macintosh上的IE以及非Windows上的任何浏览器

Browsers that use ActiveX: IE on Windows

让我们通过客户端代码来处理这些可能性. First we'll look at detecting plugins. Listing 1 显示了可以放置在HTML页面中的JavaScript代码片段. 浏览器将有关已安装插件的信息存储在一个插件对象数组中,该数组可从JavaScript访问. 首先,在第19行,我们仔细检查是否没有在Windows上打开IE. 然后,从第22行开始,我们开始检查plugins数组中每个插件的名称. 你会注意到,我们必须确切地知道插件的名称,以便检测它们. 你可以通过在浏览器的Location字段中输入“about:plugins”来查看这些插件. If we find a match for any plugin, 我们为它添加一个简短的名称到我们的'playerString'变量(第27行), 31 and 35).

检查完所有插件后,您会希望将结果存储在有用的地方. 这就是制作cookie的目的——在用户的计算机上存储少量数据以供将来使用. cookie与主机站点的域名一起保存, 因此,只有生成cookie的网站才能读取它. 这意味着没有其他网站可以利用你在这里存储的信息——这只是你和你的用户之间的信息.

因此,第38行调用setCookie()函数,将playerString存储在名为“MediaPlayers”的cookie中.“如果你没有为你的饼干提供有效期, 当用户关闭浏览器时,它就会消失. 这里,我们任意选择将cookie设置为365天过期. 如果您安装了所有三个主要媒体播放器, 你的playerString看起来像这样:“REAL,QT,QT,QT,WMP."  Try it!

我们不关心名字的顺序. 您的插件可能会有所不同,这取决于浏览器加载插件的顺序.  您可能还注意到,如果您使用Internet Explorer 5.5 SP2 or 6.x on Windows, you may not see the QuickTime control listed, 即使你知道你已经安装了QuickTime.  微软最近停止了对这些产品中的浏览器插件的支持, 支持他们自己专有的ActiveX控制体系结构.  如果你使用这些浏览器之一,或者你最近更新了IE5.5、苹果的QuickTime插件不再起作用.  To circumvent this change, 苹果公司已经发布了ActiveX版本的QuickTime播放器 http://quicktime.apple.com

The next block of code in Listing 1 让你为Windows上的IE用户做同样的事情.  因为这是用VBScript写的,其他浏览器会忽略这段代码.  在第49行到51行,我们尝试使用VBScript创建每个播放器的ActiveX实例. 我们只是检查每次尝试是否成功. 我们在插件示例中使用的JavaScript函数设置cookie值.

Next Page: Bandwidth Detection

Streaming Covers
Free
for qualified subscribers
Subscribe Now Current Issue Past Issues