.\" 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 .Ve .PP \&\fI\fR \- \s-1MPEG\s0 audio file(s) name(s). Can contain wildcards. .PP \&\fIOptions\fR: .PP \&\fBOption\fR .PP \&\fBDescription\fR .PP \&\-l\fI\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\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