我用数码相机录制了两个视频。两个视频都使用相同的编解码器和设置保存。
第二个视频不知怎么的损坏了,我无法用 VLC 或视频编辑软件打开它。(第一个视频没问题)。
我尝试使用“视频到视频”软件转换视频,结果显示:
#8636.3: [h264 @ 04E10060]AVC: nal size -1920576098
#8636.3: [h264 @ 04E10060]no frame!
#8636.5: [mov,mp4,m4a,3gp,3g2,mj2 @ 04EC4020]decoding for stream 0 failed
#8636.4: [mov,mp4,m4a,3gp,3g2,mj2 @ 04EC4020]Could not find codec parameters
for stream 0 (Video: h264 (avc1 / 0x31637661), 1920x1080, 11987 kb/s):
unspecified pixel format
#8636.4: Consider increasing the value for the 'analyzeduration' and
'probesize' options
***File load error: C:\..\PICT0002.MP4: could not find codec parameters
使用 Gspot 分析视频(右侧视频损坏:PICT0002):
有人能推荐一个工具或方法来修复第二个视频吗?大小是正确的(3 GB),当我尝试用 VLC 打开它时,长度似乎没问题(40 分钟)。
理论上:我是否应该更改文件中的编解码器元数据以使其可被软件识别?
更新
尝试了 ffmpeg 分析。命令:ffmpeg -analyzeduration 20000000000 -i PICT0002.mp4 -c:v libx264 -c:a copy PICT0002-fixed.mp4
回复:
C:\Programmi\ffmpeg\bin>ffmpeg -analyzeduration 2000000000 -i PICT0002.mp4 -
c:v libx264 -c:a copy PICT0002-fixed.mp4
ffmpeg version N-91398-gd08d4a8c73 Copyright (c) 2000-2018 the FFmpeg
developers
built with gcc 7.3.0 (GCC)
configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-
bzlib --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass
--enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-
libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --
enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --
enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack
--enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --
enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-
libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa
--enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --
enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-
nvenc --enable-nvdec --enable-dxva2 --enable-avisynth
libavutil 56. 18.102 / 56. 18.102
libavcodec 58. 20.104 / 58. 20.104
libavformat 58. 17.101 / 58. 17.101
libavdevice 58. 4.101 / 58. 4.101
libavfilter 7. 25.100 / 7. 25.100
libswscale 5. 2.100 / 5. 2.100
libswresample 3. 2.100 / 3. 2.100
libpostproc 55. 2.100 / 55. 2.100
[h264 @ 000002036235d380] Invalid NAL unit size (-1920576098 > 197632).
[h264 @ 000002036235d380] Error splitting the input into NAL units.
[mov,mp4,m4a,3gp,3g2,mj2 @ 000002036234a300] decoding for stream 0 failed
[mov,mp4,m4a,3gp,3g2,mj2 @ 000002036234a300] Could not find codec
parameters for stream 0 (Video: h264 (avc1 / 0x31637661), none, 1920x1080,
11987 kb/s): unspecified pixel format
Consider increasing the value for the 'analyzeduration' and 'probesize'
options
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'PICT0002.mp4':
Metadata:
major_brand : avc1
minor_version : 0
compatible_brands: avc1isom
creation_time : 2021-06-30T08:32:50.000000Z
Duration: 00:40:53.45, start: 0.000000, bitrate: 12122 kb/s
Stream #0:0(eng): Video: h264 (avc1 / 0x31637661), none, 1920x1080, 11987
kb/s, 29.97 fps, 29.97 tbr, 90k tbn, 180k tbc (default)
Metadata:
creation_time : 2021-06-30T08:32:50.000000Z
handler_name : Ambarella AVC
encoder : Ambarella AVC encoder
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
Press [q] to stop, [?] for help
[h264 @ 000002036234dd40] Invalid NAL unit size (-1920576098 > 197632).
[h264 @ 000002036234dd40] Error splitting the input into NAL units.
[h264 @ 0000020363f92300] Invalid NAL unit size (1565499804 > 10496).
[h264 @ 0000020363f92300] Error splitting the input into NAL units.
Error while decoding stream #0:0: Invalid data found when processing input
Last message repeated one time
Cannot determine the format of input stream 0:0 after EOF
Error marking filters as finished
Conversion failed!
因此,转换失败。
答案1
解决方案。
首先,感谢 Ricardo Bohner。他提到了视频修复工具。
访问该网站,你会发现这个工具不再可用,你应该订阅恢复媒体。
遗憾的是,我只恢复了 40 分钟视频中的 30 分钟,但恢复的部分是完美的。
希望这会有用。
更新: 正如 Riccardo Bonher 所解释的(见下面的评论),可以使用一个技巧(将 mp4 长度加倍)并通过以下方式恢复它修复工具。
这样,我就能修复损坏的 mp4 的全部长度。完成此操作后,我就能够使用 VLC(视频阅读器)观看视频了。
..但我仍然无法通过编辑软件(如 VirtualDub、Video to Video 等)进行转换。
因此,我使用了组合程序:A) 使用 Riccardo 解决方案(如评论中所述)恢复整个视频长度 B) 通过我原来的解决方案 (recover-mp4-to-h264.zip) 重新传递恢复的视频,使其正确且可被常见的编辑软件读取。希望这可以帮助人们。
答案2
查看这个工具:视频修复工具
它不是免费软件,但它可以免费修复 50% 的视频,所以您会知道它是否有效。
另请查看这个 YouTube 视频:https://www.youtube.com/watch?v=5QK3vizVIds