是否有任何命令行工具可以写入所有三种格式/容器?我已经搜索过了,但找不到任何可以完成这项工作的东西。
到目前为止,我正在使用 vorbiscomment、metaflac 和 id3tool,如果可能的话,我真的很想用一个工具来取代它们。
如果没有工具可以写入所有这些,是否至少有建议用可以写入 id3v2 (v2.4) 标签的工具来替换 id3tool?
我不是在寻找一个标记者但对于一个允许我通过脚本将元数据写入不同音频文件的工具来说,我目前的状态是,我有一个使用这三个工具(vorbiscomment、metaflac 和 id3tool)的脚本,但后来我意识到 id3tool 无法写入 id3v2 标签...我正在从 wav master 自动创建这 3 种音频格式,并且需要能够自动将元数据写入这些文件。
答案1
令人惊讶的是,一个月后我找到了一个很好的解决方案:FFmpeg。
ffmpeg -i out.mp3 -metadata title="The Title You Want" -metadata artist="" -metadata album="Name of the Album" -c:a copy out2.mp3
完整文章请见此处:如何:使用 ffmpeg 创建/写入 ID3 标签
它甚至可以处理 UTF8 数据和外来字符。
答案2
libsndfile
将会完成所有的事情ffmpeg
并且更加优雅。
例如,当你运行 时$ sndfile-metadata-set --help
,你可以看到用法:
sndfile-metadata-set [options] <file>
sndfile-metadata-set [options] <input file> <output file>
Where an option is made up of a pair of a field to set (one of
the 'bext' or metadata fields below) and a string. Fields are
as follows :
--bext-description Set the 'bext' description.
--bext-originator Set the 'bext' originator.
--bext-orig-ref Set the 'bext' originator reference.
--bext-umid Set the 'bext' UMID.
--bext-orig-date Set the 'bext' origination date.
--bext-orig-time Set the 'bext' origination time.
--bext-coding-hist Set the 'bext' coding history.
--bext-time-raf Set the 'bext' Time ref.
--str-comment Set the metadata comment.
--str-title Set the metadata title.
--str-copyright Set the metadata copyright.
--str-artist Set the metadata artist.
--str-date Set the metadata date.
--str-album Set the metadata album.
--str-license Set the metadata license.
There are also the following arguments which do not take a
parameter :
--bext-auto-time-date Set the 'bext' time and date to current time/date.
--bext-auto-time Set the 'bext' time to current time.
--bext-auto-date Set the 'bext' date to current date.
--str-auto-date Set the metadata date to current date.
上述大多数操作都可以在现有文件上就地完成。如果任何操作无法执行,应用程序将退出并显示相应的错误消息。
使用 libsndfile-1.0.25。
答案3
这对我有用:
如果相关的话,它可以在 Debian 仓库中使用。
-- 等一下,这是“标记器”的示例吗?这不是您要找的吗?那么,恐怕我不太明白您的问题。
答案4
标记工具是一个用于读取/写入音频标签的轻量级 CLI 工具
Backends:
libvorbis: Ogg/Vorbis files format
TagLib: various file format but limited set of tags
在 Bash 脚本中使用示例:
#! /usr/bin/env bash
# tagutil demo: fix title
# license: public domain, no warranty
set -e
# check dependencies
for dep in tagutil jq
do
command -v $dep || { echo please install $dep; exit 1; }
done
dryrun=false
if [[ "$1" == "-n" ]]
then
dryrun=true
shift
fi
for file in "$@"
do
echo "file: $file"
# read title
title=$(tagutil -F json print "$file" | jq -r ".[0].title")
title1="$title" # copy
echo "title 1: $title"
# fix title
title=$(echo $title) # collapse multiple whitespaces
title=$(echo "$title" | sed 's/ (original version)$//i') # remove suffix
title=$(echo "$title" | sed 's/ (album version)$//i') # remove suffix
title=$(echo "$title" | sed 's/ (official video)$//i') # remove suffix
if [[ "$title1" == "$title" ]]
then
echo no change
continue
fi
echo "title 2: $title"
drycmd=()
$dryrun && drycmd=(printf "%q ")
# make backup
#[ -e "$file.bak" ] || cp -v "$file" "$file.bak"
# write title
${drycmd[@]} tagutil set:title="$title" "$file"
done