近来笔者开发时在前台需要播放amr格式的音频文件,中间几经波折最后还是成功了,特此分享出来希望能帮到大家(还包括后台判断amr音频长度)
mp3格式播放大家都知道,amr格式就陌生了,至少我之前没有做过
amr格式文件播放出来的声音音质比mp3差,主要应用于手机铃声和手机录音,目的是为了给手机用户节省流量。大部分主流的音视频播放器都支持amr格式,现在要实现网页播放有点问题(还要考虑兼容性)。百度一番,调试一番,终于听到声音了。
笔者采用的播放插件是QuickTime,不知道的可以百科一下,下面就是方法了:
1、下载QuickTime软件并安装,地址 http://www.apple.com/quicktime/download/index.html
2、在网页添加以下代码
//<//embed controller="true" bgcolor="black"
target="myself" type="video/quicktime"
pluginspage="http://www.apple.com/quicktime/download/index.html"
align="middle" height="10" width="1000">
3、效果,无图无真相,进度条会动的哦
IE、FireFox、chrome测试通过。
另外附上后台得到amr音频的播放长度的java代码
-
-
public static long getAmrDuration(File file) throws IOException {
-
long duration = -1;
-
int[] packedSize = { 12, 13, 15, 17, 19, 20, 26, 31, 5, 0, 0, 0, 0, 0, 0, 0 };
-
RandomAccessFile randomAccessFile = null;
-
try {
-
randomAccessFile = new RandomAccessFile(file, "rw");
-
long length = file.length();//文件的长度
-
int pos = 6;//设置初始位置
-
int frameCount = 0;//初始帧数
-
int packedPos = -1;
-
-
byte[] datas = new byte[1];//初始数据值
-
while (pos <= length) {
-
randomAccessFile.seek(pos);
-
if (randomAccessFile.read(datas, 0, 1) != 1) {
-
duration = length > 0 ? ((length - 6) / 650) : 0;
-
break;
-
}
-
packedPos = (datas[0] >> 3) & 0x0F;
-
pos += packedSize[packedPos] + 1;
-
frameCount++;
-
}
-
duration += frameCount * 20;//帧数*20
-
} finally {
-
if (randomAccessFile != null) {
-
randomAccessFile.close();
-
}
-
}
-
return duration;
-
}
笔者亲测可用,请大家放心使用。
|