将G711 alaw或G711 ulaw字节数组转换为音频文件[.wav或.au]

时间:2017-12-25 07:40:39

标签: java arrays jnetpcap

我正在开发一个录制应用程序,因此我尝试使用库Jnetpcap解码流量rtp。 提供的编解码器通常有两种类型:G711 alaw或G711 ulaw。 我转换有效载荷并将其保存为wav文件,但我无法收听录制的语音。 我使用此代码将字节数组转换为wav文件:

     byte[] pcm_data= rtp.getPayload();
     pcm_data= new byte[44100*2];
     double L1      = 44100.0/440.0;
     double L2      = 44100.0/455.0;
     for(int i=0;i<pcm_data.length;i++){
        pcm_data[i]=  (byte)(55*Math.sin((i/L1)*Math.PI*2));
        pcm_data[i]+= (byte)(55*Math.sin((i/L2)*Math.PI*2));
        }

     AudioFormat      frmt= new AudioFormat(44100,8,1,true,false);
     AudioInputStream ais = new AudioInputStream(
                new ByteArrayInputStream(pcm_data)
               ,frmt
               ,pcm_data.length);

     AudioSystem.write(
                ais
               ,AudioFileFormat.Type.WAVE
               ,new File("test.wav"));

0 个答案:

没有答案