Android SoundTouch(处理音频)
2018-03-27 10:02
260 查看
音频处理C++实现SoundTouch下载
下载后项目目录如下:
SoundTouch项目目录.png
使用Android Studio打开C:\Users\Administrator\Desktop\soundtouch-2.0.0\soundtouch\source目录下的Android-lib项目(原始项目为eclipse项目)。
更改项目minSdkVersion(最小为14)、compileSdkVersion和targetSdkVersion。
配置NDK
(1)在项目根目录下的gradle.properties中添加
如果没有gradle.properties,从其他项目拷贝过来或者自己新建一个都可以。
(2)在local.properties中添加ndk路径(是你的ndk安装路径)
(3)在app的build.pradle中添加
完成后同步工程。
在项目的F:\test\SoundTouch\app\src\main\jni目录下创建文件夹SoundTouch。
图1.png
将soundtouch-2.0.0中.cpp和.h文件拷贝至F:\test\SoundTouch\app\src\main\jni\SoundTouch文件夹中,存在需要拷贝文件的文件夹有:
C:\Users\Administrator\Desktop\soundtouch-2.0.0\soundtouch\source\SoundTouch
C:\Users\Administrator\Desktop\soundtouch-2.0.0\soundtouch\source\SoundStretch
C:\Users\Administrator\Desktop\soundtouch-2.0.0\soundtouch\include
找到STTypes.h头文件,将
图2.png
打开jni/soundtouch-jni.cpp,将
修改为
打开jni/Android.mk文件,将
修改为
注意
使用Terminal工具先进入D:\java\androidstudio\sdk\ndk-bundle路径下,然后使用命令执行。
编译完成后,在F:\test\SoundTouch\app\src\main路径下生成libs和obj文件夹,这里我们将libs文件夹重命名为jniLibs, 将obj文件夹删除。然后在手机的sdcard/Download/文件夹下放一个wav格式的音频文件, 然后运行项目。
官方案例效果图.png
可对Tempo和Pitch half-steps进行数据修改,下方的Source file和Output file可不进行更改,勾选Play the outputt file after processing!选项(用途: 生成新文件之后自动不播放),按钮Process files! 是生成新文件。
下载后项目目录如下:
SoundTouch项目目录.png
使用Android Studio打开C:\Users\Administrator\Desktop\soundtouch-2.0.0\soundtouch\source目录下的Android-lib项目(原始项目为eclipse项目)。
更改项目minSdkVersion(最小为14)、compileSdkVersion和targetSdkVersion。
配置NDK
(1)在项目根目录下的gradle.properties中添加
android.useDeprecatedNdk=true
如果没有gradle.properties,从其他项目拷贝过来或者自己新建一个都可以。
(2)在local.properties中添加ndk路径(是你的ndk安装路径)
ndk.dir=ndk.dir=D\:\\java\\androidstudio\\sdk\\ndk-bundle
(3)在app的build.pradle中添加
sourceSets.main { jni.srcDirs = ['libs'] }
完成后同步工程。
在项目的F:\test\SoundTouch\app\src\main\jni目录下创建文件夹SoundTouch。
图1.png
将soundtouch-2.0.0中.cpp和.h文件拷贝至F:\test\SoundTouch\app\src\main\jni\SoundTouch文件夹中,存在需要拷贝文件的文件夹有:
C:\Users\Administrator\Desktop\soundtouch-2.0.0\soundtouch\source\SoundTouch
C:\Users\Administrator\Desktop\soundtouch-2.0.0\soundtouch\source\SoundStretch
C:\Users\Administrator\Desktop\soundtouch-2.0.0\soundtouch\include
找到STTypes.h头文件,将
#define ST_NO_EXCEPTION_HANDLING 1原先的注释去掉,即启用这个宏定义,这样就不会使用c++的stdexcep相关的东西了,否则是编译不过去的。
图2.png
打开jni/soundtouch-jni.cpp,将
#include "../../../include/SoundTouch.h" #include "../source/SoundStretch/WavFile.h"
修改为
#include "SoundTouch/SoundTouch.h" #include "SoundTouch/WavFile.h"
打开jni/Android.mk文件,将
LOCAL_MODULE := soundtouch LOCAL_SRC_FILES := soundtouch-jni.cpp ../../SoundTouch/AAFilter.cpp ../../SoundTouch/FIFOSampleBuffer.cpp \ ../../SoundTouch/FIRFilter.cpp ../../SoundTouch/cpu_detect_x86.cpp \ ../../SoundTouch/sse_optimized.cpp ../../SoundStretch/WavFile.cpp \ ../../SoundTouch/RateTransposer.cpp ../../SoundTouch/SoundTouch.cpp \ ../../SoundTouch/InterpolateCubic.cpp ../../SoundTouch/InterpolateLinear.cpp \ ../../SoundTouch/InterpolateShannon.cpp ../../SoundTouch/TDStretch.cpp \ ../../SoundTouch/BPMDetect.cpp ../../SoundTouch/PeakFinder.cpp # for native audio LOCAL_SHARED_LIBRARIES += -lgcc
修改为
LOCAL_MODULE := soundtouch LOCAL_SRC_FILES := \ soundtouch-jni.cpp \ SoundTouch/AAFilter.cpp \ SoundTouch/FIFOSampleBuffer.cpp \ SoundTouch/FIRFilter.cpp \ SoundTouch/cpu_detect_x86.cpp \ SoundTouch/sse_optimized.cpp \ SoundStretch/WavFile.cpp \ SoundTouch/RateTransposer.cpp \ SoundTouch/SoundTouch.cpp \ SoundTouch/InterpolateCubic.cpp \ SoundTouch/InterpolateLinear.cpp \ SoundTouch/InterpolateShannon.cpp \ SoundTouch/TDStretch.cpp \ SoundTouch/BPMDetect.cpp \ SoundTouch/PeakFinder.cpp \ # for native audio # LOCAL_SHARED_LIBRARIES += -lgcc
注意
将../../SoundStretch/WavFile.cpp \ 修改为SoundTouch/WavFile.cpp \
使用Terminal工具先进入D:\java\androidstudio\sdk\ndk-bundle路径下,然后使用命令执行。
D:\java\androidstudio\sdk\ndk-bundle>ndk-build.cmd NDK_PROJECT_PATH=F:\test\SoundTouch\app\src\main
编译完成后,在F:\test\SoundTouch\app\src\main路径下生成libs和obj文件夹,这里我们将libs文件夹重命名为jniLibs, 将obj文件夹删除。然后在手机的sdcard/Download/文件夹下放一个wav格式的音频文件, 然后运行项目。
官方案例效果图.png
可对Tempo和Pitch half-steps进行数据修改,下方的Source file和Output file可不进行更改,勾选Play the outputt file after processing!选项(用途: 生成新文件之后自动不播放),按钮Process files! 是生成新文件。
相关文章推荐
- Android音频焦点处理相关的方法
- SoundTouch音频处理库源码分析及算法提取(2)
- Pro Android Media:5 Android音频处理入门
- SoundTouch音频处理库源码分析及算法提取(2)
- 单独编译使用WebRTC的音频处理模块 - android
- 在Android中音频和视频的处理
- 在Android中音频和视频的处理
- SoundTouch音频处理库源码分析及算法提取(3)
- SoundTouch音频处理库源码分析及算法提取(7)
- SoundTouch音频处理库源码分析及算法提取(3)
- Android音频处理——通过AudioRecord去保存PCM文件进行录制,播放,停止,删除功能
- Android音频处理——通过AudioRecord去保存PCM文件进行录制,播放,停止,删除功能
- SoundTouch音频处理库源码分析及算法提取(4)
- Android 处理音频焦点 AudioFocus
- SoundTouch音频处理库源码分析及算法提取(4)
- 【单独编译使用WebRTC的音频处理模块 - android】
- webrtc_ns模块android手机音频处理
- SoundTouch音频处理库源码分析及算法提取(5)
- SoundTouch音频处理库源码分析及算法提取(9)
- SoundTouch音频处理库源码分析及算法提取(5)