using ffmpeg to repair corrupted MP4 video files from Xiaomi Yi

2

did not know wether to create a new thread or to post in an existing one. Decided for the first option, as my case seems to be a little different as I do not have one video corrupted but plenty of them.

My problem is, that I have 30+ of MP4 videos (coming from the Xiaomi Yi sports camera) corrupted after camera went crazy during 60fps recording. Previously they were all good. So the situation is: before playable, now corrupted. I have tried to use ffmpeg using a command:

e.g. ffmpeg -i YDXJ0690c.mp4 -c:a copy -c:v copy YDXJ0690c_rescue.mp4

but I get

ffmpeg version N-74645-g4c39892 Copyright (c) 2000-2015 the FFmpeg developers
built with gcc 4.9.3 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libdcadec --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-lzma --enable-decklink --enable-zlib
libavutil      54. 31.100 / 54. 31.100
libavcodec     56. 58.100 / 56. 58.100
libavformat    56. 40.101 / 56. 40.101
libavdevice    56.  4.100 / 56.  4.100
libavfilter     5. 37.100 /  5. 37.100
libswscale      3.  1.101 /  3.  1.101
libswresample   1.  2.101 /  1.  2.101
libpostproc    53.  3.100 / 53.  3.100
[adp @ 0000000004888360] Format adp detected only with low score of 25, misdetection possible!
Input #0, adp, from 'YDXJ0690c.mp4':
  Duration: 02:16:17.66, start: 0.000000, bitrate: 438 kb/s
    Stream #0:0: Audio: adpcm_dtk, 48000 Hz, stereo, s16p
[mp4 @ 0000000004cb15e0] Codec for stream 0 does not use global headers but container format requires global headers
[mp4 @ 0000000004cb15e0] Could not find tag for codec adpcm_dtk in stream #0, codec not currently supported in container
Output #0, mp4, to 'YDXJ0690c_rescue.mp4':
  Metadata:
    encoder         : Lavf56.40.101
    Stream #0:0: Audio: adpcm_dtk, 48000 Hz, stereo
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument

Can anyone help me in using ffmpeg to repair my videos?

sp00n

Posted 2015-08-28T14:10:45.260

Reputation: 31

Thank you for correcting my post and sorry for your trouble. I have tried a demo version of Grau Video Repair (as it has simple interface) and I have managed to recover a few seconds of untouched, nice looking, working 60fps footage from one of my corrupted files. From most of the other files I get 2kb output file. It seems that Grau is based on ffmpeg so there might be hope for me. – sp00n – 2015-08-28T15:17:35.490

I did some tests with a mp4_to_h264 extractor ( recover-mp4-to-h264.exe), it seems that the h264 stream can be extracted, but afterwards, when I try to build a new mp4 or mov file from the stream, the error "mdat atom not found in the first 64MB". Any ideas? – sp00n – 2015-08-29T14:29:40.317

No answers