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

📄 module.audio.mp3.php

📁 CMS系统 提供学习研究修改最好了 比流行的一些CMS简单 但是更容易理解 是帮助你学习PHPCMS系统的好东东哦
💻 PHP
📖 第 1 页 / 共 5 页
字号:
		}		//if (false) {		//    // experimental side info parsing section - not returning anything useful yet		//		//    $SideInfoBitstream = getid3_lib::BigEndian2Bin($SideInfoData);		//    $SideInfoOffset = 0;		//		//    if ($thisfile_mpeg_audio['version'] == '1') {		//        if ($thisfile_mpeg_audio['channelmode'] == 'mono') {		//            // MPEG-1 (mono)		//            $thisfile_mpeg_audio['side_info']['main_data_begin'] = substr($SideInfoBitstream, $SideInfoOffset, 9);		//            $SideInfoOffset += 9;		//            $SideInfoOffset += 5;		//        } else {		//            // MPEG-1 (stereo, joint-stereo, dual-channel)		//            $thisfile_mpeg_audio['side_info']['main_data_begin'] = substr($SideInfoBitstream, $SideInfoOffset, 9);		//            $SideInfoOffset += 9;		//            $SideInfoOffset += 3;		//        }		//    } else { // 2 or 2.5		//        if ($thisfile_mpeg_audio['channelmode'] == 'mono') {		//            // MPEG-2, MPEG-2.5 (mono)		//            $thisfile_mpeg_audio['side_info']['main_data_begin'] = substr($SideInfoBitstream, $SideInfoOffset, 8);		//            $SideInfoOffset += 8;		//            $SideInfoOffset += 1;		//        } else {		//            // MPEG-2, MPEG-2.5 (stereo, joint-stereo, dual-channel)		//            $thisfile_mpeg_audio['side_info']['main_data_begin'] = substr($SideInfoBitstream, $SideInfoOffset, 8);		//            $SideInfoOffset += 8;		//            $SideInfoOffset += 2;		//        }		//    }		//		//    if ($thisfile_mpeg_audio['version'] == '1') {		//        for ($channel = 0; $channel < $ThisFileInfo['audio']['channels']; $channel++) {		//            for ($scfsi_band = 0; $scfsi_band < 4; $scfsi_band++) {		//                $thisfile_mpeg_audio['scfsi'][$channel][$scfsi_band] = substr($SideInfoBitstream, $SideInfoOffset, 1);		//                $SideInfoOffset += 2;		//            }		//        }		//    }		//    for ($granule = 0; $granule < (($thisfile_mpeg_audio['version'] == '1') ? 2 : 1); $granule++) {		//        for ($channel = 0; $channel < $ThisFileInfo['audio']['channels']; $channel++) {		//            $thisfile_mpeg_audio['part2_3_length'][$granule][$channel] = substr($SideInfoBitstream, $SideInfoOffset, 12);		//            $SideInfoOffset += 12;		//            $thisfile_mpeg_audio['big_values'][$granule][$channel] = substr($SideInfoBitstream, $SideInfoOffset, 9);		//            $SideInfoOffset += 9;		//            $thisfile_mpeg_audio['global_gain'][$granule][$channel] = substr($SideInfoBitstream, $SideInfoOffset, 8);		//            $SideInfoOffset += 8;		//            if ($thisfile_mpeg_audio['version'] == '1') {		//                $thisfile_mpeg_audio['scalefac_compress'][$granule][$channel] = substr($SideInfoBitstream, $SideInfoOffset, 4);		//                $SideInfoOffset += 4;		//            } else {		//                $thisfile_mpeg_audio['scalefac_compress'][$granule][$channel] = substr($SideInfoBitstream, $SideInfoOffset, 9);		//                $SideInfoOffset += 9;		//            }		//            $thisfile_mpeg_audio['window_switching_flag'][$granule][$channel] = substr($SideInfoBitstream, $SideInfoOffset, 1);		//            $SideInfoOffset += 1;		//		//            if ($thisfile_mpeg_audio['window_switching_flag'][$granule][$channel] == '1') {		//		//                $thisfile_mpeg_audio['block_type'][$granule][$channel] = substr($SideInfoBitstream, $SideInfoOffset, 2);		//                $SideInfoOffset += 2;		//                $thisfile_mpeg_audio['mixed_block_flag'][$granule][$channel] = substr($SideInfoBitstream, $SideInfoOffset, 1);		//                $SideInfoOffset += 1;		//		//                for ($region = 0; $region < 2; $region++) {		//                    $thisfile_mpeg_audio['table_select'][$granule][$channel][$region] = substr($SideInfoBitstream, $SideInfoOffset, 5);		//                    $SideInfoOffset += 5;		//                }		//                $thisfile_mpeg_audio['table_select'][$granule][$channel][2] = 0;		//		//                for ($window = 0; $window < 3; $window++) {		//                    $thisfile_mpeg_audio['subblock_gain'][$granule][$channel][$window] = substr($SideInfoBitstream, $SideInfoOffset, 3);		//                    $SideInfoOffset += 3;		//                }		//		//            } else {		//		//                for ($region = 0; $region < 3; $region++) {		//                    $thisfile_mpeg_audio['table_select'][$granule][$channel][$region] = substr($SideInfoBitstream, $SideInfoOffset, 5);		//                    $SideInfoOffset += 5;		//                }		//		//                $thisfile_mpeg_audio['region0_count'][$granule][$channel] = substr($SideInfoBitstream, $SideInfoOffset, 4);		//                $SideInfoOffset += 4;		//                $thisfile_mpeg_audio['region1_count'][$granule][$channel] = substr($SideInfoBitstream, $SideInfoOffset, 3);		//                $SideInfoOffset += 3;		//                $thisfile_mpeg_audio['block_type'][$granule][$channel] = 0;		//            }		//		//            if ($thisfile_mpeg_audio['version'] == '1') {		//                $thisfile_mpeg_audio['preflag'][$granule][$channel] = substr($SideInfoBitstream, $SideInfoOffset, 1);		//                $SideInfoOffset += 1;		//            }		//            $thisfile_mpeg_audio['scalefac_scale'][$granule][$channel] = substr($SideInfoBitstream, $SideInfoOffset, 1);		//            $SideInfoOffset += 1;		//            $thisfile_mpeg_audio['count1table_select'][$granule][$channel] = substr($SideInfoBitstream, $SideInfoOffset, 1);		//            $SideInfoOffset += 1;		//        }		//    }		//}		return true;	}	function RecursiveFrameScanning(&$fd, &$ThisFileInfo, &$offset, &$nextframetestoffset, $ScanAsCBR) {		for ($i = 0; $i < GETID3_MP3_VALID_CHECK_FRAMES; $i++) {			// check next GETID3_MP3_VALID_CHECK_FRAMES frames for validity, to make sure we haven't run across a false synch			if (($nextframetestoffset + 4) >= $ThisFileInfo['avdataend']) {				// end of file				return true;			}			$nextframetestarray = array('error'=>'', 'warning'=>'', 'avdataend'=>$ThisFileInfo['avdataend'], 'avdataoffset'=>$ThisFileInfo['avdataoffset']);			if (getid3_mp3::decodeMPEGaudioHeader($fd, $nextframetestoffset, $nextframetestarray, false)) {				if ($ScanAsCBR) {					// force CBR mode, used for trying to pick out invalid audio streams with					// valid(?) VBR headers, or VBR streams with no VBR header					if (!isset($nextframetestarray['mpeg']['audio']['bitrate']) || !isset($ThisFileInfo['mpeg']['audio']['bitrate']) || ($nextframetestarray['mpeg']['audio']['bitrate'] != $ThisFileInfo['mpeg']['audio']['bitrate'])) {						return false;					}				}				// next frame is OK, get ready to check the one after that				if (isset($nextframetestarray['mpeg']['audio']['framelength']) && ($nextframetestarray['mpeg']['audio']['framelength'] > 0)) {					$nextframetestoffset += $nextframetestarray['mpeg']['audio']['framelength'];				} else {					$ThisFileInfo['error'][] = 'Frame at offset ('.$offset.') is has an invalid frame length.';					return false;				}			} else {				// next frame is not valid, note the error and fail, so scanning can contiue for a valid frame sequence				$ThisFileInfo['error'][] = 'Frame at offset ('.$offset.') is valid, but the next one at ('.$nextframetestoffset.') is not.';				return false;			}		}		return true;	}	function FreeFormatFrameLength($fd, $offset, &$ThisFileInfo, $deepscan=false) {		fseek($fd, $offset, SEEK_SET);		$MPEGaudioData = fread($fd, 32768);		$SyncPattern1 = substr($MPEGaudioData, 0, 4);		// may be different pattern due to padding		$SyncPattern2 = $SyncPattern1{0}.$SyncPattern1{1}.chr(ord($SyncPattern1{2}) | 0x02).$SyncPattern1{3};		if ($SyncPattern2 === $SyncPattern1) {			$SyncPattern2 = $SyncPattern1{0}.$SyncPattern1{1}.chr(ord($SyncPattern1{2}) & 0xFD).$SyncPattern1{3};		}		$framelength = false;		$framelength1 = strpos($MPEGaudioData, $SyncPattern1, 4);		$framelength2 = strpos($MPEGaudioData, $SyncPattern2, 4);		if ($framelength1 > 4) {			$framelength = $framelength1;		}		if (($framelength2 > 4) && ($framelength2 < $framelength1)) {			$framelength = $framelength2;		}		if (!$framelength) {			// LAME 3.88 has a different value for modeextension on the first frame vs the rest			$framelength1 = strpos($MPEGaudioData, substr($SyncPattern1, 0, 3), 4);			$framelength2 = strpos($MPEGaudioData, substr($SyncPattern2, 0, 3), 4);			if ($framelength1 > 4) {				$framelength = $framelength1;			}			if (($framelength2 > 4) && ($framelength2 < $framelength1)) {				$framelength = $framelength2;			}			if (!$framelength) {				$ThisFileInfo['error'][] = 'Cannot find next free-format synch pattern ('.getid3_lib::PrintHexBytes($SyncPattern1).' or '.getid3_lib::PrintHexBytes($SyncPattern2).') after offset '.$offset;				return false;			} else {				$ThisFileInfo['warning'][] = 'ModeExtension varies between first frame and other frames (known free-format issue in LAME 3.88)';				$ThisFileInfo['audio']['codec']   = 'LAME';				$ThisFileInfo['audio']['encoder'] = 'LAME3.88';				$SyncPattern1 = substr($SyncPattern1, 0, 3);				$SyncPattern2 = substr($SyncPattern2, 0, 3);			}		}		if ($deepscan) {			$ActualFrameLengthValues = array();			$nextoffset = $offset + $framelength;			while ($nextoffset < ($ThisFileInfo['avdataend'] - 6)) {				fseek($fd, $nextoffset - 1, SEEK_SET);				$NextSyncPattern = fread($fd, 6);				if ((substr($NextSyncPattern, 1, strlen($SyncPattern1)) == $SyncPattern1) || (substr($NextSyncPattern, 1, strlen($SyncPattern2)) == $SyncPattern2)) {					// good - found where expected					$ActualFrameLengthValues[] = $framelength;				} elseif ((substr($NextSyncPattern, 0, strlen($SyncPattern1)) == $SyncPattern1) || (substr($NextSyncPattern, 0, strlen($SyncPattern2)) == $SyncPattern2)) {					// ok - found one byte earlier than expected (last frame wasn't padded, first frame was)					$ActualFrameLengthValues[] = ($framelength - 1);					$nextoffset--;				} elseif ((substr($NextSyncPattern, 2, strlen($SyncPattern1)) == $SyncPattern1) || (substr($NextSyncPattern, 2, strlen($SyncPattern2)) == $SyncPattern2)) {					// ok - found one byte later than expected (last frame was padded, first frame wasn't)					$ActualFrameLengthValues[] = ($framelength + 1);					$nextoffset++;				} else {					$ThisFileInfo['error'][] = 'Did not find expected free-format sync pattern at offset '.$nextoffset;					return false;				}				$nextoffset += $framelength;			}			if (count($ActualFrameLengthValues) > 0) {				$framelength = intval(round(array_sum($ActualFrameLengthValues) / count($ActualFrameLengthValues)));			}		}		return $framelength;	}	function getOnlyMPEGaudioInfoBruteForce($fd, &$ThisFileInfo) {		$MPEGaudioHeaderDecodeCache = array();		$MPEGaudioHeaderValidCache  = array();		$MPEGaudioHeaderLengthCache = array();		$MPEGaudioVersionLookup       = getid3_mp3::MPEGaudioVersionArray();		$MPEGaudioLayerLookup         = getid3_mp3::MPEGaudioLayerArray();		$MPEGaudioBitrateLookup       = getid3_mp3::MPEGaudioBitrateArray();		$MPEGaudioFrequencyLookup     = getid3_mp3::MPEGaudioFrequencyArray();		$MPEGaudioChannelModeLookup   = getid3_mp3::MPEGaudioChannelModeArray();		$MPEGaudioModeExtensionLookup = getid3_mp3::MPEGaudioModeExtensionArray();		$MPEGaudioEmphasisLookup      = getid3_mp3::MPEGaudioEmphasisArray();		$LongMPEGversionLookup   = array();		$LongMPEGlayerLookup     = array();		$LongMPEGbitrateLookup   = array();		$LongMPEGpaddingLookup   = arr

⌨️ 快捷键说明

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