2010-12-05 5 views
9

Bambuser (http://bambuser.com/opensource)가 제공 한 FFMPEG 실행 파일과 라이브러리를 구축했습니다. 그래서 Android 실행 파일과 라이브러리를 만들었습니다. 내 Eclipse 프로젝트에서이 라이브러리를 링크하고 Java에서 FFmpeg 함수를 호출하려면 어떻게해야합니까? 오픈 소스 코드에는 C 헤더 파일이 포함되어 있습니다.안드로이드에서 FFMpeg jni?

나는 안드로이드를위한 원시 코딩에 초보자 다. 쉬운 대답을 찾을 수 없었다. 기본 : 안드로이드 호환 라이브러리 및 일부 C 헤더 파일을 가지고 Java (+ Android SDK)에서 해당 라이브러리의 기능을 재사용하려면 어떻게해야합니까?

도움을 주시면 감사하겠습니다.

종류와 관련,

WhyHow

+0

ffmpeg를 빌드하기 위해 수행 한 단계를 알려주시겠습니까? 나는 윈도우와 cygwin 1.7.9를 사용하고있다. –

+0

많은 연구 끝에, Windows를 사용하여 ffmpeg를 컴파일 할 수없는 몇 가지 파일 이름/파일 경로 규칙 문제가있는 것으로 보입니다. 우분투를 설치하기 위해 VM웨어를 사용하고 그런 식으로 컴파일했습니다. – gtcompscientist

+0

@Swathi EP : 거의 가이드 스레드가 Windows가 아닌 Linux 또는 Mac OS에서 작동합니다. 아직 Windows 용 게시물을 찾지 못했지만 이미 Android 용으로 빌드 된 라이브러리가 포함 된 웹 사이트를 찾았습니다. 이제 다운로드하여 사용할 수 있습니다. 해당 웹 사이트는 http://code.google.com/p/javacv/downloads/list, 행운을 빌어 요! – Levanphong7887

답변

5

당신은 자바 코드로는 FFmpeg의 기능을 노출하는 JNI 규칙을 사용하여 일부 C 글루 코드를 작성해야합니다. 또한 라이브러리를로드하고 네이티브 메소드를 선언 할 몇 가지 자바 코드가 필요

jstring 
Java_com_example_hellojni_HelloJni_stringFromJNI(JNIEnv* env, 
                jobject thiz) 
{ 
    return (*env)->NewStringUTF(env, "Hello from JNI !"); 
} 

다음은 안드로이드 NDK 샘플에서 C로 구현 된 JNI 방법의 예입니다.

public class HelloJni 
{ 
    public native String stringFromJNI(); 

    static { 
     System.loadLibrary("hello-jni"); 
    } 
} 

나는 자바 미디어 프레임 워크와 통합하기 위해 이미는 FFmpeg 일부 JNI 인터페이스를 구현하고 this project on sourceforge을 발견했다. 유용 할 수 있습니다.

JNA (Java Native Access)라는 또 다른 Java FFI 기술을 사용하면 Java에서 원시 함수 프로토 타입을 선언하고 직접 호출 할 수 있습니다. 이를 사용하면 상용구 코드가 더 적게 필요할 수 있습니다. Android 구현에 대해서는 this project을 참조하십시오. (필자는 직접 사용해 본 적이 없습니다)