Отже, у мене є ряд пошкоджених MP4-файлів (деякі пошкоджені файли AVI теж, але я вважаю, що це інша проблема). Вони, здається, зіпсувалися, коли у мене був зовнішній жорсткий диск, що вони зазнали аварії (він більше не працює ні в одному з моїх комп'ютерів). У мене один комп’ютер під керуванням Windows 8.1 та старий комп’ютер під керуванням Windows Vista. Поведінка для всіх наведених нижче є послідовною на обох комп'ютерах.
Файли не відтворюються у програмі Windows Media Player або 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 тощо), але будь-яких ідей щодо вирішення цієї проблеми було б багато цінується.