Android 获取amr音频文件时长

来源:互联网 发布:程序员入门培训 编辑:程序博客网 时间:2024/05/24 06:34
一个常量方法/** * 得到amr的时长 * * @param file * @return amr文件时间长度 * @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++;        }        // 帧数*20        duration += frameCount * 20;    } finally {        if (randomAccessFile != null) {            randomAccessFile.close();        }    }    return (int)((duration/1000)+1);}
原创粉丝点击