• 大小: 2KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-07
  • 语言: Java
  • 标签: PCM转WAV  

资源简介

音频文件PCM转WAV格式转换类 Utils类 直接可以使用有现成DEMO。感谢评论 音频文件PCM转WAV格式转换类 Utils类

资源截图

代码片段和文件信息

package pcmwav;

import java.io.FileInputStream;
import java.io.FileOutputStream;

public class PcmToWav {
/**
 * 转换音频文件
 * 
 * @param src
 *            需要转换的pcm音频路径
 * @param target
 *            保存转换后wav格式的音频路径
 * @throws Exception
 */
public static void convertAudioFiles(String src String target) throws Exception {
FileInputStream fis = new FileInputStream(src);
FileOutputStream fos = new FileOutputStream(target);

// 计算长度
byte[] buf = new byte[1024 * 4];
int size = fis.read(buf);
int PCMSize = 0;
while (size != -1) {
PCMSize += size;
size = fis.read(buf);
}
fis.close();

// 填入参数,比特率等等。这里用的是16位单声道 8000 hz
WaveHeader header = new WaveHeader();
// 长度字段 = 内容的大小(PCMSize) + 头部字段的大小(不包括前面4字节的标识符RIFF以及fileLength本身的4字节)
header.fileLength = PCMSize + (44 - 8);
header.FmtHdrLeth = 16;
header.BitsPerSample = 16;
header.Channels = 2;
header.FormatTag = 0x0001;
header.SamplesPerSec = 8000;
header.BlockAlign = (short) (header.Channels * header.BitsPerSample / 8);
header.AvgBytesPerSec = header.BlockAlign * header.SamplesPerSec;
header.DataHdrLeth = PCMSize;

byte[] h = header.getHeader();

assert h.length == 44; // WAV标准,头部应该是44字节
// write header
fos.write(h 0 h.length);
// write data stream
fis = new FileInputStream(src);
size = fis.read(buf);
while (size != -1) {
fos.write(buf 0 size);
size = fis.read(buf);
}
fis.close();
fos.close();
System.out.println(“Convert OK!“);
}

// 测试方法
public static void main(String[] agrs) throws Exception {
convertAudioFiles(“C:\\Users\\90942\\Desktop\\2\\processed.pcm“ “C:\\Users\\90942\\Desktop\\2\\pro.wav“);
}

}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-05-11 17:16  pcmwav\
     文件        1828  2018-05-07 10:17  pcmwav\PcmToWav.java
     文件        1816  2018-05-04 20:16  pcmwav\WaveHeader.java

评论

共有 条评论

相关资源