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