社区
多媒体/流媒体开发
帖子详情
PCM音频格式文件请教!
hongjiujing
2008-03-10 10:33:29
有人说没有.pcm音频格式,仅仅是pcm编码的音频!不解!
哪位有pcm音频文件结构的资料给我一份,hongjiujing@126.com
...全文
11940
23
打赏
收藏
PCM音频格式文件请教!
有人说没有.pcm音频格式,仅仅是pcm编码的音频!不解! 哪位有pcm音频文件结构的资料给我一份,hongjiujing@126.com
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
23 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
chencaishengsic
2012-10-21
打赏
举报
回复
经过pcm编码后是很大的文件,所以一般没有pcm格式的文件,都要经过压缩。
QQJADE777
2012-09-05
打赏
举报
回复
那给pcm加上那些头,就能变成WAV格式的音乐吗
windows media player 就能播了
hainei_
2012-09-05
打赏
举报
回复
PCM就是“脉冲编码调制”,就是将模拟信号经过采样得到的一个个连续的点。
spark_huo_tb
2010-07-26
打赏
举报
回复
[Quote=引用 8 楼 hanxiao_0210 的回复:]
对于一个pcm文件,怎样判断pcm的量化位数是8位的还是16位的呢?
[/Quote]
如果一个PCM文件没有被WAV格式包装过,它仅仅是一些信号数据信息(只有制作它的人自己知道),是无法得知它所表示的是8位还是16位,也无法得知它的采样率。WAV文件能包装很多种不同格式,PCM格式只是其中一种,从WAV的文件头中可以得知量化深度 以及采样率等信息。
meteor_an
2010-07-20
打赏
举报
回复
学习。。。
tyg111
2010-07-20
打赏
举报
回复
是一组数组
CyberLogix
2010-06-25
打赏
举报
回复
有相应的插值或者降采样算法来转化位数
SoftSoftSoft2008
2010-06-24
打赏
举报
回复
pcm就是原始的音频数据。 加上 wave文件头,就成为 wav文件。
老青蛙嘎嘎嘎
2010-06-24
打赏
举报
回复
怎么把 amr的音频转换为 pcm?用ffmpeg怎么做?
hfCoder
2010-06-19
打赏
举报
回复
不懂,帮顶
yuanzhenhai
2010-06-19
打赏
举报
回复
http://www.cnitblog.com/tinnal/archive/2009/01/03/53401.html
楼上代码出自上面!!
饺子87
2009-11-21
打赏
举报
回复
wav文件格式分析详解
一、综述
WAVE文件作为多媒体中使用的声波文件格式之一,它是以RIFF格式为标准的。
RIFF是英文Resource Interchange File Format的缩写,每个WAVE文件的头四个
字节便是“RIFF”。
WAVE文件是由若干个Chunk组成的。按照在文件中的出现位置包括:RIFF WAVE
Chunk, Format Chunk, Fact Chunk(可选), Data Chunk。具体见下图:
------------------------------------------------
| RIFF WAVE Chunk |
| ID = 'RIFF' |
| RiffType = 'WAVE' |
------------------------------------------------
| Format Chunk |
| ID = 'fmt ' |
------------------------------------------------
| Fact Chunk(optional) |
| ID = 'fact' |
------------------------------------------------
| Data Chunk |
| ID = 'data' |
------------------------------------------------
图1 Wav格式包含Chunk示例
其中除了Fact Chunk外,其他三个Chunk是必须的。每个Chunk有各自的ID,位
于Chunk最开始位置,作为标示,而且均为4个字节。并且紧跟在ID后面的是Chunk大
小(去除ID和Size所占的字节数后剩下的其他字节数目),4个字节表示,低字节
表示数值低位,高字节表示数值高位。下面具体介绍各个Chunk内容。
PS:
所有数值表示均为低字节表示低位,高字节表示高位。
二、具体介绍
RIFF WAVE Chunk
==================================
| |所占字节数| 具体内容 |
==================================
| ID | 4 Bytes | 'RIFF' |
----------------------------------
| Size | 4 Bytes | |
----------------------------------
| Type | 4 Bytes | 'WAVE' |
----------------------------------
图2 RIFF WAVE Chunk
以'FIFF'作为标示,然后紧跟着为size字段,该size是整个wav文件大小减去ID
和Size所占用的字节数,即FileLen - 8 = Size。然后是Type字段,为'WAVE',表
示是wav文件。
结构定义如下:
struct RIFF_HEADER
{
char szRiffID[4]; // 'R','I','F','F'
DWORD dwRiffSize;
char szRiffFormat[4]; // 'W','A','V','E'
};
Format Chunk
====================================================================
| | 字节数 | 具体内容 |
====================================================================
| ID | 4 Bytes | 'fmt ' |
--------------------------------------------------------------------
| Size | 4 Bytes | 数值为16或18,18则最后又附加信息 |
-------------------------------------------------------------------- ----
| FormatTag | 2 Bytes | 编码方式,一般为0x0001 | |
-------------------------------------------------------------------- |
| Channels | 2 Bytes | 声道数目,1--单声道;2--双声道 | |
-------------------------------------------------------------------- |
| SamplesPerSec | 4 Bytes | 采样频率 | |
-------------------------------------------------------------------- |
| AvgBytesPerSec| 4 Bytes | 每秒所需字节数 | |===> WAVE_FORMAT
-------------------------------------------------------------------- |
| BlockAlign | 2 Bytes | 数据块对齐单位(每个采样需要的字节数) | |
-------------------------------------------------------------------- |
| BitsPerSample | 2 Bytes | 每个采样需要的bit数 | |
-------------------------------------------------------------------- |
| | 2 Bytes | 附加信息(可选,通过Size来判断有无) | |
-------------------------------------------------------------------- ----
图3 Format Chunk
以'fmt '作为标示。一般情况下Size为16,此时最后附加信息没有;如果为18
则最后多了2个字节的附加信息。主要由一些软件制成的wav格式中含有该2个字节的
附加信息。
结构定义如下:
struct WAVE_FORMAT
{
WORD wFormatTag;
WORD wChannels;
DWORD dwSamplesPerSec;
DWORD dwAvgBytesPerSec;
WORD wBlockAlign;
WORD wBitsPerSample;
};
struct FMT_BLOCK
{
char szFmtID[4]; // 'f','m','t',' '
DWORD dwFmtSize;
WAVE_FORMAT wavFormat;
};
Fact Chunk
==================================
| |所占字节数| 具体内容 |
==================================
| ID | 4 Bytes | 'fact' |
----------------------------------
| Size | 4 Bytes | 数值为4 |
----------------------------------
| data | 4 Bytes | |
----------------------------------
图4 Fact Chunk
Fact Chunk是可选字段,一般当wav文件由某些软件转化而成,则包含该Chunk。
结构定义如下:
struct FACT_BLOCK
{
char szFactID[4]; // 'f','a','c','t'
DWORD dwFactSize;
};
Data Chunk
==================================
| |所占字节数| 具体内容 |
==================================
| ID | 4 Bytes | 'data' |
----------------------------------
| Size | 4 Bytes | |
----------------------------------
| data | | |
----------------------------------
图5 Data Chunk
Data Chunk是真正保存wav数据的地方,以'data'作为该Chunk的标示。然后是
数据的大小。紧接着就是wav数据。根据Format Chunk中的声道数以及采样bit数,
wav数据的bit位置可以分成以下几种形式:
---------------------------------------------------------------------
| 单声道 | 取样1 | 取样2 | 取样3 | 取样4 |
| |--------------------------------------------------------
| 8bit量化 | 声道0 | 声道0 | 声道0 | 声道0 |
---------------------------------------------------------------------
| 双声道 | 取样1 | 取样2 |
| |--------------------------------------------------------
| 8bit量化 | 声道0(左) | 声道1(右) | 声道0(左) | 声道1(右) |
---------------------------------------------------------------------
| | 取样1 | 取样2 |
| 单声道 |--------------------------------------------------------
| 16bit量化 | 声道0 | 声道0 | 声道0 | 声道0 |
| | (低位字节) | (高位字节) | (低位字节) | (高位字节) |
---------------------------------------------------------------------
| | 取样1 |
| 双声道 |--------------------------------------------------------
| 16bit量化 | 声道0(左) | 声道0(左) | 声道1(右) | 声道1(右) |
| | (低位字节) | (高位字节) | (低位字节) | (高位字节) |
---------------------------------------------------------------------
图6 wav数据bit位置安排方式
Data Chunk头结构定义如下:
struct DATA_BLOCK
{
char szDataID[4]; // 'd','a','t','a'
DWORD dwDataSize;
};
三、小结
因此,根据上述结构定义以及格式介绍,很容易编写相应的wav格式解析代码。
这里具体的代码就不给出了。
vincent200liu
2009-08-24
打赏
举报
回复
知道格式了,大概懂了点儿。
zhoumingjie
2009-03-12
打赏
举报
回复
22H 2 每样本的数据位数,表示每个声道中各个样本的数据位数。如果有多
个声道,对每个声道而言,样本大小都一样。
hanxiao_0210
2009-02-27
打赏
举报
回复
对于一个pcm文件,怎样判断pcm的量化位数是8位的还是16位的呢?
glacierful
2008-09-09
打赏
举报
回复
PCM是直接采样量化后的数据,是保存原始数字音频的一种文件格式。wav格式就是PCM加了一个文件头。
nosilence_2007
2008-08-06
打赏
举报
回复
[Quote=引用 5 楼 lauxingxing 的回复:]
怎样把PCM24位比特率转化成16位的或32位的???
[/Quote]
mark 学习
24-》16会损耗吧 如何减少损耗啊? 插值? 还是怎么弄啊
mark
lauxingxing
2008-08-05
打赏
举报
回复
怎样把PCM24位比特率转化成16位的或32位的???
syhsean
2008-06-11
打赏
举报
回复
PCM脉码调制数字音频格式是70年代末发展起来的,记录媒体之一的CD,80年代初由飞利浦和索尼公司共同推出。PCM的音频格式也被DVD-A所采用,它支持立体声和5.1环绕声,1999年由DVD讨论会发布和推出的。
PCM的比特率,从14-bit发展到16-bit、18-bit、20-bit直到24-bit;采样频率从44.1kHz发展到192kHz。到目前为止PCM这项技术可以改善和提高的方面则越来越来小。只是简单的增加PCM比特率和采样率,不能根本的改善它的根本问题。其原因是PCM的主要问题在于: 1)任何PCM数字音频系统需要在其输入端设置急剧升降的滤波器,仅让20 Hz - 22.05 kHz的频率通过(高端22.05 kHz是由于CD 44.1 kHz的一半频率而确定),这是一项非常困难的任务。2)在录音时采用多级或者串联抽选的数字滤波器(减低采样率),在重放时采用多级的内插的数字滤波器(提高采样率),为了控制小信号在编码时的失真,两者又都需要加入重复定量噪声。这样就限制了PCM技术在音频还原时的保真度。
为了全面改善PCM 数字音频技术,获得更好的声音质量,就需要有新的技术来替换。近年来飞利浦和索尼公司再次联手,共同推出一种称为直接流数字编码技术DSD的格式, 其记录媒体为超级音频CD即SACD,支持立体声和5.1环绕声
niuyanzhang
2008-03-12
打赏
举报
回复
正在学习,不懂。
加载更多回复(2)
FFmpeg4.3开发系列之9:
PCM
重采样及
音频
编解码实战
敬告:该系列的课程在抓紧录制更新中,敬请大家关注。敬告: 该系列的课程涉及:FFmpeg,WebRTC,SRS,Nginx,Darwin,Live555,等。包括:音视频、流媒体、直播、Android、视频监控28181、等。 我将带领大家一起来学习
PCM
重采样及
音频
编解码的知识。具体内容包括:1.
PCM
详解及命令行实战。2.WAV详解及代码实战。3.
音频
解码为
PCM
代码实战。4.
PCM
重采样原理及实战。5.
PCM
编码为AAC实战。
记一次语音合成遇到的坑:
PCM
音频
流转WAV
需求内容: 预合成音:支持将固定音合成并完成上传操作 解决思路: 调用公有云识别引擎,获取识别引擎合成的
音频
流, 然后将
音频
流转成wav
文件
, 最后将
文件
上传到oss服务器上。 遇到的问题 问题主要在于,拿到了引擎给的base64的
音频
流,将
音频
流用base64解码转成byte[]数组后写入wav
格式
文件
内,但是这个
文件
始终无法播放。 排坑过程 刚开始一直以为是base64解码有问题,换了多种base64工具解码,还是无法播放; 然后找到了
文件
Base64在线编码和解码工具 这个网.
关于java中通过傅里页算法对
音频
文件
做降噪处理(包括
pcm
,wav)等
文件
格式
,有没有各位前辈懂得,烦
请教
关于java中通过傅里页算法对
音频
文件
做降噪处理(包括
pcm
,wav)等
文件
格式
,有没有各位前辈懂得,烦
请教
提问!!!
请教
大神啊
提问!!!
请教
!!! 准大三学生,最近在做一个小网站应用,一个智能小机器人,想法是:暂时部署在网页上,用户对其进行语音输入,调用百度语音SDK进行识别语音转化为中文,再在后台进行相应的回复。 目前进行到语音输入方面,百度SDK已经成功调用,但是这个得识别已录制得
音频
文件
,也就是说得先把
文件
保存下来,才能对其进行识别,问题就卡在这里,通过CSDN来的代码,我不知道怎样将
音频
文件
存到本地,
请教
各位...
【Android】AudioRecord--录音并将
PCM
文件
转为WAV
前言Android提供可以用来录音的有AudioRecord和MediaRecord,通过MediaRecord录音,我们可以选择所要录音的
格式
,然后录完之后,自动生成这种
格式
的
文件
,而AudioRecord得到的是
PCM
编码
格式
的数据,因此如果我们要对录音的数据做处理,显然我们需要的是通过后者,同时后者还支持对于录音过程中,将模拟信号转化为数字信号的相关参数的设置,其中包括采样率和量化深度,同时也
多媒体/流媒体开发
2,543
社区成员
20,281
社区内容
发帖
与我相关
我的任务
多媒体/流媒体开发
专题开发/技术/项目 多媒体/流媒体开发
复制链接
扫一扫
分享
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章