馬晨輝 趙春 徐艷艷
摘要:在使用Blackboard軟件建設(shè)在線教學(xué)平臺(tái)的過(guò)程中,作者發(fā)現(xiàn)Blackboard對(duì)視頻資源的支持較弱,如對(duì)視頻編碼格式支持較少,缺乏對(duì)視頻資源統(tǒng)一的管理,用戶并發(fā)訪問(wèn)視頻資源時(shí)對(duì)教學(xué)平臺(tái)本身產(chǎn)生額外壓力等。文章基于對(duì)Blackboard中的Building Block插件研究及對(duì)相關(guān)視頻技術(shù)的深入研究,將平臺(tái)中的視頻部分從Blackboard系統(tǒng)中剝離出來(lái),同時(shí)開發(fā)Building Block視頻工具與之整合,并搜集日志觀察應(yīng)用效果,為高校在線教學(xué)平臺(tái)整合視頻服務(wù)提供了一種可行的方案。
關(guān)鍵詞:Blackboard;在線教學(xué)平臺(tái);視頻
中圖分類號(hào):TP393 文獻(xiàn)標(biāo)志碼:A? ? ? ? ? 文章編號(hào):1673-8454(2020)02-0083-05
一、引言
在引入商業(yè)軟件時(shí),通常情況下,高校都會(huì)結(jié)合自身的實(shí)際情況對(duì)軟件做適量的定制開發(fā),以滿足個(gè)性化需求。Blackboard平臺(tái)是一款商業(yè)軟件,是商業(yè)在線學(xué)習(xí)平臺(tái)的典型代表,在全球著名高等院校中的市場(chǎng)占有率達(dá)到70%以上[1]。Blackboard作為一款由國(guó)外公司開發(fā)的平臺(tái),在引入國(guó)內(nèi)高校時(shí),更是不可避免地需要根據(jù)學(xué)校情況進(jìn)行個(gè)性化定制、開發(fā),以符合學(xué)校本地化使用需求。
華東師范大學(xué)自2016年開始試用Blackboard平臺(tái)。在本地化建設(shè)工作中,我們發(fā)現(xiàn)Blackboard對(duì)視頻的支持較為薄弱,僅關(guān)注資源以文件形式的操作,如上傳、下載,而忽視了視頻這一媒介區(qū)別于其他媒介作為內(nèi)容載體的特性,如缺少對(duì)視頻封裝格式的控制;同時(shí)也沒(méi)有考慮到一定規(guī)模的視頻資源對(duì)平臺(tái)穩(wěn)定性的影響,如大規(guī)模在線觀看對(duì)平臺(tái)訪問(wèn)帶寬的影響。
近年來(lái)隨著MOOC的興起[2],在教學(xué)平臺(tái)中引入教學(xué)視頻逐漸成為教學(xué)研究的熱點(diǎn)。然而,針對(duì)Blackboard平臺(tái)與視頻集成技術(shù)的研究較為缺乏。以中國(guó)知網(wǎng)、萬(wàn)方數(shù)據(jù)以及維普數(shù)據(jù)庫(kù)為檢索資源,同時(shí)以Blackboard和視頻為關(guān)鍵詞進(jìn)行搜索,僅有一篇技術(shù)集成的相關(guān)文獻(xiàn)。
作為世界上最大的商業(yè)教學(xué)平臺(tái),Blackboard對(duì)視頻資源的支持存在很大的不足,難以滿足當(dāng)下高校在線課程設(shè)計(jì)的需求,這也是很多高校在使用Blackboard平臺(tái)時(shí)的一個(gè)痛點(diǎn)。同時(shí)相關(guān)的研究少之又少,因此有必要針對(duì)Blackboard平臺(tái)的視頻工具進(jìn)行研究與再設(shè)計(jì),以填補(bǔ)這一空白。
二、視頻工具的再設(shè)計(jì)
筆者針對(duì)當(dāng)前Blackboard視頻工具的不足之處進(jìn)行分析,并對(duì)其涉及到的流程進(jìn)行再設(shè)計(jì),實(shí)現(xiàn)將視頻功能從Blackboard平臺(tái)的耦合中獨(dú)立出來(lái),減少視頻工具對(duì)平臺(tái)本身其他功能的影響,并將Blackboard平臺(tái)與獨(dú)立出的視頻平臺(tái)進(jìn)行集成,從而提高教學(xué)平臺(tái)穩(wěn)定性,提升用戶體驗(yàn)。
1.Blackboard現(xiàn)有視頻工具分析
課程內(nèi)容工具是Blackboard平臺(tái)中最為核心的課程設(shè)計(jì)工具,所有的教學(xué)內(nèi)容均使用此工具來(lái)進(jìn)行創(chuàng)建,課程設(shè)計(jì)者通過(guò)創(chuàng)建或上傳已有的各類數(shù)字化教學(xué)內(nèi)容資源,包括文字、文檔、圖像、音頻以及視頻等資源,使用課程內(nèi)容工具按照教師的意愿對(duì)教學(xué)內(nèi)容進(jìn)行組織和排版。因此,同上傳其他類型的資源一樣,Blackboard平臺(tái)現(xiàn)有的視頻工具實(shí)際是調(diào)用資源上傳接口,將視頻作為文件資源上傳至本地服務(wù)器,同時(shí)在資源類型字段標(biāo)記為視頻資源,課程內(nèi)容頁(yè)面在加載資源的時(shí)候通過(guò)這一標(biāo)記來(lái)呈現(xiàn)視頻資源。這一模式能夠滿足最基本的視頻資源需求,但也存在以下缺陷:
(1)視頻播放對(duì)平臺(tái)穩(wěn)定性的影響
相對(duì)于教學(xué)平臺(tái)的其他功能模塊,視頻上傳、存儲(chǔ)及播放有其特殊性,隨著視頻資源及其用戶數(shù)量的增加,對(duì)服務(wù)器的I/O、帶寬、存儲(chǔ)空間的要求會(huì)急劇增加,從而影響教學(xué)平臺(tái)其他基本功能的運(yùn)行,造成系統(tǒng)等待超時(shí)甚至宕機(jī),這是非常大的故障風(fēng)險(xiǎn)點(diǎn)。
(2)視頻管理缺乏統(tǒng)一標(biāo)準(zhǔn)
在Blackboard平臺(tái)中,系統(tǒng)本身對(duì)上傳視頻的格式?jīng)]有任何過(guò)濾和限制,也沒(méi)有視頻封裝格式轉(zhuǎn)換的功能支持,用戶可以上傳任意格式的視頻甚至非視頻文件,既導(dǎo)致上傳的視頻可能無(wú)法播放,又造成了資源管理上的混亂。
(3)視頻播放的兼容性較差
Blackboard自帶視頻播放器在視頻文件的兼容性、移動(dòng)終端設(shè)備的兼容性方面都存在著一定的問(wèn)題。當(dāng)視頻資源加載時(shí),系統(tǒng)使用Flash播放器進(jìn)行視頻播放,而當(dāng)下各大主流瀏覽器正逐漸拋棄Flash這一技術(shù),導(dǎo)致某些瀏覽器無(wú)法直接播放視頻。另一方面,隨著移動(dòng)設(shè)備的普及與校園無(wú)線網(wǎng)絡(luò)的全覆蓋[3],越來(lái)越多的用戶使用各種移動(dòng)終端來(lái)訪問(wèn)系統(tǒng),而Flash播放器在移動(dòng)設(shè)備上的兼容性較差,在這些終端上往往無(wú)法正常播放。
2.Blackboard視頻工具再設(shè)計(jì)
針對(duì)上述缺陷,筆者在新的設(shè)計(jì)中將視頻服務(wù)獨(dú)立出來(lái),以接口的形式對(duì)Blackboard系統(tǒng)中的組件提供支持。同時(shí),在Blackboard中開發(fā)新的Building Block插件,實(shí)現(xiàn)調(diào)用視頻平臺(tái)上傳接口進(jìn)行視頻資源上傳,并將返回的視頻訪問(wèn)信息存入數(shù)據(jù)庫(kù),實(shí)現(xiàn)本地僅僅存放視頻引用信息,而不存放文件本身。另外,在讀取視頻文件時(shí),使用Html5視頻元素進(jìn)行視頻播放,結(jié)合視頻平臺(tái)轉(zhuǎn)碼服務(wù),實(shí)現(xiàn)視頻編碼格式的統(tǒng)一與播放的穩(wěn)定性。
三、基于Building Block技術(shù)的視頻工具開發(fā)與實(shí)現(xiàn)
基于以上系統(tǒng)架構(gòu)設(shè)計(jì),需要進(jìn)行兩項(xiàng)功能開發(fā):視頻平臺(tái)視頻上傳和轉(zhuǎn)碼的功能,基于Blackboard的Building Block插件開發(fā)。
1.獨(dú)立視頻系統(tǒng)開發(fā)
(1)基本功能分析
視頻系統(tǒng)主要提供視頻上傳和視頻訪問(wèn)功能,接收用戶在Blackboard平臺(tái)中上傳的視頻文件,處理視頻的訪問(wèn)請(qǐng)求。為實(shí)現(xiàn)統(tǒng)一視頻的編碼格式,系統(tǒng)還應(yīng)當(dāng)包含視頻編碼轉(zhuǎn)換的功能。
(2)基本類與主要成員描述
系統(tǒng)收到客戶端請(qǐng)求后,一方面要對(duì)上傳的文件進(jìn)行操作,另一方面需要記錄視頻的相關(guān)信息以及請(qǐng)求的相關(guān)參數(shù),因此基本類應(yīng)劃分為文件操作類和數(shù)據(jù)庫(kù)操作類,如圖1所示。
UploadHandler是處理視頻上傳的基本類,主要成員變量options是數(shù)組類型的數(shù)據(jù),主要描述了服務(wù)器上存儲(chǔ)視頻的路徑;成員方法中,handle_file_upload是處理視頻文件上傳的主要方法,上傳完成后,再執(zhí)行g(shù)enerate_response方法,回傳相關(guān)信息給請(qǐng)求的客戶端。
content_model是數(shù)據(jù)庫(kù)操作基本類,主要成員變量category用來(lái)記錄視頻所在的欄目,便于視頻的分類處理;成員方法add_content(data)在上傳時(shí)將視頻相關(guān)信息記錄至數(shù)據(jù)庫(kù)。
(3)數(shù)據(jù)庫(kù)設(shè)計(jì)
視頻系統(tǒng)在存儲(chǔ)視頻時(shí),需要將視頻的相關(guān)屬性存入數(shù)據(jù)庫(kù),其數(shù)據(jù)庫(kù)表結(jié)構(gòu)如表1所示。
(4)視頻轉(zhuǎn)碼
為了提升視頻播放的兼容性,需要將視頻的編碼封裝格式進(jìn)行統(tǒng)一處理。Mp4格式是當(dāng)下的主流視頻封裝格式,能夠兼容絕大多數(shù)瀏覽器[4],也是Html5技術(shù)原生支持的視頻格式,因此在本系統(tǒng)中采用Mp4作為視頻編碼封裝格式。
FFMPEG是一個(gè)集錄制、轉(zhuǎn)換和音/視頻編解碼功能為一體的開源解決方案[5],支持MPEG、DivX、MPEG4、AC3、DV、FLV等40多種編碼,AVI、MPEG、OGG、ASF等90多種解碼。因此,在本視頻系統(tǒng)中采用FFMPEG技術(shù)對(duì)用戶上傳的視頻進(jìn)行格式封裝。
(5)主要功能代碼實(shí)現(xiàn)
上傳時(shí)需要依次處理上傳請(qǐng)求的頭信息、讀取上傳文件、獲取上傳文件的屬性以及生成請(qǐng)求返回信息,定義上傳操作類UploadHandler,編寫相關(guān)函數(shù)方法,主要代碼如下:
class UploadHandler
{
……
//處理文件頭信息
public function head() {…}
//讀取上傳文件
protected function readfile($file_path) {…}
//處理上傳
protected function handle_file_upload($uploaded_file, $name, $size, $type, $error,$index = null) {…}
//生成回傳信息
protected function generate_response($content, $print_response = true) {…}
}
上傳視頻時(shí),需要將獲取的視頻文件信息寫入數(shù)據(jù)庫(kù);刪除視頻時(shí),需要將數(shù)據(jù)庫(kù)對(duì)應(yīng)的視頻信息刪除,創(chuàng)建數(shù)據(jù)庫(kù)操作類content_model,主要代碼如下:
class content_model extends model
{
//添加視頻信息
public function add_content($data,$isimport = 0) {……}
/**刪除視頻信息**/
public function delete_content($id,$file,$catid = 0) {……}
}
在代碼中對(duì)上傳的視頻編碼封裝格式進(jìn)行判斷,如果用戶上傳的是Mp4格式的視頻,則直接上傳,否則調(diào)用FFMPEG工具采用Mp4格式進(jìn)行封裝,關(guān)鍵代碼如下:
if (FFMPEG_EXT) {
if ($ext !== 'mp4') {
……
$unq_name = uniqid();
$cmd = FFMPEG_EXT . ' -i? ' . PHPCMS_PATH . 'uploadfile/video/' . $unq_name . '.' . $ext . ' -c:v libx264 -strict -2 -r ' . $r . ' ' . PHPCMS_PATH . 'uploadfile/video/' . $unq_name . '.mp4';
exec($cmd, $status);
pc_base::ftp_upload($unq_name . '.mp4');
/* 銷毀原視頻 */
@unlink('uploadfile/video/' . $unq_name . '.' . $ext);
}
$insert_name[$i] = $unq_name;
$insert[$i] = $unq_name . '.mp4';
} else{
showmessage("ffmpeg loading failed");
}
其中,為了處理同名文件和特殊字符的問(wèn)題,對(duì)上傳的文件進(jìn)行重命名。
2.Building Block插件開發(fā)
由于Blackboard是商業(yè)軟件,因此無(wú)法通過(guò)直接修改源碼的方式進(jìn)行定制開發(fā),只能通過(guò)開發(fā)Building Block插件的方式對(duì)其進(jìn)行功能拓展。一個(gè)Building Block插件實(shí)際上是一個(gè)zip或者war壓縮包,內(nèi)部包含一組功能較為完整的代碼文件。這組代碼實(shí)現(xiàn)的功能較Blackboard平臺(tái)自身相對(duì)獨(dú)立,通過(guò)引入官方提供的依賴包調(diào)用平臺(tái)的核心功能。同時(shí)官方也提供了一套標(biāo)準(zhǔn)的樣式標(biāo)簽庫(kù),能夠?qū)崿F(xiàn)Building Block插件從界面上無(wú)縫嵌入到平臺(tái)中。
在開發(fā)中,Building Block插件以Web Application項(xiàng)目的形式進(jìn)行開發(fā),開發(fā)時(shí)需要引用官方提供的依賴包,需要遵守Blackboard定義的標(biāo)準(zhǔn)。
(1)Building Block配置
在開發(fā)Building Block之前,需要對(duì)新建的Web Application依照Blackboard的開發(fā)標(biāo)準(zhǔn)進(jìn)行依賴包引用和插件入口進(jìn)行配置。Blackboard官方提供的依賴包至少需要引用bb-platform.jar和bb-common.jar。同時(shí)為了使開發(fā)的交互界面與平臺(tái)自身保持一致,需要引入Blackboard官方標(biāo)簽庫(kù)bb-taglibs。相關(guān)配置代碼如下:
<%@ taglib uri="/bbData" prefix="bbData"%>
<%@ taglib uri="/bbUI" prefix="bbUI"%>
<%@ taglib uri="/bbNG" prefix="bbNG"%>
配置Building Block入口需要在bb-manifest.xml文件中進(jìn)行配置,相關(guān)代碼如下:
……
……
(2)上傳前端開發(fā)
Blackboard平臺(tái)中使用統(tǒng)一的資源管理模塊來(lái)管理各種類型的教學(xué)資源,視頻資源在這里作為一種引用類型資源,其創(chuàng)建流程需要遵循Blackboard資源管理的流程。首先需要開發(fā)創(chuàng)建資源的頁(yè)面,主要代碼如下:
……
……
……
function OpenWin(theURL,winName,features) { window.open(theURL,winName,features)};
這段代碼中請(qǐng)求了一個(gè)上傳頁(yè)面,視頻上傳到視頻平臺(tái)之后,上傳結(jié)果信息會(huì)傳入到本頁(yè)面的表單中,該表單會(huì)提交至后臺(tái)調(diào)用資源管理模塊,將相關(guān)信息保存至Blackboard本地庫(kù)的資源表中。
視頻上傳頁(yè)面主要代碼如下:
……
視頻名稱
……
……
……
這段代碼將需要上傳的視頻信息保存在表單中,同時(shí)通過(guò)jsp技術(shù)從Blackboard后臺(tái)獲取當(dāng)前用戶信息,在上傳視頻成功后,將視頻平臺(tái)返回的視頻訪問(wèn)地址和當(dāng)前用戶信息回傳至資源創(chuàng)建頁(yè)面。
(3)上傳后端開發(fā)
在視頻上傳成功后,需要將創(chuàng)建資源頁(yè)面中獲取的視頻信息保存至Blackboard資源管理模塊涉及到的庫(kù)表中,因此上傳后端的開發(fā)也需要調(diào)用Blackboard平臺(tái)資源管理模塊的接口進(jìn)行視頻信息的保存。主要代碼如下:
import blackboard.persist.Id;
import blackboard.persist.content.ContentDbLoader.Default;//引入Blackboard持久化模塊
……
public class ContentAction {
……
private ActionForward saveContent(ActionMapping mapping, ContentForm myform, HttpServletRequest request) {
String parentContentIdStr = request.getParameter("content_id");
String courseIdStr = request.getParameter("course_id");
String courseFileName = request.getParameter("contentname");
……
try {
……
String url = "視頻平臺(tái)url" + fileids;
Content c = new Content();
……
c.setContentHandler("resource/插件名稱");
c.setUrl(url);
c.setRenderType(RenderType.URL);
blackboard.persist.content.ContentDbPersister.Default.getInstance().persist(c);
} catch (Exception var19) {
var19.printStackTrace();
}
String content_list_url = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + "Blackboard平臺(tái)資源列表路徑?" + "content_id=" + parentContentIdStr + "&course_id=" + courseIdStr + "&mode=reset";}//構(gòu)建回傳信息
……
}
這段代碼中定義了跳轉(zhuǎn)方法saveContent()來(lái)保存上傳成功視頻的相關(guān)信息至Blackboard平臺(tái)資源管理庫(kù)表,主要調(diào)用了Blackboard平臺(tái)資源管理接口類ContentDbPersister的persist的方法,保存成功后,跳轉(zhuǎn)至包含該視頻訪問(wèn)信息的資源列表頁(yè)面,用戶點(diǎn)擊視頻資源即可播放該視頻。
四、新視頻工具應(yīng)用效果
遵照Blackboard平臺(tái)的標(biāo)準(zhǔn),我們將新視頻工具以Building Block的方式進(jìn)行部署,并收集相關(guān)應(yīng)用統(tǒng)計(jì)數(shù)據(jù),觀察新工具的應(yīng)用效果。
1.增加Blackboard平臺(tái)的穩(wěn)定性
新視頻工具自2016年秋季學(xué)期正式上線,截至2019年12月10日,由新視頻工具上傳到視頻平臺(tái)的視頻共計(jì)8271個(gè),總大小1355G,日均增長(zhǎng)量約1.14G,為Blackboard平臺(tái)節(jié)省了1.3T存儲(chǔ)占用空間。同時(shí),由于視頻存儲(chǔ)在視頻平臺(tái)的服務(wù)器上,用戶觀看視頻所占用的連接數(shù)、帶寬和磁盤I/O都在視頻平臺(tái)上,減少了Blackboard平臺(tái)的性能資源消耗,增加了Blackboard平臺(tái)的穩(wěn)定性。
2.統(tǒng)一了視頻封裝的格式
在上傳視頻時(shí),新的視頻工具對(duì)視頻的格式進(jìn)行檢測(cè)和轉(zhuǎn)換,如果視頻文件不是Mp4封裝格式,則進(jìn)行轉(zhuǎn)換。最終,視頻平臺(tái)上存儲(chǔ)的視頻文件皆為Mp4封裝格式,從而統(tǒng)一了視頻存儲(chǔ)格式,如圖2所示。
3.解決了視頻播放的兼容性問(wèn)題
用戶在Blackboard平臺(tái)上訪問(wèn)視頻時(shí),視頻工具使用Html5原生video標(biāo)簽無(wú)縫播放視頻平臺(tái)上的Mp4視頻,如圖3所示。使用video標(biāo)簽元素替代原有的Flash播放器,解決了視頻播放的兼容性問(wèn)題,用戶可以自由選擇各類移動(dòng)終端來(lái)獲取教學(xué)視頻資源,如圖4所示。
五、總結(jié)與展望
本研究對(duì)Blackboard的視頻功能進(jìn)行了再設(shè)計(jì),遵照Blackboard平臺(tái)的標(biāo)準(zhǔn)開發(fā)了新的視頻工具,完善了原有視頻工具的不足,并通過(guò)對(duì)日志的分析來(lái)觀察新工具的應(yīng)用效果,為Blackboard教學(xué)平臺(tái)更好地集成視頻資源提供了實(shí)踐案例,也為其他類似平臺(tái)集成視頻資源方案提供參考。
在后續(xù)研究中,需要關(guān)注以下幾點(diǎn):首先,需要關(guān)注視頻播放技術(shù)。當(dāng)前使用的播放工具為Html5視頻標(biāo)簽元素,用戶在觀看視頻時(shí)可使用右鍵獲取視頻的播放地址,而在實(shí)際應(yīng)用中,部分教師不希望課程參與者輕易獲取到視頻訪問(wèn)地址,因此有必要開發(fā)Web視頻播放器,增加獲取視頻地址的門檻。其次,需要提升轉(zhuǎn)碼過(guò)程的靈活性。當(dāng)前在視頻的轉(zhuǎn)碼過(guò)程中保持了視頻編碼的原始參數(shù),如視頻的碼率、分辨率、幀頻等參數(shù),而在實(shí)際應(yīng)用中,部分教師并不介意改變這些參數(shù)來(lái)降低視頻文件大小以減少視頻加載時(shí)間,因此可以在轉(zhuǎn)碼時(shí)增加降低碼率等參數(shù)的選項(xiàng),為用戶提供更多選擇。此外,需要定時(shí)關(guān)注視頻平臺(tái)上剩余的存儲(chǔ)空間。與文檔、圖片類型的資源比較,視頻資源文件占用存儲(chǔ)空間相對(duì)較大,在新學(xué)期批量創(chuàng)建新課時(shí),存儲(chǔ)空間的消耗速度急劇上升,如不及時(shí)關(guān)注,磁盤空間占滿會(huì)導(dǎo)致視頻上傳失敗,嚴(yán)重影響用戶體驗(yàn),因此可以使用腳本將存儲(chǔ)占用情況定時(shí)通過(guò)郵件或短信發(fā)送給管理員,有條件還可以建設(shè)監(jiān)控系統(tǒng),更全面地監(jiān)控平臺(tái)的存儲(chǔ)狀況。
參考文獻(xiàn):
[1]鄭麗,牛英華,許霞.關(guān)于Blackboard網(wǎng)絡(luò)學(xué)堂應(yīng)用的調(diào)查與分析[J].實(shí)驗(yàn)技術(shù)與管理,2016,33(2):143-146+158.
[2]薛宇飛,黃振中,石菲.MOOC學(xué)習(xí)行為的國(guó)際比較研究——以“財(cái)務(wù)分析與決策”課程為例[J].開放教育研究,2015,21(6):80-85.
[3]劉敏娜,張倩葦.國(guó)際高等教育領(lǐng)域移動(dòng)學(xué)習(xí)研究:回顧與展望[J].開放教育研究,2016,22(6):81-92.
[4]黃伯平.跨平臺(tái)微視頻播放技術(shù)探析[J].福建廣播電視大學(xué)學(xué)報(bào),2014(1):79-84.
[5]胡聰,周甜,唐璐丹.基于FFMPEG的跨平臺(tái)視頻編解碼研究[J].武漢理工大學(xué)學(xué)報(bào),2011,33(11):139-142.
(編輯:魯利瑞)