李軍廷
摘 要: 最近幾年,數(shù)字視頻行業(yè)的發(fā)展飛速,數(shù)字視頻攝像機(jī)逐漸成為人們生活中一個(gè)重要的組成部分。與此同時(shí),視頻的格式與編碼方式也隨之增加,F(xiàn)FMPEG的問世促進(jìn)了音視頻之間的轉(zhuǎn)換。在此主要研究在Linux操作系統(tǒng)下如何進(jìn)行FFMPEG的安裝、編譯,如何利用FFMPEG平臺(tái)進(jìn)行視頻格式間的轉(zhuǎn)換,生產(chǎn)效率高、配置簡(jiǎn)單、容錯(cuò)性強(qiáng)是該視頻轉(zhuǎn)換與發(fā)布的主要特點(diǎn),同時(shí)系統(tǒng)還可以對(duì)視頻進(jìn)行壓縮,且壓縮效率很高,能夠明顯提高網(wǎng)絡(luò)傳輸效率。
關(guān)鍵詞: 視頻; 音頻/視頻轉(zhuǎn)換; 流媒體; FFMPEG
中圖分類號(hào): TN919?34 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2014)18?0023?03
Establishing of streaming media server by FFMPEG technology
LI Jun?ting
(Fire Brigade of Hebei Province, Shijiazhuang 050035, China)
Abstruct:In recent years, the rapid development of the digital video industry, digital video cameras become an important part in people's lives gradually. Meanwhile, the video format and encoding mode also increases. However, the advent of FFMPEG promotes the conversion between audio and video. How to install and compile FFMPEG under the Linux operating system, and how to use FFMPEG platform to convert between video formats are studies in this paper. High production efficiency, simple configuration and strong fault?tolerant are the main features of the video converter and release. The system can also compress video, has high compression efficiency, and can significantly improve the network transmission efficiency.
Keywords: video; transformation between audio and video; streaming media; FFMPEG
信息技術(shù)的發(fā)展很大程度地改變了人們的生活方式。當(dāng)前,手機(jī)走進(jìn)了人們的視野,成為人們?nèi)粘I畈豢苫蛉钡囊徊糠?。而且現(xiàn)在的手機(jī)制造者越來越看重它的娛樂價(jià)值,手機(jī)功能的日漸強(qiáng)大讓人們意識(shí)到用它來觀看電視絕對(duì)不再是什么奢望。然而由于手機(jī)某些功能的限制,并非任何格式的視頻都可以播放出來,況且手機(jī)的內(nèi)存也是有限的,無法存儲(chǔ)大容量的電影,因此上就需要轉(zhuǎn)換和壓縮視頻的格式。為了能夠讓用戶更為方便地預(yù)覽視頻,就需要把其轉(zhuǎn)換成FLV格式[1]。
本文主要介紹視頻轉(zhuǎn)換系統(tǒng)在Linux操作系統(tǒng)下運(yùn)用Java語(yǔ)言,通過FFMPEG平臺(tái)研發(fā)而成的。這樣用戶就可以在線播放視頻,也可以是下載到手機(jī)上來播放。
1 系統(tǒng)的目的
本系統(tǒng)提供了一個(gè)視頻轉(zhuǎn)換,上傳,發(fā)布一體化的平臺(tái),在這個(gè)平臺(tái)上,管理員在上傳完源視頻后,源視頻就會(huì)被自動(dòng)轉(zhuǎn)換系統(tǒng)進(jìn)行相應(yīng)的分析與轉(zhuǎn)換,隨之會(huì)產(chǎn)生視頻縮略圖。之后轉(zhuǎn)換過后的視頻就會(huì)被視頻發(fā)布系統(tǒng)在網(wǎng)絡(luò)上進(jìn)行發(fā)布。最后用戶就可以在手機(jī)或者是電腦上觀看瀏覽[2]。編碼,分辨率,幀數(shù)等屬性的制定其實(shí)是系統(tǒng)利用設(shè)備描述文件來制定的。多個(gè)目標(biāo)文件可以同時(shí)輸出,自動(dòng)地在許多不同的設(shè)備與其用途之間做調(diào)配,選擇最優(yōu)的文件質(zhì)量和文件尺寸。視頻還可以通過自動(dòng)分割來滿足不同設(shè)備的不同需要,提升用戶的使用質(zhì)量,在視頻中添加水印之后還能夠保護(hù)所有人的權(quán)益。
2 系統(tǒng)設(shè)計(jì)
2.1 功能方面的設(shè)計(jì)
在視頻的上傳,轉(zhuǎn)換與發(fā)布上,本系統(tǒng)為用戶提供的服務(wù)相當(dāng)完整。FIP方式和Web方式是視頻上傳的兩種方式。FIP方式的上傳速度很快,且適合上傳大容量的視頻;Web方式上傳相對(duì)簡(jiǎn)單方便一些,適合上傳的是單個(gè)的視頻文件。所謂視頻文件的轉(zhuǎn)換,就是把源視頻轉(zhuǎn)換成需要的其他格式的視頻。Web和WAP兩種發(fā)布方式既可以供用戶通過手機(jī)瀏覽,也可以在網(wǎng)上瀏覽。
2.2 性能方面的設(shè)計(jì)
該系統(tǒng)支持并發(fā)計(jì)算,在單個(gè)服務(wù)器上用戶可以并發(fā)多個(gè)請(qǐng)求。而且包含隊(duì)列的管理與防阻塞的機(jī)制。利用多臺(tái)服務(wù)器進(jìn)行分布計(jì)算和并發(fā)式計(jì)算可以進(jìn)行量視頻的轉(zhuǎn)換,也可以通過管理接口,包括性能,日志,負(fù)載報(bào)告等[3]。
3 系統(tǒng)的實(shí)現(xiàn)
系統(tǒng)邏輯結(jié)構(gòu)圖如圖1所示。
圖1 系統(tǒng)整體結(jié)構(gòu)
3.1 系統(tǒng)研發(fā)平臺(tái)
系統(tǒng)的研發(fā)是在Linux系統(tǒng)下進(jìn)行的,采用[JSP+Tomeat]的架構(gòu)來進(jìn)行視頻的上傳和發(fā)布的。視頻的轉(zhuǎn)換采用Java作為開發(fā)語(yǔ)言,通過操作FFMPEG系統(tǒng)來實(shí)現(xiàn)。
3.2 視頻的上傳
視頻的上傳方式有兩種:FTP方式和Web方式:
FTP方式:適合于對(duì)大批量的視頻進(jìn)行上傳。在視頻上傳的過程中,每一個(gè)視頻對(duì)應(yīng)的有兩個(gè)文件,一個(gè)就是視頻文件其本身,而另外一個(gè)就是與之對(duì)應(yīng)的相關(guān)屬性信息,有簡(jiǎn)介,標(biāo)題,標(biāo)簽等。比如1.avi,1.txt就是一個(gè)視頻對(duì)應(yīng)的兩個(gè)文件。
Web方式:主要適合于上傳單個(gè)視頻。在上傳系統(tǒng)中通過采用[spsmartupload]件,可以方便的對(duì)文件進(jìn)行上傳。
3.3 數(shù)據(jù)庫(kù)
系統(tǒng)的后臺(tái)數(shù)據(jù)庫(kù)為Oracle 10G,主要儲(chǔ)存視頻的相關(guān)信息。包括有視頻的標(biāo)簽、簡(jiǎn)介、標(biāo)題、格式、大小、時(shí)長(zhǎng)、尺寸等。
3.4 視頻轉(zhuǎn)換
系統(tǒng)的核心就是視頻轉(zhuǎn)換。其主要功能就是把上傳的視頻轉(zhuǎn)換成需要的各種格式,如3GP格式、FLV格式等。轉(zhuǎn)換時(shí)主要就是運(yùn)用的就是FFMPEGJ進(jìn)行的。以下是視頻轉(zhuǎn)換的流程圖如圖2所示。
FFMPEG簡(jiǎn)介:FFMPEG作為一個(gè)視頻,音頻轉(zhuǎn)換器,可支持絕大多數(shù)符合工業(yè)標(biāo)準(zhǔn)的編碼,還能夠從一種格式轉(zhuǎn)換成另外的一種格式[4],并能利用攝像頭捕獲到音頻,視頻等。用FFMPEG進(jìn)行視頻轉(zhuǎn)換的前提就是對(duì)FFMPEG的下載,安裝,編譯要正確,F(xiàn)FMPEG的最新版本可以通過SVN方式進(jìn)行下載,SVN要在LINUX系統(tǒng)下安裝,成功安裝后執(zhí)行命令:
svn checkout svmsvamphyerhpqu ffmljghnmk ffmpcg
圖2 視頻轉(zhuǎn)換模塊流程
通過一定時(shí)間的下載,目錄下面就會(huì)產(chǎn)生一個(gè)名為ffmpeg的文件夾,這就是FFMPEG源文件。如果下載和安裝了以下文件,就會(huì)使ffmpeg能夠支持更多格式之間的轉(zhuǎn)換。以下文件也需要下載并安裝:[26204-510.zip],[26073-510.zip],[lame.tar.gz],[xvidcore-1.1.0.zip],[zlib-1.2.3.tar.gz],[libtheora.tar.gz],[libvorbis-1.1.1.tar.gz],[libogg-1.1.1.tar.gz],[faac-1.24.tar.gz],[faad2-2.0.tar.gz],[a52dec-0.7.4.tar],[all-20061022.tar]等文件,安裝好這些文件后就能夠進(jìn)行FFPEG的編譯工作。3GP是絕大多數(shù)手機(jī)都支持的格式,而要想讓本系統(tǒng)支持3GP格式,編譯的時(shí)候也要加上[-enable-amr_nb-enable-amr_wb]參數(shù),最后,完整的編譯命令為:
[./configure-enable-shared-enable-mp3lame-enable-libogg-enable-vorbis]
[enable-faad-enable-faac-enable-xvid-enable-a52][enable-amr_nb-fixed-enable-arm_wb-enable-amr_if2-enable-gpl-cpu=i686 make]
[make] [install]
通過以下測(cè)試可以檢測(cè)到安裝的是否成功,先上傳一個(gè)視頻文件,如test.avi,執(zhí)行以下的命令:
[ffmpeg-itest.avi-acodecaac-ar8000-ac1-ab8-qscale5-s176*144-vcodech263-r10-g180test.3gp]
要是視頻能夠成功轉(zhuǎn)換,那就表明FFMPEG已經(jīng)安裝成功了。下一步就可以根據(jù)具體的需要進(jìn)行視頻轉(zhuǎn)換了。FFMPEG的命令如下:
[ffmpeg[[options][-iinput_file]]???{[options]output_file}???]
對(duì)于那些輸入的原始文件,可能需要格式選項(xiàng)。[ffmpeg]在缺省的情況下會(huì)盡量地進(jìn)行無損轉(zhuǎn)換,輸出與輸入相同的音頻,視頻參數(shù)。為了使經(jīng)過轉(zhuǎn)換的視頻質(zhì)量盡最大可能的好,默認(rèn)配置通常不會(huì)被采用,而是要根據(jù)視頻的不同,采用最佳的配置參數(shù)。
視頻轉(zhuǎn)換中,運(yùn)用Java的防阻塞機(jī)制與多線程機(jī)制。首先由調(diào)度程序[JobQueue]從源文件目錄[Source_File]下轉(zhuǎn)移一個(gè)尚未轉(zhuǎn)換的視頻和對(duì)應(yīng)屬性的文件到臨時(shí)文件夾[Temp_File]下,[JobQueue]把文件參數(shù)傳給轉(zhuǎn)換程序[Convert_Robot],由[Convert_Robot]來進(jìn)行視頻的轉(zhuǎn)換。[Convert_Robot]首先利用FFMPEG命令讀取視頻的屬性信息,包括時(shí)長(zhǎng)、格式、尺寸、幀速等參數(shù),然后根據(jù)這些參數(shù)來進(jìn)行視頻轉(zhuǎn)換。根據(jù)系統(tǒng)的需要,每個(gè)視頻會(huì)出現(xiàn)4種版本的視頻普通版3GP,清晰版3GP,NV格式的,快速版3GP,如此一來就可以滿足不同的用戶的不同需要。3GP格式的主要針對(duì)手機(jī)用戶,可以供他們下載到手機(jī)上觀看。而NV格式主要是為了供用戶在網(wǎng)上直接觀看視頻。對(duì)于那些過長(zhǎng)的視頻,系統(tǒng)會(huì)進(jìn)行自動(dòng)地截取,來滿足用戶下載時(shí)在時(shí)間上的需求。為了保護(hù)版權(quán)所有人的權(quán)益,在視頻的轉(zhuǎn)換過程中可以加入水印。同時(shí)還截取了每個(gè)視頻的第一秒作為此視頻的縮略圖。視頻轉(zhuǎn)換完成之后,轉(zhuǎn)換成功的視頻會(huì)被放入Publish_File文件夾中。在Image文件夾下放入縮略圖,同時(shí)也把屬性文件中的簡(jiǎn)介、視頻標(biāo)題、標(biāo)簽等信息儲(chǔ)存到Oracle數(shù)據(jù)庫(kù)里。要是視頻轉(zhuǎn)換發(fā)生了錯(cuò)誤,錯(cuò)誤的信息就會(huì)被記錄到日志文件中。同時(shí),轉(zhuǎn)換系統(tǒng)還可以根據(jù)服務(wù)器的負(fù)載情況靈活地調(diào)整線程,爭(zhēng)取轉(zhuǎn)換視頻的效率最高[5]。
3.5 視頻發(fā)布
用戶可以在視頻發(fā)布模塊看到最后的轉(zhuǎn)換產(chǎn)品。為了便于用戶觀看視頻,視頻發(fā)布模塊提供了兩種方式:通過互聯(lián)網(wǎng)在線觀看和下載到手機(jī)上觀看。使用電腦觀看的用戶可以直接點(diǎn)擊Flash格式進(jìn)行在線觀看,因?yàn)镕lash格式的視頻完全不需要下載就可以直接觀看。對(duì)于手機(jī)用戶,可以在三種3GP格式中選出一種進(jìn)行下載。與此同時(shí),這兩種方式都有個(gè)自動(dòng)的搜索入口,用戶可以進(jìn)入搜索入口來搜索自己想要的視頻。這個(gè)搜索入口可以索引數(shù)據(jù)庫(kù)中的視頻信息,它采用的是一種比較先進(jìn)的索引技術(shù),即Lucene索引技術(shù),以便用戶能夠方便而又快捷地搜索到自己所需要的視頻[6]。
4 結(jié) 語(yǔ)
生產(chǎn)效率高、配置簡(jiǎn)單、容錯(cuò)性強(qiáng)是本視頻轉(zhuǎn)換與發(fā)布的主要特點(diǎn)。線程數(shù)的控制可以通過配置文件來進(jìn)行。轉(zhuǎn)換速度得到很大地提高,與此同時(shí)還有超時(shí)機(jī)制。經(jīng)過測(cè)試,在一臺(tái)內(nèi)存為1 GB,Pentimu 4,CPU 293 GHz的 PC上,一小時(shí)大約能夠轉(zhuǎn)換300個(gè)視頻,這樣的轉(zhuǎn)換速度非常地接近實(shí)時(shí)轉(zhuǎn)換。該系統(tǒng)還可以對(duì)視頻進(jìn)行壓縮,且壓縮效率很高,用H.263的編碼標(biāo)準(zhǔn),一個(gè)大小為20 MB的視頻轉(zhuǎn)換成3GP格式之后,在手機(jī)觀看質(zhì)量不受影響的前提下,大約能夠壓縮到400 KB的大小,這樣很大程度地節(jié)約了網(wǎng)絡(luò)傳輸?shù)臅r(shí)間,明顯提高了網(wǎng)絡(luò)傳輸?shù)男?。該系統(tǒng)經(jīng)過稍微的改變之后,能夠執(zhí)行更為復(fù)雜的功能?,F(xiàn)今越來越多的手機(jī)都能夠支持視頻播放,且用戶也越來越習(xí)慣于在手機(jī)上觀看視頻,因此上視頻的需求量將會(huì)越來越大,使用此系統(tǒng)的市場(chǎng)前景相當(dāng)廣闊。
參考文獻(xiàn)
[1] 胡成,任平安,李文莉.基于Android系統(tǒng)的FFmpeg多媒體同步傳輸算法研究[J].計(jì)算機(jī)技術(shù)與發(fā)展,2011(10):85?87.
[2] 劉建敏,楊斌,王俊麗.嵌入式Linux下基于FFmPeg的視頻硬件編解碼[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2011(6):28?31.
[3] 王瑩,李莉,王華.Symbian平臺(tái)下基于FFmpeg的H.264解碼器的移植[J].現(xiàn)代電子技術(shù),2011,34(11):43?46.
[4] 何圓圓,何凱.基于FFmpeg的H.264視頻解碼器的研究與實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),2012(35):67?69.
[5] 王洪波.搭建流媒體服務(wù)器[J].安徽電子信息職業(yè)技術(shù)學(xué)院學(xué)報(bào),2005(6):95?96.
[6] 向偉昌.流媒體服務(wù)器性能測(cè)評(píng)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].長(zhǎng)沙:國(guó)防科學(xué)技術(shù)大學(xué),2004.
FTP方式:適合于對(duì)大批量的視頻進(jìn)行上傳。在視頻上傳的過程中,每一個(gè)視頻對(duì)應(yīng)的有兩個(gè)文件,一個(gè)就是視頻文件其本身,而另外一個(gè)就是與之對(duì)應(yīng)的相關(guān)屬性信息,有簡(jiǎn)介,標(biāo)題,標(biāo)簽等。比如1.avi,1.txt就是一個(gè)視頻對(duì)應(yīng)的兩個(gè)文件。
Web方式:主要適合于上傳單個(gè)視頻。在上傳系統(tǒng)中通過采用[spsmartupload]件,可以方便的對(duì)文件進(jìn)行上傳。
3.3 數(shù)據(jù)庫(kù)
系統(tǒng)的后臺(tái)數(shù)據(jù)庫(kù)為Oracle 10G,主要儲(chǔ)存視頻的相關(guān)信息。包括有視頻的標(biāo)簽、簡(jiǎn)介、標(biāo)題、格式、大小、時(shí)長(zhǎng)、尺寸等。
3.4 視頻轉(zhuǎn)換
系統(tǒng)的核心就是視頻轉(zhuǎn)換。其主要功能就是把上傳的視頻轉(zhuǎn)換成需要的各種格式,如3GP格式、FLV格式等。轉(zhuǎn)換時(shí)主要就是運(yùn)用的就是FFMPEGJ進(jìn)行的。以下是視頻轉(zhuǎn)換的流程圖如圖2所示。
FFMPEG簡(jiǎn)介:FFMPEG作為一個(gè)視頻,音頻轉(zhuǎn)換器,可支持絕大多數(shù)符合工業(yè)標(biāo)準(zhǔn)的編碼,還能夠從一種格式轉(zhuǎn)換成另外的一種格式[4],并能利用攝像頭捕獲到音頻,視頻等。用FFMPEG進(jìn)行視頻轉(zhuǎn)換的前提就是對(duì)FFMPEG的下載,安裝,編譯要正確,F(xiàn)FMPEG的最新版本可以通過SVN方式進(jìn)行下載,SVN要在LINUX系統(tǒng)下安裝,成功安裝后執(zhí)行命令:
svn checkout svmsvamphyerhpqu ffmljghnmk ffmpcg
圖2 視頻轉(zhuǎn)換模塊流程
通過一定時(shí)間的下載,目錄下面就會(huì)產(chǎn)生一個(gè)名為ffmpeg的文件夾,這就是FFMPEG源文件。如果下載和安裝了以下文件,就會(huì)使ffmpeg能夠支持更多格式之間的轉(zhuǎn)換。以下文件也需要下載并安裝:[26204-510.zip],[26073-510.zip],[lame.tar.gz],[xvidcore-1.1.0.zip],[zlib-1.2.3.tar.gz],[libtheora.tar.gz],[libvorbis-1.1.1.tar.gz],[libogg-1.1.1.tar.gz],[faac-1.24.tar.gz],[faad2-2.0.tar.gz],[a52dec-0.7.4.tar],[all-20061022.tar]等文件,安裝好這些文件后就能夠進(jìn)行FFPEG的編譯工作。3GP是絕大多數(shù)手機(jī)都支持的格式,而要想讓本系統(tǒng)支持3GP格式,編譯的時(shí)候也要加上[-enable-amr_nb-enable-amr_wb]參數(shù),最后,完整的編譯命令為:
[./configure-enable-shared-enable-mp3lame-enable-libogg-enable-vorbis]
[enable-faad-enable-faac-enable-xvid-enable-a52][enable-amr_nb-fixed-enable-arm_wb-enable-amr_if2-enable-gpl-cpu=i686 make]
[make] [install]
通過以下測(cè)試可以檢測(cè)到安裝的是否成功,先上傳一個(gè)視頻文件,如test.avi,執(zhí)行以下的命令:
[ffmpeg-itest.avi-acodecaac-ar8000-ac1-ab8-qscale5-s176*144-vcodech263-r10-g180test.3gp]
要是視頻能夠成功轉(zhuǎn)換,那就表明FFMPEG已經(jīng)安裝成功了。下一步就可以根據(jù)具體的需要進(jìn)行視頻轉(zhuǎn)換了。FFMPEG的命令如下:
[ffmpeg[[options][-iinput_file]]???{[options]output_file}???]
對(duì)于那些輸入的原始文件,可能需要格式選項(xiàng)。[ffmpeg]在缺省的情況下會(huì)盡量地進(jìn)行無損轉(zhuǎn)換,輸出與輸入相同的音頻,視頻參數(shù)。為了使經(jīng)過轉(zhuǎn)換的視頻質(zhì)量盡最大可能的好,默認(rèn)配置通常不會(huì)被采用,而是要根據(jù)視頻的不同,采用最佳的配置參數(shù)。
視頻轉(zhuǎn)換中,運(yùn)用Java的防阻塞機(jī)制與多線程機(jī)制。首先由調(diào)度程序[JobQueue]從源文件目錄[Source_File]下轉(zhuǎn)移一個(gè)尚未轉(zhuǎn)換的視頻和對(duì)應(yīng)屬性的文件到臨時(shí)文件夾[Temp_File]下,[JobQueue]把文件參數(shù)傳給轉(zhuǎn)換程序[Convert_Robot],由[Convert_Robot]來進(jìn)行視頻的轉(zhuǎn)換。[Convert_Robot]首先利用FFMPEG命令讀取視頻的屬性信息,包括時(shí)長(zhǎng)、格式、尺寸、幀速等參數(shù),然后根據(jù)這些參數(shù)來進(jìn)行視頻轉(zhuǎn)換。根據(jù)系統(tǒng)的需要,每個(gè)視頻會(huì)出現(xiàn)4種版本的視頻普通版3GP,清晰版3GP,NV格式的,快速版3GP,如此一來就可以滿足不同的用戶的不同需要。3GP格式的主要針對(duì)手機(jī)用戶,可以供他們下載到手機(jī)上觀看。而NV格式主要是為了供用戶在網(wǎng)上直接觀看視頻。對(duì)于那些過長(zhǎng)的視頻,系統(tǒng)會(huì)進(jìn)行自動(dòng)地截取,來滿足用戶下載時(shí)在時(shí)間上的需求。為了保護(hù)版權(quán)所有人的權(quán)益,在視頻的轉(zhuǎn)換過程中可以加入水印。同時(shí)還截取了每個(gè)視頻的第一秒作為此視頻的縮略圖。視頻轉(zhuǎn)換完成之后,轉(zhuǎn)換成功的視頻會(huì)被放入Publish_File文件夾中。在Image文件夾下放入縮略圖,同時(shí)也把屬性文件中的簡(jiǎn)介、視頻標(biāo)題、標(biāo)簽等信息儲(chǔ)存到Oracle數(shù)據(jù)庫(kù)里。要是視頻轉(zhuǎn)換發(fā)生了錯(cuò)誤,錯(cuò)誤的信息就會(huì)被記錄到日志文件中。同時(shí),轉(zhuǎn)換系統(tǒng)還可以根據(jù)服務(wù)器的負(fù)載情況靈活地調(diào)整線程,爭(zhēng)取轉(zhuǎn)換視頻的效率最高[5]。
3.5 視頻發(fā)布
用戶可以在視頻發(fā)布模塊看到最后的轉(zhuǎn)換產(chǎn)品。為了便于用戶觀看視頻,視頻發(fā)布模塊提供了兩種方式:通過互聯(lián)網(wǎng)在線觀看和下載到手機(jī)上觀看。使用電腦觀看的用戶可以直接點(diǎn)擊Flash格式進(jìn)行在線觀看,因?yàn)镕lash格式的視頻完全不需要下載就可以直接觀看。對(duì)于手機(jī)用戶,可以在三種3GP格式中選出一種進(jìn)行下載。與此同時(shí),這兩種方式都有個(gè)自動(dòng)的搜索入口,用戶可以進(jìn)入搜索入口來搜索自己想要的視頻。這個(gè)搜索入口可以索引數(shù)據(jù)庫(kù)中的視頻信息,它采用的是一種比較先進(jìn)的索引技術(shù),即Lucene索引技術(shù),以便用戶能夠方便而又快捷地搜索到自己所需要的視頻[6]。
4 結(jié) 語(yǔ)
生產(chǎn)效率高、配置簡(jiǎn)單、容錯(cuò)性強(qiáng)是本視頻轉(zhuǎn)換與發(fā)布的主要特點(diǎn)。線程數(shù)的控制可以通過配置文件來進(jìn)行。轉(zhuǎn)換速度得到很大地提高,與此同時(shí)還有超時(shí)機(jī)制。經(jīng)過測(cè)試,在一臺(tái)內(nèi)存為1 GB,Pentimu 4,CPU 293 GHz的 PC上,一小時(shí)大約能夠轉(zhuǎn)換300個(gè)視頻,這樣的轉(zhuǎn)換速度非常地接近實(shí)時(shí)轉(zhuǎn)換。該系統(tǒng)還可以對(duì)視頻進(jìn)行壓縮,且壓縮效率很高,用H.263的編碼標(biāo)準(zhǔn),一個(gè)大小為20 MB的視頻轉(zhuǎn)換成3GP格式之后,在手機(jī)觀看質(zhì)量不受影響的前提下,大約能夠壓縮到400 KB的大小,這樣很大程度地節(jié)約了網(wǎng)絡(luò)傳輸?shù)臅r(shí)間,明顯提高了網(wǎng)絡(luò)傳輸?shù)男?。該系統(tǒng)經(jīng)過稍微的改變之后,能夠執(zhí)行更為復(fù)雜的功能?,F(xiàn)今越來越多的手機(jī)都能夠支持視頻播放,且用戶也越來越習(xí)慣于在手機(jī)上觀看視頻,因此上視頻的需求量將會(huì)越來越大,使用此系統(tǒng)的市場(chǎng)前景相當(dāng)廣闊。
參考文獻(xiàn)
[1] 胡成,任平安,李文莉.基于Android系統(tǒng)的FFmpeg多媒體同步傳輸算法研究[J].計(jì)算機(jī)技術(shù)與發(fā)展,2011(10):85?87.
[2] 劉建敏,楊斌,王俊麗.嵌入式Linux下基于FFmPeg的視頻硬件編解碼[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2011(6):28?31.
[3] 王瑩,李莉,王華.Symbian平臺(tái)下基于FFmpeg的H.264解碼器的移植[J].現(xiàn)代電子技術(shù),2011,34(11):43?46.
[4] 何圓圓,何凱.基于FFmpeg的H.264視頻解碼器的研究與實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),2012(35):67?69.
[5] 王洪波.搭建流媒體服務(wù)器[J].安徽電子信息職業(yè)技術(shù)學(xué)院學(xué)報(bào),2005(6):95?96.
[6] 向偉昌.流媒體服務(wù)器性能測(cè)評(píng)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].長(zhǎng)沙:國(guó)防科學(xué)技術(shù)大學(xué),2004.
FTP方式:適合于對(duì)大批量的視頻進(jìn)行上傳。在視頻上傳的過程中,每一個(gè)視頻對(duì)應(yīng)的有兩個(gè)文件,一個(gè)就是視頻文件其本身,而另外一個(gè)就是與之對(duì)應(yīng)的相關(guān)屬性信息,有簡(jiǎn)介,標(biāo)題,標(biāo)簽等。比如1.avi,1.txt就是一個(gè)視頻對(duì)應(yīng)的兩個(gè)文件。
Web方式:主要適合于上傳單個(gè)視頻。在上傳系統(tǒng)中通過采用[spsmartupload]件,可以方便的對(duì)文件進(jìn)行上傳。
3.3 數(shù)據(jù)庫(kù)
系統(tǒng)的后臺(tái)數(shù)據(jù)庫(kù)為Oracle 10G,主要儲(chǔ)存視頻的相關(guān)信息。包括有視頻的標(biāo)簽、簡(jiǎn)介、標(biāo)題、格式、大小、時(shí)長(zhǎng)、尺寸等。
3.4 視頻轉(zhuǎn)換
系統(tǒng)的核心就是視頻轉(zhuǎn)換。其主要功能就是把上傳的視頻轉(zhuǎn)換成需要的各種格式,如3GP格式、FLV格式等。轉(zhuǎn)換時(shí)主要就是運(yùn)用的就是FFMPEGJ進(jìn)行的。以下是視頻轉(zhuǎn)換的流程圖如圖2所示。
FFMPEG簡(jiǎn)介:FFMPEG作為一個(gè)視頻,音頻轉(zhuǎn)換器,可支持絕大多數(shù)符合工業(yè)標(biāo)準(zhǔn)的編碼,還能夠從一種格式轉(zhuǎn)換成另外的一種格式[4],并能利用攝像頭捕獲到音頻,視頻等。用FFMPEG進(jìn)行視頻轉(zhuǎn)換的前提就是對(duì)FFMPEG的下載,安裝,編譯要正確,F(xiàn)FMPEG的最新版本可以通過SVN方式進(jìn)行下載,SVN要在LINUX系統(tǒng)下安裝,成功安裝后執(zhí)行命令:
svn checkout svmsvamphyerhpqu ffmljghnmk ffmpcg
圖2 視頻轉(zhuǎn)換模塊流程
通過一定時(shí)間的下載,目錄下面就會(huì)產(chǎn)生一個(gè)名為ffmpeg的文件夾,這就是FFMPEG源文件。如果下載和安裝了以下文件,就會(huì)使ffmpeg能夠支持更多格式之間的轉(zhuǎn)換。以下文件也需要下載并安裝:[26204-510.zip],[26073-510.zip],[lame.tar.gz],[xvidcore-1.1.0.zip],[zlib-1.2.3.tar.gz],[libtheora.tar.gz],[libvorbis-1.1.1.tar.gz],[libogg-1.1.1.tar.gz],[faac-1.24.tar.gz],[faad2-2.0.tar.gz],[a52dec-0.7.4.tar],[all-20061022.tar]等文件,安裝好這些文件后就能夠進(jìn)行FFPEG的編譯工作。3GP是絕大多數(shù)手機(jī)都支持的格式,而要想讓本系統(tǒng)支持3GP格式,編譯的時(shí)候也要加上[-enable-amr_nb-enable-amr_wb]參數(shù),最后,完整的編譯命令為:
[./configure-enable-shared-enable-mp3lame-enable-libogg-enable-vorbis]
[enable-faad-enable-faac-enable-xvid-enable-a52][enable-amr_nb-fixed-enable-arm_wb-enable-amr_if2-enable-gpl-cpu=i686 make]
[make] [install]
通過以下測(cè)試可以檢測(cè)到安裝的是否成功,先上傳一個(gè)視頻文件,如test.avi,執(zhí)行以下的命令:
[ffmpeg-itest.avi-acodecaac-ar8000-ac1-ab8-qscale5-s176*144-vcodech263-r10-g180test.3gp]
要是視頻能夠成功轉(zhuǎn)換,那就表明FFMPEG已經(jīng)安裝成功了。下一步就可以根據(jù)具體的需要進(jìn)行視頻轉(zhuǎn)換了。FFMPEG的命令如下:
[ffmpeg[[options][-iinput_file]]???{[options]output_file}???]
對(duì)于那些輸入的原始文件,可能需要格式選項(xiàng)。[ffmpeg]在缺省的情況下會(huì)盡量地進(jìn)行無損轉(zhuǎn)換,輸出與輸入相同的音頻,視頻參數(shù)。為了使經(jīng)過轉(zhuǎn)換的視頻質(zhì)量盡最大可能的好,默認(rèn)配置通常不會(huì)被采用,而是要根據(jù)視頻的不同,采用最佳的配置參數(shù)。
視頻轉(zhuǎn)換中,運(yùn)用Java的防阻塞機(jī)制與多線程機(jī)制。首先由調(diào)度程序[JobQueue]從源文件目錄[Source_File]下轉(zhuǎn)移一個(gè)尚未轉(zhuǎn)換的視頻和對(duì)應(yīng)屬性的文件到臨時(shí)文件夾[Temp_File]下,[JobQueue]把文件參數(shù)傳給轉(zhuǎn)換程序[Convert_Robot],由[Convert_Robot]來進(jìn)行視頻的轉(zhuǎn)換。[Convert_Robot]首先利用FFMPEG命令讀取視頻的屬性信息,包括時(shí)長(zhǎng)、格式、尺寸、幀速等參數(shù),然后根據(jù)這些參數(shù)來進(jìn)行視頻轉(zhuǎn)換。根據(jù)系統(tǒng)的需要,每個(gè)視頻會(huì)出現(xiàn)4種版本的視頻普通版3GP,清晰版3GP,NV格式的,快速版3GP,如此一來就可以滿足不同的用戶的不同需要。3GP格式的主要針對(duì)手機(jī)用戶,可以供他們下載到手機(jī)上觀看。而NV格式主要是為了供用戶在網(wǎng)上直接觀看視頻。對(duì)于那些過長(zhǎng)的視頻,系統(tǒng)會(huì)進(jìn)行自動(dòng)地截取,來滿足用戶下載時(shí)在時(shí)間上的需求。為了保護(hù)版權(quán)所有人的權(quán)益,在視頻的轉(zhuǎn)換過程中可以加入水印。同時(shí)還截取了每個(gè)視頻的第一秒作為此視頻的縮略圖。視頻轉(zhuǎn)換完成之后,轉(zhuǎn)換成功的視頻會(huì)被放入Publish_File文件夾中。在Image文件夾下放入縮略圖,同時(shí)也把屬性文件中的簡(jiǎn)介、視頻標(biāo)題、標(biāo)簽等信息儲(chǔ)存到Oracle數(shù)據(jù)庫(kù)里。要是視頻轉(zhuǎn)換發(fā)生了錯(cuò)誤,錯(cuò)誤的信息就會(huì)被記錄到日志文件中。同時(shí),轉(zhuǎn)換系統(tǒng)還可以根據(jù)服務(wù)器的負(fù)載情況靈活地調(diào)整線程,爭(zhēng)取轉(zhuǎn)換視頻的效率最高[5]。
3.5 視頻發(fā)布
用戶可以在視頻發(fā)布模塊看到最后的轉(zhuǎn)換產(chǎn)品。為了便于用戶觀看視頻,視頻發(fā)布模塊提供了兩種方式:通過互聯(lián)網(wǎng)在線觀看和下載到手機(jī)上觀看。使用電腦觀看的用戶可以直接點(diǎn)擊Flash格式進(jìn)行在線觀看,因?yàn)镕lash格式的視頻完全不需要下載就可以直接觀看。對(duì)于手機(jī)用戶,可以在三種3GP格式中選出一種進(jìn)行下載。與此同時(shí),這兩種方式都有個(gè)自動(dòng)的搜索入口,用戶可以進(jìn)入搜索入口來搜索自己想要的視頻。這個(gè)搜索入口可以索引數(shù)據(jù)庫(kù)中的視頻信息,它采用的是一種比較先進(jìn)的索引技術(shù),即Lucene索引技術(shù),以便用戶能夠方便而又快捷地搜索到自己所需要的視頻[6]。
4 結(jié) 語(yǔ)
生產(chǎn)效率高、配置簡(jiǎn)單、容錯(cuò)性強(qiáng)是本視頻轉(zhuǎn)換與發(fā)布的主要特點(diǎn)。線程數(shù)的控制可以通過配置文件來進(jìn)行。轉(zhuǎn)換速度得到很大地提高,與此同時(shí)還有超時(shí)機(jī)制。經(jīng)過測(cè)試,在一臺(tái)內(nèi)存為1 GB,Pentimu 4,CPU 293 GHz的 PC上,一小時(shí)大約能夠轉(zhuǎn)換300個(gè)視頻,這樣的轉(zhuǎn)換速度非常地接近實(shí)時(shí)轉(zhuǎn)換。該系統(tǒng)還可以對(duì)視頻進(jìn)行壓縮,且壓縮效率很高,用H.263的編碼標(biāo)準(zhǔn),一個(gè)大小為20 MB的視頻轉(zhuǎn)換成3GP格式之后,在手機(jī)觀看質(zhì)量不受影響的前提下,大約能夠壓縮到400 KB的大小,這樣很大程度地節(jié)約了網(wǎng)絡(luò)傳輸?shù)臅r(shí)間,明顯提高了網(wǎng)絡(luò)傳輸?shù)男?。該系統(tǒng)經(jīng)過稍微的改變之后,能夠執(zhí)行更為復(fù)雜的功能?,F(xiàn)今越來越多的手機(jī)都能夠支持視頻播放,且用戶也越來越習(xí)慣于在手機(jī)上觀看視頻,因此上視頻的需求量將會(huì)越來越大,使用此系統(tǒng)的市場(chǎng)前景相當(dāng)廣闊。
參考文獻(xiàn)
[1] 胡成,任平安,李文莉.基于Android系統(tǒng)的FFmpeg多媒體同步傳輸算法研究[J].計(jì)算機(jī)技術(shù)與發(fā)展,2011(10):85?87.
[2] 劉建敏,楊斌,王俊麗.嵌入式Linux下基于FFmPeg的視頻硬件編解碼[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2011(6):28?31.
[3] 王瑩,李莉,王華.Symbian平臺(tái)下基于FFmpeg的H.264解碼器的移植[J].現(xiàn)代電子技術(shù),2011,34(11):43?46.
[4] 何圓圓,何凱.基于FFmpeg的H.264視頻解碼器的研究與實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),2012(35):67?69.
[5] 王洪波.搭建流媒體服務(wù)器[J].安徽電子信息職業(yè)技術(shù)學(xué)院學(xué)報(bào),2005(6):95?96.
[6] 向偉昌.流媒體服務(wù)器性能測(cè)評(píng)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].長(zhǎng)沙:國(guó)防科學(xué)技術(shù)大學(xué),2004.