美文网首页
SoundTouch+pjsip实现萝莉音

SoundTouch+pjsip实现萝莉音

作者: Westring | 来源:发表于2019-08-14 20:57 被阅读0次

首先要理解一下pjsip音频流媒体是如何工作的,port之间是怎样连接的,音频流是如何在port之间传递的
理解音频媒体流

梳理下soundtouch源码目录结构,前三个目录都是例子,第四个源码,第五个是在源码的基础上又封装了一层接口,我的做法是直接把源码和封装的接口一起编。


soundtouch源码目录结构

一、如何用NDK编译Android版本的Soundtouch库
首先在要编译的目录下创建jni目录,然后新建Android.mk和Application.mk并编写脚本,脚本具体咋写,可以问度娘


jni目录中的文件

[Android.mk]

LOCAL_PATH := $(call my-dir)
soundtouch_la_SOURCES := ./SoundTouch/AAFilter.cpp  ./SoundTouch/FIFOSampleBuffer.cpp \
                ./SoundTouch/FIRFilter.cpp ./SoundTouch/cpu_detect_x86.cpp \
                ./SoundTouch/sse_optimized.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

soundtouch_la_SOURCES += SoundTouchLib.cpp
include $(CLEAR_VARS)

LOCAL_C_INCLUDES += $(LOCAL_PATH)/../include $(LOCAL_PATH)
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_C_INCLUDES)
# *** Remember: Change -O0 into -O2 in add-applications.mk ***

LOCAL_MODULE    := lb_android_sound_touch
LOCAL_SRC_FILES := $(soundtouch_la_SOURCES)

# for native audio
LOCAL_SHARED_LIBRARIES += -lgcc
# --whole-archive -lgcc
# for logging
LOCAL_LDLIBS    += -llog
# Use ARM instruction set instead of Thumb for improved calculation performance in ARM CPUs
LOCAL_ARM_MODE := arm
include $(BUILD_SHARED_LIBRARY)

[Application.mk]

#
# Build library bilaries for all supported architectures
#
APP_ABI := armeabi
APP_OPTIM := release
APP_STL := c++_static
APP_CPPFLAGS := -fexceptions # -D SOUNDTOUCH_DISABLE_X86_OPTIMIZATIONS

然后执行ndk-build就会生成你需要的xxxx.so文件了


编译生成so

然后把生成的so和头文件拷贝到你的项目中,这里就不方便展示了。我这里拷贝到pjsua的项目中,然后改写了一下公司项目的makefile和ndk编译脚本。

二、如何用windows vs环境下编译soundtouch库
新建一个项目,把soundtouch源代码和头文件放进来


windows下soundtouch项目目录结构

我这里改写了源码中的头文件,所以要在项目属性里简单配置一下dll导出宏,另外记得在项目属性里把soundtouch里的include文件夹也包含进来。没有改写头文件的后一张图就不用做啦。


头文件 项目属性
项目属性

然后编译,编译完会生成.lib和.dll,.lib和头文件要拷贝到你项目中的相应位置,dll拷贝到你项目的运行目录,相信大家都不陌生。这里也不方便展示了。


vs编译soundtouch

如何在pjsip中添加soundtouch实现变声,我的做法是自己实现一个port然后连接到pjsip抽象的sound_port后面,将音频流传进会议桥,具体后面细讲。

相关文章

  • SoundTouch+pjsip实现萝莉音

    首先要理解一下pjsip音频流媒体是如何工作的,port之间是怎样连接的,音频流是如何在port之间传递的理解音频...

  • 萝莉音or少女音?

    萝莉音or少女音? 声音是女人裸露的灵魂,但什么样的声音好听这个就因人而异了。 最近在荔枝fm上读白先勇的《孽子》...

  • 萝莉音大妈

    今天网上最好笑的消息就是,一个藏脸的主播,无意间掉了挡脸特效,于是露出了真容。刷礼物的直男们纷纷掉线。 据说这个是...

  • 萝莉萝莉萝莉萝莉

    兔兔兔

  • 眯眸望姊痴 工装白天使 声是萝莉音 吟铃醉人心

  • 御姐愿萝莉

    天生御姐型, 莫知萝莉心。 冬封江湖海, 安闻泉泪音。

  • 网恋吗?我萝莉音!

    01 去年上专业实训课的时候,我们做的是女性口红的网络推广,我们小组申请了一个公众号,按照要求,每天要写一些口红的...

  • 木子餐厅——萝莉的“天堂”

    木子萝莉餐厅为年轻而生! 从服务员的萝莉服装,再到餐厅以粉色为基调的萝莉装修风格,以及木子萝莉充满青春的菜谱……木...

  • 2018.4.18《天才少女》观后感

    看《天才少女》这部电影是抖音上推荐的,也是一个萝莉和大叔的故事,之前看过《小萝莉的猴神大叔》把我感动得一塌糊涂,所...

  • 从汪星人到小萝莉,是什么让我们喜欢萝莉?

    现在越来越多的大绅士成为了萝莉控,萝莉控们经常被问:“你们为什么喜欢萝莉?”,虽然每个萝莉控心中都有自己的的答案,...

网友评论

      本文标题:SoundTouch+pjsip实现萝莉音

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