amp@java

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            99 隨筆 :: 0 文章 :: 228 評論 :: 0 Trackbacks
          JMF(Java Media Framework)是Java平臺使用攝像頭、麥克風(fēng)等媒體設(shè)備的應(yīng)用程序框架,但到了2.1.1e就不再更新,在Windows 7 X64上還能正常運(yùn)行,只是安裝的界面讓你感覺回到了Windows98的時代。


          不過年代久遠(yuǎn)的東西,雖然還能用,但可能會遇到一些奇怪的問題,折騰了兩個月,發(fā)現(xiàn)了兩個比較大的問題:

          第一個是在Windows 7 x64上提示攝像頭初始化失敗的問題。這個問題很奇怪,電腦剛開機(jī)的時候可以順利找到一次攝像頭并正常操作,但是第二次就會提示攝像頭初始化失敗。有人提出的解決方法是安裝一個叫ManyCamera的程序,這個程序可以把一個攝像頭供多個程序同時使用,其實(shí)就等于中間加了一層轉(zhuǎn)換,效果會有點(diǎn)差別,免費(fèi)版還會加上水印,要求比較高的人可能會不爽,但是目前找不到其他辦法。

          第二個是在程序中找不到攝像頭,不光找不到攝像頭,其他媒體設(shè)備通通找不到,使用以下語句:
          vector = CaptureDeviceManager.getDeviceList ( null )
          按照文檔說明是返回所有媒體設(shè)備,但每次vector都是null。
          在Eclipse中運(yùn)行又能正常,導(dǎo)出成jar之后運(yùn)行就會找不到攝像頭。
          原因在于找不到j(luò)mf.properities文件,該文件包含所有檢測到的媒體設(shè)備的信息,最簡單的解決方法就是把JMF安裝目錄下lib子目錄中的jmf.properties文件復(fù)制到最后運(yùn)行的jar所在的目錄,不過如果攝像頭改過的話,重新檢測后要把新的文件復(fù)制到j(luò)ar目錄,因?yàn)闄z測到的媒體設(shè)備信息都會存放在JMF安裝目錄里面的jmf.properties文件里。

          StackOverflow里面有個人對這個問題解釋得比較清楚:
          http://stackoverflow.com/questions/8768142/java-capturedevicemanagergetdevicelist-is-empty


          雖然問題解決了,但是還是不明白為何在Eclipse中可以正常運(yùn)行,導(dǎo)出jar后運(yùn)行卻找不到攝像頭,即使把JMF所有jar和lib目錄都加入系統(tǒng)的CLASSPATH環(huán)境變量里還是不行。


          另外,JMF安裝程序會自動把它的jar和lib目錄加入系統(tǒng)的%CLASSPATH%環(huán)境變量,但是如果你卸載了再重新安裝到其他目錄,并不會改變%CLASSPATH%的值,需要手動修改。不過這個環(huán)境變量似乎沒啥用處。
          最好不要把JMF安裝到默認(rèn)的Program Files目錄,可能會運(yùn)行不了,安裝到短目錄會比較保險,它似乎還是只認(rèn)Dos時代的8.3目錄結(jié)構(gòu),但偏偏又默認(rèn)安裝到Program Files里面。
          posted on 2014-07-01 10:33 amp@java 閱讀(7277) 評論(0)  編輯  收藏 所屬分類: Java common
          主站蜘蛛池模板: 三明市| 楚雄市| 安义县| 土默特左旗| 乐山市| 固镇县| 丹凤县| 定结县| 介休市| 资源县| 陵水| 随州市| 滕州市| 鄂州市| 衡南县| 革吉县| 孝感市| 赣州市| 满城县| 桑日县| 安丘市| 上饶市| 宝应县| 比如县| 东丰县| 保亭| 苍山县| 德令哈市| 嘉鱼县| 汨罗市| 宁陕县| 建湖县| 南宁市| 香河县| 嘉禾县| 谷城县| 百色市| 临高县| 姚安县| 巫山县| 临湘市|