如何恢复损坏的 mp4 文件:找不到 moov atom

use*_*456 21 mplayer ffmpeg video audio data-recovery

我做了一个录音

ffmpeg -f alsa -ac 2 -i plughw:0,0  /tmp/audio.mp4
Run Code Online (Sandbox Code Playgroud)

然后我移动/tmp/audio.mp4到另一个目录 ( /root/audio.mp4) 而没有停止ffmpeg导致损坏的.mp4文件:

ffplay /root/audio.mp4
[...]
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f3524000b80] moov atom not found
audio.mp4: Invalid data found when processing input
Run Code Online (Sandbox Code Playgroud)

如何恢复和读取我的.mp4文件?

Rab*_*bin 21

您可以尝试使用Untrunc修复该文件。

恢复损坏(截断)的 mp4、m4v、mov、3gp 视频。如果您有类似的未损坏视频。

您可能需要从源代码编译它,但还有另一种选择,即使用 Docker 容器并将文件夹与文件绑定到容器中并以这种方式修复它。

您可以使用包含的 Dockerfile 将包作为容器构建和执行

git clone https://github.com/ponchio/untrunc.git
cd untrunc
docker build -t untrunc .
docker run -v ~/Desktop/:/files untrunc /files/filea /files/fileb
Run Code Online (Sandbox Code Playgroud)

  • 由于“track.cpp:57:11:致命错误:config.h:没有这样的文件或目录”,提供的存储库中的 Untrunc 无法在 Ubuntu 18.04 中编译。但是这个 fork 确实可以编译。https://github.com/anthwlock/untrunc (2认同)

Ale*_*ade 7

此处提供的解决方案(https://github.com/ponchio/untrunc)解决了我的问题!我将它作为 Docker 容器运行。这是我的步骤:

  • 安装 Docker(以防你还没有安装)

  • 克隆存储库:

      git clone https://github.com/ponchio/untrunc
    
    Run Code Online (Sandbox Code Playgroud)
  • 在 Dockerfile 的同一目录中,运行:

      cd untrunc
      docker build -t untrunc .
    
    Run Code Online (Sandbox Code Playgroud)
  • 这将构建一个本地 docker 镜像——这需要时间。

  • 现在您必须提供来自同一来源的示例文件(在我的情况下是同一台相机)以及您想要修复的损坏文件。例如:

      docker run -v /path/to/files/:/files untrunc /files/working_video /files/broken_video
    
    Run Code Online (Sandbox Code Playgroud)