MPEGオーディオフレームチェッカーは、MPEGオーディオファイルのフレームが破損していないかどうかを検査するプログラムです。 フレームヘッダとフレームサイズが一致しているかどうかをチェックします。
フレームヘッダとフレームサイズの検証だけしかしていませんが、破損のチェックとしては十分であると思われます。 実際にファイルが破損した場合を考えてみると内容が書き換わった場合とサイズが変わった場合とが考えられますが、前者の場合はフレームヘッダ自体がなくなってしまいますし、後者の場合はフレームサイズが一致しなくなります。 いずれの場合もフレームヘッダとフレームサイズを検証すれば破損を検出できるということになります。(実際にはこの方法以外に検査する手段がありません)
mp1、mp2、mp3に対応(mp1は動作チェックが出来ていません)。
Windows 98 SP1 以降で動作します。
実行時にランタイム等は必要ありません。
レジストリや設定ファイルは使用しませんので、特にインストール・アンインストールの作業は必要ありません。
現在公開しているのは暫定版です。 ヘルプファイル等、ドキュメントは付属していません。
補足情報:
最終フレームを最後まで出力しない(ダミーデータで調整しない)エンコーダがあります。 そのため最終フレームサイズの不足が検出される場合があります。
APE Tag がある場合も最終フレームでエラーが検出されます。
使い方
1.チェックしたいファイルをドラッグ、ドロップします。
→ 自動的に最初のフレームヘッダを探し、ファイルの情報が表示されます。
2.検査実行ボタンを押して検査を実行します。
→ エラーがなければそのまま検査が終了します。
1で最初のフレームヘッダが見つからなかった場合はその旨を表示し、フレームヘッダ強制検索ボタンが表示されます。このボタンを押すと、ファイルの先頭からフレームヘッダと解釈できるデータを探します。見つかった場合はその地点を最初のフレームとして検査を開始できます。
※このエラーは ID3 Ver.2 タグのサイズが間違って記録されている場合などに発生します。
2の検査実行中にエラーが見つかった場合はその旨を表示し、そこで検査は終了します。
可変ビットレートを示すフレームがないのにビットレートが変化している場合はその旨を表示します。
mp3ファイルの修復
壊れたmp3ファイルは通常では元通りにはできません。 壊れたmp3ファイルの元になったソースファイルがある場合は作り直すのが最も簡単で確実な方法です。
元のソースファイルがない場合はmp3ファイルの壊れた部分を切り捨てるしかありません。切り捨てると再生時間が短くなりますが、それが不都合な場合は切り捨てた分と同じだけダミーデータ(無音やホワイトノイズ)を入れて調整します。
切り捨ては次のように行います。(バイナリエディタなどが必要です)
拙作MPEGオーディオフレームチェッカーを使った場合、エラーがあると検査の終了位置と最後に検査したフレームのサイズが表示されます。 検査の終了位置は本来フレームヘッダがあるはずなのになかった位置を示しています。 したがって検査の終了位置から1フレーム分戻ったところまでが正常だったということになりますので、検査の終了位置から最後に検査したフレームのサイズ分戻ったところにあるフレームヘッダの直前まででファイルを分割します。 これで正常部分(前半部分)と壊れた部分を含むファイル(後半部分)の2つに分割できました。
参考 MPEG AUDIO FILE の内部構造
MP3 ファイルはフレームを単位とし、全体はフレームが連なった構造をしています。 フレームはヘッダとデータで構成されていますが、音声ファイル全体としてのヘッダやフッタはありません(タグはオプション)。 そのためフレームの境界では自由に切ったりつないだりできます。 1フレームは音声にして約0.026秒です。
可変ビットレートファイルの場合は1フレーム目が可変ビットレートを示すフレーム(実質的にはヘッダ)になっています。
bits: | 意味 |
11: | 同期(全ビットが1) |
2: | MPEG Audio のバージョン |
2: | レイヤー(1〜3) |
1: | CRC 保護の有無 |
4: | ビットレート |
2: | サンプリング周波数 |
1: | パディングの有無 |
1: | プライベートビット(用途は不明) |
2: | チャンネルモード(ステレオ等) |
2: | モードエクステンション |
1: | 著作権 |
1: | コピー/オリジナルの別 |
2: | エンファシス |
参考2 APE Tag の内部構造(format)
APE Tag には Version 1 と 2 があります。
APE Tag Version 2.000 の構造は次のようになっています。
bytes: | 意味 |
32: | ヘッダ |
: | タグデータ |
32: | フッタ |
bytes: | 意味 |
8: | 'APETAGEX' |
4: | APE Tag のバージョン(Version 2.000 なら 2000 (7d0h) を d0 07 00 00 と格納) |
4: | タグサイズ(Version 1 との互換のためヘッダを除いたサイズをバイナリで格納) |
4: | 項目数 |
4: | フラグ |
8: | 予約(すべて 00h) |