⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 module.tag.id3v2.php

📁 一个用PHP编写的
💻 PHP
📖 第 1 页 / 共 5 页
字号:
			$parsedFrame['volumechange']['left'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, $frame_bytesvolume));			if ($parsedFrame['incdec']['left'] === false) {				$parsedFrame['volumechange']['left'] *= -1;			}			$frame_offset += $frame_bytesvolume;			$parsedFrame['peakvolume']['right'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, $frame_bytesvolume));			$frame_offset += $frame_bytesvolume;			$parsedFrame['peakvolume']['left']  = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, $frame_bytesvolume));			$frame_offset += $frame_bytesvolume;			if ($id3v2_majorversion == 3) {				$parsedFrame['data'] = substr($parsedFrame['data'], $frame_offset);				if (strlen($parsedFrame['data']) > 0) {					$parsedFrame['incdec']['rightrear'] = (bool) substr($frame_incrdecrflags, 4, 1);					$parsedFrame['incdec']['leftrear']  = (bool) substr($frame_incrdecrflags, 5, 1);					$parsedFrame['volumechange']['rightrear'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, $frame_bytesvolume));					if ($parsedFrame['incdec']['rightrear'] === false) {						$parsedFrame['volumechange']['rightrear'] *= -1;					}					$frame_offset += $frame_bytesvolume;					$parsedFrame['volumechange']['leftrear'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, $frame_bytesvolume));					if ($parsedFrame['incdec']['leftrear'] === false) {						$parsedFrame['volumechange']['leftrear'] *= -1;					}					$frame_offset += $frame_bytesvolume;					$parsedFrame['peakvolume']['rightrear'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, $frame_bytesvolume));					$frame_offset += $frame_bytesvolume;					$parsedFrame['peakvolume']['leftrear']  = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, $frame_bytesvolume));					$frame_offset += $frame_bytesvolume;				}				$parsedFrame['data'] = substr($parsedFrame['data'], $frame_offset);				if (strlen($parsedFrame['data']) > 0) {					$parsedFrame['incdec']['center'] = (bool) substr($frame_incrdecrflags, 3, 1);					$parsedFrame['volumechange']['center'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, $frame_bytesvolume));					if ($parsedFrame['incdec']['center'] === false) {						$parsedFrame['volumechange']['center'] *= -1;					}					$frame_offset += $frame_bytesvolume;					$parsedFrame['peakvolume']['center'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, $frame_bytesvolume));					$frame_offset += $frame_bytesvolume;				}				$parsedFrame['data'] = substr($parsedFrame['data'], $frame_offset);				if (strlen($parsedFrame['data']) > 0) {					$parsedFrame['incdec']['bass'] = (bool) substr($frame_incrdecrflags, 2, 1);					$parsedFrame['volumechange']['bass'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, $frame_bytesvolume));					if ($parsedFrame['incdec']['bass'] === false) {						$parsedFrame['volumechange']['bass'] *= -1;					}					$frame_offset += $frame_bytesvolume;					$parsedFrame['peakvolume']['bass'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, $frame_bytesvolume));					$frame_offset += $frame_bytesvolume;				}			}			unset($parsedFrame['data']);		} elseif (($id3v2_majorversion >= 4) && ($parsedFrame['frame_name'] == 'EQU2')) { // 4.12  EQU2 Equalisation (2) (ID3v2.4+ only)			//   There may be more than one 'EQU2' frame in each tag,			//   but only one with the same identification string			// <Header of 'Equalisation (2)', ID: 'EQU2'>			// Interpolation method  $xx			//   $00  Band			//   $01  Linear			// Identification        <text string> $00			//   The following is then repeated for every adjustment point			// Frequency          $xx xx			// Volume adjustment  $xx xx			$frame_offset = 0;			$frame_interpolationmethod = ord(substr($parsedFrame['data'], $frame_offset++, 1));			$frame_terminatorpos = strpos($parsedFrame['data'], "\x00", $frame_offset);			$frame_idstring = substr($parsedFrame['data'], $frame_offset, $frame_terminatorpos - $frame_offset);			if (ord($frame_idstring) === 0) {				$frame_idstring = '';			}			$parsedFrame['description'] = $frame_idstring;			$frame_remainingdata = substr($parsedFrame['data'], $frame_terminatorpos + strlen("\x00"));			while (strlen($frame_remainingdata)) {				$frame_frequency = getid3_lib::BigEndian2Int(substr($frame_remainingdata, 0, 2)) / 2;				$parsedFrame['data'][$frame_frequency] = getid3_lib::BigEndian2Int(substr($frame_remainingdata, 2, 2), false, true);				$frame_remainingdata = substr($frame_remainingdata, 4);			}			$parsedFrame['interpolationmethod'] = $frame_interpolationmethod;			unset($parsedFrame['data']);		} elseif ((($id3v2_majorversion == 3) && ($parsedFrame['frame_name'] == 'EQUA')) || // 4.12  EQUA Equalisation (ID3v2.3 only)				(($id3v2_majorversion == 2) && ($parsedFrame['frame_name'] == 'EQU'))) {     // 4.13  EQU  Equalisation (ID3v2.2 only)			//   There may only be one 'EQUA' frame in each tag			// <Header for 'Relative volume adjustment', ID: 'EQU'>			// Adjustment bits    $xx			//   This is followed by 2 bytes + ('adjustment bits' rounded up to the			//   nearest byte) for every equalisation band in the following format,			//   giving a frequency range of 0 - 32767Hz:			// Increment/decrement   %x (MSB of the Frequency)			// Frequency             (lower 15 bits)			// Adjustment            $xx (xx ...)			$frame_offset = 0;			$parsedFrame['adjustmentbits'] = substr($parsedFrame['data'], $frame_offset++, 1);			$frame_adjustmentbytes = ceil($parsedFrame['adjustmentbits'] / 8);			$frame_remainingdata = (string) substr($parsedFrame['data'], $frame_offset);			while (strlen($frame_remainingdata) > 0) {				$frame_frequencystr = getid3_lib::BigEndian2Bin(substr($frame_remainingdata, 0, 2));				$frame_incdec    = (bool) substr($frame_frequencystr, 0, 1);				$frame_frequency = bindec(substr($frame_frequencystr, 1, 15));				$parsedFrame[$frame_frequency]['incdec'] = $frame_incdec;				$parsedFrame[$frame_frequency]['adjustment'] = getid3_lib::BigEndian2Int(substr($frame_remainingdata, 2, $frame_adjustmentbytes));				if ($parsedFrame[$frame_frequency]['incdec'] === false) {					$parsedFrame[$frame_frequency]['adjustment'] *= -1;				}				$frame_remainingdata = substr($frame_remainingdata, 2 + $frame_adjustmentbytes);			}			unset($parsedFrame['data']);		} elseif ((($id3v2_majorversion >= 3) && ($parsedFrame['frame_name'] == 'RVRB')) || // 4.13  RVRB Reverb				(($id3v2_majorversion == 2) && ($parsedFrame['frame_name'] == 'REV'))) {     // 4.14  REV  Reverb			//   There may only be one 'RVRB' frame in each tag.			// <Header for 'Reverb', ID: 'RVRB'>			// Reverb left (ms)                 $xx xx			// Reverb right (ms)                $xx xx			// Reverb bounces, left             $xx			// Reverb bounces, right            $xx			// Reverb feedback, left to left    $xx			// Reverb feedback, left to right   $xx			// Reverb feedback, right to right  $xx			// Reverb feedback, right to left   $xx			// Premix left to right             $xx			// Premix right to left             $xx			$frame_offset = 0;			$parsedFrame['left']  = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, 2));			$frame_offset += 2;			$parsedFrame['right'] = getid3_lib::BigEndian2Int(substr($parsedFrame['data'], $frame_offset, 2));			$frame_offset += 2;			$parsedFrame['bouncesL']      = ord(substr($parsedFrame['data'], $frame_offset++, 1));			$parsedFrame['bouncesR']      = ord(substr($parsedFrame['data'], $frame_offset++, 1));			$parsedFrame['feedbackLL']    = ord(substr($parsedFrame['data'], $frame_offset++, 1));			$parsedFrame['feedbackLR']    = ord(substr($parsedFrame['data'], $frame_offset++, 1));			$parsedFrame['feedbackRR']    = ord(substr($parsedFrame['data'], $frame_offset++, 1));			$parsedFrame['feedbackRL']    = ord(substr($parsedFrame['data'], $frame_offset++, 1));			$parsedFrame['premixLR']      = ord(substr($parsedFrame['data'], $frame_offset++, 1));			$parsedFrame['premixRL']      = ord(substr($parsedFrame['data'], $frame_offset++, 1));			unset($parsedFrame['data']);		} elseif ((($id3v2_majorversion >= 3) && ($parsedFrame['frame_name'] == 'APIC')) || // 4.14  APIC Attached picture				(($id3v2_majorversion == 2) && ($parsedFrame['frame_name'] == 'PIC'))) {     // 4.15  PIC  Attached picture			//   There may be several pictures attached to one file,			//   each in their individual 'APIC' frame, but only one			//   with the same content descriptor			// <Header for 'Attached picture', ID: 'APIC'>			// Text encoding      $xx			// ID3v2.3+ => MIME type          <text string> $00			// ID3v2.2  => Image format       $xx xx xx			// Picture type       $xx			// Description        <text string according to encoding> $00 (00)			// Picture data       <binary data>			$frame_offset = 0;			$frame_textencoding = ord(substr($parsedFrame['data'], $frame_offset++, 1));			if ((($id3v2_majorversion <= 3) && ($frame_textencoding > 1)) || (($id3v2_majorversion == 4) && ($frame_textencoding > 3))) {				$ThisFileInfo['warning'][] = 'Invalid text encoding byte ('.$frame_textencoding.') in frame "'.$parsedFrame['frame_name'].'" - defaulting to ISO-8859-1 encoding';			}			if ($id3v2_majorversion == 2) {				$frame_imagetype = substr($parsedFrame['data'], $frame_offset, 3);				if (strtolower($frame_imagetype) == 'ima') {					// complete hack for mp3Rage (www.chaoticsoftware.com) that puts ID3v2.3-formatted					// MIME type instead of 3-char ID3v2.2-format image type  (thanks xbhoff豴acbell*net)					$frame_terminatorpos = strpos($parsedFrame['data'], "\x00", $frame_offset);					$frame_mimetype = substr($parsedFrame['data'], $frame_offset, $frame_terminatorpos - $frame_offset);					if (ord($frame_mimetype) === 0) {						$frame_mimetype = '';					}					$frame_imagetype = strtoupper(str_replace('image/', '', strtolower($frame_mimetype)));					if ($frame_imagetype == 'JPEG') {						$frame_imagetype = 'JPG';					}					$frame_offset = $frame_terminatorpos + strlen("\x00");				} else {					$frame_offset += 3;				}			}			if ($id3v2_majorversion > 2) {				$frame_terminatorpos = strpos($parsedFrame['data'], "\x00", $frame_offset);				$frame_mimetype = substr($parsedFrame['data'], $frame_offset, $frame_terminatorpos - $frame_offset);				if (ord($frame_mimetype) === 0) {					$frame_mimetype = '';				}				$frame_offset = $frame_terminatorpos + strlen("\x00");			}			$frame_picturetype = ord(substr($parsedFrame['data'], $frame_offset++, 1));			$frame_terminatorpos = strpos($parsedFrame['data'], $this->TextEncodingTerminatorLookup($frame_textencoding), $frame_offset);			if (ord(substr($parsedFrame['data'], $frame_terminatorpos + strlen($this->TextEncodingTerminatorLookup($frame_textencoding)), 1)) === 0) {				$frame_terminatorpos++; // strpos() fooled because 2nd byte of Unicode chars are often 0x00			}			$frame_description = substr($parsedFrame['data'], $frame_offset, $frame_terminatorpos - $frame_offset);			if (ord($frame_description) === 0) {				$frame_description = '';			}			$parsedFrame['encodingid']       = $frame_textencoding;			$parsedFrame['encoding']         = $this->TextEncodingNameLookup($frame_textencoding);			if ($id3v2_majorversion == 2) {				$parsedFrame['imagetype']    = $frame_imagetype;			} else {				$parsedFrame['mime']         = $frame_mimetype;			}			$parsedFrame['picturetypeid']    = $frame_picturetype;			$parsedFrame['picturetype']      = $this->APICPictureTypeLookup($frame_picturetype);			$parsedFrame['description']      = $frame_description;			$parsedFrame['data']             = substr($parsedFrame['data'], $frame_terminatorpos + strlen($this->TextEncodingTerminatorLookup($frame_textencoding)));			$imagechunkcheck = getid3_lib::GetDataImageSize($parsedFrame['data']);			if (($imagechunkcheck[2] >= 1) && ($imagechunkcheck[2] <= 3)) {				$parsedFrame['image_mime']       = 'image/'.getid3_lib::ImageTypesLookup($imagechunkcheck[2]);				if ($imagechunkcheck[0]) {					$parsedFrame['image_width']  = $imagechunkcheck[0];				}				if ($imagechunkcheck[1]) {					$parsedFrame['image_height'] = $imagechunkcheck[1];				}				$parsedFrame['image_bytes']      = strlen($parsedFrame['data']);			}		} elseif ((($id3v2_majorversion >= 3) && ($parsedFrame['frame_name'] == 'GEOB')) || // 4.15  GEOB General encapsulated object				(($id3v2_majorversion == 2) && ($parsedFrame['frame_name'] == 'GEO'))) {     // 4.16  GEO  General encapsulated object			//   There may be more than one 'GEOB' frame in each tag,			//   but only one with the same content descriptor			// <Header for 'General encapsulated object', ID: 'GEOB'>			// Text encoding          $xx			// MIME type              <text string> $00			// Filename               <text string according to encoding> $00 (00)			// Content description    <text string according to encoding> $00 (00)			// Encapsulated object    <binary data>			$frame_offset = 0;			$frame_textencoding = ord(substr($parsedFrame['data'], $frame_offset++, 1));			if ((($id3v2_majorversion <= 3) && ($frame_textencoding > 1)) || (($id3v2_majorversion == 4) && ($frame_textencoding > 3))) {				$ThisFileInfo['warning'][] = 'Invalid text encoding byte ('.$frame_textencoding.') in frame "'.$parsedFrame['frame_name'].'" - defaulting to ISO-8859-1 encoding';			}			$frame_terminatorpos = strpos($parsedFrame['data'], "\x00", $frame_offset);			$frame_mimety

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -