java实现g711a a-law 转PCM

         纯搬运留存,源码出处 https://blog.csdn.net/quantum7/article/details/80836289

        亲测转换可用

  /**
     * 将g711a a-law 数据转换为 pcm
     *
     * @param encoded
     * @return
     */
    public static byte[] decodeG711a2Pcm(byte[] encoded) {
        int    length    = encoded.length;
        byte[] pcmBuffer = new byte[length*2];
        for (int i=0; i> 4;
            // 这个移位多此一举?结果应该一直是8
            int value    = (alaw & 0x0F) >> 4 + 8;
            if (exponent != 0)
            {
                value += 0x0100;
            }
            if (exponent > 1)
            {
                value <<= (exponent - 1);
            }
            value = (char)((sign == 0 ? value : -value) & 0xFFFF);
            pcmBuffer[i*2+0] = (byte) (value      & 0xFF);
            pcmBuffer[i*2+1] = (byte) (value >> 8 & 0xFF);
        }
        return pcmBuffer;
    }

        测试代码

        FileInputStream inputStream = new FileInputStream("d:\\mq.g711a");
        byte[]          bytes       = new byte[inputStream.available()];
        inputStream.read(bytes);
        byte[] pcmBytes = decodeG711a2Pcm(bytes);
        new FileOutputStream("d:\\mq.wav").write(pcmBytes);

你可能感兴趣的:(摄像头,java,g711,pcm)