2016-03-21 19 views
0

今私はC言語を使用し、ffmpegはプログラムのMP4ファイルへのマルチプレックスリアルタイムオーディオとビデオを実現し、すべて正常に動作しますが、突然の電源障害、録音はMP4ファイルが壊れている、VLCはこのファイルを再生することはできません。 私は理由が破損したファイルを呼び出すためのインデックスとタイムスタンプ情報は、私はAraxisのマージツールは、ファイルの機能av_write_trailer呼び出しが成功を比較して使用失った原因と、 av_write_trailerトレーラー関数を記述するために何の呼び出しと av_write_trailerなしではないと思います2つの異なる点が見つかりました: 1.ファイルヘッダーボックス番号の値が正しくないファイル が破損しています。2.破損したファイルのファイルの末尾がありません。ffmpegを使用してMP4を突然電源オフする

今私は私のプログラムの電源を入れた後に自動的に修復したい、Googleは効果的な方法を見つけることができませんでした。 私の思考の列車は通常の記録処理にあります破損したファイルには2つの情報がありません:ボックス番号とファイルの終わり、MP4ファイルを書き込むときにローカルファイルに保存します。破損、次に次の電源では、ファイルと対応する情報を読み取って、破損したファイルを対応する位置に書き込みます。しかし、今問題は、ボックスの数とファイルの終わりを節約する方法がわからないということです。これは実現可能ですか?可能であれば、私は何をすべきですか?お返事を楽しみにしています!

+2

停電やクラッシュが予想される場合は、mp4に録音しないでください。これらのイベント(FLVなど)に耐えられる形式で録音し、最後にmp4に変換します。 – szatmary

答えて

0

MP4ファイルのダメージの主な原因は、ヘッダーや予告編がファイルに正しく書き込まれていないためです。その場合、ファイル全体が迷惑データになります。したがって、壊れたmp4ファイルを再生できるメディアプレーヤーはありません。 したがって、 最初に、ファイルを再生する前に、破損したファイルを修復する必要があります。

http://grauonline.de/cms2/?page_id=5(Windowsの/ Mac用)(有給:()

https://github.com/ponchio/untrunc(LinuxベースのOS)(ofcourseの、自由: は修復し、バック リンクは以下の通りであるデータを取得するために利用できるいくつかのアプリケーションやトリックがあります手動HEXエディタを使用して破損したファイルを修復!!!)

第二に、このハックの後ろ

ロジック:。 このハックは、両方のビデオが同じカムからキャプチャしている壊れたmp4ファイルと優れたビデオファイルが必要ですまた、そのサイズは、壊れたmp4ファイルよりも大きくなければなりません。

両方のビデオファイルを任意のヘキサエディタで開きます。トレーラー部分を良いビデオファイルから壊れたビデオファイルにコピーして保存してください!

注:必ず動画ファイルのバックアップを作成してください。

は、詳細な情報のためにこれらのリンクは、次のとおりです。

http://janit.iki.fi/repair-corrupted-mp4-video/

https://www.lfs.net/forum/thread/45156-Repair-a-corrupt-mp4-file%3F

http://hackaday.com/2015/04/02/manual-data-recovery-with-a-hex-editor/

http://www.hexview.org/hex-repair-corrupt-file.html

第三に、でもタフなMP4ファイルには多くの利点があり、この種のエラーは、予測不可能で扱いにくい。 したがって、MPGやAV_CODEC_ID_MPEG1VIDEO/AV_CODEC_ID_MPEG2VIDEO(FFMPEG)などの形式を使用すると、この種のエラーを回避できます。前述のMPG形式では、突然の停電が発生してもヘッダ/トレーラは必要ありません。MPGファイルは、これまで格納されているフレームを再生できます。

注:この種のプロパティで利用できる他の形式とコーデックもあります。

関連する問題