gpt4 book ai didi

android - 在安卓上构建 vp8

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:44:46 30 4
gpt4 key购买 nike

我正在尝试为 Android 构建 vp8 编解码器。我使用成功生成 libvpx.so 的 sourcery g++ 运行 configure.sh 脚本和 armv6 的 makefile。之后我写了一个 JNI 包装器并成功地用 ndk-build 编译了它。当我在 Gingerbread 智能手机上运行它时,我收到了一个 UnsatisfiedLinkError “找不到 libpthread.so.0”。我怎样才能摆脱这个错误?

最佳答案

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

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

  2. 获取 JNI 绑定(bind)。

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

  3. 获取 libvpx。

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

  4. 为 Android 配置 libvpx

    ./libvpx/configure --target=armv7-android-gcc --disable-examples --sdk-path={path to NDK}

    --sdk-path 必须是绝对的。

  5. 获取 libwebm。

    cd bindings/JNI

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

  6. 获取 libogg。

    Download ogg code from http://downloads.xiph.org/releases/ogg/libogg-1.3.0.tar.gz

    Extract to bindings/JNI.

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

    cd libogg-1.3.0 && ./configure && cd ..

  8. 获取libvorbis

    Download vorbis code from http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.3.tar.gz

    Extract to bindings/JNI.

  9. 获取libyuv

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

  10. 使用以下数据创建 {project}/jni/Application.mk:

    APP_ABI := armeabi-v7a
    APP_OPTIM := release
    APP_STL := gnustl_static
    APP_CPPFLAGS := -frtti
  11. 使用以下数据创建 {project}/jni/Android.mk:

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

    {path to NDK}/ndk-build

  13. 复制java代码。

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

  14. 添加代码以测试绑定(bind)。

    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 命名空间中。

关于android - 在安卓上构建 vp8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7634392/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com