日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

用Java多媒體框架實現自播放

瀏覽:150日期:2024-06-23 09:52:24
內容: 翻譯作者:cocoqin原文作者:Chris Adamson 10/09/2002 原文出處:http://www.onjava.com/pub/a/onjava/2002/10/09/jmf.html作為客戶端安裝的媒體播放器,Java Media Framework并沒有給人很深的印象。它僅僅支持一部分媒體類型,而這些類型只是其他播放系統比如說Windows Media Player和QuickTime支持類型的子集。但是從內容供應商的觀點來看,故事就變的有趣多了:JMF在所有的java模式下都可以適用,這樣我們在部署媒體的時候客戶端不需要任何媒體播放技術――只需要一個J2SE的運行環境就可以了。舉例來說,工程巨人Robert X. Cringely最近宣布一項計劃: 他們將提供一個被稱為'NerdTV'的純java的MPEG-4 系統,這個系統不需要任何客戶端的預安裝。更進一步來說,我們還可以利用.jar格式來把解碼器和媒體文件打包成一個文件,以此,從效果上來說創建了一個'自播放電影',與壓縮系統WinZip和StuffIt可以創建自擴展歸檔文件的方式相似。實現的策略分三步走:1.使JMF可以播放在.jar文件里的媒體文件。2.創建一個精簡型的.jar 文件,只包括JMF里必須播放本地媒體文件的部分。3.把代碼和媒體文件都放進.jar里,創建一個合適的manifest 文件來支持雙擊。JMF基本放像功能的關鍵在于得到一個可以解碼和播放媒體文件的播放器。一般來說,這個動作通過使用管理器來得到一個合適的數據源,這個數據源在放像模式下同時提供媒體流和關于媒體流的元數據,比如說媒體文件的格式。管理器接著找到一個播放器來處理這個數據源。在兩種情形下,管理器把一系列的包前綴(javax.media,com.ibm.media等等)綁定在反射機制上來尋找合適的類,在某種情形下拋出錯誤,比如說當找到的播放器不能接受提供的數據源。接下來管理器沒有更多的辦法,通常只是查看URL里的協議和文件擴展名,所以它可以很容易的知道如何處理file:///Users/cadamson/mymp3stash/some.mp3 ,卻不知道如何處理jar:file:/Users/cadamson/dev/jmftests/spmovie-old/src/gatsbymovie.jar!/movie/themovie.mov。為了讓事情變得更簡單,我們來寫一個數據源,或者更確切的說,寫一個牽引式數據源。它的職責是為管理器描速數據源本身。JarEntryDataSource里的方法都很簡單;但是有很多,因為我們提供的PullSourceStream需要使用很多接口的實現。這種做法看起來有些不妥――類是通過文件的擴展名來返回'內容類型'的。它類似于MIME類型,只是它用句點而不是用斜杠來構建(MIME類型video/mpeg 轉換為video.mpeg,這樣管理器可以找到包com.sun.media.codec.video.mpeg )。下面是簡單的實現:public String getContentType() { try { URL url = getLocator().getURL(); String urlFile = url.getFile(); if (urlFile.endsWith('.mov')) return 'video.quicktime'; else if (urlFile.endsWith('.mpg')) return 'video.mpeg'; else if (urlFile.endsWith('.avi')) // Manager needs '_' insted of '-' return 'video.x_msvideo'; else return 'unknown'; } catch (MalformedURLException murle) { return 'unknown'; }}另一個令人頭疼的問題是JMF的源代碼(目前從Sun的網站拿走了不過很快就會放上去)表明如果提供的流是Seekable,(一個提供隨機訪問方法seek()的接口) 缺省的播放器只能播放一個QuickTime的數據源。JarEntryDataSource的解決策略是在尋找點在媒介流前面的情況下使用InputStream.skip()。如果尋找點在當前讀取點(被稱為tellPoint因為這個值是由方法Seekable.tell()返回的)的后面,必須關閉InputStream,重開,然后跳到尋找點。它使用一個內部的thoroughSkip()方法來保證我們是真正的結束。public long seek (long position) { try { if (position> tellPoint) { thoroughSkip (position - tellPoint); } else { close(); open(); thoroughSkip (position); } return tellPoint; } catch (IOException ioe) { return 0; // bogus... }}使用這個類,管理器可以找到一個可用的播放器來播放.jar里的.mov或者.avi 格式的文件。在我們的例子里TinyPlayer使用ClassLoader.getResource()來在classpath里找到movie/themovie.mov或者movie/themovie.avi。當classpath只包括.jar文件的時候,我們就實現了自播放。準備一個合適的.jar文件的第一步是使用JMF的工具創建一個僅僅包含播放所必須的類的jar包,忽略那些流化,尋找,轉碼和其他任何不是骨架播放器所需要的功能。不幸的是,Sun在純java版本的JMF里沒有包括jmfcustomizer的幫助文件,但是我們可以很容易的描速出定制所需要的一系列頁面。媒體源和媒體接收器: 選擇'媒體文件'和'播放'協議:'文件'媒體格式:'QuickTime (.mov)' 和 'Avi.'解碼器:不論你計劃用什么,最可能的是'A-law,' 'U-law,' 或者音頻用'IMA4' ,視頻用'H263'處理:音頻,我們需要'JavaSound'來支持java1.3或者更高版本,SunAudio來支持Sun 的pre-1.3 JVMs。視頻,'AWT'就夠了。創建的結果是我們得到了一個精簡的.jar文件――從普通1.9 MB的 jmf.jar 到我們定制的小于700K的jar包。假定你已經編譯了兩個com.mac.invalidname.spmovie類,并把他們加到了定制的jar包里:jar uf customized.jar com/mac/invalidname/spmovie/*.classJMF的許可條例要求任何JMF的定制子集里都必須包括他的read-me文件。我已經在目錄misc里提供了這個文件,TinyPlayer可以找到它。jar uf customized.jar misc/為了實現.jar的可雙擊,我們提供了一個manifest文件來告訴Java runtime 在雙擊或者使用-jar命令行參數調用的時候.jar里的哪個類包含可以調用的main()。Manifest還提供僅僅包括jar 自身的一個classpath:Main-Class: com.mac.invalidname.spmovie.TinyPlayerClass-Path: .用以下命令來加入manifest:jar ufm customized.jar manifest-stub.txt現在這個文件已經包含在jar播放電影所需要所有的代碼了。為了將來的使用,把它保存為spmovie-engine.jar或者任何類似的文件。現在引擎已經設置好了,所需要的就只剩下媒體文件。我們可以從JMF 支持類型頁面可以看到,純java版本的JMF只支持有限集合的類型。可能視頻的最好選擇是H.263,它在很寬的比特率范圍里都表現的很好,但是對于很多老機器來說它顯得過于臃腫,你可以通過減小視頻或者保持一個較低的幀數率來解決。音頻沒有這么的約定俗成,但是我想IMA4:1表現的相當不錯。把你的媒體文件通過合適的編碼或者轉碼,拷貝到movie/themovie.mov或者movie/themovie.avi。如果需要你可以重命名.jar文件(我用的是spmovie.jar)然后通過下面的方式加入媒體文件:jar u0f spmovie.jar media/注意是'0'數字零,而不是字母0;表明我們不想壓縮這個目錄,因為媒體文件已經被壓縮過了。我們得到的結果就是自播放電影――一個在雙擊的時候知道該運行那個類,提供所有信號分離,解碼,處理電影所需要的代碼和電影本身。作為示例,這里有個小型的自播放電影,它是我4個月兒子Keagan在玩耍的時候錄制的(使用了FreePlay Music免版稅的音樂)。把這個概念擴展到applet是一件很簡單的事情,這樣我們可以讓媒體文件在所有支持的java的瀏覽器里播放。可能有人會說我們解決錯了問題――是java虛擬機而不是媒體播放器在客戶端提供了支持。但是通過提供'一次創作,到處運行'的媒體文件,我們實現了java的初衷。Chris Adamson是一個亞特蘭大籍的咨詢師,擅長java, Mac OS X,和多媒體開發。 Java, java, J2SE, j2se, J2EE, j2ee, J2ME, j2me, ejb, ejb3, JBOSS, jboss, spring, hibernate, jdo, struts, webwork, ajax, AJAX, mysql, MySQL, Oracle, Weblogic, Websphere, scjp, scjd
標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
你懂的亚洲视频| 影视先锋久久| 国产伦理一区| 国产午夜精品一区在线观看| 美女高潮久久久| 久久99精品久久久野外观看| 999久久久免费精品国产| 乱人伦精品视频在线观看| 欧美丝袜一区| 狠狠久久婷婷| 国产精品久久久久av蜜臀| 国产欧美日韩视频在线| 日本精品国产| 成人国产精品一区二区免费麻豆| 精品一区在线| 国产探花一区| 国产精品毛片aⅴ一区二区三区| 久久天堂影院| 中文无码日韩欧| 久久免费视频66| 激情国产在线| 免费日韩av片| 五月国产精品| 伊人精品一区| 国产一区二区三区自拍| 只有精品亚洲| 欧美精品aa| 国产在线观看www| 国产视频亚洲| av高清一区| 国产精品久久乐| 国产精品国产一区| 亚洲精品看片| 国产极品久久久久久久久波多结野| 色在线中文字幕| 欧美久久香蕉| 国产一区二区三区免费在线| 国产亚洲在线| 欧美激情五月| 亚洲制服少妇| 日韩精品诱惑一区?区三区| 综合一区av| 成人在线超碰| 日韩有吗在线观看| 一区二区三区四区在线看| 国产探花一区在线观看| 一本一道久久a久久精品蜜桃| 国产精品一页| 在线视频亚洲欧美中文| 香蕉成人av| 国产精品成人自拍| 中文字幕日本一区| 999国产精品999久久久久久| 国产精品亚洲欧美一级在线| 美女尤物久久精品| 免费污视频在线一区| 国产美女久久| 午夜在线精品偷拍| 欧美片第1页| 欧美激情久久久久久久久久久| 欧美中文字幕| 久久精品青草| 国产理论在线| 欧美黄色一区二区| 日本成人在线不卡视频| 夜夜嗨网站十八久久| 日本少妇一区| 一区二区精品伦理...| 国产精品1区在线| 国产日韩三级| 日韩av不卡在线观看| 亚洲精品乱码日韩| 亚洲啊v在线| 麻豆精品少妇| 欧美日韩中出| 日韩精品免费一区二区夜夜嗨| 亚洲一区二区网站| 欧美精品一区二区久久| 成人自拍av| 亚洲一级少妇| 国产一区日韩| 麻豆91精品91久久久的内涵| 欧美精品福利| 日本成人在线网站| 亚洲a级精品| 亚洲精品成a人ⅴ香蕉片| 天堂av在线一区| 日韩久久一区二区三区| 国产伦精品一区二区三区视频 | 久久久9色精品国产一区二区三区| 精品国产不卡| 丰满少妇一区| 色偷偷偷在线视频播放| 午夜精品成人av| 99精品电影| 蜜桃视频欧美| 亚洲免费影院| 亚洲字幕久久| 欧美日韩伊人| 国产精品红桃| 精品国产99| 在线天堂中文资源最新版| 在线亚洲人成| 久久天堂精品| 欧美日韩在线观看视频小说| 波多野结衣一区| 只有精品亚洲| 国产欧美激情| 精品福利久久久| 久久久夜夜夜| 亚洲欧美日韩国产| 日韩激情一二三区| 欧美a级一区二区| 青青久久av| 最新日韩欧美| 天海翼精品一区二区三区| 国产欧美日韩一级| 欧美日韩视频免费观看| 好吊日精品视频| 日本成人在线视频网站| 国产一区调教| 在线亚洲观看| 国产精品一区二区三区美女 | 国产美女视频一区二区| 精品国产午夜| 免费视频亚洲| 日本欧美一区| 欧美日韩国产v| 亚洲精选91| 精品一区二区三区中文字幕在线| 久久久久久久久丰满| 香蕉精品999视频一区二区| 欧美在线看片| 日韩一区自拍| 亚洲视频二区| 久久三级中文| 久久国产精品久久w女人spa| 日本欧美大码aⅴ在线播放| 国产一区二区三区日韩精品| 欧美日韩四区| 欧美国产先锋| 另类亚洲自拍| 欧美xxxx中国| 亚洲bt欧美bt精品777| 午夜久久中文| 日本不卡的三区四区五区| 岛国av在线网站| aⅴ色国产欧美| 国产激情精品一区二区三区| 性欧美xxxx免费岛国不卡电影| 亚洲欧美日本国产| 日韩欧美不卡| 亚洲a级精品| 里番精品3d一二三区| 亚洲永久字幕| 国产成人精品福利| 亚洲日产国产精品| 天堂av在线| 青青草91久久久久久久久| 日韩免费视频| 欧美日韩一视频区二区| 免费不卡中文字幕在线| 国产精品久久久免费| av中文字幕在线观看第一页 | 亚洲日产国产精品| 久久久水蜜桃av免费网站| 日韩精品中文字幕一区二区| 99久久婷婷| 精品国产亚洲一区二区三区在线| 蜜桃久久久久久| 亚洲国产综合在线看不卡| 国产精品久久久免费| 中文精品电影| 91成人超碰| 婷婷激情一区| 精品久久美女| 国产精品2023| 欧美日韩中文| 亚洲三区欧美一区国产二区| 亚洲国产成人精品女人| 超碰99在线| 91福利精品在线观看| 亚洲综合丁香| 欧美日韩免费观看一区=区三区| 日韩欧美二区| 国内精品麻豆美女在线播放视频| 日本91福利区| 亚洲影院天堂中文av色| 91九色精品| 91精品亚洲| 久久精品电影| 中文字幕在线视频久| 国产乱码精品一区二区亚洲| 日韩二区在线观看| 日韩一区二区三区精品视频第3页| 亚洲欧美日本国产专区一区| 欧美午夜精彩| 蜜桃一区二区三区| 久久一区二区三区电影| 日韩美女一区二区三区在线观看|