音频数据文件格式(PCM,WAV,MIDI)简记

  1. PCM(Pulse Code Modulation):脉冲编码调制

    把声源数据按一定的频率进行脉冲调制进行存储的数据格式,简单来说就是对模拟声音信号的数字

    转换。

  2. WAV

    WAV是一种无损音频数据格式。WAV符合RIFF规范。符合RIFF规范的文件可用于存储 音频视频交错格

    式数据(.AVI) 、波形格式数据(.WAV) 、位图格式数据(.RDI) 、MIDI格式数据(.RMI) 、调色板格

    式(.PAL) 、多媒体电影(.RMN) 、动画光标(.ANI) 、其它RIFF文件,RIFF包含的数据文件格式有文

    件扩展名来标识。

    文件扩展名.WAV用来存储波形数据格式。WAV对于数据编码没有硬性规定,PCM是WAV多种编码格式当

    中的一种。

    采用数据可用 采样频率(WAV通常有22050HZ、44100HZ两种)、采样幅度 2个参数来表示。WAV文件

    除开40个字节的开头,声音数据部分记录的就是采样的幅度:单声道的情况下,如果是单字节8-Bit

    的采样,就是把声音采样幅度分成2^8=256个等级,采样数据记录了当前采样幅度等级。双字节

    16-Bit的采样同理,只是幅度等级更丰富了(2^16=64K个等级)。双声道的情况道理一样,只不过每

    个声道都有一份数据,所以数据加倍。

    上面是对WAV格式技术上的描述。而通常我们采用 (采样频率 + 声道数) 或 传输速率 来描述。

    如:

    44100HZ 16bit stereo : 每秒钟有 44100 次采样, 采样数据用 16 位(2字节)记录, 双声道(立体

    声)。

    22050HZ 8bit  mono : 每秒钟有 22050 次采样, 采样数据用 8 位(1字节)记录, 单声道。

    44100 * 16 * 2 = 1411200 bits/s

    22050 * 8 * 1 = 176400 bits/s

    通过上面的计算公式知道了传输速率,如果还知道了WAV文件的数据的大小,可以通过下面的公式计

    算出播放的时长:

    播放时长 = WAV数据大小 / 传输速率

  3. MIDI(Musical Instrument Digital Interface)

    首先要明确的是,MIDI存储的数据和前面两种格式均不同,MIDI文件存储的是如何演奏的一系列指

    令。而真正的音频数据则来源一些预定义的乐器数据,如钢琴,贝斯等,每种乐器的不同音色都有

    对应的数据,这些就是平常所说的MIDI音色库。MIDI的通过一系列预定义的消息指令告诉系统怎样

    演奏,这些预定义的指令指定了使用的乐器,节拍,音调等。

    MIDI的存储格式除了以字串MThd标记的一个头部外,还有一个或多个以字串MTrk标记的音轨数据块。

  4. 更多细节以及参考资料

    http://www.jianshu.com/p/1d1f893e53e9

    http://blog.sina.com.cn/s/blog_622bd1660101aggj.html

    http://dev.gameres.com/Program/Listen/MidiFormat.htm

    http://wenku.baidu.com/link?url=rij6cVodqiPey0kz96y0p2r42TqoDixsjXdfRwVGoALHBkZtGWrVKJvP38_hEaoypfqwH1OcCwCipT3XpvTu4Azfua9nwBMkBvqzhQtdqVu

时间: 2024-10-08 03:40:20

音频数据文件格式(PCM,WAV,MIDI)简记的相关文章

多媒体文件格式(四):PCM / WAV 格式

一.名词解析 PCM(Pulse Code Modulation)也被称为脉码编码调制,PCM中的声音数据没有被压缩,它是由模拟信号经过采样.量化.编码转换成的标准的数字音频数据.采样转换方式参考下图进行了解: 音频采样包含以下几大要素: 1. 采样率 采样率表示音频信号每秒的数字快照数.该速率决定了音频文件的频率范围.采样率越高,数字波形的形状越接近原始模拟波形.低采样率会限制可录制的频率范围,这可导致录音表现原始声音的效果不佳.根据奈奎斯特采样定理,为了重现给定频率,采样率必须至少是该频率的

libvlc —— 播放器示例程序[C++代码实现攫取 RGB图像 和 PCM音频 数据功能]

在我以前的实际项目中,曾利用 libvlc 去解码音视频媒体数据(如 RTSP.本地文件 等),通过其提供的回调函数接口,攫取 RGB图像 进行图像分析,如 人脸识别.运动检测 等一类的产品应用.除此之外,只要提供适当的 MRL,配合选项参数,VLC 还可以进行屏幕录制.摄像头图像采集.麦克风音频采集 等功能. 我在网上参看过很多人提供的示例源码,实现流程都很初潜,只适合当作学习的 Demo 来看,与实际的项目应用还有很多问题要解决.为此,在这里公开我封装 libvlc 的 C++ 类,方便TA

DirectSound播放PCM(可播放实时采集的音频数据)

前言 该篇整理的原始来源为http://blog.csdn.net/leixiaohua1020/article/details/40540147.非常感谢该博主的无私奉献,写了不少关于不同多媒体库的博文.让我这个小白学习到不少.现在将其整理是为了收录,以备自己查看. 一.DirectSound简介 DirectSound是微软所开发DirectX的组件之一,可以在Windows 操作系统上录音,并且记录波形音效(waveform sound).目前DirectSound 是一个成熟的API ,

使用AudioTrack播放PCM音频数据(android)

众所周知,Android的MediaPlayer包含了Audio和video的播放功能,在Android的界面上,Music和Video两个应用程序都是调用MediaPlayer实现的.MediaPlayer在底层是基于OpenCore(PacketVideo)的库实现的,为了构建一个MediaPlayer程序,上层还包含了进程间通讯等内容,这种进程间通讯的基础是Android基本库中的Binder机制.但是该类只能对完整的音频文件进行操作,而不能直接对纯PCM音频数据操作.假如我们通过解码得到

WIN32下使用DirectSound接口的简单音频播放器(支持wav和mp3)

刚好最近接触了一些DirectSound,就写了一个小程序练练手,可以用来添加播放基本的wav和mp3音频文件的播放器.界面只是简单的GDI,dxsdk只使用了DirectSound8相关的接口. DirectSound的使用步骤很简单 首先你要创建一个DirectSound8设备对象 1 HRESULT DirectSoundCreate8( 2 LPCGUID lpcGuidDevice, 3 LPDIRECTSOUND8 * ppDS8, 4 LPUNKNOWN pUnkOuter 5 )

Bluedroid: 音频数据的传输流程

一. UIPC:   Audio Flinger获取到a2dp的hw module,然后蓝牙协议栈有专用于发送和接收media数据的线程,名称:btif_media_task.   蓝牙与Audio的通信则采用了socket的方式,管理socket的中间文件为:UIPC.主要的作用就是,接收Audio的控制命令和音频数据发送给BT,即 Audio_a2dp_hw -> UIPC -> btif_media_task   UIPC建立了两条socket,分别为:    #define A2DP_

Android音频开发(5):音频数据的编解码

前面四篇文章分别介绍了音频开发必备的基础知识.如何采集一帧音频.如何播放一帧音频.如何存储和解析wav格式的文件,建议有兴趣的小伙伴们先读一读,本文则重点关注如何对一帧音频数据进行编码和解码. 1. Android 官方的 MediaCodec API 首先,我们了解一下 Android 官方提供的音频编解码的 API,即 MediaCodec 类,该 API 是在 Andorid 4.1 (API 16) 版本引入的,因此只能工作于 Android 4.1 以上的手机上. 1.1 MediaC

将mp3文件数据转换成.h的头文件的音频数据

使用mp3文件数据转换成.h的头文件的工具 bin2h_v1.01.zip 使用bin2h工具 https://code.google.com/p/bin2h/wiki/bin2h 将bin2h_v1.01.zip解压到bin2h文件夹中 ,输入命令: >bin2h 小苹果.mp3 xiaopingguo.h 生成xiaopingguo.h的头文件,里面是纯pcm的音频数据 版权声明:本文为博主原创文章,未经博主允许不得转载.

转---Android Audio System 之一:AudioTrack如何与AudioFlinger交换音频数据

引子 Android Framework的音频子系统中,每一个音频流对应着一个AudioTrack类的一个实例,每个AudioTrack会在创建时注册到 AudioFlinger中,由AudioFlinger把所有的AudioTrack进行混合(Mixer),然后输送到AudioHardware中 进行播放,目前Android的Froyo版本设定了同时最多可以创建32个音频流,也就是说,Mixer最多会同时处理32个AudioTrack的数 据流. 如何使用AudioTrack AudioTra