張年英
(武漢船舶職業(yè)技術(shù)學(xué)院,湖北武漢 430050)
新世紀(jì)的高職教育的發(fā)展方向是由單一的職業(yè)教育轉(zhuǎn)變?yōu)榫C合性多層次的職業(yè)教育,這就需運用先進(jìn)的教學(xué)手段,將綜合性的知識教授給學(xué)生。所以,現(xiàn)在的高職院校,如果僅僅是使用原始的課堂講授+實踐操作的授課方式,想要培養(yǎng)出高素質(zhì)的綜合型技能人才是行不通的,只有運用先進(jìn)的教學(xué)模式,才能培養(yǎng)出綜合型的高素質(zhì)人才,其中,運用多媒體技術(shù)架設(shè)多媒體電子教師進(jìn)行教學(xué)就是目前比較先進(jìn)的教學(xué)模式之一。
在多媒體的技術(shù)上發(fā)展起來的多媒體電子教室將傳統(tǒng)的課堂教授與實際操作結(jié)合起來,讓學(xué)生在上課時既能得到教師的講授又能通過多媒體更好的融入課堂,充分體現(xiàn)以教師為引導(dǎo),學(xué)生為主體的新型教學(xué)模式。當(dāng)前多媒體電子教室主要的功能有廣播教學(xué)、遠(yuǎn)程監(jiān)控、文件傳輸、電子白板等。其中,廣播教學(xué)功能是多媒體電子教室的核心功能,而屏幕傳輸功能又是廣播教學(xué)的關(guān)鍵之一,本文采用了C/S(客戶端/服務(wù)器)結(jié)構(gòu),以VC6.0為平臺實現(xiàn)了多媒體電子教室系統(tǒng)的屏幕傳輸功能。
該功能是整個多媒體電子教室的主要功能之一。通過該功能進(jìn)行視頻傳輸,將在教師機上正在進(jìn)行的教學(xué)演示,并通過網(wǎng)絡(luò)對學(xué)生機進(jìn)行廣播。在授課時,教師使用同步視頻功能,將教師機的畫面通過網(wǎng)絡(luò)傳遞到每臺學(xué)生機,從而使每一臺學(xué)生機顯示話畫面與教師機一樣。教師可以通過各種軟件進(jìn)行教學(xué),例如:對某種應(yīng)用軟件進(jìn)行實際操作,讓學(xué)生對操作的過程有一個詳細(xì)的了解。這樣,就能避免傳統(tǒng)教學(xué)只能在同一時間對少數(shù)學(xué)生進(jìn)行演示,其他學(xué)生無所事事的情形,同時通過廣播教學(xué),還可以極大的避免教師的重復(fù)勞動,使教師有更多的精力投入到教學(xué)當(dāng)中。
屏幕傳輸就是通過網(wǎng)絡(luò),將一臺計算機(服務(wù)器端)上面正在顯示的畫面?zhèn)鬏數(shù)搅硪慌_或者若干臺計算機(客戶端)上,并保證客戶的端屏幕始終與服務(wù)器端的屏幕保持一致,即便在傳輸過程中發(fā)生幀丟失的狀況,也不會產(chǎn)生太大的影響。
在實現(xiàn)該功能是,大數(shù)據(jù)量的傳輸是首先需要考慮的問題,以當(dāng)前最典型的情況來考慮:屏幕分辨率為1366*768,色彩質(zhì)量為32位。這樣一幅畫面的數(shù)據(jù)量為:1366*768*32=3M,如此大的數(shù)據(jù)量,只有通過壓縮才能進(jìn)行網(wǎng)絡(luò)傳輸。所以在本文設(shè)計的系統(tǒng)中,將服務(wù)器端與客戶端的通信分為了五個部分:屏幕抓取、壓縮屏幕、網(wǎng)絡(luò)傳輸、解壓數(shù)據(jù)、繪制屏幕。
本文中設(shè)計的系統(tǒng)是通過獲取顯示設(shè)備中顯示的位圖來實現(xiàn)屏幕抓取的。首先,獲取將要實施抓取的屏幕的尺寸,根據(jù)該尺寸創(chuàng)建一個位圖,然后獲取顯示設(shè)備并創(chuàng)建一個與該顯示設(shè)備兼容的緩存設(shè)備memory Device Context(memDC),將之前創(chuàng)建好的位圖放入該緩存,再用API將當(dāng)前顯示設(shè)備的內(nèi)容拷到內(nèi)存,如此,屏幕上的內(nèi)容就被抓取到了位圖中,最后,對當(dāng)前的顯示設(shè)備進(jìn)行釋放。具體的實現(xiàn)代碼如下:
本設(shè)計的系統(tǒng)系統(tǒng)采用了VC6.0的壓縮函數(shù)來進(jìn)行屏幕壓縮。在完成了屏幕抓取后,屏幕顯示的內(nèi)容已經(jīng)抓取到了創(chuàng)建的位圖中,需要對它進(jìn)行壓縮操作。首先,將數(shù)據(jù)從位圖中取出,然后,對hMemBmp中存放的數(shù)據(jù)進(jìn)行壓縮,具體代碼如下:
針對視頻傳輸?shù)臄?shù)據(jù)量比較大的特點,在進(jìn)行屏幕數(shù)據(jù)傳輸時,使用的是UDP(數(shù)據(jù)報)的方式,該方式可以有效的降低CPU的消耗,不論有多少個客戶端,服務(wù)器只需要發(fā)送一次就足夠了,即使在傳輸過程中發(fā)送數(shù)據(jù)報少量丟失的狀況,也不會對客戶端造成太大的影響,在客戶端只會以非??斓乃俣乳W過一些亂屏。經(jīng)過壓縮后,每一幀的數(shù)據(jù)任然有幾十K或者幾百K的大小,如果僅僅使用一個數(shù)據(jù)包來發(fā)送,在現(xiàn)有的技術(shù)情況下是不可能的,所以需要將每一幀數(shù)據(jù)拆分成數(shù)個小數(shù)據(jù)包,通過網(wǎng)絡(luò)傳輸至客戶端,再在客戶端將這些小的數(shù)據(jù)包拼接成原來的數(shù)據(jù)幀。因此拆分后得到的數(shù)據(jù)包必須提供必要的信息,以此表示一共傳輸多少個數(shù)據(jù)包,當(dāng)前的數(shù)據(jù)包的序列,各數(shù)據(jù)包的排列順序,數(shù)據(jù)包的長度等信息,這樣在客戶端才可以將這些數(shù)據(jù)包還原成原來的數(shù)據(jù)幀。為此,本文數(shù)據(jù)包設(shè)計了以下的數(shù)據(jù)結(jié)構(gòu):
每一幀的數(shù)據(jù)經(jīng)過壓縮之后仍然有幾十到幾百K字節(jié)不等,想要用一個數(shù)據(jù)包就發(fā)送出去是不可能的,因此必須將它拆成若干個小的數(shù)據(jù)包,廣播到網(wǎng)絡(luò)上,學(xué)生機接收到之后,在將它們拼成一個完整數(shù)據(jù)幀。因此在數(shù)據(jù)包的結(jié)構(gòu)中必須能表示出共有多少包,當(dāng)前是第幾包,有效數(shù)據(jù)的長度是多少等信息。這樣在接收端才能將它們按照順序拼接起來。為此,我們采用以下的數(shù)據(jù)結(jié)構(gòu):
客戶端將接收到的數(shù)據(jù)包拼接成一個完整的數(shù)據(jù)幀之后,將對該數(shù)據(jù)包進(jìn)行解壓操作,具體代碼如下:
通過解壓縮后,數(shù)據(jù)就被存放在了內(nèi)存指針ip當(dāng)中,與壓縮的過程相比較,解壓縮除了方向相反以外,其余的過程都非常相似。
當(dāng)客戶段獲得解壓的數(shù)據(jù)后,需要將這些數(shù)據(jù)轉(zhuǎn)換為畫面的形式在客戶端的屏幕上顯示。為此,客戶端首先需要創(chuàng)建一幅位圖,然后將解壓后得數(shù)據(jù)填充進(jìn)這幅位圖,最后再將該位圖復(fù)制到客戶端的顯示設(shè)備中,這次,繪制屏幕的工作就完成了,具體代碼如下:
屏幕傳輸功能的實現(xiàn),使得多媒體電子教學(xué)的關(guān)鍵問題得到解決,在多媒體電子教室中進(jìn)行系統(tǒng)測試,取得了比較好的效果,也為作者下一步的多媒體電子教室研究提供了支持。但是,因為對圖像傳輸效果產(chǎn)生影響的因素有很多方面,如何在現(xiàn)有的硬件條件下提高數(shù)據(jù)壓縮的比率,減小傳輸?shù)臄?shù)據(jù)量,降低圖像失真度,是下一步需要探索研究的問題。
1 何斌,馬天予,王運堅等.Visual C++ 數(shù)字圖像處理[M].北京:人民郵電出版社,2001
2 鄭阿奇,丁有和,鄭進(jìn)等.Visual C實用教程(第2版)[M].北京:電子工業(yè)出版社,2003
3 李增智,陳妍.計算機網(wǎng)絡(luò)原理(第2版)[M].西安:西安交通大學(xué)出版社,2000
4 傅愛玲.基于校園網(wǎng)的多媒體電子教室的開發(fā)與實現(xiàn)[D].天津大學(xué),2005
5 吳洪才,殷人昆.屏幕捕獲技術(shù)在多媒體教學(xué)中的實現(xiàn)探討[J].計算機工程,2003(7)
6 魏娟麗 電子教室中廣播教學(xué)功能的設(shè)計與實現(xiàn)[J].電子設(shè)計工程,2011(1)