.\" This manpage has been automatically generated by docbook2man 
.\" from a DocBook document.  This tool can be found at:
.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/> 
.\" Please send any bug reports, improvements, comments, patches, 
.\" etc. to Steve Cheng <steve@ggi-project.org>.
.TH "METAFLAC" "1" "17 November 2006" "" ""

.SH NAME
metaflac \- program to list, add, remove, or edit metadata in one or more FLAC files.
.SH SYNOPSIS

\fBmetaflac\fR [ \fB\fIoptions\fB\fR ] [ \fB\fIoperations\fB\fR ] \fB\fIFLACfile\fB\fR\fI ...\fR

.SH "DESCRIPTION"
.PP
Use \fBmetaflac\fR to list, add, remove, or edit
metadata in one or more FLAC files.  You may perform one major operation,
or many shorthand operations at a time.
.SH "OPTIONS"
.TP
\fB--preserve-modtime\fR
Preserve the original modification time in spite of edits.
.TP
\fB--with-filename\fR
Prefix each output line with the FLAC file name (the default if
more than one FLAC file is specified).
.TP
\fB--no-filename\fR
Do not prefix each output line with the FLAC file name (the default
if only one FLAC file is specified).
.TP
\fB--no-utf8-convert\fR
Do not convert tags from UTF-8 to local charset, or vice versa. This is
useful for scripts.
.TP
\fB--dont-use-padding\fR
By default metaflac tries to use padding where possible to avoid
rewriting the entire file if the metadata size changes.  Use this
option to tell metaflac to not take advantage of padding this way.
.SH "SHORTHAND OPERATIONS"
.TP
\fB--show-md5sum\fR
Show the MD5 signature from the STREAMINFO block.
.TP
\fB--show-min-blocksize\fR
Show the minimum block size from the STREAMINFO block.
.TP
\fB--show-max-blocksize\fR
Show the maximum block size from the STREAMINFO block.
.TP
\fB--show-min-framesize\fR
Show the minimum frame size from the STREAMINFO block.
.TP
\fB--show-max-framesize\fR
Show the maximum frame size from the STREAMINFO block.
.TP
\fB--show-sample-rate\fR
Show the sample rate from the STREAMINFO block.
.TP
\fB--show-channels\fR
Show the number of channels from the STREAMINFO block.
.TP
\fB--show-bps\fR
Show the # of bits per sample from the STREAMINFO block.
.TP
\fB--show-total-samples\fR
Show the total # of samples from the STREAMINFO block.
.TP
\fB--show-vendor-tag\fR
Show the vendor string from the VORBIS_COMMENT block.
.TP
\fB--show-tag=name\fR
Show all tags where the the field name matches 'name'.
.TP
\fB--remove-tag=name\fR
Remove all tags whose field name is 'name'.
.TP
\fB--remove-first-tag=name\fR
Remove first tag whose field name is 'name'.
.TP
\fB--remove-all-tags\fR
Remove all tags, leaving only the vendor string.
.TP
\fB--set-tag=field\fR
Add a tag.  The field must comply with the
Vorbis comment spec, of the form "NAME=VALUE".  If there is
currently no tag block, one will be created.
.TP
\fB--set-tag-from-file=field\fR
Like --set-tag, except the VALUE is a filename whose
contents will be read verbatim to set the tag value.
Unless --no-utf8-convert is specified, the contents will be
converted to UTF-8 from the local charset.  This can be used
to store a cuesheet in a tag (e.g.
--set-tag-from-file="CUESHEET=image.cue").  Do not try to
store binary data in tag fields!  Use APPLICATION blocks for
that.
.TP
\fB--import-tags-from=file\fR
Import tags from a file.  Use '-' for stdin.  Each
line should be of the form NAME=VALUE.  Multi-line comments
are currently not supported.  Specify --remove-all-tags and/or
--no-utf8-convert before --import-tags-from if necessary.  If
FILE is '-' (stdin), only one FLAC file may be specified.
.TP
\fB--export-tags-to=file\fR
Export tags to a file.  Use '-' for stdout.  Each
line will be of the form NAME=VALUE.  Specify
--no-utf8-convert if necessary.
.TP
\fB--import-cuesheet-from=file\fR
Import a cuesheet from a file.  Use '-' for stdin.  Only one
FLAC file may be specified.  A seekpoint will be added for each
index point in the cuesheet to the SEEKTABLE unless
--no-cued-seekpoints is specified.
.TP
\fB--export-cuesheet-to=file\fR
Export CUESHEET block to a cuesheet file, suitable for use by
CD authoring software.  Use '-' for stdout.  Only one FLAC file
may be specified on the command line.
.TP
\fB--import-picture-from=\fISPECIFICATION\fB\fR
Import a picture and store it in a PICTURE metadata block.  More than one --import-picture-from command can be specified.  The SPECIFICATION is a string whose parts are separated by | (pipe) characters.  Some parts may be left empty to invoke default values.  The format of SPECIFICATION is

[TYPE]|MIME-TYPE|[DESCRIPTION]|[WIDTHxHEIGHTxDEPTH[/COLORS]]|FILE

TYPE is optional; it is a number from one of:

0: Other

1: 32x32 pixels 'file icon' (PNG only)

2: Other file icon

3: Cover (front)

4: Cover (back)

5: Leaflet page

6: Media (e.g. label side of CD)

7: Lead artist/lead performer/soloist

8: Artist/performer

9: Conductor

10: Band/Orchestra

11: Composer

12: Lyricist/text writer

13: Recording Location

14: During recording

15: During performance

16: Movie/video screen capture

17: A bright coloured fish

18: Illustration

19: Band/artist logotype

20: Publisher/Studio logotype

The default is 3 (front cover).  There may only be one picture each of type 1 and 2 in a file.

MIME-TYPE is mandatory; for best compatibility with players, use pictures with MIME type image/jpeg or image/png.  The MIME type can also be --> to mean that FILE is actually a URL to an image, though this use is discouraged.

DESCRIPTION is optional; the default is an empty string.

The next part specfies the resolution and color information.  If the MIME-TYPE is image/jpeg, image/png, or image/gif, you can usually leave this empty and they can be detected from the file.  Otherwise, you must specify the width in pixels, height in pixels, and color depth in bits-per-pixel.  If the image has indexed colors you should also specify the number of colors used.  When manually specified, it is not checked against the file for accuracy.

FILE is the path to the picture file to be imported, or the URL if MIME type is -->

For example, "|image/jpeg|||../cover.jpg" will embed the JPEG file at ../cover.jpg, defaulting to type 3 (front cover) and an empty description.  The resolution and color info will be retrieved from the file itself.

The specification "4|-->|CD|320x300x24/173|http://blah.blah/backcover.tiff" will embed the given URL, with type 4 (back cover), description "CD", and a manually specified resolution of 320x300, 24 bits-per-pixel, and 173 colors.  The file at the URL will not be fetched; the URL itself is stored in the PICTURE metadata block.
.TP
\fB--export-picture-to=file\fR
Export PICTURE block to a file.  Use '-' for stdout.  Only one FLAC file may be specified on the command line.  The first PICTURE block will be exported unless --export-picture-to is preceded by a --block-number=# option to specify the exact metadata block to extract.  Note that the block number is the one shown by --list.
.TP
\fB--add-replay-gain\fR
Calculates the title and album gains/peaks of the given FLAC
files as if all the files were part of one album, then stores
them in the VORBIS_COMMENT block.  The tags are the same as
those used by vorbisgain.  Existing ReplayGain tags will be
replaced.  If only one FLAC file is given, the album and title
gains will be the same.  Since this operation requires two
passes, it is always executed last, after all other operations
have been completed and written to disk.  All FLAC files
specified must have the same resolution, sample rate, and
number of channels.  The sample rate must be one of 8, 11.025,
12, 16, 22.05, 24, 32, 44.1, or 48 kHz.
.TP
\fB--remove-replay-gain\fR
Removes the ReplayGain tags.
.TP
\fB--add-seekpoint={\fI#\fB|\fIX\fB|\fI#x\fB|\fI#s\fB}\fR
Add seek points to a SEEKTABLE block.  Using #, a seek point at
that sample number is added.  Using X, a placeholder point is
added at the end of a the table.  Using #x, # evenly spaced seek
points will be added, the first being at sample 0.  Using #s, a
seekpoint will be added every # seconds (# does not have to be a
whole number; it can be, for example, 9.5, meaning a seekpoint
every 9.5 seconds).  If no SEEKTABLE block exists, one will be
created.  If one already exists, points will be added to the
existing table, and any duplicates will be turned into placeholder
points.  You may use many --add-seekpoint options; the resulting
SEEKTABLE will be the unique-ified union of all such values.
Example: --add-seekpoint=100x --add-seekpoint=3.5s will add 100
evenly spaced seekpoints and a seekpoint every 3.5 seconds.
.TP
\fB--add-padding=length\fR
Add a padding block of the given length (in bytes).  The overall
length of the new block will be 4 + length; the extra 4 bytes is
for the metadata block header.
.SH "MAJOR OPERATIONS"
.TP
\fB--list\fR
List the contents of one or more metadata blocks to stdout.  By
default, all metadata blocks are listed in text format.  Use the
following options to change this behavior:
.RS
.TP
\fB--block-number=#[,#[...]]\fR
An optional comma-separated list of block numbers to display.
The first block, the STREAMINFO block, is block 0.
.TP
\fB--block-type=type[,type[...]]\fR
.TP
\fB--except-block-type=type[,type[...]]\fR
An optional comma-separated list of block types to be included
or ignored with this option.  Use only one of --block-type or
--except-block-type.  The valid block types are: STREAMINFO,
PADDING, APPLICATION, SEEKTABLE, VORBIS_COMMENT.  You may
narrow down the types of APPLICATION blocks displayed as
follows:

APPLICATION:abcd        The APPLICATION block(s) whose textual repre-
sentation of the 4-byte ID is "abcd"
APPLICATION:0xXXXXXXXX  The APPLICATION block(s) whose hexadecimal big-
endian representation of the 4-byte ID is
"0xXXXXXXXX".  For the example "abcd" above the
hexadecimal equivalalent is 0x61626364
.sp
.RS
.B "Note:"
if both --block-number and --[except-]block-type are
specified, the result is the logical AND of both
arguments.
.RE
.TP
\fB--application-data-format=hexdump|text\fR
If the application block you are displaying contains binary
data but your --data-format=text, you can display a hex dump
of the application data contents instead using
--application-data-format=hexdump.
.RE
.TP
\fB--remove\fR
Remove one or more metadata blocks from the metadata.  Unless
--dont-use-padding is specified, the blocks will be replaced with
padding.  You may not remove the STREAMINFO block.
.RS
.TP
\fB--block-number=#[,#[...]]\fR
.TP
\fB--block-type=type[,type[...]]\fR
.TP
\fB--except-block-type=type[,type[...]]\fR
See --list above for usage.
.sp
.RS
.B "Note:"
if both --block-number and --[except-]block-type are
specified, the result is the logical AND of both arguments.
.RE
.RE
.TP
\fB--remove-all\fR
Remove all metadata blocks (except the STREAMINFO block) from the
metadata.  Unless --dont-use-padding is specified, the blocks will
be replaced with padding.
.TP
\fB--merge-padding\fR
Merge adjacent PADDING blocks into single blocks.
.TP
\fB--sort-padding\fR
Move all PADDING blocks to the end of the metadata and merge them
into a single block.
.SH "SEE ALSO"
.PP
flac(1).
