


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