Android studio NDK + CMake 編譯SoundTouch實現wav格式音頻的變速、變調功能

舒適提示:

本博客不是從零開始的文章,也不是什麼高手精貼,只是一個菜雞踩坑記錄貼,建議懂得NDK+CMake流程的人觀看,如果從零開始的,推薦先去看一下我以前跑的一個例子:html

傳送門在此:https://my.oschina.net/u/1462828/blog/1552937java

本帖子只負責編譯,具體的SoundTouch用法,還得另行專研。測試

目前來講的話,官方例子已經提供了setSpeed方法和setPitchSemiTones(參數是-12 到 12 )這兩個方法,已經能夠實現最簡單的變速和變調了,本人親測是可用的。更多的接口可參數,能夠參考這個帖子:spa

傳送門:https://blog.csdn.net/wkw1125/article/details/63807128.net

至於錄音等實時操做的,網上隨便下了一個demo,錄音的時候竟然崩了,估計是帖子太太久遠,而我測試用的手機是8.0系統的,因此,目測這方面還有很多的坑,你們慢慢去踩吧。code

帖子參考

https://blog.csdn.net/mazaiting/article/details/79708541htm

步驟1:下載

確定是先下載SoundTouch了,直接去官網下最新(目前是2.0)的就好:blog

傳送門: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源碼

一、main/cpp目錄下建立一個文件夾,我這裏命名爲touch

二、將源碼sourc/SoundTouch目錄下的全部cpp和h的文件複製到main/cpp/touch目錄下

三、將源碼的include代碼的全部h文件複製到main/cpp/touch目錄下

四、將源碼sourc/SoundStretch目錄下的全部cpp和h的文件(main用不到)複製到main/cpp/touch目錄下

全部文件複製完成以後,文件列表如圖所示:

步驟4:修改代碼

一、看大神的說法:

二、修改soundtouch-jni.cpp裏面的引用SoundTouch.h和WavFile.h這兩個頭文件的代碼和引用com_touch_SoundTouch.h,刪掉再導入就行了,反正用CMake是有代碼提示的,導入以後以下:

步驟5:編輯CMakeLists.txt文件

所有文件我就不貼出來了,貼關鍵點就行了,看圖

編譯一下,若是沒有報錯的話,應該會自動生成一個名爲libsoundtouch.so的文件,固然不會在jniLibs裏面出現,能夠打個apk出來,用壓縮軟件打開apk,找到lib文件夾,應該能夠在裏面找到這個libsoundtouch.so文件。

相關文章
相關標籤/搜索