修复损坏的MP4视频文件

30

我有一个用Flip相机拍摄的MP4视频。当我停止录制时,相机冻结了,现在该视频似乎已经损坏。我仍然可以从相机下载它,但无法播放。现在,该视频仍然超过2GB,因此我认为数据仍然存在。

于是,我搜索了网络以寻找解决方案,并找到了声称可以修复此类问题的付费服务和软件。其中一项诊断服务(“Treasured”)向我展示了来自视频的静止图像,证实了我的想法,即可能还有可挽救的东西。不幸的是,修复它所需的价格超出了预算。需要使用自己的解决方案。

有人知道如何修复损坏的MP4吗?或者知道不太贵的服务或软件吗?

3个回答

39

给这个工具一次机会 官方工具链接 该工具可以从未完成的MP4/MOV文件中恢复H.264/AVC流,而无需(或空)头部。在录制过程中相机损坏等情况下,您可能获得了未完成的文件。该工具已经在GoPro记录的文件上进行了测试,但也可以与其他摄像机一起使用。

用法:

recover_mp4_to_h264 in_good_similar.mp4 --analyze
recover_mp4_to_h264 in_corrupted.mp4 out_video.h264 [out_audio.aac | out_audio.wav | out_audio.mp3] []
recover_mp4_to_h264 in_corrupted.mp4 out_video.h264 [--aac | --pcm | --mp3] []

支持的录音机:

Default is Ambarella (used in GoPro, etc.)
Specify --eos in case of Canon EOS
Specify --apple in case of some Apple software encoder
Specify --htc in case of HTC smartphone
Specify --motorola in case of Motorola smartphone
Specify --samsung in case of Samsung camcorder

步骤1:使用与分辨率和比特率相同的任何优秀先前文件生成AVC配置记录,例如

recover_mp4_to_h264.exe GOPR0346.MP4 --analyze

注意:它将在当前目录中创建文件'avcc.hdr'。

步骤2:从损坏的文件中恢复H.264流,例如

recover_mp4_to_h264.exe GOPR0347.MP4 GOPR0347.h264 GOPR0347.aac

注意:文件'avcc.hdr'必须存在。 注意:在恢复由佳能EOS写入的MOV文件的情况下,请指定--pcm或WAV文件名。

步骤3:使用任何其他工具(例如Yamb或ffmpeg)从H.264流(GOPR0347.h264)重新创建MP4 / MOV文件。请注意,MP4不支持PCM音频,此时必须创建MOV:

ffmpeg.exe -r 30 -i recovered.h264 -i recovered.wav -vcodec copy -acodec copy result.mov

编辑:添加官方工具链接。感谢The Compiler。

旧链接: Mega链接


2
现在在该工具的网站上有一个官方下载(我想)。另外,--avcc似乎已更名为--analyze - The Compiler
7
该工具的官网上已经无法下载recover_mp4工具。该网站现在会将您重定向到一个在线工具。我尝试了一下,似乎可以工作,但价格很昂贵。您仍然可以在此处下载该工具:http://www.softpedia.com/get/Multimedia/Video/Other-VIDEO-Tools/recover-mp4.shtml。如果您使用Linux或Mac,则可以使用类似的perl编写的工具:https://github.com/bookkojot/mp4fixer。 - jfbloom22
1
很少有谷歌搜索结果提供免费解决方案。我写了一篇关于如何在Windows、Linux和Mac上免费修复视频文件的博客文章:http://blog.jonathanflower.com/post/174339850366/how-to-fix-corrupted-video-files - jfbloom22
1
另一个下载链接:https://www.videohelp.com/software/recover-mp4-to-h264 我使用的是版本1.92,它可以正常工作。 - Gibezynu Nu
1
在索尼相机上,录制样本“好”的MP4时方向很重要!尝试恢复720p 30fps视频,尽管比特率、帧速率和其他一切都可能匹配,但除非以相同的方式记录“好”的MP4,即纵向与横向,否则无法成功。也许左旋转的纵向与右旋转的纵向也会有所不同!最终为Sony a7s恢复所有内容的命令:recover_mp4 good.mp4 --analyze recover_mp4 good.mp4 bad.mp4 result.h264 result.aac --sony ffmpeg -i result.h264 -i result.aac -c:v copy -c:a copy -map 0:v:0 -map 1:a:0 result.mp4 - Lorin Thwaits
显示剩余9条评论

7

太棒了!

我在拍摄时,我的安卓手机崩溃了。幸运的是,它已经被root了,所以我可以从相机文件夹中检索到临时文件。

使用这里的建议很容易恢复素材,让我成功地完成了一部分。但是,在合并文件方面还有一些困难需要克服...

恢复的音频比“好”文件的音频具有更高的比特率。128k而不是96k。因此,我可以将文件合并回一个工作电影,但音频会变得过快并失去同步。因此,需要进行转换。

此外,ffmpeg无法/不会复制aac流,因此需要使用过滤器进行转换;aac_adtstoasc

在我的情况下,我必须执行以下操作:

recover_mp4_to_h264.exe good.MP4 --avcc

recover_mp4_to_h264.exe bad.MP4 bad.h264 bad.aac --android

ffmpeg -i bad.aac -acodec libvo_aacenc -b:a 96k fixed.aac

ffmpeg -r 30 -i bad.h264 -i fixed.aac -vcodec copy -acodec copy -bsf:a aac_adtstoasc fixed.mp4

成功了!


你能否重新格式化你的回答,更清晰地阐述解决问题的步骤? - Kmeixner
仅供其他人阅读,您不需要获取临时文件的根手机。您可以使用大多数文件管理器程序轻松检索它。 - kojow7

2
我没有测试上述解决方案,但对我来说Grau的视频修复软件有效。该程序的下载链接和使用说明可以在此页面找到:http://grauonline.de/cms2/?page_id=5
需要注意的是,为了使其正常工作,您必须提供一个同类型的非损坏(可播放)电影文件(使用相同的相机记录,具有相同的分辨率、相同的设置等),以便软件可以将可播放的视频文件与损坏的文件进行比较并修复它。如果您没有样本,请使用相同的设置录制您的房间或其他任何内容的10秒视频,这与您用于记录最终损坏的文件的设置相同即可。

3
针对 Linux 操作系统,可以使用 untrunc 工具进行修复:http://superuser.com/a/596402/458848 - Antônio Medeiros
看起来Federico Ponchio让他的untrunc对每个人都可用了(包括非Linux用户;-)):http://untrunc.it/ - Roman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接