1
So, I have a number of corrupt MP4 files (some corrupt AVI files, too, but I believe that's a different problem). They seem to have gone corrupt when I had an external hard drive that they were on crash (it no longer works in any of my computers). I have one computer running Windows 8.1 and one ancient computer running Windows Vista. The behavior for all of the following is consistent across both computers.
The files do not play in Windows Media Player or VLC (just the traffic cone) or QuickTime ("Error- 2048: Couldn't open the file MVI_0338.MP4 because it is not a file that QuickTime understands."). So that led me to hunting around on the Internet for fixes. A lot of people seem to have had success with Grau's Video Repair Tool, but it didn't work for me. The output was just a couple frames of video. There was also another editor that people had luck with, the Digiarty WinX HD Video Converter Deluxe, that didn't work for me. So, after programs with GUIs failed me, I went back to computing's more high-powered roots and got ffmpeg up and running.
It also choked on the file. Here's what the on-screen output looked like:
Microsoft Windows [Version 6.0.6002]
Copyright (c) 2006 Microsoft Corporation. All rights reserved.
C:\180_0416>ffmpeg -i mvi_0335.MP4 -c copy MVI_0335-fix.MP4
ffmpeg version N-74113-gcdb0225 Copyright (c) 2000-2015 the FFmpeg developers
built with gcc 4.9.2 (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. 29.100 / 54. 29.100
libavcodec 56. 56.101 / 56. 56.101
libavformat 56. 40.101 / 56. 40.101
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 30.100 / 5. 30.100
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 2.101 / 1. 2.101
libpostproc 53. 3.100 / 53. 3.100
[dv @ 03e24ac0] Estimating duration from bitrate, this may be inaccurate
Input #0, dv, from 'mvi_0335.MP4':
Metadata:
timecode : 00:10:13;00
Duration: 00:00:18.15, start: 0.000000, bitrate: 28798 kb/s
Stream #0:0: Video: dvvideo, yuv411p, 720x480 [SAR 8:9 DAR 4:3], 28771 kb/s,
29.97 fps, 29.97 tbr, 29.97 tbn, 29.97 tbc
Stream #0:1: Audio: pcm_s16le, 32000 Hz, stereo, s16, 1024 kb/s
Stream #0:2: Audio: pcm_s16le, 32000 Hz, stereo, s16, 1024 kb/s
[mp4 @ 03ee0be0] Codec for stream 0 does not use global headers but container fo
rmat requires global headers
[mp4 @ 03ee0be0] Codec for stream 1 does not use global headers but container fo
rmat requires global headers
[mp4 @ 03ee0be0] Could not find tag for codec dvvideo in stream #0, codec not cu
rrently supported in container
Output #0, mp4, to 'MVI_0335-fix.MP4':
Metadata:
timecode : 00:10:13;00
encoder : Lavf56.40.101
Stream #0:0: Video: dvvideo, yuv411p, 720x480 [SAR 8:9 DAR 4:3], q=2-31, 287
71 kb/s, 29.97 fps, 29.97 tbr, 29.97 tbn, 29.97 tbc
Stream #0:1: Audio: pcm_s16le, 32000 Hz, stereo, 1024 kb/s
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Stream #0:1 -> #0:1 (copy)
Could not write header for output file #0 (incorrect codec parameters ?): Invali
d argument
I am sure I have missed something in my searches of the Internet (I found much about the moov atom, but not really anything about my codec, dvvideo, etc. problem), but any ideas on how to deal with this problem would be much appreciated.