gpt4 book ai didi

perl - RIFF WAV header 格式 2014 更新?

转载 作者:行者123 更新时间:2023-12-04 18:31:24 25 4
gpt4 key购买 nike

我正在尝试在 perl 中解码和播放 WAV 文件以进行进一步的操作,我找到了一些关于格式的引用资料,以及一些有趣的 q+a

What does a audio frame contain? error in reading a wav file with C++ Writing musical notes to a wav file

我发现了“Cannonical WAVE 文件格式”enter image description here

但最后我测试了 2 个不符合“标准”的不同 WAV 文件。 Mplayer 在读取数据时完全没有问题,我在我的 perl 代码中找到了一个解决方法:

sysread WAV, $riff, 12;
sysread WAV, $fmt, 24;

do{
sysread WAV, $wtf, 2;

}while( unpack("A4",$wtf) ne "da" );
sysread WAV, $wtf, 2;

#94
sysread WAV, $data, 4;

它到底是如何工作的,以及“每个样本位数”字段和“数据”字段之间的可变数据是什么,这仍然让我感到困扰。

谢谢大家!

(我对这个论坛上瘾了)

测试2.wav

       v--------- riff --------------v--------- 
0000000 4952 4646 685e 0931 4157 4556 6d66 2074
-------------- fmt --------------------
0000010 0028 0000 fffe 0006 bb80 0000 ca00 0008
---------v-----------------------------
0000020 000c 0010 0016 0010 060f 0000 0001 0000
---------------------------------------
0000030 0000 0010 0080 aa00 3800 719b 494c 5453
---------------------------------------
0000040 001a 0000 4e49 4f46 5349 5446 000e 0000
----------------------------------v----
0000050 614c 6676 3535 312e 2e39 3031 0034 6164
----v---------v
0000060 6174 6800 0931 0000 0000 0000 0000 0000
0000070 0000 0000 0000 0000 0000 0000 0000 0000

测试.wav

       v--------- riff --------------v--------- 
0000000 4952 4646 7048 095b 4157 4556 6d66 2074
-------------- fmt --------------------
0000010 0012 0000 0001 0002 ac44 0000 b110 0002
---------v-----------------------------
0000020 0004 0010 0000 494c 5453 001a 0000 4e49
---------------------------------------
0000030 4f46 5349 5446 000e 0000 614c 6676 3535
-------------------v---------v---------v
0000040 312e 2e39 3031 0034 6164 6174 7000 095b
0000050 0000 0000 0000 0000 0000 0000 0000 0000

最佳答案

test2.wav 中的AudioFormat 字段是0xfffe,表示 header 是WAVEFORMATEXTENSIBLE。发生这种情况时,您需要以不同方式解释 header 的其余部分。

AudioFormat   : 2
NumChannels : 2
SampleRate : 4
ByteRate : 4
BlockAlign : 2
BitsPerSample : 2
cbSize : 2 - size of the rest of the chunk
ChannelMask : 4
SubFormat : 16 - GUID

有关更多信息,请参阅 WAVEFORMATEX 上的一些文档和 WAVEFORMATEXTENSIBLE

关于perl - RIFF WAV header 格式 2014 更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26022098/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com