在android上构建vp8



我正在尝试为Android构建vp8编解码器。我用源代码g++运行了configure.sh脚本和armv6的makefile文件,成功地生成了libvpx.so。之后,我写了一个JNI包装器,并成功地用ndk-build编译了它。当我在Gingerbread智能手机上运行这个程序时,我得到了一个不满意的链接错误"libpthread.so"。0未找到"。怎样才能消除这个错误呢?

来自http://git.chromium.org/gitweb/?p=webm/bindings.git;a=blob_plain;f=JNI/README.Android,并对可读性进行了一些调整。

  1. 创建{project}/jni文件夹

  2. 获取JNI绑定。

    git clone https://chromium.googlesource.com/webm/bindings

  3. libvpx。

    git clone https://chromium.googlesource.com/webm/libvpx

  4. 配置libvpx for Android

    。/libvpx/configure——target=armv7-android-gcc——disable-examples——sdk-path={到NDK的路径}

    --sdk-path必须是绝对的

  5. libwebm。

    cd绑定/JNI

    git clone https://chromium.googlesource.com/webm/libwebm

  6. libogg。

    下载ogg代码http://downloads.xiph.org/releases/ogg/libogg-1.3.0.tar.gz

    提取到bindings/JNI。

  7. 我们需要运行configure来生成config_type .h。

    cd liblog -1.3.0 &&./configure,,cd . .

  8. 得到libvorbis

    从http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.3.tar.gz下载vorbis代码

    提取到bindings/JNI。

  9. 得到libyuv

    svn checkout http://libyuv.googlecode.com/svn/trunk/libyuv-read

  10. 创建{项目}/jni/应用程序。Mk与以下数据:

    APP_ABI := armeabi-v7a
    APP_OPTIM := release
    APP_STL := gnustl_static
    APP_CPPFLAGS := -frtti
    
  11. 创建{项目}/jni/Android。Mk与以下数据:

    WORKING_DIR := $(call my-dir)
    BINDINGS_DIR := $(WORKING_DIR)/bindings/JNI
    include $(BINDINGS_DIR)/Android.mk
    
  12. 构建JNI代码。

    }/NDK -build

  13. 复制java代码

    cp -R bindings/JNI/com/google ../src/com/

  14. 添加代码来测试绑定。

    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);
    
  15. 运行应用程序,你应该会看到libwebm版本的输出。

  16. 根据需要调整。VP8包装器位于com.google.libvpx命名空间中。

这可能是共享库中的SONAME有时会出现的问题,请查看本文。

http://groups.google.com/group/android-ndk/browse_thread/thread/fd484da512650359

如果你不需要pthread,你可以禁用它们。

我在过去遇到过。so文件的问题,通过使用。a静态库而不是。so共享库,我避免了所有这些问题

相关内容

  • 没有找到相关文章

最新更新