我尝试使用 转换文件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
希望有所帮助。