2012-09-20 37 views
2

我正嘗試在Java中使用libvlc來創建一個跨平臺的應用程序來播放視頻。我一直在網上搜索,但我還沒有找到任何代碼在所用平臺(Mac,Win,Linux - 32或64位)上獨立加載libvlc。我使用JNA庫來加載libvlc。VLCJ/libvlc跨平臺庫路徑

例如,這是從默認的安裝路徑裝載libvlc在Mac代碼:

NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), "/Applications/VLC.app/Contents/MacOS/lib/"); 
Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class); 

但是,如果用戶更改VLC.app的安裝路徑?

所以我需要創建一個獨立於路徑的跨平臺加載代碼。通常我只是不知道從哪裏獲取包含libvlc庫的文件夾的路徑。

感謝您的任何想法。

回答

1

感謝您的幫助,但我找到了更好的解決方案。在閱讀VLCJ的javadoc幾個小時後,我注意到了NativeDiscovery類,它已經保存了所有這些通用路徑。

private void setupLibVLC() throws LibraryNotFoundException { 

    new NativeDiscovery().discover(); 

    // discovery()'s method return value is WRONG on Linux 
    try { 
     LibVlcVersion.getVersion(); 
    } catch (Exception e) { 
     throw new LibraryNotFoundException(); 
    } 
} 

這種解決方案的唯一的con是,如果用戶已經安裝了VLC到自定義位置,你仍然不得不問他,那裏的圖書館。

+0

在Windows操作系統下,如果用戶使用Windows的標準VLC安裝程序安裝VLC,則不會出現問題。 VLC的安裝路徑可以從其Windows註冊表「HKEY_LOCAL_MACHINE \ SOFTWARE \ VideoLAN \ VLC \ InstallDir」中提取 –

2

我平時常用的搜索知道地點,如/Applications/VLC.app/Contents/MacOS/lib/Program Files/VideoLan/VLC/sdk/lib

如果你不能找到通過搜索俗稱位置的庫,你將不得不要求用戶爲您提供的位置...

我還使用vlcj其有能力捆綁二進制文件和出口/在運行時安裝它們(這可能是一個有點望而卻步,因爲它拋出應用程序的大小相當出)