草庐IT

android - 在安卓上构建 vp8

coder 2023-12-01 原文

我正在尝试为 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/

有关android - 在安卓上构建 vp8的更多相关文章

  1. ruby - 在 Ruby 中构建长字符串的简洁方法 - 2

    在编写Ruby(客户端脚本)时,我看到了三种构建更长字符串的方法,包括行尾,所有这些对我来说“闻起来”有点难看。有没有更干净、更好的方法?变量递增。ifrender_quote?quote="NowthatthereistheTec-9,acrappyspraygunfromSouthMiami."quote+="ThisgunisadvertisedasthemostpopularguninAmericancrime.Doyoubelievethatshit?"quote+="Itactuallysaysthatinthelittlebookthatcomeswithit:themo

  2. 安卓apk修改(Android反编译apk) - 2

    最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路

  3. ruby - 使用 rbenv 和 ruby​​-build 构建 ruby​​ 失败,出现 undefined symbol : SSLv2_method - 2

    我正在尝试在配备ARMv7处理器的SynologyDS215j上安装ruby​​2.2.4或2.3.0。我用了optware-ng安装gcc、make、openssl、openssl-dev和zlib。我根据README中的说明安装了rbenv(版本1.0.0-19-g29b4da7)和ruby​​-build插件。.这些是随optware-ng安装的软件包及其版本binutils-2.25.1-1gcc-5.3.0-6gconv-modules-2.21-3glibc-opt-2.21-4libc-dev-2.21-1libgmp-6.0.0a-1libmpc-1.0.2-1libm

  4. ruby-on-rails - 如何构建复杂的 Rails 系统 - 2

    关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭8年前。Improvethisquestion我们有以下(以及更多)系统,我们将数据从一个应用推送/拉取到另一个:托管CRM(InsideSales.com)Asterisk电话系统(内部)横幅广告系统(openx,我们托管)潜在客户生成系统(自行开发)电子商务商店(spree,我们托管)工作板(本土)一些工作网站抓取+入站工作提要电子邮件传送系统(如Mailchimp,自主开发)事件管理系统(如eventbrite,自主开发)仪表板系统(大量图表和

  5. ruby-on-rails -/usr/local/lib/libz.1.dylib,文件是为 i386 构建的,它不是被链接的体系结构 (x86_64) - 2

    在我的mac上安装几个东西时遇到这个问题,我认为这个问题来自将我的豹子升级到雪豹。我认为这个问题也与macports有关。/usr/local/lib/libz.1.dylib,filewasbuiltfori386whichisnotthearchitecturebeinglinked(x86_64)有什么想法吗?更新更具体地说,这发生在安装nokogirigem时日志看起来像:xslt_stylesheet.c:127:warning:passingargument1of‘Nokogiri_wrap_xml_document’withdifferentwidthduetoproto

  6. ruby - Ruby 语言可以用来构建操作系统吗? - 2

    Ruby语言是否可以用于创建全新的移动操作系统或桌面操作系统,即是否可以用于系统编程? 最佳答案 嗯,现在有一些操作系统使用比C更高级的语言。基本上,ruby解释器本身需要用一些低级的东西来编写,并且需要一些引导加载代码将功能齐全的ruby​​解释器作为独立内核加载到内存中。一旦ruby​​解释器被引导并以内核模式(或innerrings之一)运行,就没有什么可以阻止您在其上构建整个操作系统。不幸的是,它可能会很慢。每个操作系统功能的垃圾收集可能会相当引人注目。ruby解释器将负责任务调度和网络堆栈等基本事情,使用垃圾收集框架会大大

  7. ruby-on-rails - 无法构建 gem native 扩展 (mkmf (LoadError)) - Ubuntu 12.04 - 2

    这个问题在这里已经有了答案:Unabletoinstallgem-Failedtobuildgemnativeextension-cannotloadsuchfile--mkmf(LoadError)(17个答案)关闭9年前。嘿,我正在尝试在一台新的ubuntu机器上安装rails。我安装了ruby​​和rvm,但出现“无法构建gemnative扩展”错误。这是什么意思?$sudogeminstallrails-v3.2.9(没有sudo表示我没有权限)然后它会输出很多“获取”命令,最终会出现这个错误:Buildingnativeextensions.Thiscouldtakeawhi

  8. ruby-on-rails - 如何使用 ruby​​ on rails 构建 openid 提供程序 - 2

    我尝试了一些关于ruby​​onrails中openid利用率的搜索。然而,尽管出现了一组选项,例如omniauth、authlogic等,但这些gem通常用于构建接受openid身份验证的站点。换句话说,它们用于openid消费者设置。我也想构建自己的openid服务器。AssuggestedhereinOpenIdsite我发现了像Masquerade和local-openid这样的东西,不幸的是,它们不是非常活跃的项目,下载量很少。自建openidprovider服务器有没有其他设施可以推荐?非常感谢!!干杯,叶 最佳答案 虽

  9. ruby - 使用 Ruby 构建聊天应用程序 - 2

    我正在尝试构建一个纯粹使用Ruby的聊天应用程序。有一个similarquestion较早发布,但我有不同的相关查询。我看过thisexample(与之前发布类似问题的人所提到的相同)。示例中的代码似乎对我不起作用。在终端上运行ruby​​脚本,并连接到url:http://localhost:1234在我的浏览器中,我无限期地遇到“正在从本地主机传输数据...”消息。此处的1234是所提供示例中使用的端口号。我无法弄清楚我运行失败的原因是什么。可能是我需要在执行脚本时在命令行中指定一些东西,或者我应该通过其他地方(可能是浏览器)开始聊天(输入输出)。我无法弄清楚到底该做什么。你能帮我

  10. ruby-on-rails - Rails 如何为 Google Charts 构建数据结构 - 2

    我想使用googlecharts创建一个如下所示的图表:GoogleChart.pie_400x200('TacoBell'=>0,'Mediterranean'=>2,'Shivas'=>5)给定一个对象Results(name,count)。如何为GoogleCharts的结构创建一个对象,如上所示?谢谢 最佳答案 从您在评论中列为@results的结果对象开始,以下应该有效:GoogleChart.pie_400x200(@results.map{|r|{r[:title]=>r[:percentage]}})

随机推荐