web-dev-qa-db-ja.com

破損したm4a録音の回復

私は今年、私の学校のコンピューターでUbuntuを使用しています。通常、教授に追いつくことを望んでいない講義を記録します。これを行う許可があります。 Sudo apt-get install audio-recorderを使用してインストールできるデフォルトのオーディオレコーダーを使用しているのは、最も使いやすいからです。学期の前半、彼らの録音は大丈夫だった。しかし、記録が完了するとすぐに破損します。それらは.m4a形式です。

記録の16進データの編集など、多くのチュートリアルを試してみましたが、うまくいきません。新しい録音を作成しようとすると、すぐに壊れてしまうため、録音がどこから始まるのかわかりません。 ffmpegを使用してこのエラーmoov atom not foundを取得しようとしましたが、検索しても問題の解決には何も役立ちません。または、正しく入力したprotocol not found. Did you mean in.m4a?というファイル名のエラーが表示されます。 ffmpegは「プロトコルが見つかりません」エラーを返します。それから、私が入れたファイルを意味するのですか?Faadはこのエラーを返します:Unable to find correct AAC sound track in the MP4 file.また、 mp4 repair service を試してみましたが、ファイルが修正できるはずです。しかし、それは86ドルかかり、6つの録音を修正する必要があります。

制限されたコーデックをアンインストールして再インストールしようとしました。

どんな助けも大歓迎です。

4
KeenanKer

ページの下部にある here を参照してください。
必要に応じてfaadをインストールSudo apt install faad
dd ibs=1 skip=44 if=yourfilename.m4a of=raw.m4a
faad -a newname.m4a raw.m4a
私が指しているリンクの作者へのすべてのクレジット。私が何をしているのかわかりませんが、あなたのより大きなファイルでテストしました。最初のコマンドには時間がかかります。我慢して。 Ubuntu 16.04で試してみました。

コメントで指摘されているように、結果はVLCで開くことができますが、Audaciousでは開けません。ただし、vlcを使用してトランスコードしたり、別の形式に書き換えたりすることができます。以下のスクリプトは、現在のディレクトリ内のすべての* .m4aファイルを* .mp3に変換します。
#!/bin/bash

quote=\"  
executable="/usr/bin/vlc"
argument3=vlc://quit

#transcoding parameters
acodecvalue=mp3
bitratevalue=128
accessvalue=file
muxvalue=raw

for x in *.m4a; do
    inputname="${x}"
    strippedname=${x%.m4a}
    outputname=${strippedname}.mp3
    quote_outputname=${quote}./${outputname}${quote}
    echo ${inputname}
    echo ${quote_outputname}
    qtranscode=#transcode{vcodec=none,acodec=$acodecvalue, # continue line !
    ab=$bitratevalue,channels=$channelsvalue}              # continue line !
    :standard{access=$accessvalue,mux=$muxvalue,dst=${quote_outputname}}
    argument1="$inputname"
    argument2=--sout=$qtranscode
    "$executable" -I dummy "$argument1" "$argument2" "$argument3"
done
4
oscar1919

これは機能しますが、ddで使用される値はすべてのケースに適しているわけではありません。ここで、元の投稿の著者が理由を説明します。 このソリューションの元の投稿

基本的に、ddで44バイトをスキップしてファイルのヘッダーを削除していますが、その値はファイルごとに異なります。

解決策は、16進エディター(壊れたファイルのコピーをお勧めします)を使用し、Wordの「mdat」の最初から最後まですべてを削除することです。私の場合、44バイトではなく28バイトでした。

私は0xEDをMacの16進エディターとして使用します(この記事の執筆時点では無料で、最新のMac OS Mojaveで動作します)。また、Macの場合、Homebrewを使用してfaadをインストールできます。

brew install faad2

スイッチ-sでfaadを使用する場合、44,100Hzと異なる場合、ファイルのサンプルレートを指定する必要があります。

FaadがこのエラーError: Maximum number of bitstream elements exceededを返した場合、最初に私に起こったように、ファイルの先頭から削除したバイト数が多すぎることを意味する可能性があります。

最後に、生のファイルをfaadで処理したら、m4aファイルを再エンコードして、適切で互換性のあるファイルがあることを確認します。これは、ffmpegで簡単に実行できます。

ffmpeg -i newfile.m4a -c:a aac output.m4a
1
Diego Alifano