我从资料来源那里知道,FLAC计算CRC和MD5。
我担心flac --test
只进行CRC测试--如man flac
:same as -d except no decoded file is written
中所述。
如何检查MD5文件的正确性,使用.flac文件中放置在STREAMINFO中的原始PCM?
如果flac --test
做了工作,是否有任何可靠的引用(如在flac文档中)来显示它?
资料来源:
http://en.wikipedia.org/wiki/Free_无损_音频_编解码器我们可以找到:
FLAC使用CRC校验和来识别流协议中使用的损坏帧,并在其STREAMINFO元数据头中存储了原始PCM音频的完整MD5散列。
http://flac.sourceforge.net/comparison.html
默认情况下,在处理文件时,flac在编码和解码时计算MD5和。
要在STEAMINFO中看到md5sums,我们可以使用:
$ metaflac --show-md5sum *.flac
发布于 2012-02-24 21:28:53
最可靠的来源是源代码本身,它确实建议默认检查存储在STREAMINFO中的MD5。
发布于 2017-03-17 22:51:27
http://wiki.etree.org/index.php?page=FlacFingerprint显示了以下信息:
相反,当您解压缩或使用FLAC的Test特性时,FLAC会根据存储在文件中的内部校验和自动验证每个文件。注意,flac指纹不是编码的flac数据的校验和,而是解码后的音乐数据的校验和。因此,为了测试该文件,flac对文件中的数据进行解码,并验证音乐数据的校验和是否与(内部存储的) flac指纹匹配。这有一些有趣的含义:当flac解码时,它会根据内部校验和数据检查文件(以及文件的每个部分)。如果一个flac文件没有错误地解码,那么它就是一个很好的文件--只要您使用的是报告解码错误的应用程序!
这似乎意味着同时检查CRC和MD5,因为CRC只用于帧。我做了一些测试,得到了2:FLAC__STREAM_DECODER_ERROR_STATUS_FRAME_CRC_MISMATCH
,这是预料中的结果。查看代码,以下内容意味着总是会检查它:
/*
* undocumented debugging options for the test suite
*/
{ "no-md5-sum" , share__no_argument, 0, 0 },
默认情况下,它是设定的:
FLAC__stream_decoder_set_md5_checking(decoder_session->decoder, true);
设置"MD5签名检查“标志。如果为真,解码器将在解码时计算未编码音频数据的MD5签名,并在FLAC__stream_decoder_finish()期间将其与来自STREAMINFO块(如果存在的话)的签名进行比较。
正如sendmoreinfo信息中的答案所示:
最可靠的来源是源代码本身,它确实建议默认检查存储在STREAMINFO中的MD5。
发布于 2022-02-12 05:29:35
这可能会有帮助。
https://www.quickhash-gui.org/
FLAC使用CRC校验和来识别流协议中使用的损坏帧,并在其STREAMINFO元数据头中存储了原始PCM音频的完整MD5散列。
https://unix.stackexchange.com/questions/21958
复制相似问题