スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

3gpカメラ動画修復法(不完全)

動画の一部しか戻らない不完全な方法ですがメモ。

動画撮影が異常終了した際のオリジナルはbroken.3gpとします。

3gp(mp4とほぼ同一)のファイル構造は、
項目の長さ(4バイト・ビッグエンディアン)・4バイトIDの連続となっています。

そしてカメラ異常終了後に3gpが壊れる箇所は次の通り
・moov欠落
・mdatのサイズ

まずはバイナリエディタでmdatのサイズを計算し修正します。

binary : 3f 3f 3f 3f 6d 64 61 74
text : ????mdat


mdat文字列の前の4バイトはビッグエンディアンでの長さ
その位置からのファイル最後(もしくは次の情報)までのサイズ。

修正済みのファイルがbroken2.mp4になります。

broken2.mp4にはmoovがありませんので、untruncを使って修正します。
http://vcg.isti.cnr.it/~ponchio/untrunc.php

untruncは正常なmoovヘッダをベースに再構築するソフトです。

OS Xでのuntruncのコンパイル

libav
./configure --disable-yasm
make

untrunc本体
g++ -o untrunc file.cpp main.cpp track.cpp atom.cpp mp4.cpp -I./libav-0.8.7 -L./libav-0.8.7/libavformat -lavformat -L./libav-0.8.7/libavcodec -lavcodec -L./libav-0.8.7/libavutil -lavutil -lz -framework CoreFoundation -framework CoreVideo -framework VideoDecodeAcceleration -lbz2


./untrunc correct.3gp broken2.mp4

mp4boxで分離する
mp4box -raw 1 broken2.mp4
mp4box -raw 2 broken2.mp4

そのままではh264のファイルが再生できないので、
ヘッダを修正。

上記分離で正常に再生できる動画を分離、
ヘッダを比較。

h.264のストリームヘッダが
65b8407f
正常に再生できる動画のヘッダと
再生できない動画のヘッダ以降でデータを組み合わせて保存。
このファイルはVLCで再生確認ができます。

再度コンテナ化
./mp4box -fps 30 -add broken2.aac -add broken2.h264 -new movie.mp4
スポンサーサイト

コメント

非公開コメント

プロフィール

BouKiCHi

Author:BouKiCHi
ABOUT ME
MAIL:alf_byncyou at hotmail.com

WEB:http://clogging.web.fc2.com/
TWITTER:@bkc_alf

月別アーカイブ

FC2カウンター

ブロとも申請フォーム

ブログ内検索

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。