修复损坏的 MP4

noo*_*oob 32 video mpeg4

我从我的 Android 手机(索尼 Xperia P,如果你需要知道的话)上拍了一段视频,在我停止录制之前,手机内存已满,手机也挂了。我重新启动了手机,视频在那里,但我无法从 Android 上的任何媒体播放器播放它。它在mp4 format.

所以我尝试在 PC 和 Mac 上使用不同的视频播放器打开它,如 VLC、快速时间、Windows Media Player 等,但它们都不能播放。我知道视频已损坏,但我相信它是可以修复的,因为它的大小超过了 GB。有什么我可以尝试修复视频文件的吗?视频真的很重要。

evi*_*oup 20

如果您有 ffmpeg,则可以从命令行尝试:

ffmpeg -i input.mp4 -c copy output.mp4
Run Code Online (Sandbox Code Playgroud)

如果问题仅出在容器上,这将解决它。

如果这不起作用,请发布完整的终端消息,因为它可以提供有关如何修复文件的线索。

  • 这么晚才回复很抱歉。这是我在使用 ffmpeg 命令时遇到的错误 - [mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f88f9018e00] moov atom not found input.mp4: Invalid data found when processing input (17认同)
  • 你解决过这个问题吗?遇到同样的问题。认为这也是由或多或少相同的事情引起的 (2认同)
  • 您尝试过recover_mp4_to_h264吗?http://stackoverflow.com/questions/23202611/repairing-a-corrupt-mp4-video-file (2认同)

lar*_*sks 20

这是一个老问题,但我遇到了同样的情况,我想我会发布对我有用的解决方案。

当您看到“moov atom not found”消息时,这通常意味着创建视频的任何内容都无法写入包含有关视频中使用的编解码器等信息的终端元数据。没有这个“moov atom”,大多数玩家会拒绝视频。

如果您有另一个由同一设备生成的视频,您可以使用untrunc程序生成一个新的 moov atom,在大多数情况下,它将使文件可播放。

您需要自己编译该untrunc程序。我在 Ubuntu 12.04 docker 容器中构建它,并且需要安装以下先决条件才能构建它:

sudo apt-get install libavformat-dev libavcodec-dev \
  libavutil-dev libqt4-dev make g++ libz-dev
Run Code Online (Sandbox Code Playgroud)

  • 请注意,如果原始的 [ponchio/untrunc](https://github.com/ponchio/untrunc) 不适用于您,还可以尝试该存储库中较新的“logging”分支,并尝试此分支:[ anthwlock/untrunc](https://github.com/anthwlock/untrunc) (6认同)