美文网首页
NDK—QQ变声环境搭建

NDK—QQ变声环境搭建

作者: Lypop | 来源:发表于2017-11-02 23:05 被阅读0次

    说起QQ变声效果大家并不陌生,这是用的啥技术呢?其实它使用到了fmod的东西,现在我们就来研究一下变声技术

    fmod 官网:https://www.fmod.com/studio

    QQ截图20171102222041.png

    是不是很炫,以前想都不敢想能实现这效果,现在就能实现了,来代码搞起。。

    这里呢,我们先来搭建一下QQ变声效果的开发环境做一个播放声音的进而开发变声效果。

    正文

    image

    先进入官网去下载Android的开发包,如图,我们接下来就搞这个目录里面的东西,因为是刚上手当然是低级别的,哈哈

    image

    我们来说一下这三个目录是啥东西,example是开发的示例文件,inc是需要引入的.h文件,lib是需要加入的jar包

    好,现在我们做的仅仅是先将声音播放出来,变不变声先不管,开发环境是Eclipse,之后会介绍AS的开发步骤

    进入example目录找到play_sound.cpp、inc目录导入Eclipse jni目录,play_sound.cpp需要包含common.h(因为fmod.hpp是inc里面的只需要指定一下就可以)

    image

    为什么还有hpp格式的文件呢?是因为在hpp格式文件里面既包含h文件的声明又包含cpp的实现,所以才命名为hpp格式,这里我们不仅要导入common.h还需要导入实现common.cpp文件

    common.h

    image

    这里我们看到我们还需要导入common_platform.h,当然也需要导入相应的.cpp文件了

    然后我们执行下面的操作生成Android.mk文件

    image

    接着我们导入example里面提供的MainActivity文件,记住包名不要改变,接着我们利用javah工具得到.h文件,那这.h文件让哪个文件来包含进来呢?经过查看看到common_platform.cpp里面有相应的实现代码

    到这里我们还少些什么呢,那就是.so文件需要导入进来,因为作者将inc里面的声明实现都放在了so文件里面,所以需要将so文件加入jni文件里面

    之后我们需要配置一下Android.mk

    LOCAL_PATH := $(call my-dir)
    
    #编译libfmod.so文件
    include $(CLEAR_VARS)
    LOCAL_MODULE := fmod
    LOCAL_SRC_FILES := libfmod.so
    include $(PREBUILT_SHARED_LIBRARY)
    
    #编译libfmodL.so文件
    include $(CLEAR_VARS)
    LOCAL_MODULE := fmodL
    LOCAL_SRC_FILES := libfmodL.so
    include $(PREBUILT_SHARED_LIBRARY)
    
    include $(CLEAR_VARS)
    
    LOCAL_MODULE    := voicer_change   #生成so文件的名字
    ##编译相应的cpp文件,都需要编译不让会出现找不到类的情况
    LOCAL_SRC_FILES := play_sound.cpp common.cpp common_platform.cpp
    LOCAL_SHARED_LIBRARIES := fmod fmodL   #编译的时候要依赖的共享库
    LOCAL_LDLIBS := -llog  #打印Log
    include $(BUILD_SHARED_LIBRARY)
    

    至此我们就可以进行build了,当然会报错#include<string.h>找不到,因为需要提供C++标准库支持

    image

    这时候我们需要新建一个Application.mk

    APP_ABI := armeabi  #编译与调试的CPU架构
    APP_STL := stlport_static
    APP_STL := gnustl_static  #支持 C++异常处理,标准模板块
    APP_CPPFLAGS +=-std=c++11 #允许使用c++11的函数等功能
    

    进行build还会发生so生成失败,这时候我们需要引入下面的这些路径才可以

    image

    前面的三个是有关jni.h jni_md.h的路径
    后面的是有关C++标准库相关的路径,所以需要引用,当时就是没有引入就报了一堆错误,擦擦,所以要想build成功就需要进行引入

    最后进行build,当在build成功之后不能运行,需要close project之后在open然后在运行,这样就可以运行了哦,当然在运行之前需要将声音资源加入到assets目录下面,具体的界面如下:

    image

    至此,QQ变声的NDK环境就搭建好了,接下来我们将在这基础上开发QQ变声的功能,O(∩_∩)O谢谢

    相关文章

      网友评论

          本文标题:NDK—QQ变声环境搭建

          本文链接:https://www.haomeiwen.com/subject/msqzpxtx.html