摘要:用手机录音机录制 m4a 文件时,如果手机没电关机,录音文件未成功写入导致无法播放时:
仅针对我遇到的这种情况,不保证其他情况也能修复。
用手机录音机录制 m4a 文件时,如果手机没电关机,录音文件未成功写入导致无法播放时:
第一步:找到源文件,查看体积大小是否正常:
第二步:用相同设备、相同参数,再录制一段正常的文件。
第三步:访问 Repair M4A: Fix Damaged M4A Audio ,上传需要修复的文件,并选择 Have Reference Audio,然后选择一段能正常播放的音频:
第四步:点击 Convert,等待修复成功。
如果音频内容敏感,不能上传到在线工具,可以使用开源工具 ponchio/untrunc: Restore a damaged (truncated) mp4, m4v, mov, 3gp video. Provided you have a similar not broken video.
该工具需要在 Linux 下自行编译,所以推荐使用 Docker 运行。
git clone --recurse-submodules https://github.com/ponchio/untruncdocker build -t untrunc .docker image prune --filter label=stage=intermediate -fDocker 构建成功后,使用以下命令修复音频文件:
docker run --rm \ -v "$HOME/Downloads:/mnt" \-w /mnt \untrunc \/mnt/reference.m4a /mnt/broken.m4a $HOME/Downloads:存放文件的路径 reference.m4a:用于参考的、能正常播放的音频文件 broken.m4a:需要修复的音频文件注:untrunc 主要用于修复 mp4 文件,如有类似情况的视频,也可以用相同方式尝试修复。
仅针对断电/异常退出导致的录制失败:
播放器依赖moov解析 m4a 音频参数(如AAC帧大小、采样率等),断电是,只有(音频数据流)被写入, moov (元数据索引)缺失。所以需要提供参考文件来确定帧边界(参考文件的编码配置必须与损坏文件一致)。
moov 信息,计算并重建损坏文件的索引信息,重新写入后即可修复成功。来源:博识雅士一点号