这段时间在做一个网页播放微信多媒体语音消息,搞了好久才搞出来,尝试了各式各样的方法,查阅了格式各样的资料,功夫不负有心人,终于给搞定了,有可能是最笨的步骤,但是是最实效的案例,如果不喜欢可使用其他方法,废话不多说,直接上步骤:
1、首先通过微信的mediaid将微信语音下载在本地磁盘中,一般情况下下载的多媒体文件为amr格式的,因为amr格式的文件容量小,便于网络传输,下载多媒体文件的方法在上个博客中已经贴出,这里就不写了,大家可取查阅。
2、多媒体文件下载成功以后现在我们要做的就是将amr格式的文件进行转码,本项目中是转为通用的MP3格式,第一步将导入一个jave-1.0.2.jar的一个jar包,这个包是java编写的开源项目实现不同音频格式文件转换的一个包,程序员可以进行封装,本包会上传至资源,大家可以下载,第二步就是转换的代码:
public static void playVoice(String mediaId){3、转码成功了以后下边就是要播放MP3格式的文件了,和第二步一样先导入一个 jl1.0.1.jar包,这个包就不上传至资源了,大家可以根据这个网址进行下载,http://www.javazoom.net/javalayer/sources.html,导入成功后就可以进行代码播放了,代码如下:
//将amr音频文件转码成为mp3格式
try {
File source = new File("E:\\"+mediaId+".amr");
File target = new File("E:\\"+mediaId+".mp3");
AudioAttributes audio = new AudioAttributes();
Encoder encoder = new Encoder();
audio.setCodec("libmp3lame");
EncodingAttributes attrs = new EncodingAttributes();
attrs.setFormat("mp3");
attrs.setAudioAttributes(audio);
encoder.encode(source, target, attrs);
} catch (EncoderException e) {
//e.printStackTrace();
}
}
import java.io.BufferedInputStream;import java.io.FileInputStream; import javazoom.jl.player.Player; /** * @author Brandon B. Lin * 2013-1-25 */public class MP3Player { public MP3Player(String filename) { this.filename = filename; } public void play() { try { BufferedInputStream buffer = new BufferedInputStream( new FileInputStream(filename)); player = new Player(buffer); player.play(); } catch (Exception e) { System.out.println(e); } } public static void main(String[] args) { MP3Player mp3 = new MP3Player("陈瑞 - 白狐.mp3"); mp3.play(); } private String filename; private Player player; }到此就解说完毕,不出意外的话应该可以播放!