转换 wav,ape,flac 音乐为 mp3,m4a(mp4) 格式

发布时间:2015-02-25 15:28:32 阅读:1057次

转:http://archboy.org/2012/10/18/convert-ape-flac-music-to-mp3/


有时获取的音乐是 ape 或者 flac 等无损格式,如果你对音质要求不是特别高,为了便于传输以及在多种设备上播放,有时将它们转换为(高码率的) mp3 格式或者m4a(mp4 audio)格式会更方便。下面介绍在 Linux 下将 ape、flac、wav等转换成 mp3 格式的方法。

首先确认系统里有 ffmpeg 或 mac、lame、mp3splt 这几个(命令行)工具,没有的话可以到 arch linux package 搜索并安装他们。对于需要处理 flac 和 m4a 格式,还需要工具:flac 和 faac。

对于一个 ape/flac 文件是一首歌的情况

先将原始音频还原为未压缩的 wave 格式

需要先用 ffmpeg 或者 mac 或者 flac 将它转换成 wav 格式,再用 lame 将 wav 转换成 mp3 格式。

假设要转换的歌曲文件名为 song.ape/song.flac,则命令如下:

$ ffmpeg -i song.ape song.wav

或者

$ mac -d song.ape song.wav

或者

$ flac -d song.flac -o song.wav

这样将会得到一个 song.wav 文件。

然后使用各种编码程序压缩 wave 为 mp3 或者 m4a

使用 lame 命令可以压缩成 mp3:

$ lame -V 0 song.wav (使用 VBR 动态码率压缩,0表示最高质量,默认为4,最低为9

或者

$ lame -b 320 song.wav (使用固定的 320Kbps 码率压缩)

或者,使用 faac 编码可以得到 m4a(mp4)格式文件:

$ faac -w -q 100 song.wav -o song.m4a (100 表示最高质量,如果选择 50 则表示 50% 质量)

当然也可以使用 ffmpeg 压缩得到 m4a 格式:

1
$ ffmpeg -i song.wav -strict experimental -c:a aac -b:a 320k song.m4a (这里使用的是 ffmpeg 内置 aac 编码器,设定码率为固定的 320k。注:ffmpeg 内置的 aac 编码器现在还是体验版,可能会有些问题)

如果编译 ffmpeg 时还包含了其他编码库,比如 libfaac,则可以这样:

$ ffmpeg -i song.wav -c:a libfaac -q:a 100 song.m4a (让 ffmpeg 调用 libfaac 压缩音频,质量设置为 100)
 
$ ffmpeg -i song.wav -c:a libfaac -b:a 320k song.m4a (让 ffmpeg 调用 libfaac 压缩音频,使用固定码率 320k 压缩,注:实际上很少用固定码率压缩 aac)

也可以使用 ffmpeg 将解压和压缩过程简化为一个步骤,命令如下:

$ ffmpeg -i song.flac -ab 320k -map_metadata 0 song.mp3

其中 -map_metadata 表示保留 flac 的元数据(即歌曲名称、演唱者名称等信息)。

批量处理

如果一批 ape 需要转换,最好写一个脚本批量处理,比如:

#!/bin/bash for FILE in *.ape; do ffmpeg -i "$FILE" temp.wav; lame -b 320 temp.wav "${FILE%.*}.mp3"; rm temp.wav done

如果是一批 flac 文件并且想保留元数据,则脚本为:

#!/bin/bash for FILE in *.flac; do ffmpeg -i "$FILE" -ab 320k -map_metadata 0 "${FILE%.*}.mp3"; done

 

对于一个 ape/flac 文件是包含多首歌的情况

通常这种情况下你还会有一个 cue 文件,cue 文件包含有这个 ape/flac 文件的专辑名、演唱者名称、还有每首歌曲的名称和时间范围。我们用上面的方法将 ape/flac 文件整个转换为 mp3 格式之后,再用 mp3splt 工具来分割即可。

注:有时我们获取的 cue 文件可能包含有中文,为了避免出现乱码,可以先查看里面的内容看看是否可以正常阅读,否则可以把文件扩展名更改为 txt 然后拖入 firefox 浏览器然后尝试更改各种编码格式直到正常阅读(中文的使用 gb2312 或者 big5 编码为多),然后把可正常阅读的内容复制下来并替换文件原先的内容,再把文件扩展名更改为 cue即可。

根据 cue 文件分割 mp3 的命令如下:

$ mp3splt -c song.cue -o @n.@t song.mp3

其中的参数 @n.@t 表示输出的文件名的格式,常用的有下列几个代替符:

  • @a: 歌手名称
  • @b: 专辑名称
  • @t: 歌曲标题
  • @n: 音轨序号

然后就会得到一系列的 mp3 文件。这个方法同时也适合 flac 格式。

最后,如果你不想敲命令的话,还可以使用免费开源的图形界面的工具 soundconverter,只要安装好 GStreamer 插件,它几乎支持所有音频格式。

参考资料:
  • FFmpeg and AAC Encoding Guide https://trac.ffmpeg.org/wiki/Encode/AAC
  • 其他程序比如 faac 、flac和 lame,因为比较简单,可以直接查看他们的 manual: $ man faac 或者 $man lame
 本站文章采用 CC BY-NC-ND 授权协议,转载时请保留署名和本文链接,谢谢!From ArchBoy, post 转换 wav,ape,flac 音乐为 mp3,m4a(mp4) 格式
ad:稳定靠谱的虚拟主机(VPS)提供商 Linode,点击这个链接了解一下吧~


如有问题,可以QQ搜索群1028468525加入群聊,欢迎一起研究技术

支付宝 微信

有疑问联系站长,请联系QQ:QQ咨询

转载请注明:转换 wav,ape,flac 音乐为 mp3,m4a(mp4) 格式 出自老鄢博客 | 欢迎分享