收录日期:2019/02/16 20:15:26 时间:2016/05/27 12:53:20 标签:机器视觉
由程序获得wav文件的16进制数据格式如下:
00000000 h: 52 49 46 46 58 f3 00 00 57 41 56 45 66 6d 74 20 
00000010 h: 10 00 00 00 01 00 01 00 11 2b 00 00 11 2b 00 00 
00000020 h: 01 00 08 00 64 61 74 61 34 f3 00 00 7f 80 80 80 
00000030 h: 80 80 80 80 80 80 81 81 81 81 81 82 82 82 82 82 
00000040 h: 83 82 82 82 82 82 82 82 82 82 82 82 82 82 81 81 
00000050 h: 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 
00000060 h: 81 81 82 82 82 82 82 82 82 83 83 83 83 83 84 84 
00000070 h: 84 84 84 83 84 84 83 83 83 83 83 82 82 82 82 81 
00000080 h: 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 
地      址:前三行为文件头~
后面接着的是数据~~

请问数据部分的意义分别是什么~?~?
up一下,谁有pcm的解码程序啊?
easy
谁有pcm的解码程序啊?
pcm不需要解码了,直接送给声卡就行了
如果是双声道:数据的顺序是:左右左右...............
-------------------------------------
WAV File Format
The wave file format is broken up into RIFF chunks. Some wave files are non-standard and contain additional chunks and information. This program we are writing does not care for those and we will only honor the traditional chunks. Here is a simple breakdown of the .WAV format.

RIFF
<4 bytes>
WAVE
This is the first thing you generally see in the format and at least this is what I have found. I have tried to use those 4 bytes as a size, but, I've generally just found it better to skip these. So, in the program we write, I simply skip the first 12 bytes. Next, everything is done in RIFFs. A RIFF works like this:

RIFF IDENTIFIER    (4 Bytes)
RIFF SIZE          (4 Bytes)
<RIFF INFORMATION> (RIFF SIZE - 8)
So, you have a 4 byte identifier that tells you what this block is. The next 4 bytes tell you the size of this RIFF. The last chunk is the data which is the size of the RIFF minus the header, so RIFF SIZE - 8. The very first RIFF in a WAVE file will be "fmt ". This is described as this:

"fmt "
DWORD dwRiffSize;
WORD  wFormatTag;         // Format category
WORD  wChannels;          // Number of channels
DWORD dwSamplesPerSec;    // Sampling rate
DWORD dwAvgBytesPerSec;   // For buffer estimation
WORD  wBlockAlign;        // Data block size
WORD  wBitsPerSample;
So, in the program, we simply skip the first 12 bytes and then read this information out of the file. Now, the only other RIFF we care about is "data". This is defined as so:

"data"              4 Bytes
DATA SIZE           4 Bytes
<YOUR Data Audio>   (DATA SIZE - 8)
when we read a wav file, all we have to do is : 
- read the first 12 characters to check if it's a real wav file. 
- read the format chunk in a struct similar to the formatChunk struct. 
- skip the extra parameters in the format chunk, if any. 
- find the data chunk, read the raw data and carry out with the encoding. 
-skip all other chunks.
pcm不需要解码了,直接送给声卡就行了

那是因为声卡里有pcm解码器~
我需要用软件实现pcm解码~
不过很谢谢你的资料~

我朋友准备跳槽,问一下大家关于跳槽的事情:如果你一年工作经验,跳槽后做一样的工作,工资增加1500,你会跳吗? 如何设置才能默认以新的VC-IDE打开.dsw文件?谢谢! 想了半天了..帮帮忙啊..求个查询语句.. 请教两个问题(删除文件、流程定议) 请问如何修改注册表使ie显示或者隐藏第三方工具栏,比如上网助手,新浪搜索栏等等? 一个非常古老的问题。 关于字符串处理函数,高人进 可以把查询出的二个字段的内容放到一列里吗? Media Encoder 的问题 开发gui用什么库 格式为hh:mm:ss的时间查询问题。 DBGrid中的问题! 在DLL代码中怎么用response对像 请教两个问题(删除文件、流程定议) 安装程序的过程?一般都放到注册表的什么位置,怎么把它们提取出来? 编译通过了,但运行的时候一点修改窗口的确定就出错,为什么? 关于无限制商品分类。。。 请问如何修改注册表使ie显示或者隐藏第三方工具栏,比如上网助手,新浪搜索栏等等? 怎么装一个最小的openoffice writer,百分相赠! 求程序,请大侠近来帮忙,急! 网页中的flash能否截图? 新手请问模糊查询 急求:如何给treeview的结点node加上单击click事件?treeview从数据库中动态生成 EnumClipboardFormats返回的UINT值的涵义是什么?比如49161代表什么类型数据? 散分 CBitmapButton 使用问题 获得键盘输入的问题 问一个关于datediff的小问题 关于Toolbar的小问题 在程序里起了多个数据库连接,并用多个线程执行存储过程,但取出记录出现重复,请问是为什么?