Top小物フリーウェア ≫ MPEGオーディオフレームチェッカー

MPEGオーディオフレームチェッカー


snapshot

MPEGオーディオフレームチェッカーは、MPEGオーディオファイルのフレームが破損していないかどうかを検査するプログラムです。 フレームヘッダとフレームサイズが一致しているかどうかをチェックします。

フレームヘッダとフレームサイズの検証だけしかしていませんが、破損のチェックとしては十分であると思われます。 実際にファイルが破損した場合を考えてみると内容が書き換わった場合とサイズが変わった場合とが考えられますが、前者の場合はフレームヘッダ自体がなくなってしまいますし、後者の場合はフレームサイズが一致しなくなります。 いずれの場合もフレームヘッダとフレームサイズを検証すれば破損を検出できるということになります。(実際にはこの方法以外に検査する手段がありません)

mp1、mp2、mp3に対応(mp1は動作チェックが出来ていません)。

Windows 98 SP1 以降で動作します。
実行時にランタイム等は必要ありません。

レジストリや設定ファイルは使用しませんので、特にインストール・アンインストールの作業は必要ありません。

現在公開しているのは暫定版です。 ヘルプファイル等、ドキュメントは付属していません。

補足情報:
最終フレームを最後まで出力しない(ダミーデータで調整しない)エンコーダがあります。 そのため最終フレームサイズの不足が検出される場合があります。
APE Tag がある場合も最終フレームでエラーが検出されます。


ダウンロード (224KB)


使い方
1.チェックしたいファイルをドラッグ、ドロップします。
 → 自動的に最初のフレームヘッダを探し、ファイルの情報が表示されます。
2.検査実行ボタンを押して検査を実行します。
 → エラーがなければそのまま検査が終了します。

1で最初のフレームヘッダが見つからなかった場合はその旨を表示し、フレームヘッダ強制検索ボタンが表示されます。このボタンを押すと、ファイルの先頭からフレームヘッダと解釈できるデータを探します。見つかった場合はその地点を最初のフレームとして検査を開始できます。
 ※このエラーは ID3 Ver.2 タグのサイズが間違って記録されている場合などに発生します。

2の検査実行中にエラーが見つかった場合はその旨を表示し、そこで検査は終了します。
可変ビットレートを示すフレームがないのにビットレートが変化している場合はその旨を表示します。


mp3ファイルの修復
壊れたmp3ファイルは通常では元通りにはできません。 壊れたmp3ファイルの元になったソースファイルがある場合は作り直すのが最も簡単で確実な方法です。
元のソースファイルがない場合はmp3ファイルの壊れた部分を切り捨てるしかありません。切り捨てると再生時間が短くなりますが、それが不都合な場合は切り捨てた分と同じだけダミーデータ(無音やホワイトノイズ)を入れて調整します。

切り捨ては次のように行います。(バイナリエディタなどが必要です)
拙作MPEGオーディオフレームチェッカーを使った場合、エラーがあると検査の終了位置と最後に検査したフレームのサイズが表示されます。 検査の終了位置は本来フレームヘッダがあるはずなのになかった位置を示しています。 したがって検査の終了位置から1フレーム分戻ったところまでが正常だったということになりますので、検査の終了位置から最後に検査したフレームのサイズ分戻ったところにあるフレームヘッダの直前まででファイルを分割します。 これで正常部分(前半部分)と壊れた部分を含むファイル(後半部分)の2つに分割できました。

破損ファイルの修復イメージ図

次に壊れた部分を含むファイル(後半部分)のチェックに移りますが、分割直後は正常なフレームヘッダだけがファイルの先頭に残った状態になっているので、まず先頭の1バイト分を削除してからチェックを行います。 このファイルはmp3としては壊れているので当然先頭のフレームヘッダは見つかりませんが、フレームヘッダらしきデータを探してそれ以降が正常かどうかをチェックします。 もし途中から正常なデータが残っていれば最初のフレームヘッダとして報告された位置で分割し、最初に分割した正常部分とつなぎ合わせて修復完了です。
この作業は一回で済むとは限りませんので、エラーがなくなるまで繰り返す必要があるかもしれません。


参考 MPEG AUDIO FILE の内部構造
MP3 ファイルはフレームを単位とし、全体はフレームが連なった構造をしています。 フレームはヘッダとデータで構成されていますが、音声ファイル全体としてのヘッダやフッタはありません(タグはオプション)。 そのためフレームの境界では自由に切ったりつないだりできます。 1フレームは音声にして約0.026秒です。
可変ビットレートファイルの場合は1フレーム目が可変ビットレートを示すフレーム(実質的にはヘッダ)になっています。

MPEG AUDIO FILE

ヘッダ4バイト(32ビット)の構造は先頭から次のようになっています。
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:フッタ
ヘッダとフッタの内容は同じです。
Version 1.000 には Version 2.000 のヘッダにあたる部分がありません。
ヘッダ(フッタ)の内容は先頭から次のようになっています。
bytes:  意味
8:'APETAGEX'
4:APE Tag のバージョン(Version 2.000 なら 2000 (7d0h) を d0 07 00 00 と格納)
4:タグサイズ(Version 1 との互換のためヘッダを除いたサイズをバイナリで格納)
4:項目数
4:フラグ
8:予約(すべて 00h)

※ MPEGオーディオフレームチェッカーは APE Tag には対応していません。


Back

Last Modified: 27 May 2012