Atitit java wav 压缩 mp3功能总结
目录
1.2. 使用时发现错误,不支持Unsupported number of channels: 4d 3
的任务就是实现音频压缩了,搜了几天,找到了一个不错的软件Monkey Audio(实现说明,我们的项目得全是代码实现的),这个软件的开源的,但是在官网下载的源代码经过我们一个下午的测试,竟然跟最新软件的压缩差的很远,于是我们便尝试走其他的路,比如:音频格式转换也可以达到音频压缩的目的,于是便搜类似的东西,于是便找到了Lame解码器。
百度百科普及:
LAME 是最好的MP3编码器,编码高品质MP3的最好也是唯一的选择。LAME本身是DOS下的文件,需要加外壳程序才比较容易使用,也可以在别的软件(比如EAC)中间调用。是一款出色的MP3压缩程序,它使用了独创的人体听音心理学模型和声学模型,改变了人们对MP3高音发哑、低音发破的音质的印象。
然后我就通过代码在程序调用这个解码器,实现了最后的音频格式转换,当然也达到的压缩的目地,并且经过大量的测试,效果非常不错,并没有损坏音频,同时压缩比很高。
---------------------
事先说明:Lame.exe文件必须得有,并且在程序调用的时候,如果没在java的src同一个文件夹下的话,必须在程序中使用绝对路径,否则报错。
LAME是一个非常著名的HIFI级mp3制作工具,可以说是MP3历史上革命性的东西。MP3最受争议的就是音质问题,其高频损失很大,很多mp3编码器粗糙的编码算法不但导致高频丢失,还丢失了许多细节,类似吉他擦弦的感觉在MP3中是找不到的。 在对MP3快要失望时,Lame从天而降,我抱着怀疑的态度试用了她,结果令人惊讶不已,立刻删除了硬盘上所有的MP3和其他编码器,全部用Lame重新来过。这个是Lame的最新版,有着不小的改进,你会在使用中发现。
不用说,ffmpeg是一个太牛犇的视频处理库。但是在音频处理(转换)方面,确实让人捉急。有时还有依赖其他音频转换库。不过,这不会让我减少对它的膜拜之情。
先上重头 wav转MP3
0.转换wav到mp3:
ffmepg -i input.wav -f mp3 -acodec libmp3lame -y output.mp3
注:这需要在ffmpeg中加入libMP3lame库(如果研究过wav转MP3的童鞋,肯定见过它),但是,怎么把它加到ffmpeg中,我也母鸡啊,不懂c。
所以,找到另一种中转的方法,就是MP2.尝试了,no问题。
ffmepg -i input.wav -f mp2 output.mp3
---------------------
作者:zrbcsdn
来源:CSDN
原文:https://blog.csdn.net/zrbcsdn/article/details/50460274
版权声明:本文为博主原创文章,转载请附上博文链接!
D:\lame4.0a14\lame.exe -m m C:\Users\Administrator\Desktop\qq\1466519819\FileRecv\20181120院长讲酒会项目.wav 20181120院长讲酒会项目.mp3
C:\Users\Administrator>D:\lame4.0a14\lame.exe -m m C:\Users\Administrator\
LAME version 4.0 (alpha 14, Sep 25 2005 10:04:14) (http://www.mp3dev.org/)
warning: alpha versions should be used for testing only
Unsupported number of channels: 4d
D:\KMPlayer\ffmpeg.exe -i C:\Users\Administrator\Desktop\qq\1466519819\FileRecv\20181120院长讲酒会项目.wav 20181120院长讲酒会项目.mp3
ffmpeg -i a.wav a.mp3
package com.example.myFirstProject;
import java.io.IOException;
public class wav2mp3 {
public static void main(String[] args) throws IOException {
String p="C:\\Users\\Administrator\\Desktop\\qq\\1466519819\\FileRecv\\20181120院长讲酒会项目.wav";
String exe="D:\\lame4.0a14\\lame.exe";
String ffmpeg="D:\\KMPlayer\\ffmpeg.exe ";
String command = ffmpeg +" -i "+ p +" d:\\20181120院长讲酒会项目.mp3";
System.out.println(command);
Process Process1= Runtime.getRuntime().exec( command );
System.out.println("==f");
}
}