基于android下的amr转mp3

今天接个任务,要在android 32位7.0上面实现amr转音频,一天要完工,便于集成

要用到下面开源

https://github.com/kn007/silk-v3-decoder

https://github.com/FFmpeg/FFmpeg

但是发现要用到自己搞啥交叉编译,1天完成不了

就像老板给你5块钱,让你如何加油努力,给公司买辆奔驰车,是不可能完成的任务

于是转到另外一个开源的应用

https://github.com/termux/termux-app

这个相当于一个linux 的终端,linux下面这个就好办多了

安装完termux后,再在里面安一个ubutun20.04

pkg install proot-distro

proot-distro install ubuntu-20.04

这时就进入了ubuntu,我们在这个里面编译silk-v3-decoder

apt install     build-essential

apt install    make

进入到如下路径

/data/data/com.termux/files/usr/var/lib/proot-distro/installed-rootfs/ubuntu-20.04/home/silk-v3-decoder-master/silk/

直接运行root@localhost:/home/silk-v3-decoder-master# ./converter.sh

就会自动编译了。

如果提示有错注意一下c代码中 #if (EMBEDDED_ARM<5) 

我是在rk3288上编译,EMBEDDED_ARM=6 这样就会出错,所以要把相关的

#if (EMBEDDED_ARM<5) 进行注释

这样 我们就有了decoder应用位于/data/data/com.termux/files/usr/var/lib/proot-distro/installed-rootfs/ubuntu-20.04/home/silk-v3-decoder-master/silk/

然后再apk install ffmpeg  直接安个ffmpeg,就不用编译了

这样我们运行./converter.sh msg_1.amr mp3

就可以将msg_1.amr 转为mp3了

但是我们说但是,这个是在termux中进行的,别的应用怎么调用呢

于是我们用python3+flask写个简单脚本,先安装相关的东东

apt install python3

apt install python3-pip

pip3 install flask

安装后 touch server.py

vim server.py

import os
from flask import Flask

app = Flask(__name__)


@app.route('/')
def run_converter():
    result = os.popen('/home/silk-v3-decoder-master/converter.sh msg_1.amr mp3')
    res = result.read()
    return res


if __name__ == '__main__':
    app.run()

运行 python3 server.py 

 这样,就会在本机5000端口起一个服务,当你用应用调用http://localhost:5000时就会进行转码了,哦,对了这个代码没有传路径,以及返回路径,稍微改一下就server.py代码,

import os
from flask import Flask,request

app = Flask(__name__)


@app.route('/')
def run_converter(): 
    input_path =request.args.get('input_path')
    if input_path==None:
        return 'input_path is error'
    
    result = os.popen('/home/silk-v3-decoder-master/converter.sh '+input_path+' mp3')
    res = result.read()
    return res 


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000, debug=False)

这样

这样调用如

http://localhost:5000/?input_path=/sdcard/msg1.amr

下图是我在另外一台PC上调用的结果,看样子这个服务可以搞成分布式的了!

 会返回成功与否。

下面是flask的一些说明

https://blog.csdn.net/sinat_38682860/article/details/82354342?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162979430416780264034474%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=162979430416780264034474&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_v2~rank_v29-5-82354342.pc_search_result_cache&utm_term=flask+%E4%BB%A3%E7%A0%81&spm=1018.2226.3001.4187

猜你喜欢

转载自blog.csdn.net/babytiger/article/details/119895182
今日推荐