web-dev-qa-db-ja.com

破損したMP4ビデオファイルの修復

フリップカメラで撮影したMP4ビデオがあります。レコーダーを停止しているときにカメラがフリーズし、ビデオが破損しているように見えます。カメラからダウンロードできますが、再生されません。現在、ビデオのサイズはまだ2ギガバイトを超えているため、データはまだ残っていると思います。

そこで、私はウェブを探して解決策を探しましたが、そのような問題を解決できると主張する有料サービスとソフトウェアを見つけました。ある診断サービス(「Treasured」)は、ビデオの静止画を見せてくれたので、おそらくそこに救助可能なものがあると信じています。残念ながら、それを修正するために要求された価格は予算に含まれていません。それは、より多くのホームスパンソリューションを必要とします。

破損したMP4を修正する方法を知っていますか?または、あまりお金ではないサービスまたはソフトウェアのですか?

22
Steve C.

これを試してみてください 公式ツールリンク このユーティリティは、ヘッダーのない(または空の)ファイナライズされていないMP4/MOVファイルからH.26​​4/AVCストリームを復元できます。録画中にビデオカメラに損傷を与えた場合、ファイナライズされていないファイルを取得する可能性があります。このユーティリティは、GoProで記録されたファイルでテストされていますが、他のビデオカメラでも動作する可能性があります。

使用法:

recover_mp4_to_h264 in_good_similar.mp4 --analyze
recover_mp4_to_h264 in_corrupted.mp4 out_video.h264 [out_audio.aac | out_audio.wav | out_audio.mp3] []
recover_mp4_to_h264 in_corrupted.mp4 out_video.h264 [--aac | --pcm | --mp3] []

サポートされているレコーダー:

Default is Ambarella (used in GoPro, etc.)
Specify --eos in case of Canon EOS
Specify --Apple in case of some Apple software encoder
Specify --htc in case of HTC smartphone
Specify --Motorola in case of Motorola smartphone
Specify --samsung in case of Samsung camcorder

手順1:同じ解像度とビットレートで以前の適切なファイルを使用して、AVC構成レコードを生成します。たとえば、

recover_mp4_to_h264.exe GOPR0346.MP4 --analyze

注:現在のディレクトリに「avcc.hdr」ファイルが作成されます。

ステップ2:たとえば、破損したファイルからH.26​​4ストリームを復元する

recover_mp4_to_h264.exe GOPR0347.MP4 GOPR0347.h264 GOPR0347.aac

注:ファイル「avcc.hdr」が存在する必要があります。注:Canon EOSによって書き込まれたMOVファイルを復元する場合は、-pcmまたはWAVファイル名を指定します。

手順3:他のユーティリティ(Yambやffmpegなど)を使用して、H.264ストリーム(GOPR0347.h264)からMP4/MOVファイルを再作成します。注MP4はPCMサウンドをサポートしていません。この場合、MOVを作成する必要があります。

ffmpeg.exe -r 30 -i recover.h264 -i recover.wav -vcodec copy -acodec copy result.mov

編集:公式ツールリンクを追加します。おかげでコンパイラ

古いリンク: メガリンク

31
Andrew

見事!

撮影中にAndroid電話がクラッシュしました。幸いなことに、カメラフォルダから一時ファイルを取得できるようにルート化されています。

ここでのアドバイスを使用して資料を簡単に回収できましたが、途中でうまくいきました。しかし、ファイルのマージに関して征服するのにいくつかの困難がありました...

復元されたオーディオは、「良い」ファイルからのオーディオよりも高いビットレートでした。 96kではなく128k。そのため、ファイルを正常なムービーにマージできますが、オーディオが高速になり、同期が失われます。そのため、変換が必要でした。

また、ffmpegはaacストリームをコピーできない/コピーできないため、フィルターを使用してストリームを変換する必要がありました; aac_adtstoasc

私の場合、私はしなければなりませんでした:

recover_mp4_to_h264.exe good.MP4 --avcc

recover_mp4_to_h264.exe bad.MP4 bad.h264 bad.aac --Android

ffmpeg -i bad.aac -acodec libvo_aacenc -b:a 96k fixed.aac

ffmpeg -r 30 -i bad.h264 -i fixed.aac -vcodec copy -acodec copy -bsf:a aac_adtstoasc fixed.mp4

成功!

4
user4938055

上記のソリューションはテストしませんでしたが、私にとってはGrauのビデオ修復ソフトウェアが機能しました。プログラムのダウンロードリンクと使用手順は、次のページにあります。

http://grauonline.de/cms2/?page_id=5

それが機能するためには、ソフトウェアがそれを比較できるように、同じタイプの壊れていない(再生可能な)ムービーを提供する必要があることに注意することが重要です壊れたもので再生可能なビデオファイルとそれを修復します。サンプルがまだない場合は、壊れたファイルを記録するために使用したのと同じ設定を使用して、部屋または他の何かの10秒のビデオを記録するだけで十分です。