linux java amr转mp3_本工具用于将微信语音 amr 格式转换为 mp3 格式以便在 html5 的 audio 标签中进行播放...

音频转码工具

本工具主要用于将微信语音 amr 格式转换为 mp3 格式以便在 html5 的 audio 标签中进行播放。

支持 Linux/Windows/Mac 平台

因为是基于 JAVE 项目的修改,而 JAVE 是依赖 ffmpeg 所以可以适用于所有 ffmpeg 所支持的文件格式的转换。具体可以查看 JAVE 官方文档

使用示例

引入 maven 依赖

com.github.dadiyang

jave

1.0.6

调用 AudioUtils.amrToMp3 方法

public void amrToMp3() {

File source = new File("target/test-classes/material/testAudio.amr");

File target = new File("testAudio.mp3");

AudioUtils.amrToMp3(source, target);

}

原理

初始化时判断当前运行环境,将bin目录中对应的 ffmpeg 可执行文件拷贝到临时目录中

根据文件类型及配置通过 Runtime.getRuntime().exec(cmd) 执行 ffmpeg 对应的转码命令

JAVE 项目的问题

ffmpeg 是依赖运行环境的,JAVE 项目封装了ffmpeg,它通过上述的原理使 java 可以调用ffmpeg而且支持跨平台。

项目老旧没再维护。官网最近版本是2009年发布的,其依赖的ffmpeg早已过时,很多情况下用不了。

转码一直报异常 EncoderException: Stream mapping

没有发布maven仓库,而且 JAVE 本身也不是一个maven项目

不支持mac

本项目特点

本项目为解决上述问题而生。

这是一个maven项目,而且已发布到中央仓库。

项目依赖的 ffmpeg 可执行文件经过验证可以使用(单元测试中提供了一个简单的检验方法)

解决了amr转mp3出现的 EncoderException: Stream mapping

支持 Linux/Windows/Mac 平台

扩展

如果程序无法通过拷贝资源文件的方式获取到 ffmpeg 的可执行文件或者内置的 ffmpeg 不支持你所使用的操作系统

你可以通过环境变量或者在 java 中设置 System.setProperty("ffmpeg.home", "ffmpeg可执行文件所在的目录") 的方式指定你的系统中安装的可用的 ffmpeg 文件的目录

如 System.setProperty("ffmpeg.home", "/usr/local/bin/")

参考

本工具使用 JAVE 源码改造而来

LICENSE

JAVE 项目是基于 GPL 协议的开源项目,本项目是在 JAVE 的基础上进行修改和增强,因此也采用 GPL 协议开源。

JAVE is Free Software and it is licensed under GPL.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/485791.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL小问题:cant connect to MYSQL server on localhost

连接数据库发现出现了错误:2003-cant connext to MYSQL server on localhost 解决方法: 1.winr 打开cmd控制台,首先net startenter 查看有没有mysql服务启动,一般这不会出现问题 此时你输入mysql -u root -p 是会出现错误的 2…

【c# 学习笔记】所有类的父类:System.object

在c#中,所有的类都派生自System.Object类。如果定义的类,没有直达任何基类,编译器就会自动把Object类当作它的基类。和其他类 一样,System.Object类也定义了一组共有的成员,其定义如下: public class Objec…

数学史上的哲学绝唱——无穷观与数学基础的争论

来源:《广西民族大学学报》2014年11月作者:郭龙先,黄永两千多年来,数学家们一直试图从少数公理出发,根据明确给出的演绎规则推导出其他数学定理,从而把整个数学构造成为一个严密的演绎大厦,然后…

java dct变换_Discrete Cosine Transform [DCT] (离散余弦变换)

Discrete Cosine Transform [DCT] (离散余弦变换)描述:Binarizer是一个Transformer。离散余弦变换是与傅里叶变换相关的一种变换,它类似于离散傅立叶变换但是只使用实数。离散余弦变换相当于一个长度大概是它两倍的离散傅里叶变换,这个离散傅…

Leetcode--141. 环形链表

给定一个链表,判断链表中是否有环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 示例 1: 输入:head …

MapReduce 踩坑 - hadoop No FileSystem for scheme: file/hdfs

一、场景 hadoop-3.0.2 hbase-2.0.0 一个mapreduce任务,在IDEA下本地提交到hadoop集群可以正常运行。 现在需要将IDEA本地项目通过maven打成jar包,从而能够在windows/Linux命令行下,通过Java -jar方式运行。 二、状况 报错可能1:…

解读自动驾驶的2020:从硬件角度看,无人车商业化落地难在哪?

来源 :AI前线作者 :滴滴自动驾驶技术团队策划 :陈思「重点问题」什么是合适的无人驾驶车辆平台?复杂场景下的“无人驾驶”,传感器硬件系统还有哪些挑战?告别 demo 硬件系统后,下一个前装量产的必…

Leetcode--142. 环形链表Ⅱ

给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有…

java中字符串函数_JAVA中字符串函数subString的用法小结

string str;str=str.substring(int beginindex);截取掉str从首字母起长度为beginindex的字符串,将剩余字符串赋值给str;str=str.substring(int beginindex,int endindex);截取str中从beginindex开始至endindex结束时的…

select默认下拉箭头改变、option样式清除

谷歌、火狐、ie下 select 的默认下拉箭头图标差别还是比较大,一般我们都会清除默认样式,重新设计箭头图标; /* --ie清除--*/select::-ms-expand{ display: none; }/* --火狐、谷歌清除--*/select{appearance:none; -moz-appearance:none; -…

Leetcode--15. 三数之和

给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a b c 0 ?找出所有满足条件且不重复的三元组。 注意:答案中不可以包含重复的三元组。 例如, 给定数组 nums [-1, 0, 1,…

他们提出了一个大胆的猜想:GWT(深度学习)→通用人工智能

来源:AI科技评论编译 :陈彩娴近日,有一篇发表在arXiv的论文“Deep Learning and the Global Workspace Theory”提出了一个大胆的猜想(或理论)。两位作者认为,当下的深度学习已经可以基于一个意识模型&…

python调用jar 性能_亲自有效---python 调用jar

#-*-coding:utf-8-*-import jpypefrom jpype import *import os.pathjarpath os.path.abspath(‘.‘)#这个函数用来获取当前 python 脚本所在的绝对路径aajarpath ‘\JpypeDemo.jar‘print(aa)jvm_path jpype.getDefaultJVMPath() #获取当前系统JDK的路径print(jvm_path)# s…

计算机网络-奈氏准则

假定某信道受奈氏准则限制的最高码元速率为20000码元/秒。如果采用振幅调制,把码元的振幅划分为16个不同等级来传送,那么可以获得多高的数据率(b/s)?答:CR*Log2(16)20000b/s*480000b/s (C是速据…

Leetcode--80. 删除排序数组中的重复项Ⅱ

给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 示例 1: 给定 nums [1,1,1,2…

科学史上那些盛极一时的“著名理论”是如何被攻破的?

《雅典学院》名画中的亚里士多德和柏拉图来源 :《自然》百年科学经典制版编辑: Morgan在科学发展的过程中,曾经涌现出不少盛极一时而后被证明是错误的理论。这些理论有的也许在今天看来悖谬荒诞,但是从整个科学发展的过程来看,它们仍然有其作…

Cluster - LB - haproxy

sd 转载于:https://www.cnblogs.com/aftree/p/9219435.html

Leetcode--1004. 最大连续1的个数Ⅲ

给定一个由若干 0 和 1 组成的数组 A,我们最多可以将 K 个值从 0 变成 1 。 返回仅包含 1 的最长(连续)子数组的长度。 示例 1: 输入:A [1,1,1,0,0,0,1,1,1,1,0], K 2 输出:6 解释: [1,1,1…

java 按钮 颜色_改变按钮颜色的java事件,个人成果!

import java.awt.*;import java.awt.event.*;public class Eventest{Button btn1new Button("单击");Frame myframenew Frame("测试单击事件");public void init(){btn1.setSize(30,26);btn1.addActionListener(new ActionListener(){public void actionPe…

AI在智能建筑中的应用和发展

来源:中研网图片来源:网络智能建筑诞生于二十世纪末,第一幢智能建筑于1984年在美国哈特福德 (Hartford)市建成。我国于90年代才起步,但迅猛发展势头令世人瞩目。目前,新技术、新产品在智能建筑中…