amp@java

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


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

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

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

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


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


          另外,JMF安裝程序會自動把它的jar和lib目錄加入系統的%CLASSPATH%環境變量,但是如果你卸載了再重新安裝到其他目錄,并不會改變%CLASSPATH%的值,需要手動修改。不過這個環境變量似乎沒啥用處。
          最好不要把JMF安裝到默認的Program Files目錄,可能會運行不了,安裝到短目錄會比較保險,它似乎還是只認Dos時代的8.3目錄結構,但偏偏又默認安裝到Program Files里面。
          posted on 2014-07-01 10:33 amp@java 閱讀(7275) 評論(0)  編輯  收藏 所屬分類: Java common
          主站蜘蛛池模板: 拜泉县| 开封县| 沈丘县| 汽车| 山西省| 万安县| 静乐县| 灵石县| 龙泉市| 股票| 衡东县| 平乐县| 克什克腾旗| 商河县| 富阳市| 麻栗坡县| 武宣县| 敖汉旗| 岑巩县| 准格尔旗| 乌审旗| 乡宁县| 景德镇市| 乌苏市| 开封县| 禹城市| 自贡市| 西充县| 临潭县| 延寿县| 东阳市| 芜湖县| 固安县| 鄱阳县| 安徽省| SHOW| 望城县| 新丰县| 广宗县| 奎屯市| 隆回县|