2010-12-05 11 views
9

He creado ejecutables y bibliotecas FFMPEG tal como lo proporciona Bambuser (http://bambuser.com/opensource). Así que logré construir los ejecutables y libraties de Android. ¿Cómo puedo vincular estas bibliotecas en mi proyecto de Eclipse e invocar las funciones de FFmpeg desde Java? El código fuente abierto incluye los archivos de encabezado C.FFMpeg jni en Android?

Soy nuevo en la codificación nativa para Android, y no pude encontrar una respuesta fácil para esto. En básico: tener un montón de bibliotecas compatibles con Android y algunos archivos de cabecera en C, ¿qué tengo que hacer para volver a utilizar la funcionalidad de esas librerías desde Java (+ Android SDK)?

Cualquier ayuda sería apreciada.

Saludos cordiales,

WhyHow

+0

¿podría decirnos los pasos que siguió para construir ffmpeg? Estoy usando windows y cygwin 1.7.9. –

+0

Después de una gran cantidad de investigaciones, parece que hay algunos problemas de convención de nombre de archivo/ruta de archivo que no le permitirán compilar ffmpeg usando Windows. Usé vmware para instalar Ubuntu y los compilé de esa manera. – gtcompscientist

+0

@Swathi EP: Casi todos los hilos de guía funcionan en Linux o Mac OS, no en Windows. Aún no he encontrado ninguna publicación para Windows, pero descubrí el sitio web que contenía las bibliotecas ya compiladas para Android. Entonces puedes descargarlos y usarlos ahora. Ese sitio web es http://code.google.com/p/javacv/downloads/list, ¡buena suerte! – Levanphong7887

Respuesta

5

Tienes que escribir algo de código C pegamento usando las convenciones JNI para exponer las funcionalidades de FFmpeg a código Java. He aquí un ejemplo de un método JNI implementado en C de las muestras Android NDK:

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

También necesita algo de código Java para cargar la biblioteca y declarar el método nativo.

public class HelloJni 
{ 
    public native String stringFromJNI(); 

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

He encontrado this project on sourceforge que ya ha puesto en práctica alguna de las interfaces JNI para ffmpeg para integrarlo con Java Media Framework. Lo podrías encontrar útil.

Hay otra tecnología Java FFI llamada JNA (Java Native Access) que le permite declarar prototipos de funciones nativas en Java y llamarlas directamente. Su uso puede requerir menos código repetitivo. Ver this project para una implementación de Android. (Nunca lo he usado yo mismo)

Cuestiones relacionadas