摘 要:Flash 是當今Internet上最流行的多媒體展現(xiàn)技術(shù),可用于展現(xiàn)動畫、文檔以及音視頻等多種類型的內(nèi)容。文章詳細介紹了利用Flash展現(xiàn)文檔和音視頻文件的設(shè)計原理和實現(xiàn)方法,并給出了主要功能的原代碼。
關(guān)鍵詞:Flash;文檔瀏覽;音視頻播放
FLASH是美國Macromedia公司于1999年6月推出的優(yōu)秀網(wǎng)頁動畫設(shè)計軟件.它是一種交互式動畫設(shè)計工具,用它可以將文檔及音樂、聲效、動畫以及富有新意的界面融合在一起,以制作出高品質(zhì)的網(wǎng)頁動態(tài)效果.現(xiàn)在,F(xiàn)LASH 技術(shù)的應(yīng)用由動態(tài)網(wǎng)頁的制作發(fā)展到 MTV、課件等多媒體制作,應(yīng)用越來越廣泛。隨著網(wǎng)絡(luò)應(yīng)用的普及,人們傾向于在網(wǎng)絡(luò)上完成文檔瀏覽和音視頻播放等基于B/S架構(gòu)的高級功能,逐步脫離本地客戶機的應(yīng)用環(huán)境局限。因此,可以利用Flash技術(shù)強大的多媒體功能,實現(xiàn)文檔瀏覽和音視頻播放的在線應(yīng)用。
1 設(shè)計思想
文檔型文件和音視頻文件包括多種類型的文件格式,并不能直接被Flash技術(shù)所支持,需要通過第三方工具將各類不同格式的文檔型文件和音視頻文件統(tǒng)一轉(zhuǎn)換成為Flash技術(shù)所支持的文件格式,最終實現(xiàn)文檔瀏覽和音視頻播放的在線應(yīng)用。
1.1 文檔型文件設(shè)計思想
Flash在線瀏覽器設(shè)計思想:文件服務(wù)器上存在不同格式的電子文件,需要在瀏覽器中查看時由openoffice處理將文件格式轉(zhuǎn)換為pdf格式的文件,然后在由swftools工具包中的pdf2swf處理為swf目標格式,通過flexpaper加載,最后客戶端在瀏覽器里就可以直接查閱。如圖1-1所示:
1.2 音視頻文件設(shè)計思想
Flash在線瀏覽器設(shè)計思想:文件服務(wù)器上存在不同格式的音視頻文件,需要在瀏覽器中查看時通過mencoder解碼程序轉(zhuǎn)換成 FLA格式的文件,通過jwplayer加載播放FLA 文件,最后客戶端在瀏覽器里就可以直接查閱。如圖1-2所示:
2 實現(xiàn)方法
首先要搭建兩個服務(wù)平臺:電子文件轉(zhuǎn)換服務(wù)平臺和在線文檔控制瀏覽服務(wù)平臺。具體步驟如下:
(1)用戶通過應(yīng)用平臺上傳電子文件;
(2)上傳的文件直接添加到轉(zhuǎn)換任務(wù)池;
(3)轉(zhuǎn)換程序根據(jù)任務(wù)池順序隊列轉(zhuǎn)換(多個轉(zhuǎn)換服務(wù)同時工作);
(4)轉(zhuǎn)換程序根據(jù)文件類型進入相應(yīng)的轉(zhuǎn)換操作;
(5)轉(zhuǎn)換完成發(fā)送消息到應(yīng)用平臺通知轉(zhuǎn)換完成;
(6)前臺顯示轉(zhuǎn)好的FLASH文件;
2.1 Office文檔操作
利用OpenOffice來對Office文檔進行操作,并且通過JODCon
verter調(diào)用把Office文檔轉(zhuǎn)換成PDF文檔,OpenOffice.org具有一個鮮為人知的特性就是其能夠作為一個服務(wù)來運行,而這種能力具有一定的妙用。舉例來說,你可以把openoffice.og變成一個轉(zhuǎn)換引擎,利用這種轉(zhuǎn)換引擎你可以通過網(wǎng)絡(luò)接口或命令行工具對文件的格式進行轉(zhuǎn)換,JODConverter可以幫助你實現(xiàn)OpenOffice.org的這種文件轉(zhuǎn)換功能。
為了將OpenOffice.org作為一個轉(zhuǎn)換引擎,你必須以服務(wù)的方式將它啟動,使它在某個特定的端口監(jiān)聽連接。
在Linux平臺你可以用如下的命令啟動openoffice.org:
soffice -headless -accept=\"socket,port=8100;urp;\"
在Windows平臺, 使用如下命令:
X:\\Program Files\\OpenOffice.org 3\\program\\soffice -accept=
\"socket,port=8100;urp;\"
2.2 轉(zhuǎn)換為PDF文件
通過JODConverter調(diào)用OpenOffice把Office文檔轉(zhuǎn)換成PDF文檔,JODConverter是基于java,你需要安裝1.4或更高版本的java運行環(huán)境。下載最新版本的jodconverter-tomcat-x.x.x.zip,解壓到某個目錄,就可以啟動 JODConverter
sh jodconverter-tomcat-2.2.2/bin/startup.sh
在瀏覽器打開http://localhost /converter,你就可以看見一個簡單的Web界面,選中需要轉(zhuǎn)換的文件并確定格式,點擊按鈕就可以轉(zhuǎn)換。也可以通過命令行對文件進行轉(zhuǎn)換,如:
java -jar jodconverter-2.1.1/lib/jodconverter-2.2.2.jar test.docx test.pdf
2.3 PDF轉(zhuǎn)換為SWF文件
SWFTools是一組用來處理Flash的swf文件的工具包,包括:
(1)合并工具swfcombine
(2)抽取工具swfextract
(3)PDF/JPEG/PNG/AVI/TTF/WAV到SWF的轉(zhuǎn)換工具pdf2swf, jpeg2swf, png2swf, avi2swf, font2swf, wav2swf
(4)文本解析工具swfstrings
(5)SWF解析器swfdump
(6)SWF讀寫庫rfxswflib
其中把pdf轉(zhuǎn)成swf的工具就是pdf2swf了。在命令行中運行\(zhòng)"pdf2swf src.pdf des.swf\"一般能滿足需求。而命令行參數(shù)可以通過pdf2swf -f得到。
Java調(diào)用PDF2SWF工具進行PDF轉(zhuǎn)SWF的代碼:
Process pro = Runtime.getRuntime().exec(\"/pdf2swf -z -s flashversion=9 -s jpegsubpixels=1 -s ppmsubpixels=1\"+要轉(zhuǎn)換的PDF文件+\" -o \"+輸出的SWF文件);
InputStreamWathThread inputWathThread = new nputStreamWath
Thread(pro,\"PDF2SWF\");
inputWathThread.start();
ErrorInputStreamWathThread errorInputWathThread = new ErrorInputStreamWathThread(pro,\"PDF2SWF\");
errorInputWathThread.start();
//等待轉(zhuǎn)換完成
try {
pro.waitFor();
inputWathThread.setOver(true);//轉(zhuǎn)換完,停止流的處理
errorInputWathThread.setOver(true);
} catch (InterruptedException e) {
e.printStackTrace();
}
2.4 SWF文件瀏覽
FlexPaper是一個開源輕量級的在瀏覽器上顯示各種文檔的組件,被設(shè)計用來與PDF2SWF一起使用,使在Flex中顯示PDF成為可能,而這個過程并無需PDF軟件環(huán)境的支持。它可以被當作Flex的庫來使用。
var fp = new FlexPaperViewer(''FlexPaperViewer'',''viewerPlaceHolder'',
{config : {
SwfFile : 要顯示的文件,
Scale : 1,
ZoomTransition : ''easeOut'',
ZoomTime : 0.5,
ZoomInterval : 0.2,
FitPageOnLoad : 1,
FitWidthOnLoad : 1,
PrintEnabled : true,
FullScreenAsMaxWindow : 1,
ProgressiveLoading : 1,
MinZoomSize : 0.2,
MaxZoomSize : 5,
SearchMatchAll : 1,
InitViewMode : ''Portrait'',
PrintToolsVisible : 1,
ViewModeToolsVisible : true,
ZoomToolsVisible : true,
NavToolsVisible : true,
CursorToolsVisible : true,
SearchToolsVisible : true,
localeChain: ''zh_CN''
}});
2.5 音視頻文件轉(zhuǎn)換
mencoder是一款命令行方式的視頻處理軟件,是Mplayer自帶的編碼工具(Mplayer是Linux下的播放器,開源,支持幾乎所有視頻格式的播放,現(xiàn)在有windows和Mac版本)。 在linux下,安裝完Mplayer后,就有mencoder,無需另外安裝。mencoder支持幾乎所有的格式的視頻轉(zhuǎn)換,可以將任意格式轉(zhuǎn)換到任意格式,轉(zhuǎn)換功能可以說是相當強大。目前市面上流行的格式轉(zhuǎn)換器,都是基于mencoder開發(fā)的GUI,比如暴風(fēng)轉(zhuǎn)碼,格式工廠等??梢哉f轉(zhuǎn)換器能辦到的,mencoder都能辦到,但mencoder能辦到的,轉(zhuǎn)換器就不一定能辦到了。
例如:mencoder input.avi -o output.avi -oac mp3lame -lame
opts cbr:br=32 -ovc x264 -x264encopts bitrate=440 -vf scale=4
48:-3
input.avi 是指輸入的視頻,也就是你要轉(zhuǎn)換的視頻。
-o output.avi中的\"-o\"是指你要輸出視頻,輸出的視頻名為output.avi。
-oac 設(shè)置音頻編碼器。
mp3lame 設(shè)置音頻編碼器為mp3lame,也是就mp3。
-lameopts 設(shè)置mp3lamer的相關(guān)參數(shù)。
cbr:br=32 設(shè)置音頻的碼率為32。
-ovc 設(shè)置視頻編碼器。
x264 設(shè)置視頻編碼器為x264。
-x264encopts 設(shè)置x264的參數(shù)。
bitrate-440 設(shè)置x264的視頻的碼率為440。
-vf scale=448:-3 設(shè)置視頻的寬為448,高為-3,-3的意思就是讓mencoder來設(shè)置最佳寬度。
實現(xiàn)代碼如下:
Process pro =Runtime.getRuntime().exec(\"/mencoder -of lavf -oac mp3lame -lameopts abr:br=56 -ovc lavc -lavcopts vcodec=flv:vbitrate=500:mbd=2:mv0:trell:v4mv:cbp:last_pred=3:dia=4:cmp=6:vb_strategy=1 -vf scale=512:-3 -ofps 12 -srate 22050\"+要轉(zhuǎn)換的文件+\" -o \"+輸出的FLV文件);
InputStreamWathThread inputWathThread = new InputStreamWathThread(pro,\"VIDEO2FLV\");
inputWathThread.start();
ErrorInputStreamWathThread errorInputWathThread = new ErrorInputStreamWathThread(pro,\"VIDEO2FLV\");
errorInputWathThread.start();
try {
pro.waitFor();
inputWathThread.setOver(true);//轉(zhuǎn)換完,停止流的處理
errorInputWathThread.setOver(true);
} catch (InterruptedException e) {
e.printStackTrace();
}
2.6 音視頻文件播放
JW Media Player是一個開源的在網(wǎng)頁上使用的Flash視頻、音頻以及圖片播放器,支持Sliverlight 播放,可以通過一個XML文件使播放器自動切換顯示一組圖片,并播放背景音樂。它支持播放的Adobe Flash Player和HTML5瀏覽器可以處理任何格式(FLV文件,H.264標準,MP4功能,VP8的,WEBM,支持MP3,AAC,JPG,PNG和GIF)。它也支持各種流和播放清單格式(包括RMTP協(xié)議,HTTP直播和更多)和多種播放選項。并支持所有主要的CDN和自適應(yīng)比特率切換意味著你可以在全球各地提供高質(zhì)量的內(nèi)容。
JW Player是一個先進的視頻平臺,您可以進行自定義和擴展:
無需特殊工具,你可以編輯文本創(chuàng)建圖像,然后你可以建立一個皮膚。
它的插件架構(gòu) 和 JavaScript API讓您可以輕松地擴展它的功能,融入您的網(wǎng)站,或連接到第三方服務(wù)。
jwplayer(\"mediaplayer\").setup({flashplayer: \"player.swf\",file: \"要播放的文件\",height:480,width:640,skin:\"newtubedark.zip\",image: \"1.png\"});
2.7 在線文檔瀏覽平臺接口封裝
在線文檔控制瀏覽平臺被單獨封裝成Web service接口,在系統(tǒng)應(yīng)用平臺里以接口的形式進行調(diào)用。
Web service它是一種構(gòu)建應(yīng)用程序的普遍模型,可以在任何支持網(wǎng)絡(luò)通信的操作系統(tǒng)中實施運行;它是一種新的web應(yīng)用程序分支,是自包含、自描述、模塊化的應(yīng)用,可以發(fā)布、定位、通過web調(diào)用。Web Service是一個應(yīng)用組件,它邏輯性的為其他應(yīng)用程序提供數(shù)據(jù)與服務(wù)。各應(yīng)用程序通過網(wǎng)絡(luò)協(xié)議和規(guī)定的一些標準數(shù)據(jù)格式(Http,XML,Soap)來訪問Web Service,通過Web Service內(nèi)部執(zhí)行得到所需結(jié)果。Web Service可以執(zhí)行從簡單的請求到復(fù)雜商務(wù)處理的任何功能。一旦部署以后,其他Web Service應(yīng)用程序可以發(fā)現(xiàn)并調(diào)用它部署的服務(wù)。
在構(gòu)建和使用Web Service時,主要用到以下幾個關(guān)鍵的技術(shù)和規(guī)則:
(1)XML:描述數(shù)據(jù)的標準方法.
(2)SOAP:表示信息交換的協(xié)議.
(3)WSDL:Web服務(wù)描述語言.
(4)UDDI(Universal Description, Discovery and Integration):通用描述、發(fā)現(xiàn)與集成,它是一種獨立于平臺的,基于XML語言的用于在互聯(lián)網(wǎng)上描述商務(wù)的協(xié)議。
3 結(jié)束語
本文的研究成果給出了文檔瀏覽和音視頻播放等在線應(yīng)用的解決方案。不僅可以應(yīng)用于互聯(lián)網(wǎng)上文檔分享類和視頻分享類的網(wǎng)站,而且還可以應(yīng)用于企業(yè)內(nèi)部辦公系統(tǒng)的電子文件資源瀏覽,甚至可以應(yīng)用在檔案數(shù)字資源的在線管理和瀏覽,具有極高的應(yīng)用價值。
參考文獻
[1] 蔣玉芳,胡萬志.淺談Flash在網(wǎng)頁設(shè)計中的應(yīng)用[J].網(wǎng)絡(luò)財富,2010年10月:173-175.
[2] 昊芳.Flash應(yīng)用發(fā)展前景初探[J].技術(shù)應(yīng)用.
————————————
注:本文為浙江省檔案局科研項目“基于Flash技術(shù)的檔案信息資源在線管理研究”(項目編號:2011-12)研究成果之一。