2012-09-20 3 views
2

libvlc를 사용하여 비디오를 재생하는 Java에서 크로스 플랫폼 응용 프로그램을 만들려고합니다. 웹을 많이 검색했지만 사용 된 플랫폼 (Mac, Win, Linux - 32 또는 64 비트)에서 독립적으로 libvlc를로드하는 코드를 찾지 못했습니다. JNA 라이브러리를 사용하여 libvlc를로드합니다.VLCJ/libvlc crossplatform 라이브러리 경로

예를 들어,이 맥에 기본 설치 경로에서 libvlc로드하는 코드입니다 : 사용자가 VLC.app의 설치 경로를 변경

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

하지만 경우는?!

그래서 경로 독립적 인 크로스 플랫폼로드 코드를 만들어야합니다. 일반적으로 libvlc 라이브러리가 들어있는 폴더의 경로를 어디서 얻을지 모릅니다.

어떤 아이디어 주셔서 감사합니다.

답변

1

도움을 주셔서 감사합니다. 그러나 더 나은 해결책을 찾았습니다. VLCJ의 javadoc을 읽은 지 몇 시간 만에 NativeDiscovery 클래스에 주목했습니다. 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(); 
    } 
} 

이 솔루션의 유일한 단점은 사용자가 사용자 정의 위치에 VLC를 설치 한 경우 라이브러리이고, 당신은 여전히 ​​그에게 강요되어있다.

+0

Windows OS에서는 사용자가 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을 사용하고

바이너리를 묶어서 런타임에 내보내기/설치하십시오. (응용 프로그램의 크기가 상당히 줄어들 기 때문에 다소 제한적일 수 있습니다.)

관련 문제