STREAMINFOでMD5を使用してFLAC精度を達成

STREAMINFOでMD5を使用してFLAC精度を達成

FLACがCRCとMD5を計算することを[ソース]から学びました。

残念ながら、次のようにflac --testCRCテストのみがあります。man flacsame as -d except no decoded file is written

与えられた.flacファイルのSTREAMINFOにある元のPCMのMD5を使用してflacファイルの精度を確認するには?

それでは、flac --testこれを示す信頼できる参照(flac文書など)がありますか?

源泉:

http://en.wikipedia.org/wiki/Free_Lossless_Audio_Codec私たちは以下を見つけることができます:

FLACはCRCチェックサムを使用してストリーミングプロトコルで使用されたときに破損したフレームを識別し、STREAMINFOメタデータヘッダーに元のPCMオーディオの完全なMD5ハッシュを保存します。

http://flac.sourceforge.net/comparison.html

デフォルトでは、ファイルを処理すると、flacはエンコードおよびデコード時にMD5の合計を計算します。

STEAMINFOでmd5sumを表示するには、次のものを使用できます。

$ metaflac --show-md5sum *.flac

答え1

最も信頼できるソースはソースコード自体であり、デフォルトではSTREAMINFOに保存されているMD5を確認することをお勧めします。

答え2

http://wiki.etree.org/index.php?page=FlacFingerprint次の情報を表示します。

代わりに、解凍またはflacのテスト機能を使用すると、FLACはファイルに保存されている内部チェックサムと比較して各ファイルを自動的にチェックします。

flac指紋は、エンコードされたflacデータのチェックサムではなく、デコードされた音楽データのチェックサムです。したがって、ファイルをテストするために、flacはファイルのデータをデコードし、音楽データのチェックサムが(内部に保存されている)flacフィンガープリントと一致することを確認します。

ここにはいくつかの興味深い意味があります。

flacがデコードされると、内部チェックサムデータと比較してファイル(およびファイルの各部分)を確認します。 flacファイルがエラーなしでデコードされた場合、使用しているアプリケーションがデコードエラーを報告する限り、それは良いファイルです!

これは、CRCがフレームにのみ適用されるため、CRCとMD5の両方が確認されることを意味するようです。私はいくつかのテストを行い、これが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署名確認」フラグを設定します。 trueの場合、デコーダは、デコード時にエンコードされていないオーディオデータのMD5署名を計算し、それをFLAC__stream_decoder_finish()中にSTREAMINFOブロック(存在する場合)の署名と比較します。

の答えとして追加情報を送信表現する:

最も信頼できるソースはソースコード自体であり、デフォルトではSTREAMINFOに保存されているMD5を確認することをお勧めします。

答え3

これが役に立ちます。

https://www.quickhash-gui.org/

FLACはCRCチェックサムを使用してストリーミングプロトコルで使用されたときに破損したフレームを識別し、STREAMINFOメタデータヘッダーに元のPCMオーディオの完全なMD5ハッシュを保存します。

関連情報