opus编译linux,Opus 交叉编译实现
8种机械键盘轴体对比
本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?
概述Opus Ubuntu实现交叉编译
简介要将一个开源库移植到Android 上面,那么有一个重要的步骤就是要尝试的采用NDK交叉编译来编译,从而确定这个库是否能够移植到Android上面,如果能够交叉编译成功,后面的步骤
就是移植到Android Studio 中来编译,实现一个可以调试的NDK环境,所以这篇文章就是介绍在Ubuntu下面,采用Ndk 交叉编译最新版的Opus,
由于最新版的NDK 已经不能指定编译armeabi了,所以我们直接编译armv7-a的
环境准备
需要的文件结构图
目标目标是我们要编译出opus-tools里面的可执行程序,然后放到手机里面跑,看是否能够正常工作,在此之前,我们可以先看下官网提供的opus-tools可执行的程序
这个是官网提供的最新版的 Window下的可执行程序下载地址 https://archive.mozilla.org/pub/opus/win64/opus-tools-0.1.10-win64.zip
下面了解他们是干嘛用的,提供了什么功能
压缩包文件内容
opusdec.exe是用来将一个opus文件还原成一个wav文件
opusenc.exe 是用来将一个wav文件,压缩成一个opus格式的文件
opusinfo.exe 可以用来显示一个opus文件的信息
交叉编译实现
构建交叉编译链
使用交叉编译链比较方便,下面是构建的脚本1
2
3
4
5
6
7
8
9
10
11export ANDROID_HOME=/home/yuhui/WorkSpace/android-ndk-r14b
$ANDROID_HOME/build/tools/make_standalone_toolchain.py
--arch arm --api 16
--install-dir $ANDROID_HOME/toolchain
cd $ANDROID_HOME
mkdir -p usr/local/lib/pkgconfig
上述脚本执行之后的结果
编译 libogg-1.3.3
下面是脚本文件,这里构建一个静态库1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27ANDROID_HOME=/home/yuhui/WorkSpace/android-ndk-r14b
TOOLCHAIN=$ANDROID_HOME/toolchain
PATH=$TOOLCHAIN/bin:$PATH
HOST=arm-linux-androideabi
PREFIX=$ANDROID_HOME/usr/local
LOCAL_DIR=$ANDROID_HOME/usr/local
TOOL_BIN_DIR=$ANDROID_HOME/toolchain/bin
PATH=${TOOL_BIN_DIR}:$PATH
DEST=$ANDROID_HOME/usr/local
CC="$HOST-gcc -march=armv7-a"
CXX=$HOST-g++
#LDFLAGS="-L$DEST/lib 指定要连接库的时候,寻找的地方
LDFLAGS="-L$DEST/lib -march=armv7-a"
#CPPFLAGS="-I$DEST/include 指定头文件寻找的地方
CPPFLAGS="-I$DEST/include -march=armv7-a"
CXXFLAGS=$CFLAGS
# c-ares library build
PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig/ LD_LIBRARY_PATH=$PREFIX/lib/ ./configure --host=$HOST --build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE`
--prefix=$PREFIX --enable-static --disable-shared
make
make install
echo "build ogg complete!"
编译的结果为红色部分指定的
编译 flac-1.3.2,
下面是脚本文件,这里构建一个静态库1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24ANDROID_HOME=/home/yuhui/WorkSpace/android-ndk-r14b
TOOLCHAIN=$ANDROID_HOME/toolchain
PATH=$TOOLCHAIN/bin:$PATH
HOST=arm-linux-androideabi
PREFIX=$ANDROID_HOME/usr/local
LOCAL_DIR=$ANDROID_HOME/usr/local
TOOL_BIN_DIR=$ANDROID_HOME/toolchain/bin
PATH=${TOOL_BIN_DIR}:$PATH
DEST=$ANDROID_HOME/usr/local
CC="$HOST-gcc -march=armv7-a"
CXX=$HOST-g++
LDFLAGS="-L$DEST/lib -march=armv7-a"
CPPFLAGS="-I$DEST/include -march=armv7-a"
CXXFLAGS=$CFLAGS
# c-ares library build
PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig/ LD_LIBRARY_PATH=$PREFIX/lib/ ./configure --host=$HOST --build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE`
--prefix=$PREFIX --enable-static --disable-shared
make
make install
echo "build flac complete!"
这里要知道的是编译flac库需要使用到ogg库,所以ogg库放在第一个编译,而且我们的 LDFLAGS=”-L$DEST/lib CPPFLAGS=”-I$DEST/include 指定了链接查找的地方,所以可以他可以自动的查找到
编译的结果为红色部分指定的
编译 libopus 1.2.1
下面是脚本文件,这里构建一个静态库1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21ANDROID_HOME=/home/yuhui/WorkSpace/android-ndk-r14b
TOOLCHAIN=$ANDROID_HOME/toolchain
PATH=$TOOLCHAIN/bin:$PATH
HOST=arm-linux-androideabi
PREFIX=$ANDROID_HOME/usr/local
LOCAL_DIR=$ANDROID_HOME/usr/local
TOOL_BIN_DIR=$ANDROID_HOME/toolchain/bin
PATH=${TOOL_BIN_DIR}:$PATH
DEST=$ANDROID_HOME/usr/local
CC="$HOST-gcc -march=armv7-a"
CXX=$HOST-g++
LDFLAGS="-L$DEST/lib -march=armv7-a"
CPPFLAGS="-I$DEST/include -march=armv7-a"
CXXFLAGS=$CFLAGS
PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig/ LD_LIBRARY_PATH=$PREFIX/lib/ ./configure --host=$HOST --build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE`
--prefix=$PREFIX
make
make install
编译的结果为红色部分指定的
编译 openssl-1.0.2m
下面是脚本文件1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21#!/bin/bash
ANDROID_HOME=/home/yuhui/WorkSpace/android-ndk-r14b
TOOLCHAIN=$ANDROID_HOME/toolchain
PATH=$TOOLCHAIN/bin:$PATH
HOST=arm-linux-androideabi
PREFIX=$ANDROID_HOME/usr/local
LOCAL_DIR=$ANDROID_HOME/usr/local
TOOL_BIN_DIR=$ANDROID_HOME/toolchain/bin
PATH=${TOOL_BIN_DIR}:$PATH
DEST=$ANDROID_HOME/usr/local
CC="$HOST-gcc -march=armv7-a"
CXX=$HOST-g++
LDFLAGS="-L$DEST/lib -march=armv7-a"
CPPFLAGS="-I$DEST/include -march=armv7-a"
CXXFLAGS=$CFLAGS
PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig/ LD_LIBRARY_PATH=$PREFIX/lib/ export CROSS_COMPILE=$TOOLCHAIN/bin/arm-linux-androideabi-
./Configure --prefix=$PREFIX android
make
make install
编译的结果为红色部分指定的
编译 opusfile 0.9
下面是脚本文件1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19ANDROID_HOME=/home/yuhui/WorkSpace/android-ndk-r14b
TOOLCHAIN=$ANDROID_HOME/toolchain
PATH=$TOOLCHAIN/bin:$PATH
HOST=arm-linux-androideabi
PREFIX=$ANDROID_HOME/usr/local
LOCAL_DIR=$ANDROID_HOME/usr/local
TOOL_BIN_DIR=$ANDROID_HOME/toolchain/bin
PATH=${TOOL_BIN_DIR}:$PATH
DEST=$ANDROID_HOME/usr/local
CC="$HOST-gcc -march=armv7-a"
CXX=$HOST-g++
LDFLAGS="-L$DEST/lib -march=armv7-a"
CPPFLAGS="-I$DEST/include -march=armv7-a"
CXXFLAGS=$CFLAGS
PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig/ LD_LIBRARY_PATH=$PREFIX/lib/ ./configure --host=$HOST --build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE` --prefix=$PREFIX
make
make install
编译的结果为红色部分指定的
编译 opus-tools 0.1.10
下面是脚本文件1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20#!/bin/bash
ANDROID_HOME=/home/yuhui/WorkSpace/android-ndk-r14b
TOOLCHAIN=$ANDROID_HOME/toolchain
PATH=$TOOLCHAIN/bin:$PATH
HOST=arm-linux-androideabi
PREFIX=$ANDROID_HOME/usr/local
LOCAL_DIR=$ANDROID_HOME/usr/local
TOOL_BIN_DIR=$ANDROID_HOME/toolchain/bin
PATH=${TOOL_BIN_DIR}:$PATH
DEST=$ANDROID_HOME/usr/local
CC="$HOST-gcc -march=armv7-a"
CXX=$HOST-g++
LDFLAGS="-L$DEST/lib -march=armv7-a"
CPPFLAGS="-I$DEST/include -march=armv7-a"
CXXFLAGS=$CFLAGS
PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig/ LD_LIBRARY_PATH=$PREFIX/lib/ ./configure --host=$HOST --build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE` --prefix=$PREFIX
make
make install
要注意的是这个opus-tools 需要依赖opus库,ogg库,flac库 编译的结果为红色部分指定的
验证编译的结果我们可以将编译之后产生的文件拷贝到手机里面,手机里面有一个目录可以不用root进入的,就是/data/local/tmp目录,这个目录是所有的手机都是可以访问的,所以选择放在这个目录
然后进入使用adb shell 进入命令行模式
push到手机的目录以及内容,这里是将整个local的内容push到手机上
opusinfo使用结果
opusdec使用结果
opusdec使用结果
将压缩之后,还有解压缩生成的文件,可以直接使用音乐播放器播放,qq音乐也是支持直接播放opus文件的,还有google浏览器也是支持的,我们可以根据这个来判断是否生成有问题
总结至此,Opus交叉编译已经完成,接下来一篇文章会介绍怎么集成到Android Studio中,而且实现边录音边压缩,边解压缩边播放
opus编译linux,Opus 交叉编译实现相关推荐
- opus编译linux,opus交叉编译
从上个礼拜四接到带我的老师的任务,了解一下开源的音频编解码库opus,并且将这个开源库交叉编译到xx6138的板子上,看一下测试程序运行时cpu使用率. 先去opus.org上将源代码下载下来,同时看 ...
- arm linux gcc 编译,Linux arm-linux-gcc交叉编译环境配置
Linux下的arm-linux-gcc交叉编译环境安装 安装arm-linux-gcc (1) 打开终端,使用sudo命令进入从超级管理员: sudo su 输入超级管理员密码. (2) 使用cd命 ...
- linux下pcre编译,linux下交叉编译lighttpd以及pcre
编译 pcre cd /home/youruser mkdir buid_pcre cd build_pcre wget ftp://ftp.csx.cam.ac.uk/pub/software/pr ...
- 基于树莓派4b(raspberry pi 4b)内核编译流程,交叉编译环境搭建,loadable kernel module (LKM)编译方法
树莓派4b编译Linux内核&交叉编译环境的搭建 使用树莓派4b编译内核很简单,具体可以参考以下树莓派官网中关于Build the Kernel的内容: https://www.raspber ...
- 在Android中使用Opus 1.3.1(Ndk编译使用Opus so库)
Android中使用Opus 1.3.1 Opus是一个开放格式的有损声音编码的格式,并在其使用上没有任何专利或限制.还可以处理各种音频应用,包括IP语音.视频会议.游戏内聊天.流音乐.甚至远程现场音 ...
- 获取并编译linux源码,android获取源代码、编译、命令
---my--- 正确的编译android sdk: cd myandroid . ./build/envsetup.sh lunch sdk-eng make sdk //或者: make PROD ...
- Zedboard学习(二):zedboard的Linux下交叉编译环境搭建
环境准备 首先肯定是要下载xilinx-2011.09-50-arm-xilinx-linux-gnueabi.bin文件,这是官方提供的linux下交叉编译链安装文件,下载地址为:https://p ...
- linux安装交叉编译环境
(一)交叉编译器的简介 (1)本地编译 在了解交叉编译之前我们首先介绍一下另一个概念:本地编译 之前所做的C开发属于本地编译,即在当前PC下(x86的CPU下),直接编译出可以运行的程序(或者库文件) ...
- arm hisiv100 linux,hisiv100交叉编译工具链安装
hisi交叉编译工具链安装 一. 摘要: 交叉编译简单的说,就是A机器上编译生成,运行在B机器上.那么在A机器上的编译工具安装,就是本文所要描述的内容. 工欲善其事必先利其器,所以交叉 ...
最新文章
- 用贝叶斯定理解决三门问题并用Python进行模拟(Bayes' Rule Monty Hall Problem Simulation Python)...
- 硕博士生参加学术会议重要吗?如何选择?注意什么?
- mysql国际化_Java的Struts框架中的主题模板和国际化设置
- JQuery选择器中的可见性筛选
- 如何用VB编程实现关闭WINDOWS窗口?
- JavaScript面向对象 - 严格模式
- 老板最讨厌的10种烂个性
- tomcat版本区别
- 项目日报模板_知名房企的精细化施工管理,从项目日常到施工图,全方位涵盖...
- 360 x TiDB|性能提升 10 倍,360 如何轻松抗住双十一流量
- python:双色球随机选号
- 贵州学业水平测试信息技术软件,贵州信息技术学业水平考试系统操作手册.doc...
- win10不自带扫雷,想玩扫雷怎么办?自己造一个扫雷
- 【小5聊】2021年度总结,回顾 2021,展望 2022
- 360随身wifi2驱动 v5.3.0.1035 官方版
- 关于 beyondcompare 只有FTP没有 sftp 的解决方案
- 黑苹果 hackintosh 啰嗦模式
- 冒志鸿:大公司不模仿你,说明你危险了
- Word学习笔记分享
- 有关QJ_Filecenter在vue中的使用和组件封装
热门文章
- 按键精灵初步,使用winIO实现驱动级模拟按键
- CleanMyMac X免费电脑清理加速软件-清理内存磁盘缓存注册表
- 时钟加闹钟c语言程序,51单片机c语言电子钟(已加入调时、闹铃、整点报时功能)...
- ARP劫持攻击(实验寒假补)
- python打开dat文件_科学网—Python: 文件的打开,读写和关闭 - 刘洋洋的博文
- NOI OJ 1.5 16:买房子 C语言
- 邂逅天融信防火墙 - 新增公网链路
- 【报错处理】RuntimeError: input.size(-1) must be equal to input_size. Expected 5, got 21
- BIM5D软件介绍----之前版本
- 面向对象第四章简单习题