国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于開源軟件的視頻點(diǎn)播系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)*

2011-11-07 06:15陳少涌梁仕鑾
中國(guó)教育信息化 2011年3期
關(guān)鍵詞:視頻點(diǎn)播視頻文件編碼

陳少涌,林 敏,梁仕鑾

(1.暨南大學(xué) 網(wǎng)絡(luò)與教育技術(shù)中心,廣東 廣州 510630;2.廣州市升陽(yáng)信息科技有限公司,廣東 廣州 510630)

基于開源軟件的視頻點(diǎn)播系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)*

陳少涌1,林 敏1,梁仕鑾2

(1.暨南大學(xué) 網(wǎng)絡(luò)與教育技術(shù)中心,廣東 廣州 510630;2.廣州市升陽(yáng)信息科技有限公司,廣東 廣州 510630)

本文從目前視頻點(diǎn)播(VOD)系統(tǒng)及視頻資源庫(kù)由于繁雜的視頻編碼格式給用戶帶來(lái)兼容性問(wèn)題出發(fā),針對(duì)開放源代碼軟件的優(yōu)點(diǎn),提出以開源軟件為核心設(shè)計(jì)開發(fā)一套視頻點(diǎn)播系統(tǒng)。該系統(tǒng)通過(guò)將不同編碼格式的視頻統(tǒng)一轉(zhuǎn)換為.flv視頻格式的方法解決兼容性問(wèn)題,易用性強(qiáng),功能豐富,有效降低開發(fā)部署成本,適合于在我國(guó)教育領(lǐng)域推廣應(yīng)用。

開源軟件;視頻點(diǎn)播;VOD;FFmpeg

一、引言

隨著網(wǎng)絡(luò)視頻應(yīng)用的普及,視頻資源成為重要的教學(xué)素材,視頻點(diǎn)播(Video on Demand,VOD)也成為電化教育和遠(yuǎn)程教學(xué)的重要手段。統(tǒng)一視頻文件格式,不僅有利于瀏覽器的兼容播放,降低用戶使用成本,增強(qiáng)界面友好性,便于網(wǎng)站服務(wù)器端的管理,而且視頻素材易于引用到教學(xué)中,具有重要的意義。[1]

本文主要是研究如何基于開放源代碼的軟件來(lái)構(gòu)建一套支持Flash播放器的視頻點(diǎn)播系統(tǒng),以下簡(jiǎn)稱OpenVOD。該系統(tǒng)采用PHP語(yǔ)言,在Linux操作系統(tǒng)下使用FFmpeg和MEncoder進(jìn)行視頻格式轉(zhuǎn)換,將不同格式的原始視頻轉(zhuǎn)換成.flv格式,供在線點(diǎn)播及在線教學(xué)。

二、視頻點(diǎn)播系統(tǒng)的模塊及功能設(shè)計(jì)

本系統(tǒng)將設(shè)計(jì)并實(shí)現(xiàn)一個(gè)集視頻文件上傳、格式轉(zhuǎn)換、發(fā)布于一體的VOD平臺(tái)。

1.核心模塊設(shè)計(jì)

根據(jù)系統(tǒng)設(shè)計(jì)目標(biāo),該系統(tǒng)將由文件上傳、格式轉(zhuǎn)換及入庫(kù)發(fā)布三個(gè)核心模塊構(gòu)成。[2]基于該平臺(tái),管理員可以通過(guò)視頻上傳子模塊上傳視頻源文件,由視頻轉(zhuǎn)換子模塊實(shí)現(xiàn)自動(dòng)對(duì)視頻的分析、轉(zhuǎn)換、生成縮略圖,由入庫(kù)發(fā)布子模塊實(shí)現(xiàn)視頻文件信息的入庫(kù)與發(fā)布,通過(guò)這三個(gè)步驟,用戶便可以通過(guò)計(jì)算機(jī)或其他終端瀏覽并點(diǎn)播視頻文件。

2.功能設(shè)計(jì)

系統(tǒng)根據(jù)管理員、用戶角色的不同而設(shè)計(jì)相應(yīng)的功能,而視頻轉(zhuǎn)換部分則為系統(tǒng)自動(dòng)完成的功能。主要功能列表如下:

(1)管理員功能:登錄、退出系統(tǒng)、個(gè)人信息管理、用戶管理、配置系統(tǒng)信息、配置視頻格式轉(zhuǎn)換參數(shù)、設(shè)置分類、增、刪、改、查視頻記錄、文件上傳;[3]

(2)用戶功能:注冊(cè)、登錄、退出系統(tǒng)、個(gè)人信息管理、點(diǎn)播、搜索、評(píng)級(jí)、評(píng)論、分享、收藏;

(3)系統(tǒng)功能:讀取配置文件、轉(zhuǎn)換視頻文件、提取視頻屬性信息(時(shí)長(zhǎng)、大小)、生成縮略圖、添加水印、將視頻時(shí)長(zhǎng)、縮略圖、文件地址等信息入庫(kù)。

本系統(tǒng)還設(shè)計(jì)實(shí)現(xiàn)了一系列高級(jí)功能。如在視頻中增加水印以實(shí)現(xiàn)對(duì)視頻版權(quán)的保護(hù),在視頻發(fā)布方式方面增加便利的分享功能,以便于將視頻輕松地插入到其他的網(wǎng)頁(yè)中從而加大視頻的傳播范圍;還可以通過(guò)配置多個(gè)屬性文件來(lái)實(shí)現(xiàn)將同一視頻分別按不同的分辨率、幀速、碼流等參數(shù)進(jìn)行格式轉(zhuǎn)換,從而生成多個(gè)版本的視頻文件,以適應(yīng)不同的用戶終端。

三、視頻點(diǎn)播系統(tǒng)的實(shí)現(xiàn)

1.系統(tǒng)開發(fā)平臺(tái)與技術(shù)的選擇

本系統(tǒng)采用開放源代碼的產(chǎn)品和技術(shù)進(jìn)行開發(fā),以LAMP (即 Linux、Apache、MySQL 和 PHP)和 FFmpeg 為主。服務(wù)器平臺(tái)采用Linux操作系統(tǒng),Apache為Web應(yīng)用服務(wù)器,內(nèi)容存儲(chǔ)采用MySQL數(shù)據(jù)庫(kù),視頻上傳和發(fā)布、用戶注冊(cè)登錄、內(nèi)容管理等功能采用PHP語(yǔ)言,視頻轉(zhuǎn)換功能通過(guò)FFmpeg及MEncoder實(shí)現(xiàn)。

2.?dāng)?shù)據(jù)庫(kù)

本系統(tǒng)采用開放源代碼的MySQL數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)視頻、系統(tǒng)及用戶的相關(guān)文本信息。其中,視頻信息包括視頻的標(biāo)題、簡(jiǎn)介、關(guān)鍵詞、格式、時(shí)長(zhǎng)、大小、尺寸、縮略圖名稱、視頻文件名稱等;系統(tǒng)信息包括系統(tǒng)名稱、各編碼器地址的配置信息等;用戶信息包括用戶名、密碼、類別、注冊(cè)時(shí)間、最后登錄IP地址等。

表1 視頻信息表的字段結(jié)構(gòu)

3.視頻上傳模塊

視頻上傳支持兩種方式,包括FTP上傳和Web在線上傳方式。

(1)FTP方式:為方便大批量視頻的上傳,可以采用FTP方式。為便于將上傳的視頻文件在格式轉(zhuǎn)換時(shí)同時(shí)入庫(kù),每個(gè)視頻需同時(shí)上傳兩個(gè)文件,一個(gè)是視頻文件本身,如first.wmv;另一個(gè)是與此視頻對(duì)應(yīng)的屬性信息,包括標(biāo)題、簡(jiǎn)介、關(guān)鍵詞等,為XML文本文件格式,如first.xml。系統(tǒng)在開始轉(zhuǎn)換時(shí),將讀取first.xml文件內(nèi)容并將各屬性添加到該視頻相應(yīng)的記錄中。

(2)Web方式:由于PHP在線上傳文件受到系統(tǒng)安全和性能的限制,因此通常PHP語(yǔ)言直接上傳的都只是小文件,在本系統(tǒng)中通過(guò)采用開源的多文件異步上傳組件SWFUpload實(shí)現(xiàn)在線上傳。

4.視頻轉(zhuǎn)換模塊

文件上傳到服務(wù)器之后,系統(tǒng)將自動(dòng)調(diào)用視頻轉(zhuǎn)換模塊實(shí)現(xiàn)對(duì)源文件的格式轉(zhuǎn)換,生成.flv格式的視頻文件,該格式是Flash播放器支持的視頻格式。視頻轉(zhuǎn)換模塊是OpenVOD系統(tǒng)的核心模塊,采用FFmpeg和MEncoder作為主要工具,輔以多種視頻編解碼器,以使其支持多種視頻格式的編碼及轉(zhuǎn)換。

(1)FFmpeg 和 MEncoder

FFmpeg是一個(gè)開源的項(xiàng)目,提供了錄制、編解碼、轉(zhuǎn)換音視頻的完整解決方案。它包含了先進(jìn)的音頻/視頻編解碼庫(kù)libavcodec,支持大多數(shù)符合工業(yè)標(biāo)準(zhǔn)的音視頻編碼格式。MEncoder是一款開放源代碼的視頻處理軟件,是MPlayer自帶的編碼工具,它支持幾乎所有格式的視頻轉(zhuǎn)換,可以將任意格式轉(zhuǎn)換到指定的格式。在本系統(tǒng)中,MEncoder將與FFmpeg一起實(shí)現(xiàn)視頻格式轉(zhuǎn)換功能。

(2)視頻編碼組件的安裝配置

要使用FFmpeg和 MEncoder進(jìn)行支持多種編碼格式,需要預(yù)先安裝一系列的編碼組件,其中FFmpeg、FFmpeg-PHP 和 MPlayer(MEncoder)是必須安裝的,其他的組件通常根據(jù)需要來(lái)安裝。

表2 系統(tǒng)所需安裝的編碼組件

編譯FFmpeg時(shí),根據(jù)安裝的組件進(jìn)行配置,最基本的編譯配置命令如下:

./configure--enable-libmp3lame--enable-libogg--enable-libvorbis--disable-mmx--enable-shared

如果安裝了支持多種編碼的組件,F(xiàn)Fmpeg高級(jí)編譯配置命令如下:

./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)視頻格式轉(zhuǎn)換流程

安裝并配置好FFmpeg和MEncoder之后,便可以實(shí)現(xiàn)對(duì)視頻文件的格式轉(zhuǎn)換。本系統(tǒng)默認(rèn)采用FFmpeg進(jìn)行視頻格式轉(zhuǎn)換,當(dāng)遇到FFmpeg不支持的文件格式時(shí),轉(zhuǎn)用MEncoder進(jìn)行格式轉(zhuǎn)換,視頻格式轉(zhuǎn)換流程如圖2所示。

在OpenVOD系統(tǒng)中,F(xiàn)Fmpeg進(jìn)行格式轉(zhuǎn)換的命令如下:

$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");

該命令將調(diào)用$config[path_to_FFmpeg]地址的FFmpeg實(shí)現(xiàn)將$source_video文件轉(zhuǎn)換為$publish_flv,轉(zhuǎn)換后的視頻分辨率為720×480,即為標(biāo)清視頻。通過(guò)調(diào)整幀速和分辨率等參數(shù)便可生成其他規(guī)格的視頻文件,增加-vhook參數(shù)則可以將指定的圖片作為水印添加到生成的視頻文件中。[4]

若FFmpeg不支持上傳的視頻文件,可改用MEncoder來(lái)進(jìn)行格式轉(zhuǎn)換,OpenVOD系統(tǒng)中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);

完成視頻格式轉(zhuǎn)換后,可以通過(guò)FFmpeg-php或FLVTool2來(lái)獲取視頻的時(shí)間長(zhǎng)度。采用FFmpeg-php的命令如下:

$video_info=@new FFmpeg_movie($publish_flv);

$sec=@$video_info->getDuration();//獲取視頻文件的時(shí)間長(zhǎng)度,以秒為單位

最后,系統(tǒng)采FFmpeg通過(guò)以下命令生成縮略圖:

$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);

如果以上操作中間出現(xiàn)錯(cuò)誤,則將錯(cuò)誤信息記錄到日志中,并中斷程序執(zhí)行;如果沒有錯(cuò)誤,則將該視頻的相關(guān)信息(如新生成的視頻文件名、視頻時(shí)間長(zhǎng)度、縮略圖文件名等)保存進(jìn)MySQL數(shù)據(jù)庫(kù)中,經(jīng)管理員發(fā)布后便可供用戶瀏覽及點(diǎn)播。

5.視頻發(fā)布模塊

在完成視頻格式轉(zhuǎn)換后,管理員還需進(jìn)行文件的審核發(fā)布。當(dāng)管理員使用在線上傳視頻文件的方式,則在上傳文件之前錄入該視頻的相關(guān)信息,如標(biāo)題、簡(jiǎn)介、作者等信息;當(dāng)管理員使用FTP批量上傳視頻文件的方式,系統(tǒng)將通過(guò)讀取視頻文件對(duì)應(yīng)的同名XML文件信息,將其中的視頻屬性作為視頻記錄的相應(yīng)信息添加到該記錄的相應(yīng)字段中。視頻轉(zhuǎn)換模塊則提供了視頻時(shí)長(zhǎng)、新視頻文件名和縮略圖等信息,這些信息與管理員錄入信息一起構(gòu)成了一個(gè)新視頻文件的完整數(shù)據(jù)庫(kù)記錄,從而可供用戶在網(wǎng)站前臺(tái)訪問(wèn)。

當(dāng)一個(gè)視頻文件存在多個(gè)不同編碼和格式的視頻時(shí),前臺(tái)將顯示不同的文件信息供用戶選擇適用于當(dāng)前網(wǎng)絡(luò)環(huán)境和終端環(huán)境的版本;用戶可以根據(jù)視頻標(biāo)題、關(guān)鍵詞、作者等信息進(jìn)行視頻搜索;可以對(duì)視頻文件添加評(píng)論和評(píng)級(jí);可以通過(guò)開放的API實(shí)現(xiàn)視頻文件的分享,方便地將系統(tǒng)發(fā)布的視頻文件插入到其他的網(wǎng)站中。

五、結(jié)束語(yǔ)

商業(yè)化視頻點(diǎn)播解決方案高昂的實(shí)施成本嚴(yán)重制約了我國(guó)教育科研行業(yè)及中小企業(yè)在視頻應(yīng)用方面的發(fā)展,而普通的視頻資源庫(kù)又存在著兼容性差和難以使用等問(wèn)題導(dǎo)致實(shí)際利用率過(guò)低。本文所設(shè)計(jì)的OpenVOD系統(tǒng)目的在于低成本地實(shí)現(xiàn)一套先進(jìn)的視頻點(diǎn)播系統(tǒng),使其適用于大部分校園用戶的需求,解決兼容性和部署成本的問(wèn)題,并可根據(jù)用戶實(shí)際應(yīng)用需求進(jìn)行擴(kuò)展,從而可廣泛應(yīng)用于遠(yuǎn)程教育領(lǐng)域,具有較高的推廣價(jià)值和廣闊的應(yīng)用前景。

[1]金智勇,孫樂傳,宋志明.基于校園網(wǎng)的視頻點(diǎn)播系統(tǒng)的構(gòu)建及在教學(xué)中的應(yīng)用[J].電化教育研究,2009(2):72-74.

[2]任嚴(yán),韓臻,劉麗.基于FFMPEG的視頻轉(zhuǎn)換與發(fā)布系統(tǒng)[J].計(jì)算機(jī)工程與設(shè)計(jì),2007,28(20):4962-4967.

[3]劉珺.基于校園網(wǎng)的視頻點(diǎn)播系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].昆明冶金高等??茖W(xué)校學(xué)報(bào),2009,25(3):38-42.

[4]FFmpeg.FFmpeg Documentation[OL/DB].http://ffmpeg.org/ffmpeg-doc.html,2010.8.26.

教育部直屬高校門戶網(wǎng)站排行榜 (數(shù)據(jù)采集日期:2011年1月26日)

G434

B

1673-8454(2011)03-0030-03

*本文為廣東省科技型中小企業(yè)技術(shù)創(chuàng)新專項(xiàng)資金項(xiàng)目(項(xiàng)目編號(hào):2009CD019)成果。

(編輯:隗爽)

猜你喜歡
視頻點(diǎn)播視頻文件編碼
流媒體視頻文件相似性識(shí)別的方法
隨心定制視頻文件的縮略圖
基于SAR-SIFT和快速稀疏編碼的合成孔徑雷達(dá)圖像配準(zhǔn)
今年訂閱視頻點(diǎn)播收入將超票房收入
《全元詩(shī)》未編碼疑難字考辨十五則
子帶編碼在圖像壓縮編碼中的應(yīng)用
全球觀眾已疲于選擇新的流媒體平臺(tái)
Genome and healthcare
快速檢索,抓取電影中的精彩篇章
基于Web的流媒體視頻點(diǎn)播系統(tǒng)在校園網(wǎng)絡(luò)中的運(yùn)用