陳少涌,林 敏,梁仕鑾
(1.暨南大學 網絡與教育技術中心,廣東 廣州 510630;2.廣州市升陽信息科技有限公司,廣東 廣州 510630)
基于開源軟件的視頻點播系統的設計與實現*
陳少涌1,林 敏1,梁仕鑾2
(1.暨南大學 網絡與教育技術中心,廣東 廣州 510630;2.廣州市升陽信息科技有限公司,廣東 廣州 510630)
本文從目前視頻點播(VOD)系統及視頻資源庫由于繁雜的視頻編碼格式給用戶帶來兼容性問題出發,針對開放源代碼軟件的優點,提出以開源軟件為核心設計開發一套視頻點播系統。該系統通過將不同編碼格式的視頻統一轉換為.flv視頻格式的方法解決兼容性問題,易用性強,功能豐富,有效降低開發部署成本,適合于在我國教育領域推廣應用。
開源軟件;視頻點播;VOD;FFmpeg
隨著網絡視頻應用的普及,視頻資源成為重要的教學素材,視頻點播(Video on Demand,VOD)也成為電化教育和遠程教學的重要手段。統一視頻文件格式,不僅有利于瀏覽器的兼容播放,降低用戶使用成本,增強界面友好性,便于網站服務器端的管理,而且視頻素材易于引用到教學中,具有重要的意義。[1]
本文主要是研究如何基于開放源代碼的軟件來構建一套支持Flash播放器的視頻點播系統,以下簡稱OpenVOD。該系統采用PHP語言,在Linux操作系統下使用FFmpeg和MEncoder進行視頻格式轉換,將不同格式的原始視頻轉換成.flv格式,供在線點播及在線教學。
本系統將設計并實現一個集視頻文件上傳、格式轉換、發布于一體的VOD平臺。
1.核心模塊設計
根據系統設計目標,該系統將由文件上傳、格式轉換及入庫發布三個核心模塊構成。[2]基于該平臺,管理員可以通過視頻上傳子模塊上傳視頻源文件,由視頻轉換子模塊實現自動對視頻的分析、轉換、生成縮略圖,由入庫發布子模塊實現視頻文件信息的入庫與發布,通過這三個步驟,用戶便可以通過計算機或其他終端瀏覽并點播視頻文件。
2.功能設計
系統根據管理員、用戶角色的不同而設計相應的功能,而視頻轉換部分則為系統自動完成的功能。主要功能列表如下:
(1)管理員功能:登錄、退出系統、個人信息管理、用戶管理、配置系統信息、配置視頻格式轉換參數、設置分類、增、刪、改、查視頻記錄、文件上傳;[3]
(2)用戶功能:注冊、登錄、退出系統、個人信息管理、點播、搜索、評級、評論、分享、收藏;
(3)系統功能:讀取配置文件、轉換視頻文件、提取視頻屬性信息(時長、大小)、生成縮略圖、添加水印、將視頻時長、縮略圖、文件地址等信息入庫。
本系統還設計實現了一系列高級功能。如在視頻中增加水印以實現對視頻版權的保護,在視頻發布方式方面增加便利的分享功能,以便于將視頻輕松地插入到其他的網頁中從而加大視頻的傳播范圍;還可以通過配置多個屬性文件來實現將同一視頻分別按不同的分辨率、幀速、碼流等參數進行格式轉換,從而生成多個版本的視頻文件,以適應不同的用戶終端。

1.系統開發平臺與技術的選擇
本系統采用開放源代碼的產品和技術進行開發,以LAMP (即 Linux、Apache、MySQL 和 PHP)和 FFmpeg 為主。服務器平臺采用Linux操作系統,Apache為Web應用服務器,內容存儲采用MySQL數據庫,視頻上傳和發布、用戶注冊登錄、內容管理等功能采用PHP語言,視頻轉換功能通過FFmpeg及MEncoder實現。
2.數據庫
本系統采用開放源代碼的MySQL數據庫來存儲視頻、系統及用戶的相關文本信息。其中,視頻信息包括視頻的標題、簡介、關鍵詞、格式、時長、大小、尺寸、縮略圖名稱、視頻文件名稱等;系統信息包括系統名稱、各編碼器地址的配置信息等;用戶信息包括用戶名、密碼、類別、注冊時間、最后登錄IP地址等。

表1 視頻信息表的字段結構
3.視頻上傳模塊
視頻上傳支持兩種方式,包括FTP上傳和Web在線上傳方式。
(1)FTP方式:為方便大批量視頻的上傳,可以采用FTP方式。為便于將上傳的視頻文件在格式轉換時同時入庫,每個視頻需同時上傳兩個文件,一個是視頻文件本身,如first.wmv;另一個是與此視頻對應的屬性信息,包括標題、簡介、關鍵詞等,為XML文本文件格式,如first.xml。系統在開始轉換時,將讀取first.xml文件內容并將各屬性添加到該視頻相應的記錄中。
(2)Web方式:由于PHP在線上傳文件受到系統安全和性能的限制,因此通常PHP語言直接上傳的都只是小文件,在本系統中通過采用開源的多文件異步上傳組件SWFUpload實現在線上傳。
4.視頻轉換模塊
文件上傳到服務器之后,系統將自動調用視頻轉換模塊實現對源文件的格式轉換,生成.flv格式的視頻文件,該格式是Flash播放器支持的視頻格式。視頻轉換模塊是OpenVOD系統的核心模塊,采用FFmpeg和MEncoder作為主要工具,輔以多種視頻編解碼器,以使其支持多種視頻格式的編碼及轉換。
(1)FFmpeg 和 MEncoder
FFmpeg是一個開源的項目,提供了錄制、編解碼、轉換音視頻的完整解決方案。它包含了先進的音頻/視頻編解碼庫libavcodec,支持大多數符合工業標準的音視頻編碼格式。MEncoder是一款開放源代碼的視頻處理軟件,是MPlayer自帶的編碼工具,它支持幾乎所有格式的視頻轉換,可以將任意格式轉換到指定的格式。在本系統中,MEncoder將與FFmpeg一起實現視頻格式轉換功能。
(2)視頻編碼組件的安裝配置
要使用FFmpeg和 MEncoder進行支持多種編碼格式,需要預先安裝一系列的編碼組件,其中FFmpeg、FFmpeg-PHP 和 MPlayer(MEncoder)是必須安裝的,其他的組件通常根據需要來安裝。

表2 系統所需安裝的編碼組件
編譯FFmpeg時,根據安裝的組件進行配置,最基本的編譯配置命令如下:
./configure--enable-libmp3lame--enable-libogg--enable-libvorbis--disable-mmx--enable-shared
如果安裝了支持多種編碼的組件,FFmpeg高級編譯配置命令如下:
./configure--prefix=/usr/local/FFmpeg--enable-gpl--enable-shared--enable-mp3lame--enable-amr_nb--enable-amr_wb--enable-amr_if2--enable-libogg--enable-vorbis--enable-xvid--enable-dts--enable-pp--enable-faad--enable-faac--enable-x264--enablepthreads--disable-ffserver--disable-ffplay
(3)視頻格式轉換流程
安裝并配置好FFmpeg和MEncoder之后,便可以實現對視頻文件的格式轉換。本系統默認采用FFmpeg進行視頻格式轉換,當遇到FFmpeg不支持的文件格式時,轉用MEncoder進行格式轉換,視頻格式轉換流程如圖2所示。

在OpenVOD系統中,FFmpeg進行格式轉換的命令如下:
$FFmpeg_cmd = "$config [path_to_FFmpeg]-i$source_video-ab 64-ar 44100-b 300k-r 30-s 720x480-sameq$publish_flv";
@exec("$FFmpeg_cmd");
該命令將調用$config[path_to_FFmpeg]地址的FFmpeg實現將$source_video文件轉換為$publish_flv,轉換后的視頻分辨率為720×480,即為標清視頻。通過調整幀速和分辨率等參數便可生成其他規格的視頻文件,增加-vhook參數則可以將指定的圖片作為水印添加到生成的視頻文件中。[4]
若FFmpeg不支持上傳的視頻文件,可改用MEncoder來進行格式轉換,OpenVOD系統中MEncoder命令格式如下:
$mencoder_cmd="$mencoder_path$source_video-o$publish_flv-of lavf-oac mp3lame-lameopts abr:br=56-ovc lavc-lavcopts vcodec=flv:vbitrate=800:mbd=2:mv0:trell:v4mv:cbp:last_pred=3-vf scale=720:480-srate 22050";
@exec("$mencoder_cmd 2>&1",$output_mencoder);
完成視頻格式轉換后,可以通過FFmpeg-php或FLVTool2來獲取視頻的時間長度。采用FFmpeg-php的命令如下:
$video_info=@new FFmpeg_movie($publish_flv);
$sec=@$video_info->getDuration();//獲取視頻文件的時間長度,以秒為單位
最后,系統采FFmpeg通過以下命令生成縮略圖:
$FFmpeg_thumbnail_cmd="$config[path_to_FFmpeg]-i$publish_flv-ss$thumb_position-t 00:00:01-s 120x90-r 1-f mjpeg$output_thumbnail";
@exec("$FFmpeg_thumbnail_cmd 2>&1",$output);
如果以上操作中間出現錯誤,則將錯誤信息記錄到日志中,并中斷程序執行;如果沒有錯誤,則將該視頻的相關信息(如新生成的視頻文件名、視頻時間長度、縮略圖文件名等)保存進MySQL數據庫中,經管理員發布后便可供用戶瀏覽及點播。
5.視頻發布模塊
在完成視頻格式轉換后,管理員還需進行文件的審核發布。當管理員使用在線上傳視頻文件的方式,則在上傳文件之前錄入該視頻的相關信息,如標題、簡介、作者等信息;當管理員使用FTP批量上傳視頻文件的方式,系統將通過讀取視頻文件對應的同名XML文件信息,將其中的視頻屬性作為視頻記錄的相應信息添加到該記錄的相應字段中。視頻轉換模塊則提供了視頻時長、新視頻文件名和縮略圖等信息,這些信息與管理員錄入信息一起構成了一個新視頻文件的完整數據庫記錄,從而可供用戶在網站前臺訪問。
當一個視頻文件存在多個不同編碼和格式的視頻時,前臺將顯示不同的文件信息供用戶選擇適用于當前網絡環境和終端環境的版本;用戶可以根據視頻標題、關鍵詞、作者等信息進行視頻搜索;可以對視頻文件添加評論和評級;可以通過開放的API實現視頻文件的分享,方便地將系統發布的視頻文件插入到其他的網站中。
商業化視頻點播解決方案高昂的實施成本嚴重制約了我國教育科研行業及中小企業在視頻應用方面的發展,而普通的視頻資源庫又存在著兼容性差和難以使用等問題導致實際利用率過低。本文所設計的OpenVOD系統目的在于低成本地實現一套先進的視頻點播系統,使其適用于大部分校園用戶的需求,解決兼容性和部署成本的問題,并可根據用戶實際應用需求進行擴展,從而可廣泛應用于遠程教育領域,具有較高的推廣價值和廣闊的應用前景。
[1]金智勇,孫樂傳,宋志明.基于校園網的視頻點播系統的構建及在教學中的應用[J].電化教育研究,2009(2):72-74.
[2]任嚴,韓臻,劉麗.基于FFMPEG的視頻轉換與發布系統[J].計算機工程與設計,2007,28(20):4962-4967.
[3]劉珺.基于校園網的視頻點播系統的設計與實現[J].昆明冶金高等專科學校學報,2009,25(3):38-42.
[4]FFmpeg.FFmpeg Documentation[OL/DB].http://ffmpeg.org/ffmpeg-doc.html,2010.8.26.

教育部直屬高校門戶網站排行榜 (數據采集日期:2011年1月26日)
G434
B
1673-8454(2011)03-0030-03
*本文為廣東省科技型中小企業技術創新專項資金項目(項目編號:2009CD019)成果。
(編輯:隗爽)