iPhoneやAndroidフォン、Apple WatchのボイスメモやPCM録音といったアプリで録音した音声ファイル (m4a) は、突然壊れて再生ができなくなる場合があります。
また、再生ができたとしても、最初の4秒間だけしか再生ができない状態になってしまうこともあります。
そのような破損ファイルでも、ある程度サイズが残っていれば、バイナリエディタと faad (Free Advanced Audio Decoder) というツールを使用することで、自分で復旧することができる場合があるので、ぜひ挑戦してみましょう。
mdatタグが複数あるm4aファイル
以前のm4aファイルは、”mdat” というタグが1つしかありませんでしたが、iOSがアップデートされたことで、”mdat” というタグが複数存在する新しい形式のファイルになりました。これはiPhoneとApple Watchで共通に使われる形式のようです。
それに伴い、以前、私が アメブロで公開していた修復方法 が動かなくなってしまいました。
新たに調査した結果、新しいファイル形式でも無事に復旧する方法を見つけることができたため、今回、その方法を公開させて頂きます。
新しいm4aファイル形式の修復方法
1. 各種ツールのインストール
バイナリエディタ
このツールは、ファイルの生データを直接編集することを可能にします。
Windowsでは Stirling、Macでは Hex Fiend などがお勧めです。
それぞれダウンロードして、インストールしてください。
faad
AACエンコードされた音声データをデコードするために使用します。
Windowsでは、最新のFAAD2を https://www.rarewares.org/aac-decoders.php からダウンロードします。
Macでは、以下の方法でインストールします。
- ターミナルを開きます。
- Homebrewがインストールされていない場合は、Homebrewをインストールします。
- ターミナルで
brew install faad2
コマンドを実行してFAAD2をインストールします。 - インストール後、
faad
コマンドでバージョンを確認し、インストールが成功したことを確認します。
ffmpeg
ビデオ、オーディオ、その他のマルチメディアファイルやストリームを扱うための無料でオープンソースのソフトウェアです。
Windowsの場合
- ダウンロード:
- FFmpegの公式サイト (FFmpeg) にアクセスします。
- 「Download」セクションをクリックし、「Windows builds from gyan.dev」または他のビルドを選択します。
- 最新版のFFmpegをダウンロードします。通常、「ffmpeg-release-essentials.zip」などのリンクをクリックしてダウンロードします。
- 解凍:
- ダウンロードしたZIPファイルを解凍します。
- 環境変数の設定:
- 解凍したフォルダの中にある「bin」ディレクトリを探します。
- このディレクトリのパスをコピーします。
- コンピュータの「システムのプロパティ」を開き、「詳細なシステム設定」に進みます。
- 「環境変数」をクリックし、「Path」変数を選択して「編集」をクリックします。
- 「新規」をクリックし、先ほどコピーした「bin」ディレクトリのパスを貼り付けます。
- OKをクリックしてすべてのウィンドウを閉じます。
- 確認:
- コマンドプロンプトを開き、
ffmpeg -version
を実行して、FFmpegが正しくインストールされていることを確認します。
- コマンドプロンプトを開き、
Macの場合
- Homebrewのインストール(まだインストールしていない場合):
- ターミナルを開きます。
- Homebrewの公式サイト (Homebrew) に記載されているインストールコマンドをコピーし、ターミナルに貼り付けて実行します。
- FFmpegのインストール:
- ターミナルで以下のコマンドを実行します:
brew install ffmpeg
- ターミナルで以下のコマンドを実行します:
- 確認:
- インストールが完了したら、ターミナルで
ffmpeg -version
を実行して、FFmpegが正しくインストールされていることを確認します。
- インストールが完了したら、ターミナルで
2. 「mdat」タグの検索と削除
m4aファイル内で「mdat」というタグを検索します。
PCM録音や、以前のiOSのボイスメモで録音した場合は、このタグはファイル内で一度だけ見つかります。
しかし、最近のiOSのボイスメモで録音した場合は、複数回出現します。
検索メニュー、もしくは Ctrl + F キー (macOS では Cmd + F キー) で「mdat」というテキストを検索します。
まず、先頭から最初の「mdat」タグまでのデータ(タグ自身を含む)を選択し、削除します(図参照)。
3. faadツールによるデコード
データを削除した後、「0000.raw」という名前でファイルを保存します。
アプリにより録音時のサンプリング周波数が異なるため、適切にデコードするためにはパラメータで指定してあげる必要があります。
A) 最近のiOS上のボイスメモ、もしくはPCM録音で録音したファイル (サンプリング周波数48000Hz)
faad.exe -s 48000 0000.raw
B) 古いiOS上のボイスメモで録音したファイル (サンプリング周波数44100Hz)
faad.exe 0000.raw
C) 上記の方法でデコードできない時 (サンプリング周波数「-s オプション」を8000, 16000, 22050, 32000等で順に試す)
faad.exe -s 8000 0000.raw
※ macOS の場合は、「faad.exe」は「faad」としてください
これにより、「0000.wav」というファイルが生成されればデコードが成功しています。
これは復旧された音声データで、ファイル全体、もしくはファイルの一部(4秒間の場合が多い)です。
4. プロセスの繰り返し
検索メニュー、もしくは Ctrl + F キー (macOS では Cmd + F キー) で「mdat」というテキストを再度検索します。
もし見つからなければ、「6. 修復ファイル (m4a) の生成」ステップに飛んでください。
もし見つかれば、見つかった「mdat」タグまでのデータ(タグ自身を含む)を削除し、「3. faadツールの使用」ステップに従って音声データを復旧します。
これを「mdat」タグが見つからなくなるまで繰り返します。
その際、保存ファイル名は「0001.raw」、「0002.raw」、「0003.raw」… としてください。
これにより、「0001.wav」、「0002.wav」、「0003.wav」… というファイルが生成されます(2秒間ずつの場合が多い)。
5. 断片の結合
各ステップで復旧されたデータ (0000.wav, 0001.wav, 0002.wav, …) を下記の方法で結合します。
まず、結合したい全てのWAVファイルの名前をテキストファイルにリストアップします。例えばfilelist.txt
という名前で、以下のように記述します:
file '0000.wav' file '0001.wav' file '0002.wav' ...
次に、以下のコマンドを使用してファイルを結合します:
ffmpeg -f concat -safe 0 -i filelist.txt -c copy output.wav
このコマンドはfilelist.txt
にリストされた全てのWAVファイルをoutput.wav
として結合します。
6. 修復ファイル (m4a) の生成
最後にoutput.wav (mdat が1つしかないファイルの場合は 0000.wav) を再度 m4a 形式にエンコードします。
ffmpeg -i output.wav -acodec aac repaired.m4a
必要に応じて、さらに詳細なエンコーディングオプションを指定することができます。例えば:
- ビットレートの指定: -ab 192k のようにして、ビットレートを192 kbpsなどに設定することができます。
- サンプルレートの指定: -ar 44100 のようにして、サンプルレートを44100 Hzなどに設定することができます。
- チャンネル数の指定: -ac 2 のようにして、ステレオ(2チャンネル)などのチャンネル数を設定することができます。
例(ビットレート、サンプルレート、チャンネル数を指定):
ffmpeg -i output.wav -acodec aac -ab 192k -ar 44100 -ac 2 repaired.m4a
最終的に元の音声ファイルが復旧されます。
注意点
- このプロセスは手作業が多く、時間がかかる場合があります。
- ファイルの重要な部分を削除するリスクがあるため、元のファイルのバックアップを取っておくことが重要です。
- ファイルが壊れた際に音声データが失われている場合があり、その場合、元の録音がすべて復旧されない可能性があります。
代行作業も可能です
上記の作業は、専門的な知識と時間が必要になります。
ファイルをお送り頂ければ、弊社で復旧を試すことも可能です。
もちろん、お送り頂いたファイルの内容は機密情報として厳格に扱い、作業完了後は完全に削除していますので、ご安心ください。
これまで、企業や個人より多くのご依頼を頂き、修復に成功した実績があります。
サービス詳細
- 費用(1ファイル毎に、修復に成功した録音の長さに応じて以下の通りとなります)
- 1時間未満: 2,000円(税込2,200円)
- 1時間以上2時間未満: 3,000円(税込3,300円)
- 2時間以上4時間未満: 4,000円(税込4,400円)
- 4時間以上: 5,000円(税込5,500円)
- 6時間以上: 6,000円(税込6,600円)
- ※ 修復可能かどうかの調査、および見積もり作業だけであれば無料です。
- ※ 実際に作業に着手しても、まったく復旧ができなかった場合には、作業料は頂きません。
- ※ 複数ファイルを同時にご依頼頂いた場合、1ファイル毎に上記の費用が発生します。
- 時間: 2日から3日程度(破損状況に応じます)
- なお、24時間以内の修復対応も可能ですが、その場合、特急料金としてプラス2,000円になります。
- お支払い方法: 銀行振込、電子マネー送金
- その他
- 領収書の発行が可能です
お問い合わせ
下記フォーム、もしくは info@sysfrontier.com までご連絡ください。
結論
この方法が、音声ファイルの修復に関心のある技術者や一般ユーザーにとって有用な情報となることを願います。
コメント