使用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))