得到音频文件的播放时间---GetAmrDuration

来源:互联网 发布:百度网站自然排名优化 编辑:程序博客网 时间:2024/05/21 07:55
import java.io.File;import java.io.IOException;import java.io.RandomAccessFile;public class GetAmrDuration {/** * 得到amr的时长 *  * @param file * @return * @throws IOException */public static int 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 (int)((duration/1000)+1);}public static void main(String[] args) throws IOException {File source = new File("6.amr");System.out.println(getAmrDuration(source));}}

0 0
原创粉丝点击