Command line tool to write flac, ogg vorbis and mp3 id3v2 meta data?
Is there any command line tool that can write all three formats/containers? I've already searched but could not find anything that does the job.
So far I'm using vorbiscomment, metaflac and id3tool and I really would like to replace them by a single tool if possible.
If there is no tool than can write them all, is there at least any suggestion to replace id3tool with something that can write id3v2 (v2.4) tags at least?
I'm not looking for a tagger but for a tool that will allow me to write meta data by a script to the different audio files. My current status is that I have a script that uses the three tools (vorbiscomment, metaflac and id3tool) but then i realized that id3tool can not write id3v2 tags... I'm creating automatically these 3 audio formats from a wav master and need to be able to automate the meta data writing to these files.
Solution 1:
Surprisingly I found a good solution after a month: FFmpeg.
ffmpeg -i out.mp3 -metadata title="The Title You Want" -metadata artist="" -metadata album="Name of the Album" -c:a copy out2.mp3
See the complete article here: How To: Create/Write ID3 tags using ffmpeg
It is even working with UTF8 data and foreign characters.
Solution 2:
libsndfile
will do all that ffmpeg
does and much more elegantly.
For example, when you run $ sndfile-metadata-set --help
, you can see the usage:
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.
Most of the above operations can be done in-place on an existing file. If any operation cannot be performed, the application will exit with an appropriate error message.
Using libsndfile-1.0.25.