背景
我已经恢复了一些大型视频,如下所述:
许多较小的图像/视频从格式化的驱动器中恢复,除了一个大于 2 或 3 GB 的特定大视频
显然,有3个大小几乎相同且内容相同的视频:
> ls recoverit-Wondershare/ -lh
total 23G
-rw-r--r-- 1 m3 users 3.7G Nov 25 20:03 00000084.mp4
-rw-r--r-- 1 m3 users 3.3G Nov 25 18:10 39289942016.mp4
-rw-r--r-- 1 m3 users 3.3G Nov 25 20:30 5142605824.mp4
问题
问题是所有 3 个视频都只能播放到 27m。我正在通过 VLC 媒体播放器播放。但是根据报告的持续时间,视频持续时间ffprobe
是 1h27m:
> ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 -sexagesimal recoverit-Wondershare/00000084.mp4
1:27:14.640000
此外,右键单击详细信息/属性菜单显示 1h27m 是持续时间。
没有致命错误
我通过这里的方法仔细检查视频完整性:
https://superuser.com/a/100290/571029
通过这个命令:
> ffmpeg -v fatal -i recoverit-Wondershare/00000084.mp4 -f null - 2>error-fatal.log
但是在 中没有报告致命错误error-fatal.log
。
问题
我还能做些什么来修复/播放视频?
更新
用 Avidemux 打开视频,帧分析继续到 %32 左右,然后突然跳转结束。表示视频持续时间约为 %32 时出现问题。
MPV日志
尝试通过 MPV 播放视频,视频播放正常,但如果我跳转到 27m 后的帧,则会收到此日志:
> mpv recoverit-Wondershare/00000084.mp4
(+) Video --vid=1 (*) (h264 1920x1080 50.000fps)
(+) Audio --aid=1 --alang=eng (*) (aac 2ch 48000Hz)
AO: [pulse] 48000Hz stereo 2ch float
VO: [gpu] 1920x1080 yuv420p
AV: 00:23:54 / 01:27:14 (27%) A-V: 0.000
[ffmpeg/video] h264: Found reference and non-reference fields in the same frame, which is not implemented. Update your FFmpeg version to the newest one from Git. If the problem still occurs, it means that your file has a feature which has not been implemented.
[ffmpeg/video] h264: If you want to help, upload a sample of this file to https://streams.videolan.org/upload/ and contact the ffmpeg-devel mailing list. ([email protected])
[ffmpeg/video] h264: decode_slice_header error
AV: 00:23:54 / 01:27:14 (27%) A-V: 0.000
[ffmpeg/video] h264: mmco: unref short failure
AV: 00:23:56 / 01:27:14 (27%) A-V: 0.000
Exiting... (End of file)
使用 Avidemux 重新保存文件
通过 Avidemux,我重新保存了带有 MKV 后缀的视频。节省大约 32%,然后跳到完成。重点是重新保存的文件大小和输入文件一样!
> ls -lh recoverit-Wondershare/
total 26G
-rw-r--r-- 1 m3 users 3.7G Nov 26 00000084.mkv
-rw-r--r-- 1 m3 users 3.7G Nov 25 00000084.mp4
使用 FFMPEG 进行分析
我尝试通过以下命令分析视频文件:
> ffmpeg -i recoverit-Wondershare/00000084.mp4 -f null -
分析时间最长可达 27m。然后抛出这些错误:
[aac @ 0x560ec12d36c0] channel element 0.0 is not allocated
Error while decoding stream #0:1: Invalid data found when processing input
[aac @ 0x560ec12d36c0] channel element 0.0 is not allocated
Error while decoding stream #0:1: Invalid data found when processing input
[aac @ 0x560ec12d36c0] channel element 0.0 is not allocated
Error while decoding stream #0:1: Invalid data found when processing input
[aac @ 0x560ec12d36c0] channel element 0.0 is not allocated
Error while decoding stream #0:1: Invalid data found when processing input
Error while decoding stream #0:0: Invalid data found when processing input
[h264 @ 0x560ec12d6ac0] Invalid NAL unit size (0 > 124102).
[h264 @ 0x560ec12d6ac0] Error splitting the input into NAL units.
Error while decoding stream #0:0: Invalid data found when processing input
[h264 @ 0x560ec19a5180] Invalid NAL unit size (-1676108775 > 73339).
[h264 @ 0x560ec19a5180] Error splitting the input into NAL units.
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x560ec12a1cc0] Packet corrupt (stream = 0, dts = 84810).
recoverit-Wondershare/00000084.mp4: corrupt input packet in stream 0
Error while decoding stream #0:0: Invalid data found when processing input
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x560ec12a1cc0] stream 0, offset 0xe8d711da: partial file
recoverit-Wondershare/00000084.mp4: Invalid data found when processing input
[h264 @ 0x560ec12dd240] Invalid NAL unit size (2013396992 > 15690).
[h264 @ 0x560ec12dd240] Error splitting the input into NAL units.
Error while decoding stream #0:0: Invalid data found when processing input
Last message repeated 1 times
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x560ec12a1cc0] stream 0, offset 0xe8d7ec2d: partial file
recoverit-Wondershare/00000084.mp4: Invalid data found when processing input
Error while decoding stream #0:0: Invalid data found when processing input
Last message repeated 1 times
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x560ec12a1cc0] stream 0, offset 0xe8db8bd3: partial file
recoverit-Wondershare/00000084.mp4: Invalid data found when processing input
frame=40826 fps=129 q=-0.0 Lsize=N/A time=00:27:13.06 bitrate=N/A speed=5.16x
video:21370kB audio:306204kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
FFMPEG 拷贝
运行此命令:
> ffmpeg -i 00000084.mp4 -c copy 00000084--copy-by-ffmpeg.mp4
给出这个输出:
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x557f3798ecc0] Packet corrupt (stream = 0, dts = 84810).speed=20.5x
00000084.mp4: corrupt input packet in stream 0
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x557f3798ecc0] stream 0, offset 0xe8d711da: partial file
00000084.mp4: Invalid data found when processing input
frame=84813 fps=1028 q=-1.0 Lsize= 3808738kB time=00:28:16.20 bitrate=18394.8kbits/s speed=20.6x
video:3727528kB audio:79510kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.044648%
未找到 moov 原子
除了之前恢复的 3 个大约 3 GB 的视频:
许多较小的图像/视频从格式化的驱动器中恢复,除了一个大于 2 或 3 GB 的特定大视频
又恢复了一个大小约为 11 GB 的视频。什么都没有播放。在 11 GB 视频上运行此命令时:
> ffmpeg -i za.mp4 -c copy za--output.mp4
我收到此错误:
未找到 moov 原子
我的计划是尝试修复moov atom not found
11 GB 视频的错误。让我们忘记 3 GB 的视频。
我已经使用Wondershare Recoverit来恢复丢失的视频。所以,我尝试了Wondershare Repairit来修复视频!
Wondershare Repairit 处理了 3 GB 视频。它的输出预览是一个 28 分钟的视频。我只能以低质量预览它。要真正保存它,我必须购买许可证。
此外,Wondershare Repairit 处理了 11 GB 视频。正常流程是不够的。因此,通过提供示例视频来完成高级流程。我将 3 GB 视频用作 11 GB 视频的示例视频!好吧,它奏效了。该过程已完成,输出预览是一个 43 分钟的视频。好吧,这是令人失望的事情:43 分钟的视频只是 28 分钟的视频的一个子集,它重复了两次!
所以,最终,我手里有大约 27 或 28 分钟的可观看视频。我不知道我走得更远的几率是多少。我将检查@Silbee 建议的其他方法。
我以错误的方式进行恢复过程。现在,通过更好的恢复方式,1h27m 视频中的 1h17m 被恢复了。这意味着只有最后 10m没有恢复。详情在这里:
https://superuser.com/a/1691027/571029