Итак, у меня есть несколько поврежденных файлов MP4 (также некоторые поврежденные файлы AVI, но я считаю, что это другая проблема). Кажется, они испортились, когда у меня был внешний жесткий диск, на котором они находились в аварийном состоянии (он больше не работает ни на одном из моих компьютеров). У меня есть один компьютер под управлением Windows 8.1 и один старый компьютер под управлением Windows Vista. Поведение для всего следующего одинаково на обоих компьютерах.
Файлы не воспроизводятся в проигрывателе Windows Media или VLC (только конус трафика) или QuickTime («Ошибка-2048: не удалось открыть файл MVI_0338.MP4, потому что это не файл, который понимает QuickTime».). Так что это привело меня к поиску исправлений в Интернете. Многие люди, похоже, добились успеха с инструментом ремонта видео от Grau, но он мне не помог. На выходе была всего пара кадров видео. Был еще один редактор, с которым людям повезло, Digiarty WinX HD Video Converter Deluxe, который не работал для меня. Итак, после того, как программы с графическим интерфейсом потерпели неудачу, я вернулся к более мощным корням вычислений и запустил ffmpeg.
Это также подавилось файлом. Вот как выглядел вывод на экран:
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
Я уверен, что что-то упустил в своих поисках в Интернете (я много узнал об атоме moov, но не совсем о моей проблеме с кодеком, dvvideo и т. Д.), Но любые идеи о том, как справиться с этой проблемой, были бы очень оценили.