📄 id3v2.3.0.html
字号:
<tr><td colspan=2> <Header for 'Involved people list', ID: "IPLS"></td></tr>
<tr><td>Text encoding</td><td width="80%">$xx</td></tr>
<tr><td>People list strings</td><td><text strings according to encoding></td></tr>
</table></center></p>
<a name="sec4.5"> </a>
<h3>4.5.Music CD identifier</h3>
<p class=t>
This frame is intended for music that comes from a CD, so that the CD
can be identified in databases such as the <a href="#CDDB">CDDB</a>. The frame
consists of a binary dump of the Table Of Contents, TOC, from the CD,
which is a header of 4 bytes and then 8 bytes/track on the CD plus 8
bytes for the 'lead out' making a maximum of 804 bytes. The offset to
the beginning of every track on the CD should be described with a
four bytes absolute CD-frame address per track, and not with absolute
time. This frame requires a present and valid "<a href="#TRCK">TRCK</a>" frame, even if
the CD's only got one track. There may only be one "MCDI" frame in
each tag.
</p>
<p><center><table border=0 width="70%">
<tr><td colspan=2> <Header for 'Music CD identifier', ID: "MCDI"></td></tr>
<tr><td>CD TOC</td><td><binary data></td></tr>
</table></center></p>
<a name="sec4.6"> </a>
<h3>4.6.Event timing codes</h3>
<p class=t>
This frame allows synchronisation with key events in a song or sound.
The header is:
</p><p><center><table border=0 width="70%">
<tr><td colspan=2> <Header for 'Event timing codes', ID: "ETCO"></td></tr>
<tr><td>Time stamp format</td><td width="80%">$xx</td></tr>
</table></center>
</p><p class=t>
Where time stamp format is:
</p><p class=ind>
$01 Absolute time, 32 bit sized, using <a href="#MPEG">MPEG</a> frames as unit<br>
$02 Absolute time, 32 bit sized, using milliseconds as unit
</p><p class=t>
Abolute time means that every stamp contains the time from the
beginning of the file.
</p><p class=t>
Followed by a list of key events in the following format:
</p><p><center><table border=0 width="70%">
<tr><td>Type of event</td><td width="80%">$xx</td></tr>
<tr><td>Time stamp</td><td>$xx (xx ...)</td></tr>
</table></center>
</p><p class=t>
The 'Time stamp' is set to zero if directly at the beginning of the
sound or after the previous event. All events should be sorted in
chronological order. The type of event is as follows:
</p><p><center><table border=0 width="70%">
<tr><td>$00</td><td width="80%">padding (has no meaning)</td></tr>
<tr><td>$01</td><td>end of initial silence</td></tr>
<tr><td>$02</td><td>intro start</td></tr>
<tr><td>$03</td><td>mainpart start</td></tr>
<tr><td>$04</td><td>outro start</td></tr>
<tr><td>$05</td><td>outro end</td></tr>
<tr><td>$06</td><td>verse start</td></tr>
<tr><td>$07</td><td>refrain start</td></tr>
<tr><td>$08</td><td>interlude start</td></tr>
<tr><td>$09</td><td>theme start</td></tr>
<tr><td>$0A</td><td>variation start</td></tr>
<tr><td>$0B</td><td>key change</td></tr>
<tr><td>$0C</td><td>time change</td></tr>
<tr><td>$0D</td><td>momentary unwanted noise (Snap, Crackle & Pop)</td></tr>
<tr><td>$0E</td><td>sustained noise</td></tr>
<tr><td>$0F</td><td>sustained noise end</td></tr>
<tr><td>$10</td><td>intro end</td></tr>
<tr><td>$11</td><td>mainpart end</td></tr>
<tr><td>$12</td><td>verse end</td></tr>
<tr><td>$13</td><td>refrain end</td></tr>
<tr><td>$14</td><td>theme end</td></tr>
<tr><td>$15-$DF</td><td>reserved for future use</td></tr>
<tr><td>$E0-$EF</td><td>not predefined sync 0-F</td></tr>
<tr><td>$F0-$FC</td><td>reserved for future use</td></tr>
<tr><td>$FD</td><td>audio end (start of silence)</td></tr>
<tr><td>$FE</td><td>audio file ends</td></tr>
<tr><td>$FF</td><td>one more byte of events follows (all the following bytes with the value $FF have the same function)</td></tr>
</table></center>
</p><p class=t>
Terminating the start events such as "intro start" is not required.
The 'Not predefined sync's ($E0-EF) are for user events. You might
want to synchronise your music to something, like setting of an
explosion on-stage, turning on your screensaver etc.
</p>
<p class=t>There may only be one "ETCO" frame in each tag.</p>
<a name="sec4.7"> </a>
<h3>4.7.MPEG location lookup table</h3>
<p class=t>
To increase performance and accuracy of jumps within a <a href="#MPEG">MPEG</a>
audio file, frames with timecodes in different locations in the file
might be useful. The ID3v2 frame includes references that the
software can use to calculate positions in the file. After the frame
header is a descriptor of how much the 'frame counter' should
increase for every reference. If this value is two then the first
reference points out the second frame, the 2nd reference the 4th
frame, the 3rd reference the 6th frame etc. In a similar way the
'bytes between reference' and 'milliseconds between reference' points
out bytes and milliseconds respectively.
</p><p class=t>
Each reference consists of two parts; a certain number of bits, as
defined in 'bits for bytes deviation', that describes the difference
between what is said in 'bytes between reference' and the reality and
a certain number of bits, as defined in 'bits for milliseconds
deviation', that describes the difference between what is said in
'milliseconds between reference' and the reality. The number of bits
in every reference, i.e. 'bits for bytes deviation'+'bits for
milliseconds deviation', must be a multiple of four. There may only
be one "MLLT" frame in each tag.
</p><p><center><table border=0 width="70%">
<tr><td colspan=2> <Header for 'Location lookup table', ID: "MLLT"></td></tr>
<tr><td nowrap>MPEG frames between reference</td><td width="80%">$xx xx</td></tr>
<tr><td>Bytes between reference</td><td>$xx xx xx</td></tr>
<tr><td>Milliseconds between reference</td><td>$xx xx xx</td></tr>
<tr><td>Bits for bytes deviation</td><td>$xx</td></tr>
<tr><td>Bits for milliseconds dev.</td><td>$xx</td></tr>
</table></center>
</p><p class=t>
Then for every reference the following data is included;
</p><p><center><table border=0 width="70%">
<tr><td>Deviation in bytes</td><td width="80%">%xxx....</td></tr>
<tr><td>Deviation in milliseconds</td><td>%xxx....</td></tr>
</table></center>
</p>
<a name="sec4.8"> </a>
<h3>4.8.Synchronised tempo codes</h3>
<p class=t>
For a more accurate description of the tempo of a musical piece this
frame might be used. After the header follows one byte describing
which time stamp format should be used. Then follows one or more
tempo codes. Each tempo code consists of one tempo part and one time
part. The tempo is in BPM described with one or two bytes. If the
first byte has the value $FF, one more byte follows, which is added
to the first giving a range from 2 - 510 BPM, since $00 and $01 is
reserved. $00 is used to describe a beat-free time period, which is
not the same as a music-free time period. $01 is used to indicate one
single beat-stroke followed by a beat-free period.
</p><p class=t>
The tempo descriptor is followed by a time stamp. Every time the
tempo in the music changes, a tempo descriptor may indicate this for
the player. All tempo descriptors should be sorted in chronological
order. The first beat-stroke in a time-period is at the same time as
the beat description occurs. There may only be one "SYTC" frame in
each tag.
</p><p><center><table border=0 width="70%">
<tr><td colspan=2> <Header for 'Synchronised tempo codes', ID: "SYTC"></td></tr>
<tr><td>Time stamp format</td><td width="80%">$xx</td></tr>
<tr><td>Tempo data </td><td><binary data></td></tr>
</table></center>
</p><p class=t>
Where time stamp format is:
</p><p class=ind>
$01 Absolute time, 32 bit sized, using <a href="#MPEG">MPEG</a> frames as unit<br>
$02 Absolute time, 32 bit sized, using milliseconds as unit
</p><p class=t>
Abolute time means that every stamp contains the time from the
beginning of the file.
</p>
<a name="sec4.9"> </a>
<h3>4.9.Unsychronised lyrics/text transcription</h3>
<p class=t>
This frame contains the lyrics of the song or a text transcription of
other vocal activities. The head includes an encoding descriptor and
a content descriptor. The body consists of the actual text. The
'Content descriptor' is a terminated string. If no descriptor is
entered, 'Content descriptor' is $00 (00) only. Newline characters
are allowed in the text. There may be more than one 'Unsynchronised
lyrics/text transcription' frame in each tag, but only one with the
same language and content descriptor.
</p><p><center><table border=0 width="70%">
<tr><td colspan=2><Header for 'Unsynchronised lyrics/text transcription', ID: "USLT"></td></tr>
<tr><td>Text encoding</td><td width="80%">$xx</td></tr>
<tr><td>Language</td><td>$xx xx xx</td></tr>
<tr><td>Content descriptor</td><td><text string according to encoding> $00 (00)</td></tr>
<tr><td>Lyrics/text</td><td><full text string according to encoding></td></tr>
</table></center>
</p>
<a name="sec4.10"> </a>
<h3>4.10.Synchronised lyrics/text</h3>
<p class=t>
This is another way of incorporating the words, said or sung lyrics,
in the audio file as text, this time, however, in sync with the
audio. It might also be used to describing events e.g. occurring on a
stage or on the screen in sync with the audio. The header includes a
content descriptor, represented with as terminated textstring. If no
descriptor is entered, 'Content descriptor' is $00 (00) only.
</p><p><center><table border=0 width="70%">
<tr><td colspan=2><Header for 'Synchronised lyrics/text', ID: "SYLT"></td></tr>
<tr><td>Text encoding</td><td width="80%">$xx</td></tr>
<tr><td>Language</td><td>$xx xx xx</td></tr>
<tr><td>Time stamp format</td><td>$xx</td></tr>
<tr><td>Content type</td><td>$xx</td></tr>
<tr><td>Content descriptor</td><td><text string according to encoding> $00 (00)</td></tr>
</table></center>
</p>
<p><center><table border=0 width="70%">
<tr><td rowspan=2 valign=top>Encoding:</td><td>$00</td><td><a href="#ISO-8859-1">ISO-8859-1</a> character set is used => $00
is sync identifier.</td></tr>
<tr><td>$01</td><td><a href="#UNICODE">Unicode</a> character set is used => $00 00 is
sync identifier.</td></tr>
</table></center></p>
<p><center><table border=0 width="70%">
<tr><td rowspan=7 valign=top>Content type:</td><td>$00</td><td width="80%">is other</td></tr>
<tr><td>$01</td><td>is lyrics</td></tr>
<tr><td>$02</td><td>is text transcription</td></tr>
<tr><td>$03</td><td>is movement/part name (e.g. "Adagio")</td></tr>
<tr><td>$04</td><td>is events (e.g. "Don Quijote enters the stage")</td></tr>
<tr><td>$05</td><td>is chord (e.g. "Bb F Fsus")</td></tr>
<tr><td>$06</td><td>is trivia/'pop up' information</td></tr>
</table></center></p>
<p class=t>
Time stamp format is:
</p><p class=ind>
$01 Absolute time, 32 bit sized, using <a href="#MPEG">MPEG</a> frames as unit<br>
$02 Absolute time, 32 bit sized, using milliseconds as unit
</p>
<p class=t>
Abolute time means that every stamp contains the time from the
beginning of the file.
</p><p class=t>
The text that follows the frame header differs from that of the
unsynchronised lyrics/text transcription in one major way. Each
syllable (or whatever size of text is considered to be convenient by
the encoder) is a null terminated string followed by a time stamp
denoting where in the sound file it belongs. Each sync thus has the
following structure:
</p><p><center><table border=0 width="70%">
<tr><td colspan=2>Terminated text to be synced (typically a syllable)</td></tr>
<tr><td nowrap>Sync identifier (terminator to above string)</td><td width="80%">$00 (00)</td></tr>
<tr><td>Time stamp</td><td>$xx (xx ...)</td></tr>
</table></center>
<p class=t>
The 'time stamp' is set to zero or the whole sync is omitted if
located directly at the beginning of the sound. All time stamps
should be sorted in chronological order. The sync can be considered
as a validator of the subsequent string.
</p><p class=t>
Newline ($0A) characters are allowed in all "SYLT" frames and should
be used after every entry (name, event etc.) in a frame with the
content type $03 - $04.
</p><p class=t>
A few considerations regarding whitespace characters: Whitespace
separating words should mark the beginning of a new word, thus
occurring in front of the first syllable of a new word. This is also
valid for new line characters. A syllable followed by a comma should
not be broken apart with a sync (both the syllable and the comma
should be before the sync).</p>
<p class=t>An example: The "USLT" passage</p>
<p class=ind>"Strangers in the night" $0A "Exchanging glances"</p>
<p class=t>would be "SYLT" encoded as:</p>
<p class=ind>
"Strang" $00 xx xx "ers" $00 xx xx " in" $00 xx xx " the" $00 xx xx
" night" $00 xx xx 0A "Ex" $00 xx xx "chang" $00 xx xx "ing" $00 xx
xx "glan" $00 xx xx "ces" $00 xx xx
</p>
<p class=t>There may be more than one "SYLT" frame in each tag, but only one
with the same language and content descriptor.</p>
<a name="sec4.11"> </a>
<h3>4.11.Comments</h3>
<p class=t>
This frame is indended for any kind of full text information that
does not fit in any other frame. It consists of a frame header
followed by encoding, language and content descriptors and is ended
with the actual comment as a text string. Newline characters are
allowed in the comment text string. There may be more than one
comment frame in each tag, but only one with the same language and
content descriptor.
</p><p><center><table border=0 width="70%">
<tr><td colspan=2><Header for 'Comment', ID: "COMM"></td></tr>
<tr><td>Text encoding</td><td width="80%">$xx</td></tr>
<tr><td>Language </td><td>$xx xx xx</td></tr>
<tr><td>Short content descrip.</td><td><text string according to encoding> $00 (00)</td></tr>
<tr><td>The actual text </td><td><full text str
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -