将无损 m4a 转换为 flac

将无损 m4a 转换为 flac

我尝试使用 转换文件pacpl,但出现了众所周知的“256”错误。使用该-v标志后,pacpl 的常见问题解答告诉我:

“您尝试转换的文件是无损 .m4a 文件。FAAC/FAAD 尚不支持该格式。”

由于 faac/faad 似乎在 Ubuntu 上的每个其他转换工具中使用,我该如何成功转换格式?

答案1

您可以使用 ffmpeg 命令行工具将 m4a 文件转换为 flac:

要安装 ffmpeg:

sudo apt-get install ffmpeg

转换:

ffmpeg -i filein.m4a -f flac fileout.flac

批量转换:

for i in $(find . -type f -name "*.m4a"); do echo "Converting $i to flac"; ffmpeg -i "$i" -c:a flac "${i%.m4a}.flac"; done

答案2

sudo aptitude install libav-tools

for file in *.m4a; do avconv -i "$file" -f flac "`basename "$file" .m4a`.flac"; done

答案3

虽然涉及 ffmpeg/avconv(我认为本质上是相同的工具)的两个答案都有效,但它们目前有一个缺陷。即无损 m4a 通常是 24 位样本,而目前 ffmpeg/avconv 通常会强制转换最终为 16 位样本。

我相信使用 sndfile-convert (libsndfile) 不会出现此问题。同样,我相信可以通过使用 mplayer 解码 m4a 然后再使用 ffmpeg 或 flac 对其进行编码来避免此问题。我认为 KDE 上的 soundKonverter 可以为您做到这一点。

无论如何,无论您做什么,我建议检查原始文件和转换后的文件是否具有相同的样本位深度。

答案4

只需结合其他三个答案的所有有用信息。

要检查 mp4 文件的位深度:

# cd into desired directory then... 
ffprobe -show_streams ./[pick one file to test].m4a | grep -e codec_name -e bits_per_raw_sample 

这应该会在输出的底部显示位深度。

要使用 ffmpeg 并处理文件夹中的所有文件(假设它们不是 24 位(或更高)):

# cd into desired directory then... 
for file in *.m4a ; do ffmpeg -i "$file" -f flac "$( basename "$file" .m4a ).flac" ; done 

希望有所帮助。

相关内容