修复损坏的MP4视频文件

Ste*_* C. 22 video mp4 corrupt

我有一个用Flip相机拍摄的MP4视频.当我停止录音机时相机冻结了,现在视频显示已损坏.我仍然可以从相机下载它,但它不会播放.现在,视频的大小仍然超过2千兆字节,所以我认为数据仍然存在.

所以,我搜索网络寻找解决方案,我找到了声称可以解决这个问题的付费服务和软件.一个诊断服务("Treasured")向我展示了视频中的剧照,证实了我相信那里可能有一些可以挽救的东西.不幸的是,要求修复它的价格不在预算范围内.它需要更多的朴素解决方案.

有谁知道如何修复损坏的MP4?或者是没有太多钱的服务或软件?

小智 31

试一试 官方工具链接 此实用程序可以从未完成的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] []
Run Code Online (Sandbox Code Playgroud)

支持的录像机:

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
Run Code Online (Sandbox Code Playgroud)

步骤1:例如,使用具有相同分辨率和比特率的任何良好的先前文件来生成AVC配置记录

recover_mp4_to_h264.exe GOPR0346.MP4 - 分析

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

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

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

注意:文件'avcc.hdr'必须存在.注意:如果要恢复Canon EOS编写的MOV文件,请指定--pcm或WAV文件名.

步骤3:使用任何其他实用程序(例如Yamb或ffmpeg)从H.264流(GOPR0347.h264)重新创建MP4/MOV文件.注意MP4不支持PCM声音,在这种情况下您必须创建MOV:

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

编辑:添加官方工具链接.谢谢编译器

旧链接: 巨型链接

  • recover_mp4工具不再可在该工具的网站上下载.该网站现在将您带到在线工具.我尝试了它似乎工作,但它是昂贵的.您仍然可以在此处下载该工具:http://www.softpedia.com/get/Multimedia/Video/Other-VIDEO-Tools/recover-mp4.shtml.如果您使用的是Linux或Mac,那么这是一个用perl编写的类似工具:https://github.com/bookkojot/mp4fixer (3认同)
  • 现在在[工具网站](http://slydiman.me/eng/mmedia/recover_mp4.htm)上正式下载(我认为).似乎`--avcc`被重命名为`--analyze`. (2认同)

小智 6

高超!

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

使用这里的建议很容易恢复材料,它让我走得很好。但是在文件合并方面有一些困难需要克服......

恢复的音频比来自“好”文件的音频具有更高的比特率。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

成功!