以上就是给各位分享AndroidstudioNDK+CMake编译SoundTouch实现wav格式音频的变速、变调功能,同时本文还将给你拓展androidndk(Notoolchainsfoundi
以上就是给各位分享Android studio NDK + CMake 编译 SoundTouch 实现 wav 格式音频的变速、变调功能,同时本文还将给你拓展android ndk (No toolchains found in the NDK toolchains folder for ABI with prefix...)、Android NDK - 使用多个 NDK 构建构建应用程序、Android NDK CMake 错误:CMake 无法确定目标的链接器语言、Android NDK – 构buildTessTwo(安卓版Tesseract工具) – ndk-build失败等相关知识,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:- Android studio NDK + CMake 编译 SoundTouch 实现 wav 格式音频的变速、变调功能
- android ndk (No toolchains found in the NDK toolchains folder for ABI with prefix...)
- Android NDK - 使用多个 NDK 构建构建应用程序
- Android NDK CMake 错误:CMake 无法确定目标的链接器语言
- Android NDK – 构buildTessTwo(安卓版Tesseract工具) – ndk-build失败
Android studio NDK + CMake 编译 SoundTouch 实现 wav 格式音频的变速、变调功能
温馨提示:
本博客不是从零开始的文章,也不是什么高手精贴,只是一个菜鸡踩坑记录贴,建议懂得 NDK+CMake 流程的人观看,若是从零开始的,推荐先去看一下我之前跑的一个例子:
传送门在此:https://my.oschina.net/u/1462828/blog/1552937
本帖子只负责编译,具体的 SoundTouch 用法,还得另行专研。
目前来说的话,官方例子已经提供了 setSpeed 方法和 setPitchSemiTones(参数是 - 12 到 12 )这两个方法,已经可以实现最简单的变速和变调了,本人亲测是可用的。更多的接口可参数,可以参考这个帖子:
传送门:https://blog.csdn.net/wkw1125/article/details/63807128
至于录音等实时操作的,网上随便下了一个 demo,录音的时候居然崩了,估计是帖子太过久远,而我测试用的手机是 8.0 系统的,所以,目测这方面还有不少的坑,大家慢慢去踩吧。
帖子参考
https://blog.csdn.net/mazaiting/article/details/79708541
步骤 1:下载
肯定是先下载 SoundTouch 了,直接去官网下最新(目前是 2.0)的就好:
传送门:http://www.surina.net/soundtouch/sourcecode.html
步骤 2:生成.h
复制一个 SoundTouch.java 并生成.h 文件(详细步骤:自行百度,NDK 生成.h 文件)
我这里包名是 com.touch,所以生成了 com_touch_SoundTouch.h
将 com_touch_SoundTouch.h 和源码的 soundtouch-jni.cpp 复制到 main/cpp 目录下,我这里还有其他好多东西,就不放截图了。
步骤 3:复制 SoundTouch 源码
1、main/cpp 目录下创建一个文件夹,我这里命名为 touch
2、将源码 sourc/SoundTouch 目录下的所有 cpp 和 h 的文件复制到 main/cpp/touch 目录下
3、将源码的 include 代码的所有 h 文件复制到 main/cpp/touch 目录下
4、将源码 sourc/SoundStretch 目录下的所有 cpp 和 h 的文件(main 用不到)复制到 main/cpp/touch 目录下
所有文件复制完成之后,文件列表如图所示:
步骤 4:修改代码
1、看大神的说法:
2、修改 soundtouch-jni.cpp 里面的引用 SoundTouch.h 和 WavFile.h 这两个头文件的代码和引用 com_touch_SoundTouch.h,删掉再导入就好了,反正用 CMake 是有代码提示的,导入之后如下:
步骤 5:编辑 CMakeLists.txt 文件
全部文件我就不贴出来了,贴关键点就好了,看图
编译一下,如果没有报错的话,应该会自动生成一个名为 libsoundtouch.so 的文件,当然不会在 jniLibs 里面出现,可以打个 apk 出来,用压缩软件打开 apk,找到 lib 文件夹,应该可以在里面找到这个 libsoundtouch.so 文件。
android ndk (No toolchains found in the NDK toolchains folder for ABI with prefix...)
今天刚在 android studio (3.0.1)版本搭建 ndk 环境时遇到如上问题
在 r18b 版本中发现了一段话,大概解释了如上问题原因

Android NDK location 即本地 NDK 路径。
Android NDK - 使用多个 NDK 构建构建应用程序
如何解决Android NDK - 使用多个 NDK 构建构建应用程序
是否可以像这样在 build.gradle 中链接多个本地库(用 C 编写):
externalNativeBuild {
ndkBuild {
path ''src/main/c/Lib1Android.mk''
path ''src/main/c/Lib2Android.mk''
}
}
当我使用它时,我的 JNI 文件无法看到来自 Lib1 的本机函数 :(
解决方法
根据 NdkBuild doc,您只需要指定根 ndk-build 脚本,但在其中您可以调用任意数量的其他 Android.mk
文件(此处讨论如何执行此操作 Android NDK: how to include Android.mk into another Android.mk (hierarchical project structure)? ).
Android NDK CMake 错误:CMake 无法确定目标的链接器语言
如何解决Android NDK CMake 错误:CMake 无法确定目标的链接器语言
我正在尝试在 Android Studio 中使用 Android NDK 为 Android 编译比特币(核心),但我得到一个 CMake Error: CMake can not determine linker language for target: bitcoin
。我将 Bitcoin repository 克隆到 app/src/main/cpp/bitcoin
。我的 CMakeLists.txt
(在 app/src/main/cpp/CMakeLists.txt
中)如下:
cmake_minimum_required(VERSION 3.4.1)
project(bitcoin)
add_library(bitcoin SHARED bitcoin/src/)
我尝试了此论坛中的许多解决方案,包括在项目名称后附加 C CXX
和 CXX
、添加 include_directories(bitcoin/src/)
、添加 set_target_properties(bitcoin PROPERTIES LINKER_LANGUAGE CXX)
以及这些的各种组合,但错误仍然存在。我做错了什么?
Android NDK – 构buildTessTwo(安卓版Tesseract工具) – ndk-build失败
当我运行ndk-build,它没有抱怨从以下错误:
$ ndk-build make: /…/android-ndk-r7/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc: Command not found Compile arm : jpeg <= jcapimin.c make: /…/android-ndk-r7/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc: Command not found make: *** [obj/local/armeabI/Objs/jpeg/jcapimin.o] Error 127
问题是,虽然它说“找不到命令”,“arm-linux-androideabi-gcc”存在于上面的path。 即使我直接从/…/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/运行“arm-linux-androideabi-gcc”,它也会给出同样的错误“command not found”
我也添加./toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin到我的path,但仍然得到相同的错误。 即使我尝试了不同版本的ndk(7,7b,6b)仍然是相同的错误! 在我看来,上面的gcc是为32位机器而我的机器是“Linux 2.6.32-37-x86_64”。 但我猜ndk包应该适用于32位和64位。 我对吗? 在使用之前是否需要编译或编译ndk? 我假设下载和解包是我必须做的。 对? 怎么样sdk? 我只是下载并解压缩在我有我的ndk相同的文件夹。 我需要configuration他们相互工作吗?
如何重新configuration文件以允许LiveCode使用Android模拟器?
Windows PC作为USB主机通过USB与Android设备进行通信
在centos中没有包lib32z1,lib32ncurses5,lib32stdc ++ 6
Windows和黑莓的图标大小和像素密度
三星galaxy SIII和ACR122U的互动
Android和Windows没有相同的TLSalgorithm
我使用了adb命令“pm block com.sonymobile.advancedwidget.entrance”如何解锁这个应用程序?
如何在我的Android中运行BASH脚本?
Android Studio Emulator – Ubuntu 16.04 LTS
Android的Maven插件 – 使用命令行太长的命令行创builddex(windows)
我遇到了同样的问题。 你是对的,问题是由于试图在64位内核上运行一个32位的二进制文件。
我通过安装32位兼容库来解决它在Ubuntu 11.10上的问题:
sudo apt-get install ia32-libs
我们今天的关于Android studio NDK + CMake 编译 SoundTouch 实现 wav 格式音频的变速、变调功能的分享已经告一段落,感谢您的关注,如果您想了解更多关于android ndk (No toolchains found in the NDK toolchains folder for ABI with prefix...)、Android NDK - 使用多个 NDK 构建构建应用程序、Android NDK CMake 错误:CMake 无法确定目标的链接器语言、Android NDK – 构buildTessTwo(安卓版Tesseract工具) – ndk-build失败的相关信息,请在本站查询。
本文标签: