美文网首页
编译vo-amrwbenc iOS (16kHZ wav文件转a

编译vo-amrwbenc iOS (16kHZ wav文件转a

作者: 77168ddcf2c6 | 来源:发表于2016-06-15 17:48 被阅读1463次

由于格式问题,我已经更新到新的文章,请看这里



 由于公司正在做声纹方面的开发,所以需要对语音数据做压缩,目前想到了三种压缩方式,1是AMR,2是Speex,3是Opus,这里先说第一种方式,在iOS4.0之前是可以进行amr格式的录音的,后来苹果取消了这个声音格式,但是可以使用opencore-amr来将wav格式转换为amr格式。

  目前网上的例子大多数都是8Khz采样率的wav文件转AMR,具体可以参照iOS音频格式之AMR和WAV互转(更新支持64位),这里也要感谢这篇博文的作者黄俊鹏,他给我提供了帮助我才找到了方法。但是我们公司由于对于声音采集样本的要求比较高,所以我们要使用16Khz的采样率,那么问题就出现了,在opencore-amr中并没有提供amr-wb的encode方法,8kHZ使用的opencore-amrnb.a的静态库,其中提供了encode和decode的方法,但是对于16Khz使用的是opencore-amrwb的静态库,其中里面只提供了decode的方法,后来通过其他资料我我才明白encode在另外一个项目vo-amrwbenc里面,如果要使用的话必须要单独编译这个项目才可以,项目下载可以看opencore-amr,所以如果需要将16Khz wav文件转为amr文件,只需要编译这个库然后使用就可以了,如果要解码那么还是需要使用原来的opencore-amr库。

 #下面就可以编译vo-amrwebenc

  ## 1.首先新建一个文件夹,将下载到的vo-amrwbenc-0.1.3.tar.gz压缩包放到里面,然后进入这个文件夹,在里面创建build.sh文件,将以下脚本粘贴到文件里面

#!/bin/sh

set -xe

VERSION="0.1.3"

LIBSRCNAME="vo-amrwbenc"

CURRENTPATH=`pwd`

mkdir -p "${CURRENTPATH}/src"

tar zxvf ${LIBSRCNAME}-${VERSION}.tar.gz -C "${CURRENTPATH}/src"

cd "${CURRENTPATH}/src/${LIBSRCNAME}-${VERSION}"

# 设置环境变量并创建lib-ios文件夹,后续生成的.a类库都会放在这个文件夹里边

DEST="${CURRENTPATH}/lib-ios"

mkdir -p "${DEST}"

ARCHS="armv7 armv7s arm64 i386 x86_64"

LIBS="libvo-amrwbenc.a"

for arch in $ARCHS; do

case $arch in arm*)

IOSV="-miphoneos-version-min=7.0"

if [ $arch == "arm64" ]

then

IOSV="-miphoneos-version-min=7.0"

fi

echo "Building for iOS $arch ****************"

# 编译 $arch 环境的类库(amr类型类型)

SDKROOT="$(xcrun --sdk iphoneos --show-sdk-path)"

CC="$(xcrun --sdk iphoneos -f clang)"

CXX="$(xcrun --sdk iphoneos -f clang++)"

CPP="$(xcrun -sdk iphonesimulator -f clang++)"

CFLAGS="-isysroot $SDKROOT -arch $arch $IOSV -isystem $SDKROOT/usr/include -fembed-bitcode"

CXXFLAGS=$CFLAGS

CPPFLAGS=$CFLAGS

export CC CXX CFLAGS CXXFLAGS CPPFLAGS

./configure \

--host=arm-apple-darwin \

--prefix=$DEST \

--disable-shared --enable-static

;;

*)

IOSV="-mios-simulator-version-min=7.0"

echo "Building for iOS $arch*****************"

SDKROOT=`xcodebuild -version -sdk iphonesimulator Path`

CC="$(xcrun -sdk iphoneos -f clang)"

CXX="$(xcrun -sdk iphonesimulator -f clang++)"

CPP="$(xcrun -sdk iphonesimulator -f clang++)"

CFLAGS="-isysroot $SDKROOT -arch $arch $IOSV -isystem $SDKROOT/usr/include -fembed-bitcode"

CXXFLAGS=$CFLAGS

CPPFLAGS=$CFLAGS

export CC CXX CFLAGS CXXFLAGS CPPFLAGS

./configure \

--prefix=$DEST \

--disable-shared

;;

esac

make > /dev/null

make install     

make clean   

for i in $LIBS; do

mv $DEST/lib/$i $DEST/lib/$i.$arch

done

done

for i in $LIBS; do

input=""

for arch in $ARCHS; do

input="$input $DEST/lib/$i.$arch"

done

lipo -create -output $DEST/lib/$i $input

done

##2.修改build.sh的权限,打开终端,cd到新建的文件夹,使用命令 chmod  777 build.sh 修改权限。

##3.修改完成之后在终端执行 ./build.sh 就会在vo-amrwbenc里面生成一个lib-ios文件夹,里面就包含了libvo-amrwbenc.a的静态库和enc_if_h的头文件。

最后我已经将编译好的项目放到github上面,大家可以去这里下载。

https://github.com/codemonkeybulucck/opencore-vo-amrwbenc-iOS

lib-ios里面保存的就是静态库和头文件。至于怎么使用这个库我改天会上传一份代码。

相关文章

  • 编译vo-amrwbenc iOS (16kHZ wav文件转a

    由于格式问题,我已经更新到新的文章,请看这里 由于公司正在做声纹方面的开发,所以需要对语音数据做压缩,目前想到了三...

  • 使用opencore-amr实现wav转amr-8khz-16k

    opencore-amrDemo-iOS 演示了8Khz wav文件和amr文件互转 和 16Khz wav文件...

  • [kalid] pcm2wav

    20180827 qzd pcm文件转wav文件时,主要是在pcm文件加入wav的头。wav的文件头包含wav标示...

  • 转码

    ios 不能播放amr格式。ios 录制的音频位wav格式。 wav转amr可以使用opencore框架

  • Linux上音频转换工具mpg123

    今天在做中文语音识别的时候碰到需要将mp3文件转码为wav格式,且需要是单声道和16KHZ,想着linux上用命令...

  • 录音程序

    1.获取pcm文件: 2.pcm转wav 3.录音转为pcm再转为wav:

  • PCM文件转wav文件

    PCM是采样的原始音频数据, 是无压缩的原始数据, 给pcm添加wav的文件头, 就是wav文件, 所以wav也是...

  • html中对audio的操作

    根据一张古老的图,wav文件在chrome下不被支持: 但事实上wav文件在安卓和ios的浏览器包括webview...

  • wav转pcm、去掉wav文件头

  • 使用 iTunes转换音频文件格式

    wav转mp3 1. 选择需要转换的wav格式的音频文件,使用iTunes打开 2. 音频文件会默认导入资料库...

网友评论

      本文标题:编译vo-amrwbenc iOS (16kHZ wav文件转a

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