我今年一直在学校电脑上使用 Ubuntu,我通常会记录我不能希望跟上教授的讲座,我有权这样做。我一直在使用可以安装的默认录音机,sudo apt-get install audio-recorder
因为它最容易使用。在学期的早些时候,他们的录音很好。但是现在,一旦录制完成,它们就会损坏。它们采用 .m4a 格式。
我尝试了很多教程,包括编辑录音的十六进制数据,没有运气。我不知道录音从哪里开始,因为当我尝试制作新录音时,它一开始就损坏了。我曾尝试使用 ffmpeg 来获取此错误,moov atom not found
查找该错误无助于解决问题。或者我收到一条错误消息protocol not found. Did you mean in.m4a?
,指出我输入正确的文件名。ffmpeg 返回“未找到协议”错误。然后它说你是说我确实放入的文件吗? Faad 返回此错误:Unable to find correct AAC sound track in the MP4 file.
另外我尝试了mp4 修复服务,它可以正常工作,因此文件应该能够被修复。但它要花 86 美元,而且我需要修复 6 个录音。
我已尝试卸载并重新安装受限编解码器。
任何帮助将不胜感激。
请参阅此处,位于页面底部。
如果需要,安装 faad
sudo apt install faad
dd ibs=1 skip=44 if=yourfilename.m4a of=raw.m4a
faad -a newname.m4a raw.m4a
所有功劳归于我指向的链接的作者,因为我不知道我在做什么,但我在你更大的文件上测试了它,它可以工作。第一个命令需要一些时间。要有耐心。在 ubuntu 16.04 上试过。
正如评论中所指出的,结果可以在 VLC 中打开,但不能在 Audacious 中打开。但是我们可以使用 vlc 对其进行转码,或者将其重写为另一种格式。下面的脚本将当前目录中的所有 *.m4a 文件转换为 *.mp3。
#!/bin/bash
这可行,但 dd 中使用的值并不适合每种情况。这里原帖的作者解释了原因: 这个解决方案的原帖
基本上,您通过使用 dd 跳过 44 个字节来剥离文件的标题,但该值因文件而异,就像我发生的那样。
解决方案是使用十六进制编辑器(我建议使用损坏文件的副本)并删除从“mdat”一词的开头到结尾的所有内容。在我的情况下,它是 28 个字节而不是 44 个。
我在 mac 上使用 0xED 作为十六进制编辑器(在撰写本文时,它是免费的并且可以在最新的 mac OS Mojave 上运行)。此外,对于 mac,您可以通过运行使用 Homebrew 安装 faad
如果在使用 faad 和开关 -s 时与 44,100Hz 不同,您可能需要指定文件采样率
如果 faad 返回此错误
Error: Maximum number of bitstream elements exceeded
,则可能意味着您从文件开头删除了太多字节,就像我一开始发生的那样。最后,一旦您使用 faad 处理原始文件,您将需要重新编码 m4a 文件以确保您拥有正确且兼容的文件,这可以使用 ffmpeg 轻松完成