Construir vp8 en android
Estoy tratando de construir el códec vp8 para Android. Corrí el script configure.sh y el makefile para armv6 con sourcery g ++ que produjo con éxito libvpx.so. Después de eso escribí un envoltorio JNI y lo compilé con ndk-build con éxito. Cuando ejecuto esto en un teléfono inteligente de pan de jengibre tengo un UnsatisfiedLinkError "libpthread.so.0 no encontrado". ¿Cómo puedo deshacerme de este error?
Desde http://git.chromium.org/gitweb/?p=webm/bindings.git;a=blob_plain;f=JNI/README.Android con algunos ajustes de legibilidad.
-
Cree la carpeta {project} / jni.
-
Obtener enlaces JNI.
-
Obtenga libvpx.
-
Configurar libvpx para Android
./libvpx/configure –target = armv7-android-gcc –disable-examples –sdk-path = {ruta a NDK}
--sdk-path
DEBE ser absoluto. -
Obtener libwebm.
Enlaces cd / JNI
-
Obtener libogg.
Descargue el código ogg desde http://downloads.xiph.org/releases/ogg/libogg-1.3.0.tar.gz
Extraer a enlaces / JNI.
-
Necesitamos ejecutar configure para generar config_types.h.
Cd libogg-1.3.0 && ./configure && cd ..
-
Obtener libvorbis
Descargar código vorbis desde http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.3.tar.gz
Extraer a enlaces / JNI.
-
Consiga libyuv
Svn checkout http://libyuv.googlecode.com/svn/trunk/ libyuv-sólo lectura
-
Cree {project} /jni/Application.mk con los datos siguientes:
APP_ABI := armeabi-v7a APP_OPTIM := release APP_STL := gnustl_static APP_CPPFLAGS := -frtti
-
Cree {project} /jni/Android.mk con los datos siguientes:
WORKING_DIR := $(call my-dir) BINDINGS_DIR := $(WORKING_DIR)/bindings/JNI include $(BINDINGS_DIR)/Android.mk
-
Genere el código JNI.
{Ruta a NDK} / ndk-build
-
Copie el código java.
Cp -R enlaces / JNI / com / google ../src/com/
-
Agregue código para probar los enlaces.
int[] major = new int[2]; int[] minor = new int[2]; int[] build = new int[2]; int[] revision = new int[2]; MkvMuxer.getVersion(major, minor, build, revision); String outStr = "libwebm:" + Integer.toString(major[0]) + "." + Integer.toString(minor[0]) + "." + Integer.toString(build[0]) + "." + Integer.toString(revision[0]); System.out.println(outStr);
-
Ejecute la aplicación. Debería ver la salida de la versión de libwebm.
-
Ajustar según sea necesario. Los wrappers VP8 se encuentran en el espacio de nombres com.google.libvpx.
Esto a veces puede ser un problema con el SONAME en una biblioteca compartida, echar un vistazo a este artículo.
http://groups.google.com/group/android-ndk/browse_thread/thread/fd484da512650359
Puede deshabilitar pthreads si no los necesita realmente.
Iv'e tuvo problemas con los archivos .so en el pasado y ha evitado todos estos problemas utilizando bibliotecas estáticas .a en lugar de bibliotecas compartidas .so