首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android :帮助在android中编译SoundTouch库

Android :帮助在android中编译SoundTouch库
EN

Stack Overflow用户
提问于 2012-07-02 07:07:55
回答 2查看 2.2K关注 0票数 2

我正在尝试用Android编译SoundTouch库。我从这里那里得到了一些指令,可以在android中编译这个库。

但是,当我尝试用ndk-build命令编译它时,它会显示SoundTouch lib的各种源文件中的错误,如下所示:

正如说明中提到的那样,我试图关闭异常处理,但它似乎不起作用。

我将所有文件从SoundTouch源代码复制到项目的JNI文件夹中。这是我的android.mk文件:

代码语言:javascript
复制
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

LOCAL_CFLAGS :- -frtti -fexceptions

LOCAL_SRC_FILES := AAFilter.cpp BPMDetect.cpp cpu_detect_x86.cpp FIFOSampleBuffer.cpp FIRFilter.cpp main.cpp mmx_optimized.cpp PeakFinder.cpp RateTransposer.cpp RunParameters.cpp SoundTouch.cpp sse_optimized.cpp TDStretch.cpp WavFile.cpp

LOCAL_LDLIBS := -lpcap

LOCAL_MODULE := libSoundTouch

LOCAL_C_INCLUDES := BPMDetect.h FIFOSampleBuffer.h FIFOSamplePipe.h SoundTouch.h STTypes.h

include $(BUILD_SHARED_LIBRARY)

谁能帮我编译和使用安卓上的SoundTouch库吗?

更新:

我更改了我的android.mk文件如下

代码语言:javascript
复制
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

LOCAL_CPP_FEATURES += -fno-exceptions

LOCAL_SRC_FILES := \
     SoundTouch/AAFilter.cpp \
     SoundTouch/BPMDetect.cpp \
     SoundTouch/cpu_detect_x86.cpp\
      SoundTouch/FIFOSampleBuffer.cpp \
      SoundTouch/FIRFilter.cpp \
      SoundTouch/mmx_optimized.cpp \
      SoundTouch/PeakFinder.cpp \
      SoundTouch/RateTransposer.cpp \
      SoundTouch/SoundTouch.cpp \
      SoundTouch/sse_optimized.cpp \
      SoundTouch/TDStretch.cpp 

LOCAL_MODULE := libSoundTouch

LOCAL_C_INCLUDES := include/BPMDetect.h include/FIFOSampleBuffer.h include/FIFOSamplePipe.h include/SoundTouch.h include/STTypes.h

include $(BUILD_SHARED_LIBRARY)

现在一切正常。谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-05 10:11:59

我通过更改我的android.mk文件成功地编译了:

这是我的android.mk文件

代码语言:javascript
复制
include $(CLEAR_VARS)
LOCAL_PATH:= $(call my-dir)

LOCAL_CPP_FEATURES += -fno-exceptions

LOCAL_SRC_FILES := \
     SoundTouch/AAFilter.cpp \
     SoundTouch/BPMDetect.cpp \
     SoundTouch/cpu_detect_x86.cpp\
      SoundTouch/FIFOSampleBuffer.cpp \
      SoundTouch/FIRFilter.cpp \
      SoundTouch/mmx_optimized.cpp \
      SoundTouch/PeakFinder.cpp \
      SoundTouch/RateTransposer.cpp \
      SoundTouch/SoundTouch.cpp \
      SoundTouch/sse_optimized.cpp \
      SoundTouch/TDStretch.cpp 

LOCAL_MODULE := libSoundTouch

LOCAL_C_INCLUDES := include/BPMDetect.h include/FIFOSampleBuffer.h include/FIFOSamplePipe.h include/SoundTouch.h include/STTypes.h

include $(BUILD_SHARED_LIBRARY)
票数 2
EN

Stack Overflow用户

发布于 2014-10-03 11:49:18

查看一下链接,这个家伙已经编译好了,可以使用SoundTouch Android包装器。

  • 目前能够延长时间和改变音高。
  • 目前只支持仙女座与FPU (armeabi-v7a)。

示例用法:

代码语言:javascript
复制
//There are currently 16 track id's you can use (0-15), each one has a separate SoundTouch processor.

    //Set your audio processing requirements: track id, channels, samplingRate, bytesPerSample, 
    //                              tempoChange (1.0 is normal speed), pitchChange (in semi-tones)

    SoundTouch soundTouch = new SoundTouch(0, 2, 44100, 2, 1.0f, 2.0f);

    //byte[] sizes are recommended to be 8192 bytes.

    //put a byte[] of PCM audio in the sound processor:
    soundTouch.putBytes(input);

    //write output to a byte[]:
    int bytesReceived = soundTouch.getBytes(output);

    //after you write the last byte[], call finish().
    soundTouch.finish();

    //now get the remaining bytes from the sound processor.
    int bytesReceived = 0;
    do
    {
        bytesReceived = soundTouch.getBytes(output);
        //do stuff with output.
    } while (bytesReceived != 0)

    //if you stop playing, call clear on the track to clear the pipeline for later use.
    soundTouch.clearBuffer()

访问github链接上的更多细节.

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11289145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档