安装ffmpeg

ffmpeg -codecs

—可以看出ffmpeg默认的MP3格式无法编码为其它格式【D.A.L mp3】D=解码 E=编码 A=AudioCodec L=有损压缩

需要安装lame服务使得MP3具有编码为其他格式的功能

参考:https://blog.csdn.net/zhaofengdeng/article/details/79413330

微信/qq所需要的音频文件为Silk v3格式,Silk v3格式有占用空间小的特点,如amr、aud、slk、silk都是Silk v3的格式

MP3->PCM->SILK,这个过程叫做silk v3的解码(也是mp3的编码)

SILK->PCM->MP3,这个过程叫做Silk v3的编码

中间格式PCM是一个类似WAV的文件格式。

详解:MP3->PCM->SILK

1、 MP3->PCM 使用ffmpeg转换

ffmpeg -y -i {源文件.mp3} -f s16le -ar 24000 -ac 1 {目标文件.pcm}
参数:-y 强制覆盖
-i 输入文件
-f s16le 转换格式 s16le=(PCM signed 16-bit little-endian), s16be=(PCM signed 16-bit big-endian)
-ar 24000 频率Hz,默认的微信音频频率是24000(set audio sampling rate (in Hz))
-ac 1 频道数,(set number of audio channels)

2、 PCM->SILK 使用kn007的开源项目Silk2MP3转换(需要编译encoder)

/usr/webser/silk-v3-decoder/silk/encoder {源文件.pcm} {目标文件.silk} -tencent

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

同理 SILK->PCM->MP3

1、 SILK->PCM 使用Silk2MP3转换

/usr/webser/silk-v3-decoder/silk/decoder {源文件.silk} {目标文件.pcm} -tencent

2、 PCM->MP3 使用ffmpeg转换

ffmpeg -y -ac 1 -ar 16000 -f s16le -i {源文件.pcm} -c:a libmp3lame -q:a 2 {目标文件.mp3}

获取音频时长

使用jave,不赘诉

参考:https://www.cnblogs.com/xxbai1123/p/9718528.html

附:

Silk2MP3编译encoder,(由于该开源项目主要是用于silkv3_decoder,但是encoder有源码,只是需要自己手动编译)

cd /usr/webser/silk-v3/decoder/silk

make encoder

编译完成后encoder即可使用

代码

public static String mp3ToSilk(String source, String path, String audioType) {File sourceFile = new File(source);if (sourceFile.exists()) {String name = sourceFile.getName();logger.debug("filename={}", name);String pcmPath = path + name + ".pcm";logger.debug("pcmPath={}", pcmPath);processPcm(path, source, pcmPath);// 先转成pcm格式String target = path + name + "." + audioType;logger.debug("target={}", target);File pcmFile = new File(pcmPath);if (pcmFile.exists()) {processMp3(path, pcmPath, target);// 再由pcm转成mp3} else {processFfmpegMp3(path, source, target);// 直接转成mp3}return target;} else {logger.error("文件不存在 {}", source);}return null;}// 调用sile_v3_encoder,pcm->silkprivate static void processMp3(String path, String source, String target) {String command = StringUtils.replaceEach("/usr/webser/silk-v3-decoder/silk/encoder {源文件} {目标文件} -tencent",new String[] { "{源文件}", "{目标文件}" }, new String[] { source, target });try {p = Runtime.getRuntime().exec(command);p.waitFor();} catch (Exception e) {logger.error("执行失败{}", command, e);}}// 调用ffmpeg,mp3->pcmprivate static void processPcm(String path, String source, String target) {// ffmpeg -y -i 源文件 -f s16le -ar 24000 -ac 1 目标文件String command = StringUtils.replaceEach("ffmpeg -y -i {源文件} -f s16le -ar 24000 -ac 1 {目标文件}",new String[] { "{源文件}", "{目标文件}" }, new String[] { source, target });try {p = Runtime.getRuntime().exec(command);p.waitFor();} catch (Exception e) {logger.error("执行失败{}", command, e);}}// 调用ffmpeg,mp3->silkprivate static void processFfmpegMp3(String path, String source, String target) {String command = StringUtils.replaceEach("ffmpeg -i {源文件} {目标文件}", new String[] { "{源文件}", "{目标文件}" },new String[] { source, target });try {p = Runtime.getRuntime().exec(command);p.waitFor();} catch (Exception e) {logger.error("执行失败{}", command, e);}}public static Long getMp3VoiceLen(String source) {File sourceFile = new File(source);if (sourceFile.exists()) {Encoder encoder = new Encoder();long ls = 0;MultimediaInfo m;try {m = encoder.getInfo(sourceFile);ls = m.getDuration();} catch (Exception e) {logger.error("获取音频时长有误:{}", source, e);}return ls;} else {logger.error("文件不存在 {}", source);}return 0L;}

在此再次感谢kn007提供的转换包:https://github.com/kn007/silk-v3-decoder

linux下微信/qq的aud、silk音频文件格式与mp3格式互转,获取音频时长的方法,附问题分析和java代码。相关推荐

  1. java在linux转化mp3,linux下微信/qq的aud、silk音频文件格式与mp3格式互转,获取音频时长的方法,附问题分析和java代码。...

    安装ffmpeg ffmpeg -codecs -可以看出ffmpeg默认的MP3格式无法编码为其它格式[D.A.L mp3]D=解码 E=编码 A=AudioCodec L=有损压缩 需要安装lam ...

  2. Windows下批量转换Silk v3音频文件为MP3格式

    转自:https://kn007.net/topics/batch-convert-silk-v3-audio-files-to-mp3-in-windows/ 前有<解码转换QQ微信的SILK ...

  3. Linux下安装qq的方法

    Linux下的qq腾讯官方是不支持开发了,所以就有许多民间的机构去开发这个.深度LINUX是一个立志于让linux系统更为人性化的组织,首先要知道问什么可以使用qq.因为他的底层是基于wine就是说类 ...

  4. Linux下的QQ使用

    linux下的qq使用 写这个并不只是为了装个qq用,现在Linux下装qq比以前方便很多的样子.熟悉一下一个新的包Appimage.哇真的巨方便的样子 下载地址在这http://yun.tzmm.c ...

  5. linux下安装qq(苦海无涯回头是岸)

    linux下安装qq 今天试了好久总算是撞了无数的南墙啊,所以写这篇博客让各位正想给自己linux系统装qq的同志们一个提醒.各位同志们,linux下安装的qq都是烂货啊.要么没法安装,要么就是装完之 ...

  6. 个人对Linux下的QQ聊天工具的总结

    个人对Linux下的QQ聊天工具的总结 ....仅供参考... 这几天使用了很多能在Windows下替代QQ的IM工具,没有找出一个最好的.没个工具都有自己的优点,也有很严重的毛病,大家自己酌情选取吧 ...

  7. 用 python 脚本+ffmpeg,把当前目录及子目录下的 wma音频文件转换为mp3 格式

    用 python 脚本+ffmpeg,把当前目录及子目录下的 wma音频文件转换为mp3 格式 用 python 脚本,结合ffmpeg软件,把当前目录及子目录下的 wma 音频文件转换为 mp3 格 ...

  8. PHP 将amr音频文件转换为mp3格式

    PHP 将amr音频文件转换为mp3格式 说下整体思路 1.服务器安装ffmpeg 2.使用ffmpeg -i 指令来转换amr为mp3格式(这个到时候写在PHP代码中,使用exec函数执行即可) 3 ...

  9. 使用python讲二进制转换为音频文件_Python使用ffmpy将amr格式的音频转化为mp3格式的例子...

    最近做了一个项目,将从微信下载的音频文件(默认为.amr格式)转化为mp3格式(否则前端播放将会遇到困难)上传到云端.经过一番研究,最终决定采用Python的ffmpy包. 安装只需执行 pip in ...

最新文章

  1. CSS 背景(background)(背景颜色color、背景图片image、背景平铺repeat、背景位置position、背景附着、背景简写、背景透明、链接导航栏综合案例)
  2. 查看、分析memcached使用状态
  3. 【RPC服务器不可用】解决方法
  4. MFCC特征参数提取(一)(基于MATLAB和Python实现)
  5. 【面试相关】非计算机专业如何1年内自学拿到算法offer
  6. im4java开发向导
  7. 挑战程序设计竞赛(第2版)》
  8. 借助离散数学解决“哈弗大学智商测试”一题 --编程算法
  9. php实现无限级分类(递归方法)
  10. ImportError: No module named tensorrt
  11. APP测试常用测试点
  12. 系统工程原理(持续更新):3.方法论--霍尔“三维结构”模型
  13. 使用Python连接Redis集群
  14. 高端蓝牙耳机哪个牌子好?四款高音质不错的蓝牙耳机推荐
  15. 苹果手机来电防火墙_苹果手机上的月亮图标是什么意思?原来这么实用,涨知识了...
  16. 高效时间管理的18个黄金法则
  17. 官媒痛批“精神鸦片”,曾拿百万年终奖的腾讯游戏员工要失业了吗?
  18. Android拖动进度条画面随动,Android学习笔记(24):进度条组件ProgressBar及其子类
  19. 温州医科大学计算机学院分数线,2017温州医科大学录取分数线
  20. PostgreSQL 物流调度算法探索 - 基于PostGIS/pgrouting/机器学习

热门文章

  1. 【SpringBoot】3、SpringBoot中整合Thymeleaf模板引擎
  2. Python改变图片像素值
  3. 甄嬛传趣玩系统数据可视化分析
  4. linux用户密码文件为,Linux用户和密码文件格式详解
  5. java1.17知识点回顾
  6. 杭州旅游非官方手册V1.0
  7. BZOJ 2448: 挖油
  8. k8s Nodeport方式下service访问,iptables处理逻辑(转)
  9. 64位系统究竟牛逼在哪里?
  10. 【转载】专家答疑:Silverlight的用户体验优化