1

MP3 ファイルのオーディオ データのチェックサム (メタデータを差し引いたもの) を計算したり、MP3 のオーディオ データを読み込んでチェックサムを自分で計算したりできる Ruby ライブラリはありますか?


私はこのようなものを探しています:

mp3 = Mp3Lib::MP3.new('/path/to/song.mp3')
mp3.audio.sha1sum # => the sha1 checksum of _only_ the audio, minus the metadata

Mp3Info を見つけましたが、少し面倒です。Mp3Info オブジェクトを初期化すると、実際のオーディオ データが開始および終了するフレームを取得できます。

4

2 に答える 2

4

メタデータなしで mp3file を抽出することは、自分で行うのはかなり簡単です。

ID3v1

メタデータは、ファイルの最後の 128 バイトです。メタデータは、存在する場合、常に 3 バイトの「TAG」で始まります。この最後の 128 バイトは無視してください。

ID3v2

メタデータは、ファイルの先頭または末尾に格納できます。ほとんどの実装は、最初だけをサポートしています。ID3v2 には、サイズが格納されるヘッダーがあります。ヘッダーは常にメタデータの先頭に配置されます。オプションのフッターがあります。これは、メタデータの末尾にあるヘッダーのコピーです。メタデータがファイルの最後にある場合は、フッターが必要です。

ヘッダーには次の形式があります

ID3v2/file identifier      "ID3"
ID3v2 version              $04 00
ID3v2 flags                %abcd0000
ID3v2 size             4 * %0xxxxxxx

フッターには次の形式があります

ID3v2/file identifier      "3DI"
ID3v2 version              $04 00
ID3v2 flags                %abcd0000
ID3v2 size             4 * %0xxxxxxx

d ビットは、フッターが存在するかどうかを示します。サイズはヘッダーとフッターを除いたサイズです。サイズのすべてのバイトには、常に最上位ビットが設定されています。したがって、実際の 32 ビットのうち 28 ビットのみがサイズを表します。

ファイルのどの部分がメタデータではないかを計算し、それをハッシュに使用します。

ID3v1 と ID3v2 の両方がファイルの末尾にある場合、ID3v1 は IDv2 の後ろにあることに注意してください。

仕様はhttp://www.id3.org/id3v2.4.0-structureにあります。

于 2009-12-21T13:38:53.493 に答える
1

ID3 タグは、ファイルの末尾 (ID3 v1) の 128 バイト ブロックに格納されているか、ファイルの先頭のブロック (ID3v2.3 および v2.4) に格納されていませんか? ( id3.org )

Mp3Infoのメソッドを使用してaudio_content、ファイルからそれだけの量のデータを読み取ることもできますが、ファイルを自分で調べて、ヘッダーがない場所を特定することはおそらくそれほど複雑ではありません。

于 2009-12-21T13:21:19.133 に答える