因此,我有许多损坏的 MP4 文件(还有一些损坏的 AVI 文件,但我相信这是另一个问题)。它们似乎是在我有一个外部硬盘驱动器崩溃时损坏的(它在我的任何一台计算机上都不再工作)。我有一台运行 Windows 8.1 的计算机和一台运行 Windows Vista 的老旧计算机。以下所有行为在两台计算机上都是一致的。
这些文件无法在 Windows Media Player 或 VLC(只有交通锥)或 QuickTime(“错误 - 2048:无法打开文件 MVI_0338.MP4,因为这不是 QuickTime 可以理解的文件。”)中播放。因此,我开始在互联网上寻找修复方法。很多人似乎都成功地使用了 Grau 的视频修复工具,但对我来说却不起作用。输出只有几帧视频。还有另一个人们运气不错的编辑器,Digiarty WinX HD Video Converter Deluxe,对我来说却不起作用。因此,在带有 GUI 的程序让我失望之后,我回到了更强大的计算根源,并启动并运行了 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 atom 的信息,但并没有找到有关我的编解码器、dvvideo 等问题的任何信息),但如果能提供任何关于如何处理这个问题的想法,我将不胜感激。