使用ffmpeg命令行转换音频文件编码格式,从ogg/flac转到mp3,同时保留音乐标签和封面等元数据
·
Windows下安装ffmpeg
打开终端(管理员):
winget settings --enable ProxyCommandLineOptions
winget install ffmpeg --proxy http://127.0.0.1:7890
ffprobe
ffprobe能够检测输出所给文件的信息:
ffprobe D:\Downloads\xxx.mp3
格式转换
基本命令格式如下,它会将xxx.flac转为码率为320kbps的xxx.mp3文件:
ffmpeg -i xxx.flac -b:a 320k xxx.mp3
默认情况下新版ffmepg也会自动将元数据复制到新文件中(等同于命令行参数-map_metadata 0:g)。但是,有些时候根据源音乐格式的不同,我们可能需要手动指定参数-map_metadata 0:s:0才能转移元数据。
那么如何确定用0:g还是0:s:0呢?这就要看源音乐文件的格式了:

比如上图所示的音乐,可以看到Metadata字段是直接跟在Input后的,所以使用默认参数0:g。

再比如这个音乐,Metadata字段是跟在Stream后的,这时就要指定0:s:0,将第0个输入文件的第0条Stream的Metadata复制到输出文件的全局Metadata中。
此外,对于Windows资源管理器,还需要添加一些兼容选项-id3v2_version 3 -write_id3v1 1才能让它读取到标签。
所以,最终的命令就是(需要根据情况选用-map_metadata的值):
ffmpeg -i "xxx.flac" -b:a 320k -map_metadata 0:g -id3v2_version 3 -write_id3v1 1 xxx.mp3
专辑封面默认也应该是会复制过去的。如果没有或遇到报错,可以尝试指定参数-map 0 -map 1 -c:v copy。
ffmpeg的官方命令行帮助文档,可自行搜索查阅:https://ffmpeg.org/ffmpeg.html
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)