WAV和PCM的关系和区别

转载 2016年11月21日 17:17:47

转载自Tianyu-liu 地址

**

什么是WAV和PCM?

**

WAV:wav是一种无损的音频文件格式,WAV符合 PIFF(Resource Interchange File Format)规范。所有的WAV都有一个文件头,这个文件头音频流的编码参数。WAV对音频流的编码没有硬性规定,除了PCM之外,还有几乎所有支持ACM规范的编码都可以为WAV的音频流进行编码。

PCM:PCM(Pulse Code Modulation—-脉码调制录音)。所谓PCM录音就是将声音等模拟信号变成符号化的脉冲列,再予以记录。PCM信号是由[1]、[0]等符号构成的数字信号,而未经过任何编码和压缩处理。与模拟信号比,它不易受传送系统的杂波及失真的影响。动态范围宽,可得到音质相当好的影响效果。

简单来说:wav是一种无损的音频文件格式,pcm是没有压缩的编码方式。

**

WAV和PCM的关系

**

  WAV可以使用多种音频编码来压缩其音频流,不过我们常见的都是音频流被PCM编码处理的WAV,但这不表示WAV只能使用PCM编码,MP3编码同样也可以运用在WAV中,和AVI一样,只要安装好了相应的Decode,就可以欣赏这些WAV了。在Windows平台下,基于PCM编码的WAV是被支持得最好的音频格式,所有音频软件都能完美支持,由于本身可以达到较高的音质的要求,因此,WAV也是音乐编辑创作的首选格式,适合保存音乐素材。因此,基于PCM编码的WAV被作为了一种中介的格式,常常使用在其他编码的相互转换之中,例如MP3转换成WMA。

简单来说:pcm是无损wav文件中音频数据的一种编码方式,但wav还可以用其它方式编码。

将录音写成wav格式的文件

  有时候需要将录音文件保存为wav格式,这需要手动填充wav的文件头信息,整段代码非常简单,大致如下:

private RandomAccessFile fopen(String path) throws IOException {
    File f = new File(path);

    if (f.exists()) {
        f.delete();
    } else {
        File parentDir = f.getParentFile();
        if (!parentDir.exists()) {
            parentDir.mkdirs();
        }
    }

    RandomAccessFile file = new RandomAccessFile(f, "rw");
    // 16K、16bit、单声道
    /* RIFF header */
    file.writeBytes("RIFF"); // riff id
    file.writeInt(0); // riff chunk size *PLACEHOLDER*
    file.writeBytes("WAVE"); // wave type

    /* fmt chunk */
    file.writeBytes("fmt "); // fmt id
    file.writeInt(Integer.reverseBytes(16)); // fmt chunk size
    file.writeShort(Short.reverseBytes((short) 1)); // format: 1(PCM)
    file.writeShort(Short.reverseBytes((short) 1)); // channels: 1
    file.writeInt(Integer.reverseBytes(16000)); // samples per second
    file.writeInt(Integer.reverseBytes((int) (1 * 16000 * 16 / 8))); // BPSecond
    file.writeShort(Short.reverseBytes((short) (1 * 16 / 8))); // BPSample
    file.writeShort(Short.reverseBytes((short) (1 * 16))); // bPSample

    /* data chunk */
    file.writeBytes("data"); // data id
    file.writeInt(0); // data chunk size *PLACEHOLDER*

    Log.d(TAG, "wav path: " + path);
    return file;
}

private void fwrite(RandomAccessFile file, byte[] data, int offset, int size) throws IOException {
    file.write(data, offset, size);
    Log.d(TAG, "fwrite: " + size);
}

private void fclose(RandomAccessFile file) throws IOException {
    try {
        file.seek(4); // riff chunk size
        file.writeInt(Integer.reverseBytes((int) (file.length() - 8)));

        file.seek(40); // data chunk size
        file.writeInt(Integer.reverseBytes((int) (file.length() - 44)));

        Log.d(TAG, "wav size: " + file.length());

    } finally {
        file.close();
    }
}

什么是PCM?它和.wav文件是什么关系?

PCM(Pulse Code Modulation----脉码调制录音)。所谓PCM录音就是将声音等模拟信号变成符号化的脉冲列,再予以记录。PCM信号是由[1]、[0]等符号构成的数字信号,而未经过任...
  • rinuslucky
  • rinuslucky
  • 2006年10月08日 22:15
  • 26462

PCM、WAV格式介绍及用C语言实现PCM转WAV

1、PCM格式介绍: PCM(Pulse Code Modulation)也被称为 脉码编码调制。PCM中的声音数据没有被压缩,如果是单声道的文件,采样数据按时间的先后顺序依次存入。(它的基...
  • u010011236
  • u010011236
  • 2016年11月03日 22:01
  • 4711

pcm音频文件和wav音频文件 工具下载

  • 2017年05月02日 21:20
  • 1.58MB
  • 下载

C#WAV音频文件转化PCM数据文件PCM转化WAV音频

源文件在下面连接 代码如下: using System; using System.IO; using System.Text; using System.Windows.Forms; using S...
  • ChenLuLiang
  • ChenLuLiang
  • 2017年07月11日 11:54
  • 970

pcm转wav的方法及代码示例

pcm文件转wav文件 pcm wav 格式转换
  • lzyzuixin
  • lzyzuixin
  • 2016年07月06日 12:03
  • 3943

wav文件,pcm波形的wav音频

  • 2016年06月19日 14:50
  • 4.84MB
  • 下载

音频编解码·格式篇(1)Wave PCM audio format(WAV)

音频编解码·格式篇(1)Wave PCM audio format(WAV)作者:柳大·Poechant博客:Blog.CSDN.net/Poechant邮箱:zhongchao.ustc@gmail...
  • Poechant
  • Poechant
  • 2012年04月08日 01:40
  • 29131

什么是PCM?它和.wav文件是什么关系?

什么是PCM?它和.wav文件是什么关系? http://blog.csdn.net/rinuslucky/article/details/1326512点击打开链接 PCM(Pulse C...
  • wocao1226
  • wocao1226
  • 2013年12月20日 16:14
  • 6254

wav与pcm数据

参考下这个 WAVE文件作为多媒体中使用的声波文件格式之一,它是以RIFF格式为标准的。RIFF是英文Resource InterchangeFileFormat的缩写,每个WAVE文件的头四个字节...
  • nine_locks
  • nine_locks
  • 2015年09月14日 09:32
  • 855

PCM和I2S区别

今天突然想到I2S和PCM接口都是数字音频接口,而我所见的蓝牙到cpu以及codec的音频接口都是用PCM接口,是不是两个接口有各自不同的应用呢?先来看下概念。     PCM(PCM-clock、...
  • newtonnl
  • newtonnl
  • 2012年08月17日 16:57
  • 24553
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WAV和PCM的关系和区别
举报原因:
原因补充:

(最多只允许输入30个字)