【问题标题】:RIFF WAV header format 2014 update?RIFF WAV 标头格式 2014 更新?
【发布时间】:2014-11-19 06:05:08
【问题描述】:

我正在尝试在 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 文件格式”

但最后我正在测试 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;

仍然困扰我它是如何真正工作的,可变数据在“每个样本的位数”字段和“数据”字段之间是什么。

谢谢你们!

(我对这个论坛上瘾了)

test2.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

test.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

【问题讨论】:

    标签: perl audio wav riff


    【解决方案1】:

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

    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 上的一些文档

    【讨论】:

    • 谢谢,这是我正在寻找的文档(嗯,它很像微软,但是......它告诉了所需的信息)。再次感谢您。
    猜你喜欢
    • 1970-01-01
    • 2021-01-03
    • 2011-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-31
    相关资源
    最近更新 更多