Skip to content

Instantly share code, notes, and snippets.

@green224
Last active March 20, 2023 18:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save green224/0607f9c0b8339dd7b7e459c4a5312897 to your computer and use it in GitHub Desktop.
Save green224/0607f9c0b8339dd7b7e459c4a5312897 to your computer and use it in GitHub Desktop.
破損したAVI録画データを修復する方法

録画中に録画ツールが強制終了するなどして破損してしまったAVIファイルを修復する方法のメモ

必要なもの

  • 巨大バイナリを編集できるバイナリエディタ
  • AviUtl
  • 同条件・同一フォーマットで録画した別のAVIファイル。破損した動画ファイルよりも録画時間が短いものの方が成功しやすいっぽい。

手順

  1. 破損した動画ファイル A をバイナリエディタで開く
    1. A のヘッダ部分がすべて0になっている事を確認
  2. 同条件・同一フォーマットで録画した別のAVIファイル B をバイナリエディタで開く
    1. B のヘッダ部分が存在している事を確認
  3. B のヘッダ部分を A へコピー&ペーストして、A' として保存
  4. A' をAviUtlから読み込み
    1. 正常に読み込めなかった場合は、B を別の動画長のAVIファイルに変えてみる
    2. B の動画長 < A の動画長 の場合の方が成功しやすい気がする
  5. 読み込めたら、A" として保存する。A" は破損していない正常なデータとなる

解説

  • 大抵の動画フォーマットは、ヘッダにファイルサイズ等の情報が入るため、録画完了時にヘッダを埋める処理が走る

  • これが強制終了などで処理を正常に完了せずに終えてしまった場合、正常なヘッダの無いデータが出来上がる

    • またフッタも出力されず、ボディも中途半端な状態で出力されることになるが、動画ファイルはストリーミング再生を行えなければならないため、そのような状態でもヘッダさえあれば再生できる
  • したがって同一条件で撮影したデータからヘッダを移植することで、再生を可能にしている

  • 多くの動画再生ソフトでは、ヘッダに記されたファイルサイズなどからファイルの破損チェックを行い、整合性のとれないデータは再生しないようになっている

    • したがってヘッダを移植したのみのデータでは、普通は再生できない
  • しかしAviUtlではヘッダの情報を無視して中身を読み込めるフレームまで読み込んでくれるので、一度AviUtlを介すことで正常な状態のAVIファイルに復元できる

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment