使用ffmpeg将.flac转换为.mp3,保留所有元数据
我如何使用ffmpeg将.fla3转换为.mp3 ,保留所有元数据(将.flac文件中的Vorbis注释转换为.mp3的ID3v2元数据)?
以下命令在.mp3(320 kbps)上保持高质量,并将.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,请使用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。
如果你想节省一点空间,试试hydrogenaud.io的build议:
非常高的质量:HiFi,家庭或安静的聆听,最佳文件大小
-V0 (~245 kbps)
-V1 (~225 kbps)
,--V2 (~190 kbps)
-V1 (~225 kbps)
,--V2 (~190 kbps)
或-V3 (~175 kbps)
。 这些VBR设置通常会产生透明的结果。 这些预置声音之间可能存在差异,但是很less见。
资料来源: http : //wiki.hydrogenaud.io/index.php? title= LAME
如果你想在ffmpeg中使用这个选项,你应该使用-q:a 0
别名。
使用
-qscale:a
(或别名-q:a
)控制质量。 值是编码器特定的,所以对于libmp3lame,范围是0-9,其中较低的值是较高的质量。 0-3通常会产生透明结果,4(默认)应接近知觉透明度,6产生“可接受”的质量。 选项-qscale:a
被映射到独立的lame命令行界面工具中的-V
选项。
来源: https : //trac.ffmpeg.org/wiki/Encode/MP3
如果您还想要ID3v1元标记,则应添加-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
我正在testing以下命令将infile.flac
文件转换为outfile.mp3
:
ffmpeg -i infile.flac -q:a 0 outfile.mp3
从Ubuntu 16.04开始,上面的命令似乎复制了(大部分?全部?)元数据。
-q:a 0
告诉ffmpeg
使用最高质量的VBR。
但是, ffmpeg
正在将我的专辑艺术从jpeg
转换为png
,这增加了封面艺术的大小。
Stream mapping: Stream #0:1 -> #0:0 (mjpeg (native) -> png (native)) Stream #0:0 -> #0:1 (flac (native) -> mp3 (libmp3lame))
(我想上面的转换types是有道理的, 因为ffmpeg
是如何工作的 。)
经过一番挖掘,我find了-c:v copy
选项,它指定应该复制videostream而不是转码。 完整的命令是:
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))