Então, eu tenho vários arquivos MP4 corrompidos (alguns arquivos AVI corrompidos também, mas acredito que esse seja um problema diferente). Eles parecem ter se corrompido quando eu tinha um disco rígido externo que estava travando (ele não funciona mais em nenhum dos meus computadores). Eu tenho um computador executando o Windows 8.1 e um computador antigo executando o Windows Vista. O comportamento para todos os itens a seguir é consistente nos dois computadores.

Os arquivos não são executados no Windows Media Player ou no VLC (apenas o cone de trânsito) ou no QuickTime ("Erro-2048: não foi possível abrir o arquivo MVI_0338.MP4 porque não é um arquivo que o QuickTime entenda."). Então isso me levou a procurar na Internet por correções. Muitas pessoas parecem ter tido sucesso com a Video Repair Tool da Grau, mas não funcionou para mim. A saída foi apenas alguns quadros de vídeo. Havia também outro editor com quem as pessoas tiveram sorte, o Digiarty WinX HD Video Converter Deluxe, que não funcionou para mim. Então, depois que os programas com GUIs falharam, voltei às raízes mais poderosas da computação e instalei o ffmpeg.

Também engasgou com o arquivo. Aqui está a aparência da saída na tela:

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

Tenho certeza de que perdi algo em minhas pesquisas na Internet (descobri muito sobre o átomo moov, mas não realmente nada sobre meu problema de codec, dvvideo etc.), mas qualquer idéia sobre como lidar com esse problema seria muito estimado.

John
fonte