QuickTime Playerの新規オーディオ収録で失敗したm4aファイルの救済

Mac,パソコン・インターネット

QuickTime Playerには、ビデオやオーディオの再生機能だけではなく、録音機能もあります。今回は、収録途中で失敗したm4aファイルを救済した記事です。

ファイル新規オーディオ収録で録音していたのですが、途中でMacの操作ができなくなってしまいました。他のMacから共有フォルダは見えたので、収録途中のファイルを取り出す事はできました。

収録途中のファイルは、次のところにあります。

$HOME/Library/Containers/com.apple.QuickTimePlayerX/Data/Library/Autosave Information/保存されていない QuickTime Player 書類.qtpxcomposition/オーディオ収録.m4a

「オーディオ収録.m4a」と言う名前だと扱いにくいので、以下、"audio_ng.m4a"として説明します。

でも、せっかく見つけたファイルの再生はできませんでした。QuickTime Player、Audacity、VLCなどを試してみましたが、再生できません。Linuxに持って行って、ffmpegで開く事を試みましたが、次のエラーで開く事ができません。

$ ffmpeg -i audio_ng.m4a audio_out.m4a 
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x9e4e240] moov atom not found
audio_ng.m4a: Invalid data found when processing input

“moov atom not found"のキーワードで検索すると、山ほど検索結果が出てきますが、救済方法にたどり着けません。

そんな中、見つけたのが次のページです。

この記載によると、次の方法で救済できる様です。

$ dd ibs=1 skip=44 if=audio_ng.m4a of=audio_ng_raw.aac
$ faad -a audio_ng_adts.aac audio_ng_raw.aac

本記事では、ffmpegとfaadは、Ubuntu 12.04を使っています。ffmpegとfaadは、標準では入っていないと思います。次の方法でインストールします。

$ sudo apt-get install ffmpeg
$ sudo apt-get install faad

そして、上記で抽出した、audio_raw.aacに対して実行してみました。

$ faad -a audio_ng_raw_adts.aac audio_ng_raw.aac
Error: Maximum number of bitstream elements exceeded

エラーです。このエラーメッセージを元に検索しましたが、良い方法は見つけられませんでした。

とにかく、生のaacデータを取り出して、ATDSと言うデータを追加すれば良さそうなのですが。

検索最中に、次のウェブサイトを見つけました。このページのツールで、「修復可能」と言う事はわかったのですが、救済は有料で、$100以上かかってしまいます。

他、いろいろ検索してみたのですが、良い方法を見つけられませんでした。そんな中、偶然次のページを発見しました。ありがとうございます。

これを読むと、"mdat"と言う文字列の次のデータからが、aac本体だそうな。

ところが、"audio_ng.m4a"を調べてみても、"mdat"と言う文字列はありません。う〜ん。

当然ですが、正常終了した"audio_ok.m4a"だと、"mdat"と言う文字列を発見できます。そして、この"audio_ok.m4a"と"audio_ng.m4a"を、よ〜く比較してみると、決定的な事がわかりました。

そうして、無事、aac本体を取り出す事ができました。そのaacファイルに対して、faadを実行すると、何やら変換が始まりました。

$ dd ibs=1 skip=???? if=audio_ng.m4a of=audio_ng2_raw.aac
$ faad -a audio_ng2_raw_adts.aac audio_ng2_raw.aac
 *********** Ahead Software MPEG-4 AAC Decoder V2.7 ******************

 Build: Oct 15 2011
 Copyright 2002-2004: Ahead Software AG
 http://www.audiocoding.com
 Floating point version

 This program is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License.

 **************************************************************************

audio_ng2_raw.aac file info:
RAW

  ---------------------
 | Config:  2 Ch       |
  ---------------------
 | Ch |    Position    |
  ---------------------
 | 00 | Left front     |
 | 01 | Right front    |
  ---------------------

Writing output MPEG-4 AAC ADTS file.

Decoding audio_ng2_raw.aac took:  0.08 sec.  0.00x real-time.

この出来上がった"audio_ng2_raw_adts.aac"は、無事Macで再生できました。また、ffmpegで、m4aやmp3に変換する事もできました。

結局、修復するのに、一週間かかりました。$100以上の仕事を、0円でこなしました。

あまりに苦労したので、わざと肝心な所を書いていません。ですが、勘の鋭い方なら、上記の内容で、やり方がわかるでしょう。

まあ、パズルみたいな物なので、挑戦してみて下さい。

市販ソフトもありますね。復旧できるかどうかわかりませんが、デモ版もある様なので、試してみては?

[amazonjs asin="B002VMX8YK" locale="JP"] [amazonjs asin="B009O1RSWE" locale="JP"]

Posted by お市のかた