421 lines
13 KiB
Groff
421 lines
13 KiB
Groff
.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28)
|
|
.\"
|
|
.\" Standard preamble:
|
|
.\" ========================================================================
|
|
.de Sp \" Vertical space (when we can't use .PP)
|
|
.if t .sp .5v
|
|
.if n .sp
|
|
..
|
|
.de Vb \" Begin verbatim text
|
|
.ft CW
|
|
.nf
|
|
.ne \\$1
|
|
..
|
|
.de Ve \" End verbatim text
|
|
.ft R
|
|
.fi
|
|
..
|
|
.\" Set up some character translations and predefined strings. \*(-- will
|
|
.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
|
|
.\" double quote, and \*(R" will give a right double quote. \*(C+ will
|
|
.\" give a nicer C++. Capital omega is used to do unbreakable dashes and
|
|
.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
|
|
.\" nothing in troff, for use with C<>.
|
|
.tr \(*W-
|
|
.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
|
|
.ie n \{\
|
|
. ds -- \(*W-
|
|
. ds PI pi
|
|
. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
|
|
. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
|
|
. ds L" ""
|
|
. ds R" ""
|
|
. ds C` ""
|
|
. ds C' ""
|
|
'br\}
|
|
.el\{\
|
|
. ds -- \|\(em\|
|
|
. ds PI \(*p
|
|
. ds L" ``
|
|
. ds R" ''
|
|
. ds C`
|
|
. ds C'
|
|
'br\}
|
|
.\"
|
|
.\" Escape single quotes in literal strings from groff's Unicode transform.
|
|
.ie \n(.g .ds Aq \(aq
|
|
.el .ds Aq '
|
|
.\"
|
|
.\" If the F register is turned on, we'll generate index entries on stderr for
|
|
.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
|
|
.\" entries marked with X<> in POD. Of course, you'll have to process the
|
|
.\" output yourself in some meaningful fashion.
|
|
.\"
|
|
.\" Avoid warning from groff about undefined register 'F'.
|
|
.de IX
|
|
..
|
|
.nr rF 0
|
|
.if \n(.g .if rF .nr rF 1
|
|
.if (\n(rF:(\n(.g==0)) \{
|
|
. if \nF \{
|
|
. de IX
|
|
. tm Index:\\$1\t\\n%\t"\\$2"
|
|
..
|
|
. if !\nF==2 \{
|
|
. nr % 0
|
|
. nr F 2
|
|
. \}
|
|
. \}
|
|
.\}
|
|
.rr rF
|
|
.\"
|
|
.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
|
|
.\" Fear. Run. Save yourself. No user-serviceable parts.
|
|
. \" fudge factors for nroff and troff
|
|
.if n \{\
|
|
. ds #H 0
|
|
. ds #V .8m
|
|
. ds #F .3m
|
|
. ds #[ \f1
|
|
. ds #] \fP
|
|
.\}
|
|
.if t \{\
|
|
. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
|
|
. ds #V .6m
|
|
. ds #F 0
|
|
. ds #[ \&
|
|
. ds #] \&
|
|
.\}
|
|
. \" simple accents for nroff and troff
|
|
.if n \{\
|
|
. ds ' \&
|
|
. ds ` \&
|
|
. ds ^ \&
|
|
. ds , \&
|
|
. ds ~ ~
|
|
. ds /
|
|
.\}
|
|
.if t \{\
|
|
. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
|
|
. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
|
|
. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
|
|
. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
|
|
. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
|
|
. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
|
|
.\}
|
|
. \" troff and (daisy-wheel) nroff accents
|
|
.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
|
|
.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
|
|
.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
|
|
.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
|
|
.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
|
|
.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
|
|
.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
|
|
.ds ae a\h'-(\w'a'u*4/10)'e
|
|
.ds Ae A\h'-(\w'A'u*4/10)'E
|
|
. \" corrections for vroff
|
|
.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
|
|
.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
|
|
. \" for low resolution devices (crt and lpr)
|
|
.if \n(.H>23 .if \n(.V>19 \
|
|
\{\
|
|
. ds : e
|
|
. ds 8 ss
|
|
. ds o a
|
|
. ds d- d\h'-1'\(ga
|
|
. ds D- D\h'-1'\(hy
|
|
. ds th \o'bp'
|
|
. ds Th \o'LP'
|
|
. ds ae ae
|
|
. ds Ae AE
|
|
.\}
|
|
.rm #[ #] #H #V #F C
|
|
.\" ========================================================================
|
|
.\"
|
|
.IX Title "MP3VAL 1"
|
|
.TH MP3VAL 1 "2014-09-22" "0.1.8" "SlackBuilds.org"
|
|
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
|
|
.\" way too many mistakes in technical documents.
|
|
.if n .ad l
|
|
.nh
|
|
.SH "MP3val 0.1.8: Documentation"
|
|
.IX Header "MP3val 0.1.8: Documentation"
|
|
.IP "1. Introduction" 4
|
|
.IX Item "1. Introduction"
|
|
.PD 0
|
|
.IP "2. Why to use it?" 4
|
|
.IX Item "2. Why to use it?"
|
|
.IP "3. How to use it?" 4
|
|
.IX Item "3. How to use it?"
|
|
.IP "4. Interpreting the output" 4
|
|
.IX Item "4. Interpreting the output"
|
|
.IP "5. Licensing and copyright" 4
|
|
.IX Item "5. Licensing and copyright"
|
|
.PD
|
|
.SS "1. Introduction."
|
|
.IX Subsection "1. Introduction."
|
|
MP3val is a small, high-speed tool for \s-1MPEG\s0 audio files validation and
|
|
(optionally) fixing problems. It was primarily designed for
|
|
verification of \s-1MPEG 1\s0 Layer \s-1III \s0(\s-1MP3\s0) files, but supports also other
|
|
\&\s-1MPEG\s0 versions and layers. It can be useful for finding corrupted files
|
|
(e.g. incompletely downloaded).
|
|
.PP
|
|
MP3val supports:
|
|
.IP "\(bu" 4
|
|
\&\s-1MPEG\-1, 2, 2.5\s0; Layers I, \s-1II, III\s0
|
|
.IP "\(bu" 4
|
|
ID3v1 tags (must be at the very end of the file)
|
|
.IP "\(bu" 4
|
|
ID3v2 tags (must be at the very beginning of the file)
|
|
.IP "\(bu" 4
|
|
APEv2 tags
|
|
.PP
|
|
This program can be compiled both for Windows and major Unix systems.
|
|
.PP
|
|
This program is free software; you can redistribute it and/or modify it
|
|
under the terms of the \s-1GNU\s0 General Public License as published by the
|
|
Free Software Foundation; either version 2 of the License, or (at your
|
|
option) any later version.
|
|
.PP
|
|
The latest version of MP3val (including sources) can be downloaded from
|
|
the official home page.
|
|
.SS "2. Why to use it?"
|
|
.IX Subsection "2. Why to use it?"
|
|
\&\s-1MPEG\s0 is a streamable format, that is, it is optimized for quick and
|
|
easy recovery from errors. \s-1MP3\s0 decoders are very tolerant to
|
|
inconsistencies in the input file. Most players even don't report to
|
|
user about stream errors. So, as a rule, user doesn't know whether his
|
|
files are valid or broken. But using broken files can eventually lead
|
|
to problems during playback on certain software/hardware.
|
|
.PP
|
|
MP3val can assure you that your files are consistent in the terms of
|
|
\&\s-1MPEG\s0 frames, that is, it ensures that the file can be easily split into
|
|
the frames and doesn't contain garbage. It checks also some other
|
|
issues, such as track length stored in the \s-1VBR\s0 header. Checking by
|
|
MP3val isn't a full test for compliance with existing formal and
|
|
informal standards. MP3val neither decodes audio data nor checks for
|
|
data validity in the frame.
|
|
.PP
|
|
MP3val can also fix most of the problems. Be careful: although MP3val
|
|
can repair even files with \s-1MPEG\s0 stream errors, it is recommended that
|
|
you find a \*(L"good\*(R" copy of this file, because a \*(L"click\*(R" sound usually
|
|
can't be removed, the repaired file will only look like good.
|
|
.SS "3. How to use it?"
|
|
.IX Subsection "3. How to use it?"
|
|
MP3val is a console program. Command-line syntax:
|
|
.PP
|
|
.Vb 1
|
|
\& mp3val <files to validate> <options>
|
|
.Ve
|
|
.PP
|
|
\&\fI<files to validate>\fR \- \s-1MPEG\s0 audio file(s) name(s). Can
|
|
contain wildcards.
|
|
.PP
|
|
\&\fIOptions\fR:
|
|
.PP
|
|
\&\fBOption\fR
|
|
.PP
|
|
\&\fBDescription\fR
|
|
.PP
|
|
\&\-l\fI<log file>\fR
|
|
.PP
|
|
Log file name. If this argument is missing, all the information will be
|
|
written to stdout.
|
|
.PP
|
|
\&\-f
|
|
.PP
|
|
Try to fix errors.
|
|
.PP
|
|
\&\-si
|
|
.PP
|
|
Suppress \s-1INFO\s0 messages.
|
|
.PP
|
|
\&\-nb
|
|
.PP
|
|
Delete .bak files that were created during file rebuilding. Use this
|
|
option together with \-f.
|
|
.PP
|
|
\&\-t
|
|
.PP
|
|
Keep file timestamps. Use this option together with \-f.
|
|
.PP
|
|
\&\-p
|
|
.PP
|
|
Pipe mode (receive input file names from stdin). Intended for
|
|
interaction with frontends. \fI<files to validate>\fR is ignored
|
|
in this case.
|
|
.PP
|
|
\&\-v
|
|
.PP
|
|
Print version and exit
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.Vb 1
|
|
\& mp3val my_song.mp3 \-lout.log \-f
|
|
.Ve
|
|
.PP
|
|
MP3val will give information about the file with the name specified.
|
|
Any errors or inconsistencies will result in a \*(L"\s-1WARNING\*(R"\s0 message. This
|
|
doesn't necessarily mean that the file is corrupted. See the next
|
|
section for details. If the file doesn't look like a \s-1MPEG\s0 audio file,
|
|
an \fI\*(L"\s-1ERROR:\s0 invalid file format\*(R"\fR message will be generated.
|
|
.SS "4. Interpreting the output."
|
|
.IX Subsection "4. Interpreting the output."
|
|
\&\fB\s-1WARNING\s0 message\fR
|
|
.PP
|
|
\&\fBFixable?\fR
|
|
.PP
|
|
\&\fBComments\fR
|
|
.PP
|
|
\&\fIToo few \s-1MPEG\s0 frames (it's unlikely that this is a \s-1MPEG\s0 audio file)\fR
|
|
.PP
|
|
\&\-
|
|
.PP
|
|
Probably this is not a \s-1MPEG\s0 audio file, but MP3val has detected a
|
|
couple of \s-1MPEG\s0 frames in it. Most likely this is a false positive.
|
|
.PP
|
|
\&\fIGarbage at the beginning of the file\fR
|
|
.PP
|
|
+
|
|
.PP
|
|
There are some unknown data at the beginning of the file (before the
|
|
first \s-1MPEG\s0 frame). It can be an unsupported tag with metadata, but in
|
|
most cases it is only garbage. \*(L"Fixing\*(R" means here a removal of these
|
|
data.
|
|
.PP
|
|
\&\fIGarbage at the end of the file\fR
|
|
.PP
|
|
+
|
|
.PP
|
|
Like previous.
|
|
.PP
|
|
\&\fI\s-1MPEG\s0 stream error, resynchronized successfully\fR
|
|
.PP
|
|
+
|
|
.PP
|
|
Normally, each \s-1MPEG\s0 frame must be followed by a next \s-1MPEG\s0 frame (or a
|
|
metadata block), otherwise this message is generated. \s-1MPEG\s0 stream
|
|
errors can be caused by garbage in the middle of the file (e.g. the
|
|
file was split into several parts, the tags were appended, and then
|
|
these parts were improperly merged) or by a data loss during transfer
|
|
or storage. Note that \*(L"fixing\*(R" this error will remove garbage, but in
|
|
most cases \*(L"fixed\*(R" file will not sound better, that's why it is
|
|
strongly recommended to find a \*(L"good\*(R" copy of the file.
|
|
.PP
|
|
\&\fIThis is a \s-1RIFF\s0 file, not \s-1MPEG\s0 stream\fR
|
|
.PP
|
|
+
|
|
.PP
|
|
A common way for storing a \s-1MPEG\s0 audio file is simply to write \s-1MPEG\s0
|
|
frames one-by-one. \s-1MP1/MP2/MP3\s0 files are organized so. \s-1MPEG\s0 audio data
|
|
can also be encapsulated in the \s-1RIFF\s0 container (better known as \s-1WAV\s0
|
|
file). The \s-1RIFF\s0 container shouldn't be used unless the file has \*(L"\s-1WAV\*(R"\s0
|
|
extension.
|
|
.PP
|
|
\&\fIIt seems that file is truncated or there is garbage at the end of the
|
|
file\fR
|
|
.PP
|
|
+
|
|
.PP
|
|
This message is generated when the length of the last frame (according
|
|
to its header) is greater than the amount of data from its beginning to
|
|
the end of the file. As a rule, it means that the file was truncated,
|
|
however, there can be garbage at its end. \*(L"Fixing\*(R" means here a removal
|
|
of the last frame.
|
|
.PP
|
|
\&\fIWrong number of \s-1MPEG\s0 frames specified in Xing header\fR
|
|
.PP
|
|
+
|
|
.PP
|
|
\&\s-1MPEG\s0 audio files don't have any special header, each frame has its own
|
|
header instead. However, it can cause problems when \*(L"seeking\*(R" in
|
|
variable bitrate files, because a decoder can't determine the exact
|
|
place in the file corresponding to the selected time. That's why a \*(L"\s-1VBR\s0
|
|
header\*(R" is sometimes included in the first \s-1MPEG\s0 frame. This message is
|
|
generated if this header contains false information about the total
|
|
number of \s-1MPEG\s0 frames.
|
|
.PP
|
|
\&\fIWrong number of \s-1MPEG\s0 data bytes specified in Xing header\fR
|
|
.PP
|
|
+
|
|
.PP
|
|
This message is generated when the Xing header contains false
|
|
information about the total size of \s-1MPEG\s0 data in the file. See the
|
|
previous message.
|
|
.PP
|
|
\&\fIWrong number of \s-1MPEG\s0 frames specified in \s-1VBRI\s0 header\fR
|
|
.PP
|
|
+
|
|
.PP
|
|
Like with Xing header. \s-1VBRI\s0 is the other way to store \s-1VBR\s0 information
|
|
in the first \s-1MPEG\s0 frame, but it seems to be used much more rarely.
|
|
.PP
|
|
\&\fIWrong number of \s-1MPEG\s0 data bytes specified in \s-1VBRI\s0 header\fR
|
|
.PP
|
|
+
|
|
.PP
|
|
Like with Xing header. \s-1VBRI\s0 is the other way to store \s-1VBR\s0 information
|
|
in the first \s-1MPEG\s0 frame, but it seems to be used much more rarely.
|
|
.PP
|
|
\&\fI\s-1VBR\s0 detected, but no \s-1VBR\s0 header is present. Seeking may not work
|
|
properly\fR
|
|
.PP
|
|
\&\-
|
|
.PP
|
|
Files encoded with \s-1VBR\s0 should have a \s-1VBR\s0 header (either Xing or \s-1VBRI\s0),
|
|
otherwise seeking can be broken. This will be fixable in the future
|
|
versions.
|
|
.PP
|
|
\&\fIWrong \s-1CRC\s0 in ... frames\fR
|
|
.PP
|
|
+
|
|
.PP
|
|
Some frames in the file are protected by \s-1CRC,\s0 but the checksum is
|
|
wrong. It means that either the file was encoded or processed by broken
|
|
software, or it was broken during storage or transmission. MP3val
|
|
reports a number of frames with incorrect \s-1CRC,\s0 which can be used as a
|
|
hint (if this number equals or is about the total number of frames,
|
|
then it's likely due to a bad encoder). Note that only a minority of
|
|
files is protected by \s-1CRC.\s0
|
|
.PP
|
|
\&\fINon-layer-III frame encountered\fR
|
|
.PP
|
|
\&\-
|
|
.PP
|
|
MP3val was primarily designed for \s-1MP3\s0 files. That's why it warns about
|
|
\&\s-1MPEG\s0 frames with layers other than \s-1III.\s0 If it is an \s-1MP2\s0 or \s-1MP1\s0 file,
|
|
this warning should be ignored. If you want to fix this issue, you
|
|
should reencode the file.
|
|
.PP
|
|
\&\fIDifferent \s-1MPEG\s0 versions or layers in one file\fR
|
|
.PP
|
|
\&\-
|
|
.PP
|
|
Mixing different \s-1MPEG\s0 versions and/or layers in one file is not very
|
|
good. As in the previous case, this issue can be fixed only by
|
|
reencoding.
|
|
.PP
|
|
\&\fISeveral APEv2 tags in one file\fR
|
|
.PP
|
|
+
|
|
.PP
|
|
Normally there would be only one APEv2 tag in the file.
|
|
.PP
|
|
\&\fINo supported tags in the file\fR
|
|
.PP
|
|
\&\-
|
|
.PP
|
|
This is only a warning. It's a good practice to store metadata in tags.
|
|
.SS "5. Licensing and copyright"
|
|
.IX Subsection "5. Licensing and copyright"
|
|
Copyright (c) 2005\-2009 by Alexey Kuznetsov (ring0) and Eugen Tikhonov
|
|
(jetsys).
|
|
.PP
|
|
This program is free software; you can redistribute it and/or modify it
|
|
under the terms of the \s-1GNU\s0 General Public License as published by the
|
|
Free Software Foundation; either version 2 of the License, or (at your
|
|
option) any later version.
|
|
.PP
|
|
Contacts: mp3val at ring0 dot pp dot ru
|