- PCM(Pulse Code Modulation):脉冲编码调制
把声源数据按一定的频率进行脉冲调制进行存储的数据格式,简单来说就是对模拟声音信号的数字
转换。
- 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数据大小 / 传输速率
- MIDI(Musical Instrument Digital Interface)
首先要明确的是,MIDI存储的数据和前面两种格式均不同,MIDI文件存储的是如何演奏的一系列指
令。而真正的音频数据则来源一些预定义的乐器数据,如钢琴,贝斯等,每种乐器的不同音色都有
对应的数据,这些就是平常所说的MIDI音色库。MIDI的通过一系列预定义的消息指令告诉系统怎样
演奏,这些预定义的指令指定了使用的乐器,节拍,音调等。
MIDI的存储格式除了以字串MThd标记的一个头部外,还有一个或多个以字串MTrk标记的音轨数据块。
- 更多细节以及参考资料
http://www.jianshu.com/p/1d1f893e53e9
http://blog.sina.com.cn/s/blog_622bd1660101aggj.html
音频数据文件格式(PCM,WAV,MIDI)简记
时间: 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