如何使用ffmpeg 将.flac转换为.mp3,保留所有元数据(即将.flac文件中的Vorbis注释转换为.mp3的ID3v2元数据)?
Vit*_*ile 127
以下命令在.mp3(320 kbps)上保持高质量,并且.flac文件中的元数据转换为ID3v2格式,可以包含在.mp3文件中:
ffmpeg -i input.flac -ab 320k -map_metadata 0 -id3v2_version 3 output.mp3
Run Code Online (Sandbox Code Playgroud)
use*_*001 46
上面的完美答案.我使用它与find一起使用此命令将子树中的所有FLAC文件添加到iTunes
find . -name "*.flac" -exec ffmpeg -i {} -ab 160k -map_metadata 0 -id3v2_version 3 {}.mp3 \;
Run Code Online (Sandbox Code Playgroud)
要自动将生成的文件添加到iTunes,请使用iTunes导入目录
find ~/Music/ -name "Automatically Add*"
Run Code Online (Sandbox Code Playgroud)
结果,例如
/Users/sir/Music//iTunes/iTunes Media/Automatically Add to iTunes.localized
Run Code Online (Sandbox Code Playgroud)
然后运行例如
find . -name "*.mp3" -exec mv {} "/Users/sir/Music//iTunes/iTunes Media/Automatically Add to iTunes.localized/" \;
Run Code Online (Sandbox Code Playgroud)
自动将所有转换后的曲目添加到iTunes.
wik*_*tor 13
如果您想节省一点空间,请尝试使用hydrogenaud.io的建议:
质量非常高:高保真音响,家中或安静的听,用最好的文件大小
-V0 (~245 kbps),-V1 (~225 kbps),-V2 (~190 kbps)或-V3 (~175 kbps)建议.这些VBR设置通常会产生透明的结果.这些预设之间可能存在可听见的差异,但很少见.
来源: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映射到-V独立lame命令行界面工具中的选项.
资料来源: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
Run Code Online (Sandbox Code Playgroud)
Ric*_*lpe 11
为了递归地将嵌套文件夹中的所有 flac 文件转换为 mp3,我使用了以下命令:
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"' \;
Run Code Online (Sandbox Code Playgroud)
它将在包含 flac 文件的文件夹内创建一个名为“mp3”的文件夹,并在 mp3 文件夹内以 320kbps 的比特率保存相关的 mp3 文件,而不在名称中保留旧的文件扩展名。
我正在测试以下命令将infile.flac文件转换为outfile.mp3:
ffmpeg -i infile.flac -q:a 0 outfile.mp3
Run Code Online (Sandbox Code Playgroud)
从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))
Run Code Online (Sandbox Code Playgroud)
(我想上面的转换类型是有意义的,因为它是如何ffmpeg工作的.)
经过一番挖掘,我找到了-c:v copy选项,它指定应该复制视频流,而不是转码.完整的命令是:
ffmpeg -i infile.flac -c:v copy -q:a 0 outfile.mp3
Run Code Online (Sandbox Code Playgroud)
以上命令导致:
Stream mapping:
Stream #0:1 -> #0:0 (copy)
Stream #0:0 -> #0:1 (flac (native) -> mp3 (libmp3lame))
Run Code Online (Sandbox Code Playgroud)
小智 5
One-liner 将所有.flac文件转换到.mp3一个目录中,保留大部分元数据:
for file in *.flac; do ffmpeg -i $file -q:a 0 ${file:r}.mp3; done
(注意:${file:r}删除给定文件路径的扩展名)
| 归档时间: |
|
| 查看次数: |
59842 次 |
| 最近记录: |