如何使用 ffmpeg 转换 .flc 到.mp3,同时保留所有元数据(即在。的 ID3v2元数据的 flac 文件。MP3) ?
以下命令保持高质量。Mp3(320kbps) ,以及来自。Flac 文件转换为 ID3v2格式,可以包含在。Mp3档案:
ffmpeg -i input.flac -ab 320k -map_metadata 0 -id3v2_version 3 output.mp3
完美的答案在上面。我使用这个命令将它和 find 一起添加子树中的所有 FLAC 文件到 iTunes
find . -name "*.flac" -exec ffmpeg -i {} -ab 160k -map_metadata 0 -id3v2_version 3 {}.mp3 \;
要自动将生成的文件添加到 iTunes,请使用
find ~/Music/ -name "Automatically Add*"
结果。
/Users/sir/Music//iTunes/iTunes Media/Automatically Add to iTunes.localized
然后运行例如。
find . -name "*.mp3" -exec mv {} "/Users/sir/Music//iTunes/iTunes Media/Automatically Add to iTunes.localized/" \;
自动将所有转换后的曲目添加到 iTunes。
如果你想节省一点空间,试试 氢声的建议:
非常高的质量: HiFi,家庭,或安静的听,以最好的文件大小 建议使用 -V0 (~245 kbps)、 -V1 (~225 kbps)、 -V2 (~190 kbps)或 -V3 (~175 kbps)。 这些 VBR 设置通常会产生透明的结果。这些预置之间可能存在听觉差异,但很少。
-V0 (~245 kbps)
-V1 (~225 kbps)
-V2 (~190 kbps)
-V3 (~175 kbps)
资料来源: http://wiki.hydrogenaud.io/index.php?title=LAME
如果希望在 ffmpeg 中使用此选项,则应使用 -q:a 0别名。
-q:a 0
用 -qscale:a(或别名 -q:a)控制质量。值是特定于编码器的,因此对于 libmp3lam,范围是0-9,其中较低的值是较高的质量。0-3通常会产生透明的结果,4(默认)应该接近感知透明,6产生一个“可接受”的质量。在独立的跛脚命令行界面工具中,选项 -qscale:a被映射到选项 -V。
-qscale:a
-q:a
-V
资料来源: https://trac.ffmpeg.org/wiki/Encode/MP3
如果您也想要 ID3v1元标签,您应该添加 -write_id3v1 1参数。
-write_id3v1 1
所以我最后的命令是:
ffmpeg.exe -y -i input.flac -codec:a libmp3lame -q:a 0 -map_metadata 0 -id3v2_version 3 -write_id3v1 1 output.mp3
我正在测试以下命令将 infile.flac文件转换为 outfile.mp3:
infile.flac
outfile.mp3
ffmpeg -i infile.flac -q:a 0 outfile.mp3
从 Ubuntu 16.04开始,上面的命令似乎复制了元数据(大部分? 全部?)。
-q:a 0告诉 ffmpeg使用最高质量的 VBR。
ffmpeg
然而,ffmpeg是转码我的专辑艺术从 jpeg到 png,这增加了封面艺术的大小。
jpeg
png
Stream mapping: Stream #0:1 -> #0:0 (mjpeg (native) -> png (native)) Stream #0:0 -> #0:1 (flac (native) -> mp3 (libmp3lame))
(我想上面的转换是有意义的 考虑到 ffmpeg的工作原理。)
深入研究之后,我找到了 -c:v copy选项,它指定应该复制视频流,而不是转码。完整的命令是:
-c:v copy
ffmpeg -i infile.flac -c:v copy -q:a 0 outfile.mp3
上述命令的结果是:
Stream mapping: Stream #0:1 -> #0:0 (copy) Stream #0:0 -> #0:1 (flac (native) -> mp3 (libmp3lame))
我知道这并没有被要求,但考虑到这样做的原因之一(至少这是我想做的)是为了音乐可以导入到苹果 iTunes,而不支持 FLAC。在这种情况下,将 FLAC 转换成苹果自己的无损格式 m4a 更有意义。我使用此命令转换当前文件夹中的所有文件,同时保留相似的文件大小。
find . -name "*.flac" -exec ffmpeg -i {} -map_metadata 0 -acodec alac {}.m4a \;
要在 mp3中递归地转换嵌套文件夹中的所有 flac 文件,我使用以下命令:
find '~/Music/' -iname '*.flac' -exec bash -c 'D=$(dirname "{}"); B=$(basename "{}"); mkdir "$D/mp3/"; ffmpeg -i "{}" -ab 320k -map_metadata 0 -id3v2_version 3 -acodec libmp3lame "$D/mp3/${B%.*}.mp3"' \;
它会在一个包含 flac 文件的文件夹中创建一个名为“ mp3”的文件夹,在 mp3文件夹中,它会以320kbps 的比特率保存相关的 mp3文件,而不会在名称中保留旧的文件扩展名。
一行程序将所有 .flac文件转换为单个目录中的 .mp3,同时保持 大部分元数据:
.flac
.mp3
for file in *.flac; do ffmpeg -i $file -q:a 0 ${file:r}.mp3; done
(注意: ${file:r}删除给定文件路径的扩展名)
${file:r}
这个 Flac2mp3.sh脚本使用 ffmpeg将 FLAC 文件的文件夹树转换成另一个 MP3文件的文件夹树。包括封面艺术,当存在。可以设置 CORES变量来创建后台作业,以便一次转换多个文件。
CORES