打印本文 打印本文 关闭窗口 关闭窗口
用Windows Media 9 Series创建实况广播1
作者:武汉SEO闵涛  文章来源:敏韬网  点击数872  更新时间:2009/4/24 22:13:44  文章录入:mintao  责任编辑:mintao

    当需要在 intranet 上发布多媒体演示时,大多数开发人员都考虑预先录好内容,然后对其进行数字化处理,再将其以多媒体文件(比如 MP3)的方式交给大家。然而,1000个并发用户请求同一个文件会给网络带来很大的负担。

    使用 Windows Media 9 Server,你可以将实况广播做成一个多播来提供服务。这意味着只有一个流为请求它的客户提供服务。实况广播的一个缺点是它们难于实现。但是,有了Windows Media Encoder 9 Series,这就简单了,而Encoder 是一个可扩展组件,你可以通过编写脚本为广播员创建更具体解决方案。在这篇文章中,我将使用Windows Media Encoder 9 引擎(Encoder)从 Web 页面创建一个实况多媒体广播。我还会创建一个客户页面来接收广播,以及自定义命令和字幕。

    Encoder 是一个可从微软下载的批处理脚本组件;它还是一个单独运行的可执行文件。Encoder 可以架设起实况广播服务器,还可以将负载推到一台Windows Media Server。在这个例子中,我将在本地计算机上架设广播服务器。我的机器运行的是带 IIS 5.0 的 Windows XP Professional。首先要做的事情是创建一个配置文件,这个配置文件是一个以 .wme 为扩展名的 XML 文件。

    为了减轻手工创建配置文件的负担,我启动 Encoder 并按照其向导创建了一个实况广播。第一个屏幕询问视频和音频输入设备,我有一个 Web 摄像头和一个麦克风,所以我从下拉列表中选择了摄像头并使用默认的音频设备。然后它询问你是想要将内容放到 Windows Media Server 上,还是想让客户机连接到你的计算机获取内容。

    对于我的这个例子,我选择后者。我接受默认的 HTTP 端口并继续。在接下来的屏幕上,你可以设置希望广播的音频和视频的质量。(请记住,质量越高,需要的带宽就越多。)视频我选择 Live Broadcast,音频我选择 Voice Quality。下一屏问你是否希望归档广播数据以备后用。如果你正在制作执行官的广播并希望存储文件的话,这个设备就显得十分重要。然而,在我的 PC 上,这样做会吃光我的硬盘空间,所以我跳过了归档选项。最后,跟随向导的屏幕直到最后并点击 Finish。

    请检查你的摄像头,以确保它正在采集视频数据,然后从 View 菜单中选择 Audio Panel 确保你的麦克风正在采集音频数据。你应该看一下音量指示器,当你说话时它将上下变动。点击工具栏中的 Properties 宾馆或者从 View 菜单中选择Properties Panel。在Sources 选项卡中,选择“Both Device And File” Source From选项。然后选中 Script 复选框。(如果使用自定义命令,这将非常重要。)保存配置文件并将其部署到你的本地站点上。

    现在你已经有了配置文件,你可以通过脚本运行 Encoder 引擎来创建一个更加具体的用户体验,并避免让广播员学习如何使用 Encoder;然而,Encoder 引擎必须在广播员的计算机上。

    下面是完成自定义广播的 HTML 页面:

<IMG SRC="http://m2.cn.doubleclick.net/929929/W_builder_MPU_tagged1108.swf" WIDTH=468 HEIGHT=60 BORDER=0 > IPT> IPT>

    <html>
    <head>

    var g_objEncoder = new ActiveXObject("WMEncEng.WMEncoder");
    g_objEncoder.Load("http://localhost/config.wme");

    function start() {
        g_objEncoder.Start();
    }
    function stop() {
        g_objEncoder.Stop();
    }
    function sendURL(url) {
        g_objEncoder.SendScript(0, "URL", url + "&&frame2");
    }
    function sendCmd(cmd) {
        g_objEncoder.SendScript(0, "TEXT", cmd);
    }
    function sendCaption(msg) {
        g_objEncoder.SendScript(0, "CAPTION", msg);
    }
    </script>
    </head>
    <body>
    <button onfiltered="start()">Begin Broadcast</button>
    <button onfiltered="stop()">End Broadcast</button><br>
    <input type="text" name="txtURL" id="txtURL" size="50"><br>
    <button onfiltered="sendURL(txtURL.value)">Go URL</button><br>
    <textarea id="txtMsg" rows="5" cols="80" scroll="off"></textarea><br>
    <button onfiltered="sendCaption(txtMsg.value.replace(/\n/g, '<br>'))">Send
     Caption</button><br>
    <button onfiltered="sendCmd('showAlert')">Show Alert Box</button>
    </body>
    </html>

    将这做成一个 Web 页面是为了简单。在 HTML 中快速设置用户界面要比创建自定义应用程序容易。为了使这个页面能够工作,必须允许不安全的 ActiveX 控件初始化和运行,但是它会显示可用的功能。

    因为所有的配置信息都包含在配置文件中(该配置文件在 ActiveX 组件被创建时被装载),广播员不需要配置广播环境。所有要做的只是开始和结束广播。

    前面的 HTML 创建一个具有两个按钮的页面,这两个按钮分别用于开始和停止广播。页面还有一个用于输入 URL 的文本域和一个相应的按钮,这个按钮允许你从客户的浏览器导航到指定的 URL。页面还有一个<TEXTAREA> 和一个相应的按钮,这个按钮允许广播员发送“字幕”给客户,还有一个按钮用于向客户发出命令,发出的命令由客户端 HTML 的JScript 块处理。

    在第二部分中,我将创建用于接收内容的客户端 HTML 页面。

打印本文 打印本文 关闭窗口 关闭窗口