Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

I have an mp4 file that seems to have gotten corrupted somehow:

$ file HDV_1042.MP4
HDV_1042.MP4: data

$ mediainfo HDV_1042.MP4
General
Complete name                            : HDV_1042.MP4
File size                                : 1.72 GiB

$ ffprobe HDV_1042.MP4 
avprobe version 0.8.6-4:0.8.6-0ubuntu0.12.04.1, Copyright (c) 2007-2013 the Libav developers
  built on Apr  2 2013 17:02:36 with gcc 4.6.3
HDV_1042.MP4: Invalid data found when processing input

$ AtomicParsley HDV_1042.MP4 -T 1

AtomicParsley error: bad mpeg4 file (ftyp atom missing or alignment error).

I tried recovering it with 'untrunc' using a working file from the same camera, but that didn't work:

$ ./untrunc HDV_1041.MP4 HDV_1042.MP4 Reading: HDV_1041.MP4
Composition time offset atom found. Out of order samples possible.
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'HDV_1041.MP4':
  Metadata:
    major_brand     : avc1
    minor_version   : 0
    compatible_brands: avc1isom
    creation_time   : 1947-10-13 12:23:13
  Duration: 00:21:20.25, start: 0.000000, bitrate: 12131 kb/s
    Stream #0.0(eng): Video: h264 (Main), yuv420p, 1280x720, 11988 kb/s, 59.94 fps, 59.94 tbr, 90k tbn, 180k tbc
    Metadata:
      creation_time   : 1947-10-13 12:23:13
    Stream #0.1(eng): Audio: aac, 48000 Hz, stereo, s16, 128 kb/s
    Metadata:
      creation_time   : 1947-10-13 12:23:13
Failed to parse atoms in truncated file

Also tried ffmpeg/avconv without success:

$ avconv -f h264 -i HDV_1042.MP4 -c:a copy -c:v copy HDV_1042.mp4 
avconv version 0.8.6-4:0.8.6-0ubuntu0.12.04.1, Copyright (c) 2000-2013 the Libav developers
  built on Apr  2 2013 17:02:36 with gcc 4.6.3
[h264 @ 0x1359ac0] non-existing PPS referenced
[h264 @ 0x1359ac0] non-existing PPS 0 referenced
[h264 @ 0x1359ac0] decode_slice_header error
[h264 @ 0x1359ac0] non-existing PPS 1 referenced
[h264 @ 0x1359ac0] decode_slice_header error
[h264 @ 0x1359ac0] no frame!
[h264 @ 0x134f9e0] Estimating duration from bitrate, this may be inaccurate
Input #0, h264, from 'HDV_1042.MP4':
  Duration: N/A, bitrate: N/A
    Stream #0.0: Video: h264, 25 fps, 25 tbr, 1200k tbn, 2400k tbc
Output #0, mp4, to 'HDV_1042.mp4':
Output file #0 does not contain any stream

Here's example of a working file from the same camera:

$ mediainfo HDV_1041.MP4
General
Complete name                            : HDV_1041.MP4
Format                                   : MPEG-4
Format profile                           : JVT
Codec ID                                 : avc1
File size                                : 1.81 GiB
Duration                                 : 21mn 20s
Overall bit rate                         : 12.1 Mbps
Writing library                          : SEC 

Video
ID                                       : 1
Format                                   : AVC
Format/Info                              : Advanced Video Codec
Format profile                           : Main@L4.0
Format settings, CABAC                   : Yes
Format settings, ReFrames                : 4 frames
Codec ID                                 : avc1
Codec ID/Info                            : Advanced Video Coding
Duration                                 : 21mn 20s
Bit rate mode                            : Variable
Bit rate                                 : 12.0 Mbps
Width                                    : 1 280 pixels
Height                                   : 720 pixels
Display aspect ratio                     : 16:9
Frame rate mode                          : Variable
Frame rate                               : 59.940 fps
Minimum frame rate                       : 59.920 fps
Maximum frame rate                       : 59.960 fps
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 8 bits
Scan type                                : Progressive
Bits/(Pixel*Frame)                       : 0.217
Stream size                              : 1.79 GiB (99%)
Title                                    : HMX-H300
Language                                 : English

Audio
ID                                       : 2
Format                                   : AAC
Format/Info                              : Advanced Audio Codec
Format profile                           : LC
Codec ID                                 : 40
Duration                                 : 21mn 20s
Bit rate mode                            : Constant
Bit rate                                 : 128 Kbps
Channel(s)                               : 2 channels
Channel positions                        : Front: L R
Sampling rate                            : 48.0 KHz
Compression mode                         : Lossy
Stream size                              : 19.5 MiB (1%)
Title                                    : HMX-H300
Language                                 : English
share|improve this question
    
BTW, I don't need to recover audio, just video. Not sure if that makes recovery easier.. –  user145664 Oct 14 '13 at 17:02
    
mp4repair.org claims it can repair but wants $60. Not sure this clip is worth that to me. :-) –  user145664 Oct 15 '13 at 0:34
    
Looks like there are a number of commercial tools that claim to be able to repair. Repair also seems possible with free tools, for instance using a hex editor. I tried using 'wxhexeditor' on Linux to add missing data from a working file to a non-working file, then converting to binary using 'xxd -r' but couldn't get the 'fixed' file to play. Clearly skill, and understanding of the mp4 file structure is required. :-) –  user145664 Oct 19 '13 at 6:07

2 Answers 2

up vote 0 down vote accepted

I have Video Repair Tool 1.9.0.0 and untill now i have managed to fix most of the corupted MP4 files. At least you can try it as trial will repair half of your file, so you can see if it works. Downside is that it's not free and it's a little bit expensive for ocassional usage

share|improve this answer
    
Thanks for the tip. Tried a demo version of the tool but it wasn't able to repair. –  user145664 Oct 14 '13 at 20:36
1  
Actually, I ran this tool again and it worked. It's Win/Mac only, but works fine under Wine on Linux as well. –  user145664 Oct 19 '13 at 5:58

might try this:

here's an alternative for those of you that need to recover mp4 AVC Mega Download

This utility can recover H.264/AVC stream from unfinalized MP4/MOV files without (or empty) header. You may got the unfinalized file in case of damaging camcorder during recording or such. This utility has been tested with files recorded by GoPro, but it may work with other camcorders too.

Usage: recover_mp4_to_h264 in_good_similar.mp4 --avcc 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] []

Supported recorders: 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

Step 1: Use any good previous file with the same resolution and bitrate to generate the AVC configuration record, for example

recover_mp4_to_h264.exe GOPR0346.MP4 --avcc

Note: It will create the file 'avcc.hdr' in the current directory.

Step 2: Recover H.264 stream from the corrupted file, for example

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

Note: The file 'avcc.hdr' must be exist. Note: Specify --pcm or the WAV file name in case of recovering MOV file written by Canon EOS.

Step 3: Use any other utility (Yamb or ffmpeg for example) to recreate the MP4/MOV file from the H.264 stream (GOPR0347.h264). Note MP4 does not support PCM sound, you must create MOV in this case:

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

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.