为什么以相同方式导出的两个音频文件具有不同的校验和?

时间:2016-06-27 14:56:27

标签: audio binary pcm non-deterministic lossless-compression

我最初在Signal Processing上问过这个问题,但这不是主题。所以,就在这里!

我尝试从Audacity导出录音两次,每次都使用相同的参数和标签。生成的文件具有不同的校验和。所以我打开了两个文件的差异(作为二进制文件)。

我的第一次尝试是一个包含32位浮点PCM的wav文件。整个文件中只有3位不同。

0000003c: 01000000 01001001 01110000 01010111 01001100 11100111  @IpWL.

成了

0000003c: 01000111 01001001 01110000 01010111 01001100 11100111  GIpWL.

我的第一个问题是:这三个位用于什么?

然后我尝试了与flac文件相同的程序。我不会把它粘贴在这里,因为它太长了,但发生的事情是在文件的开头,这里和那里只有一些差异,但文件中的距离越远,我就越明显文件不同。

为什么? flac压缩算法不确定吗?

最后,我拿了一个包含16位带符号PCM的wav文件并将其转换为16位带符号的flac文件,然后返回到wav。我获得的文件与原始文件非常相似,但似乎数据是33字节,如您从这些文件样本中看到的那样:

原始档案:

00000294: 11111110 11111111 11111111 11111111 11111101 11111111  ......
0000029a: 11111011 11111111 11111100 11111111 11111110 11111111  ......
000002a0: 00000000 00000000 11111011 11111111 00000000 00000000  ......
000002a6: 00000001 00000000 00000010 00000000 00000001 00000000  ......
000002ac: 11111101 11111111 11111110 11111111 11111100 11111111  ......
000002b2: 11111100 11111111 11111101 11111111 11111101 11111111  ......
000002b8: 00000001 00000000 00000010 00000000 11111100 11111111  ......
000002be: 11111100 11111111 11111011 11111111 11111010 11111111  ......
000002c4: 00000010 00000000 00000010 00000000 00000000 00000000  ......

新文件:

000002b2: 00000011 00000000 00000011 00000000 11111110 11111111  ......
000002b8: 11111111 11111111 11111101 11111111 11111011 11111111  ......
000002be: 11111100 11111111 11111110 11111111 00000000 00000000  ......
000002c4: 11111011 11111111 00000000 00000000 00000001 00000000  ......
000002ca: 00000010 00000000 00000001 00000000 11111101 11111111  ......
000002d0: 11111110 11111111 11111100 11111111 11111100 11111111  ......
000002d6: 11111101 11111111 11111101 11111111 00000001 00000000  ......
000002dc: 00000010 00000000 11111100 11111111 11111100 11111111  ......
000002e2: 11111011 11111111 11111010 11111111 00000010 00000000  ......

为什么?

0 个答案:

没有答案