【摘要】Microsoft公司的Netmeeting視頻會議平臺是一種通用的通信系統,該文介紹了NetMeeting SDK 開發平臺及其開發環境,闡述了如何應用Scripting API開發Web方式視頻會議,并結合應用到專題學習網站遠程教育中,給出了關鍵部分的實現思路及代碼。
【關鍵詞】遠程教育,視頻會議,NetMeeting SDK,Scripting API
【中圖分類號】G434【文獻標識碼】B 【論文編號】1009—8097(2007)03—0064—03
一、引言
現代人對交流的需要,推動了互聯網的發展;互聯網的發展,催生了網絡環境中豐富多彩的多媒體應用。針對信息傳輸的實時、多樣化需求,多媒體通信系統應運而生。專題學習網站需要構建一個教師與學生、學生與學生之間的溝通橋梁與環境,在各種的溝通方式中,音頻會議、視頻會議具有直觀方便、效率高的優點,如果能夠實現網上的會議功能,那么對于網絡課程師生之間的交流,具有非常良好的輔助與促進作用。
專題學習網站,除了給學生提供專題學習內容,作為一個進行網上交流的學習平臺,還需要提供方便快捷的即時交流方式,促進師生之間、學生之間的交流。除了提供常規的留言、聊天室等形式的服務,本系統還提供了網上視頻會議的功能,供師生間遠程教學和學生間交流協作使用。通過結合現有的NetMeeting SDK,應用于Web應用中,可簡單有效的實現視頻會議的功能。
二、NetMeeting SDK 開發平臺
通過微軟的NetMeeting系統,全球各種用戶可在Internet/Intranet 上進行交談、召開會議、協同工作。NetMeeting作為一種通用的通信系統,為了滿足不同用戶的個性化需求,對于那些面向專用網絡、特殊用戶的多媒體通信系統,應用NetMeeting SDK,也可以按照自己的特點重新開發自己的應用程序。
1.NetMeeting SDK COM對象的層次結構
NetMeeting SDK可以說是一個開發多媒體通信系統的理想工具。它給客戶提供了開發多媒體通信應用程序所需的一些組件[1]。NetMeeting 在開發過程中遵守了COM(組件對象模型)標準,底層協議都以COM組件形式完全獨立。在開發多媒體通信系統時,只要在NetMeeting SDK中選擇合適的組件,并通過它提供的應用程序接口(API),即可把NetMeeting 具有的功能方便地集成到應用程序中[2]。
NetMeeting SDK 提供了一組應用程序開發的接口,包括:一組ActiveX 控件用于在WEB頁面中集成NetMeeting的會議功能;一組基于組件對象模型(OLE COM)的對象用于在COM 應用中集成NetMeeting 的會議功能;以及一組COM 對象用于提供基于LDAP 服務的應用(如圖1所示)。

圖1NetMeeting SDK COM 對象的層次結構
NetMeeting SDK按其功能可以分成:NetMeeting 組件接口(NetMeeting COM API)、互聯網定位服務器接口(Internet Locator Service API)和安裝編解碼器接口(Install Codec API)。
2.NetMeeting SDK提供的開發環境
NetMeeting SDK開發包提供了下列幾種開發編程環境:
(1)Scripting API,用于網頁及其他腳本編程。
NetMeeting 的Scripting API 包括用戶界面控制和會議的控制,使用MODE 參數可以控制NetMeeting 的各種顯示模式。同時Scripting API 還提供一些COM 對象, 可以在Web頁面中使用JavaScript和VBScript 來控制視頻會議。
(2)COM API,用于C/C++ 和其它支持COM語言開發。
使用NetMeeting 的COM API 可以用支持COM的編程語言開發基于NetMeeting 的視頻會議的客戶端程序。
(3)COM T.120 Application API,用于底層T.120 COM 應用程序界面編程。
(4)ILS API 和Installable Codec API,用于ILS編程與可安裝解碼器編程。
三、應用Scripting API開發Web方式視頻會議
1.在HTML中嵌入ActiveX控件
使用Scripting API,應用開發包提供的UI ActiveX控件和腳本對象模型,可以很方便的嵌入Web頁和其它程序中,通過HTML、Java Script(Java腳本)和VB Scripting可以對其進行控制[3]。
可在HTML中嵌入兩個NetMeeting對象,實現本地視頻和遠程視頻可以在同一個Web頁面顯示,以達成雙向的視頻會議傳輸。嵌入UI ActiveX Control,應用HTML語言的嵌入對象語句如下:
<object classid="CLSID:3E9BAF2D-7A79-11d2-9334-0000F875AE17" id="LocalVideo" width="176" height="144" STYLE="position:absolute; top:19; left:49; visibility:hidden;"
codebase="http://download.microsoft.com/msdownload/netmeeting/3.0/x86/en/NM30.EXE">
<param name="MODE" value="previewNoPause">
</object>
<object classid="CLSID:3E9BAF2D-7A79-11d2-9334-0000F875AE17" id="RemoteVideo" width="176" height="144" STYLE="position:absolute; top:19; left:553; visibility:hidden;"
codebase="http://download.microsoft.com/msdownload/netmeeting/3.0/x86/en/NM30.EXE">
<param name="MODE" value="remoteNoPause">
在IE瀏覽器瀏覽的效果如圖2所示,左邊窗口是本地視頻,右邊是對方的視頻窗口。

圖2NetMeeting嵌入Web頁面實現視頻會議
2.對視頻控件進行有效的控制
(1)模式控制View Mode
對象控制模式有Full 、RemoteNoPause、PreviewOnly 、PreviewNoPause 、RemoteOnly 、DataOnly、Telephone等多種。通過對View Mode的設置可以方便靈活的對視頻會議進行控制,可以控制對象窗口顯示的是本地視頻還是遠程視頻,以及是否顯示視頻等。
(2)Conference Manager對象參數設置
Conference Manager(會議管理器)是視頻會議程序的核心,應設置為CNF_Casp_Data=1、CNF_Caps_Audio=2、CNF_Caps_Data=4,則程序具有數據、音頻和視頻的能力;
(3)事件捕捉與回應
ConferenceStarted 和ConferenceEnded是會議開始結束事件,可以使用Java Script進行控制:
<script for="Meeting" event="ConferenceStarted" language="Java Script">
document.body.insertAdjacentHTML("BeforeEnd","Conference ended..<BR");
</script>
<script for="Meeting" event="ConferenceEnded" language="Java Script">
ShowNM();
</script>
另外還有StateChanged(狀態改變)、Member Changed(與會成員改變)、File/Data的 Sent/Received事件等必須妥善進行控制,如:
……
IfIsinconference = TRUE Then Leaveconference
Sub Conferencecleanup ( )
Memberlist.Value=""
If Not (Conference Is Nothing)
Then Conference.Unadvise
Set Conference=Nothing
End If
End Sub
(4)呼叫地址控制
在前臺頁面中,可以通過VB Script的控制,實現會議邀請,代碼如下:
<script language="vbscript">
function CallTo()
{ NetMeeting.CallTo(AddrList.value);
NetMeeting.style.visibility = "visible";
JZSLeft.style.visibility = "hidden";
RemoteVideo.style.visibility = "visible";
JZSRight.style.visibility = "hidden";
CtrlPad.style.visibility = "visible"; }
</script>
其中AddrList就是下拉列表組件的名稱,AddrList.value就是呼叫的具體IP地址。
3.地址列表的動態更新
在圖2中,除了可以自行輸入IP地址進行會議邀請,也可以通過下拉列表選擇呼叫與會者,下拉列表的對象是動態更新的,此處需要服務器端運行及數據庫支持。如果會員在線,在列表中就會顯示出來,其ASP實現代碼如下:
<% set rs =server.createobject("adodb.recordset")
sql ="select * from onlineuser"
rs.open sql,cn,1,1‘建立數據庫連接,執行查詢操作%>
<select name="online" id="select3" style="WIDTH: 120px">
<% rs.movefirst
for i=1 to rs.recordcount%>
<option value="<%=rs ("ip")%>"><%=rs ("username")%></option>
<% rs_sort.movenext
next ‘生成用戶列表,包括用戶名及IP地址%>
<option value="0" selected>請選擇呼叫對象</option> </select>
4.錄音、錄像功能的實現
調用Windows MCI函數,還可以實現會議現場錄音功能。首先在WEB頁面插入MCI控件:<object classid=" clsid:C1A8AF25-1257-101B-8FB0-0020AF039CA3" id="MMControl1" >,然后插入控制該控件運作的VB Script代碼:
<script language="vbscript">
Sub Window_onload()
on error resume next
MMControl1.Notify = False
MMControl1.Wait = True
MMControl1.Shareable = False
MMControl1.DeviceType = "WaveAudio"
MMControl1.FileName = App.Path & "\record.wav"
MMControl1.Command = "Open"
x = Shell("D:\SnagIt32\snagit32.exe",6)
End Sub
……</script>
通過VB Script的Shell函數調用外部屏幕捕捉軟件,如Snagit、Capture等,對視頻窗口進行屏幕捕捉,還可簡單的實現視頻會議的錄像功能。
四、結束語
通過NetMeeting SDK 開發平臺,可以很方便的開發基于WEB方式和客戶端方式的視頻會議系統,而不需要重新編寫視頻會議系統內核。本文給出了如何通過Scripting API開發Web方式視頻會議的步驟,闡述了如何綜合ActiveX、Java Script和VB Script技術,結合應用到專題教學網站中,并給出了關鍵部分的實現方法和代碼。
參考文獻
[1] 梁滿貴.基于NetMeeting SDK的多媒體通信系統開發技術[J].計算機應用研究,2002,8:127
[2] 吳月珠,程劍峰.視頻信息在網絡上的實時傳輸和處理[J].小型微型計算機系,1999,8:637
[3] 陸勤,陳宏盛.利用NetMeeting SDK開發Web應用[J].軟件應用,2000,19:31
The Application of NetMeeting SDK to Develop a Video Conference System on Remote Education Website
Feng YongjinZhang HaixiaoZhang Jing
Faculty of Computer, Guangdong University of Technology, Guangzhou, Guangdong,510090
Abstract:Netmeeting is a universal Video Conference System that published by Microsoft Crop. This paper introduces the platform and the development environment of it, discusses how to apply Scripting API to develop Video Conference System on the WEB, and expatiates upon the implementation thought and codes of the key segments when applied in E-commerce website.
Keywords:Remote Education, Video Conference, NetMeeting SDK, Scripting API