2012-07-10 139 views
1

我正在嘗試創建一個運行客戶端網絡攝像頭並使用按鈕拍攝圖片的Java Applet,但我無法找到在小程序中運行網絡攝像頭的方法。有沒有人知道一個簡單的方法來實現這一目標?JavaApplet中的網絡攝像頭

謝謝。

回答

2

第一個問題是Applet需要硬件權限。 Applets有一個SecurityManager,它從Java安裝中讀取策略文件。作爲標準,沒有權限從WebCams或文件系統等外部設備讀取數據。

對於您的問題,我認爲您應該使用Applet作爲JFrame或其他運行應用程序的加載程序。

對於網絡攝像機,您可以使用OpenCV,這也適用於C++,Android和.NET。

希望它可以幫助你;)

0

我建議你採取this example看看。我想這正是你在看什麼 - 如何使用攝像頭功能創建Applet並將其嵌入HTML頁面。由於JAR使用jarsigner工具簽名,因此訪問硬件沒有問題。當使用自簽名證書籤署JAR時,Java會詢問用戶他/她是否想要運行它。如果它使用來自證書頒發機構的證書籤名,它不會問,只是運行它。

演示程序可在這裏(有耐心,攝像頭需要幾秒鐘就可以初始化):http://webcam-capture.sarxos.pl/examples/applet

有幾個框架,你可以使用這個,比如:

  1. Webcam Capture這是簡單的Java庫允許您從嵌入式或USB網絡攝像頭讀取圖像,與IP /網絡攝像頭一樣。它不成熟,但很小,可以在Applet中使用。上面提供的例子I已經從它中提取出來了。你不需要編寫太多的代碼 - 幾乎所有的東西都準備好了。它適用於各種系統,如Windows,Linux和Mac OS。
  2. JavaCV這是OpenCV的Java包裝,但我不推薦它,缺少文檔和〜100MB的OpenCV安裝包對於Java Applet來說太多了。你可能只需要真正需要的本地二進制文件,但仍然很難區分哪些文件是真正需要的。它定義了大量的API,這在我看來很難學。
  3. LTI-CIVIL這是一個小框架,允許您從嵌入式或USB連接的網絡攝像頭讀取圖像。它使用起來非常簡單,但不再維護(2007年的最新更新)。
  4. JMF是面向Java的Oracle媒體庫。它可以讓你訪問網絡攝像頭和錄製設備,但它是老版本(2004年的最後一次更新),不再維護。它可能可以與Applet一起使用,但是每個想要使用此Applet的人都必須在他/她的PC上安裝JMF。有幾個安裝包 - 每個支持的系統(Windows,Linux,Solaris,Mac OS)都有一個。
  5. VLCj這是VLC播放器本機二進制文件的Java包裝。它可以訪問網絡攝像頭,但無法檢測到(至少在Windows上),因此您必須始終知道網絡攝像頭定位器地址(通常爲0),才能在Java Applet中使用它。
  6. OpenIMAJ是非常強大的用於媒體分析的Java庫。它非常快速和便攜,但不幸的是需要許多第三方依賴項,所以你的Applet必須全部下載(如果沒有更多,至少20MB)。

因此,如果您決定使用選項1,您應該很容易重新設計我提供的示例以適合您的需求。在這個例子中使用了Maven,但是使用Ant或者甚至通過手動創建JAR可以達到同樣的效果。