audio - 如何转换音频并跟踪所有格式的元数据

标签 audio ffmpeg

我的输入是多个 FLAC 和 OGG 文件。
我想将它们全部转换为 mp3。 (脚本进行批量转换,ffmpeg 命令只需要处理一个输入文件)。

我还想保留标签(歌曲艺术家、轨道名称、专辑名称……)。
我当前执行此操作的命令是:

ffmpeg -vn -n -i $INFILE -c:a libmp3lame -q:a 1 -ar 44100 -map_metadata 0:s:0 -id3v2_version 3 $OUTFILE.mp3

现在的问题是:当输入文件是 OGG 文件时它可以工作。但如果输入是 FLAC 文件,它就不起作用。

我还找到了 FLAC 输入文件的命令:
ffmpeg -vn -n -i $INFILE -c:a libmp3lame -q:a 1 -ar 44100 $OUTFILE.mp3

(这是相同的,但没有 map_metadata 选项。所以 FLAC 标签在没有该选项的情况下被复制。但没有它们,它不适用于 OGG 输入文件。并且使用选项它不适用于 FLAC 输入文件。

如何在不需要不同命令的情况下处理两种输入格式并保留两者的标签?

最佳答案

利用

ffmpeg -n -i $INFILE -c:a libmp3lame -q:a 1 -ar 44100 -map_metadata 0 -map_metadata 0:s:0 -id3v2_version 3 -vn $OUTFILE.mp3

这既映射了全局元数据,也映射了流元数据。
-vn属于输出。

关于audio - 如何转换音频并跟踪所有格式的元数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52354427/

相关文章:

ffmpeg连接: "Unsafe file name"

python - subprocess.Popen() 将标准输出写入日志文件

c - FFMPEg 和 gcc 问题

audio - 在关闭声音的情况下嵌入 YouTube

c# - 帮助动态范围压缩功能(音频)

audio - 如何提取音频数据以进行比较?

ios - ios中的音频流持续时间

ffmpeg - 当从相机捕获原始数据并通过管道传输到 ffplay 时,视频会横向移动

c - 如何停止我的 C 游戏中的音频播放?

docker - 为什么只有 Docker 中的 UDP 端口失败?