[Audio processing] wav音频文件读取int和double数组的关系

Posted 小尾巴君

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Audio processing] wav音频文件读取int和double数组的关系相关的知识,希望对你有一定的参考价值。

直接读取wav文件是int数组,但是有一些实现返回的是double数组,还有些输入是double数组;那我们要互相调用的时候还是要看看两者到底有什么关系,其实很简单。

 以单身道,16bit为例

/**
 * For Mono, 16bit, only!
 * @author karl
 *
 */
public class BasicIntDoubleConvetor {
    private static final float floatScale = 32768;
    public double[] arrayIntToDouble (int[] data) {
        int numFrames = data.length;
        double[] postdata = new double[numFrames];
        for (int f=0 ; f<numFrames ; f++)
        {
            postdata[f] = (double) data[f] / floatScale;
        }
        return postdata;
    }
    public int[] arrayDoubleToInt (int[] data) {
        int numFrames = data.length;
        int[] postdata = new int[numFrames];
        for (int f=0 ; f<numFrames ; f++)
        {
            postdata[f] = (int) (data[f] * floatScale);
        }
        return postdata;
    }
}

对于更广泛的情况来说,floatScale并不是2^16 = 32768

// Calculate the scaling factor for converting to a normalised double
        if (wavFile.validBits > 8)
        {
            // If more than 8 validBits, data is signed
            // Conversion required multiplying by magnitude of max positive value
            wavFile.floatOffset = 0;
            wavFile.floatScale = Long.MAX_VALUE >> (64 - wavFile.validBits);
        }
        else
        {
            // Else if 8 or less validBits, data is unsigned
            // Conversion required dividing by max positive value
            wavFile.floatOffset = 1;
            wavFile.floatScale = 0.5 * ((1 << wavFile.validBits) - 1);
        }

 

以上是关于[Audio processing] wav音频文件读取int和double数组的关系的主要内容,如果未能解决你的问题,请参考以下文章

多浏览器播放wav格式的音频文件

JavaCV音视频开发宝典:基于JavaCV实现wav音频直播服务,wav在线FM电台直播服务,无需流媒体服务,浏览器原生audio标签直接播放wav直播音频

JavaCV音视频开发宝典:基于JavaCV实现wav音频直播服务,wav在线FM电台直播服务,无需流媒体服务,浏览器原生audio标签直接播放wav直播音频

JavaCV音视频开发宝典:基于JavaCV实现wav音频直播服务,wav在线FM电台直播服务,无需流媒体服务,浏览器原生audio标签直接播放wav直播音频

Audio Loop Processing.org(Java/Minim 声音库)

[Audio processing] FFMPEG转音频格式和采样率