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

📄 module.audio-video.riff.php

📁 CMS系统 提供学习研究修改最好了 比流行的一些CMS简单 但是更容易理解 是帮助你学习PHPCMS系统的好东东哦
💻 PHP
📖 第 1 页 / 共 5 页
字号:
		}		if (empty($thisfile_audio['encoder']) && !empty($ThisFileInfo['mpeg']['audio']['LAME']['short_version'])) {			$thisfile_audio['encoder'] = $ThisFileInfo['mpeg']['audio']['LAME']['short_version'];		}		if (!isset($ThisFileInfo['playtime_seconds'])) {			$ThisFileInfo['playtime_seconds'] = 0;		}		if (isset($thisfile_riff_raw['avih']['dwTotalFrames']) && isset($thisfile_riff_raw['avih']['dwMicroSecPerFrame'])) {			$ThisFileInfo['playtime_seconds'] = $thisfile_riff_raw['avih']['dwTotalFrames'] * ($thisfile_riff_raw['avih']['dwMicroSecPerFrame'] / 1000000);		}		if ($ThisFileInfo['playtime_seconds'] > 0) {			if (isset($thisfile_riff_audio) && isset($thisfile_riff_video)) {				if (!isset($ThisFileInfo['bitrate'])) {					$ThisFileInfo['bitrate'] = ((($thisfile_avdataend - $thisfile_avdataoffset) / $ThisFileInfo['playtime_seconds']) * 8);				}			} elseif (isset($thisfile_riff_audio) && !isset($thisfile_riff_video)) {				if (!isset($thisfile_audio['bitrate'])) {					$thisfile_audio['bitrate'] = ((($thisfile_avdataend - $thisfile_avdataoffset) / $ThisFileInfo['playtime_seconds']) * 8);				}			} elseif (!isset($thisfile_riff_audio) && isset($thisfile_riff_video)) {				if (!isset($thisfile_video['bitrate'])) {					$thisfile_video['bitrate'] = ((($thisfile_avdataend - $thisfile_avdataoffset) / $ThisFileInfo['playtime_seconds']) * 8);				}			}		}		if (isset($thisfile_riff_video) && isset($thisfile_audio['bitrate']) && ($thisfile_audio['bitrate'] > 0) && ($ThisFileInfo['playtime_seconds'] > 0)) {			$ThisFileInfo['bitrate'] = ((($thisfile_avdataend - $thisfile_avdataoffset) / $ThisFileInfo['playtime_seconds']) * 8);			$thisfile_audio['bitrate'] = 0;			$thisfile_video['bitrate'] = $ThisFileInfo['bitrate'];			foreach ($thisfile_riff_audio as $channelnumber => $audioinfoarray) {				$thisfile_video['bitrate'] -= $audioinfoarray['bitrate'];				$thisfile_audio['bitrate'] += $audioinfoarray['bitrate'];			}			if ($thisfile_video['bitrate'] <= 0) {				unset($thisfile_video['bitrate']);			}			if ($thisfile_audio['bitrate'] <= 0) {				unset($thisfile_audio['bitrate']);			}		}		if (isset($ThisFileInfo['mpeg']['audio'])) {			$thisfile_audio_dataformat      = 'mp'.$ThisFileInfo['mpeg']['audio']['layer'];			$thisfile_audio['sample_rate']  = $ThisFileInfo['mpeg']['audio']['sample_rate'];			$thisfile_audio['channels']     = $ThisFileInfo['mpeg']['audio']['channels'];			$thisfile_audio['bitrate']      = $ThisFileInfo['mpeg']['audio']['bitrate'];			$thisfile_audio['bitrate_mode'] = strtolower($ThisFileInfo['mpeg']['audio']['bitrate_mode']);			if (!empty($ThisFileInfo['mpeg']['audio']['codec'])) {				$thisfile_audio['codec'] = $ThisFileInfo['mpeg']['audio']['codec'].' '.$thisfile_audio['codec'];			}			if (!empty($thisfile_audio['streams'])) {				foreach ($thisfile_audio['streams'] as $streamnumber => $streamdata) {					if ($streamdata['dataformat'] == $thisfile_audio_dataformat) {						$thisfile_audio['streams'][$streamnumber]['sample_rate']  = $thisfile_audio['sample_rate'];						$thisfile_audio['streams'][$streamnumber]['channels']     = $thisfile_audio['channels'];						$thisfile_audio['streams'][$streamnumber]['bitrate']      = $thisfile_audio['bitrate'];						$thisfile_audio['streams'][$streamnumber]['bitrate_mode'] = $thisfile_audio['bitrate_mode'];						$thisfile_audio['streams'][$streamnumber]['codec']        = $thisfile_audio['codec'];					}				}			}			$thisfile_audio['encoder_options'] = getid3_mp3::GuessEncoderOptions($ThisFileInfo);		}		if (!empty($thisfile_riff_raw['fmt ']['wBitsPerSample']) && ($thisfile_riff_raw['fmt ']['wBitsPerSample'] > 0)) {			switch ($thisfile_audio_dataformat) {				case 'ac3':					// ignore bits_per_sample					break;				default:					$thisfile_audio['bits_per_sample'] = $thisfile_riff_raw['fmt ']['wBitsPerSample'];					break;			}		}		if (empty($thisfile_riff_raw)) {			unset($thisfile_riff['raw']);		}		if (empty($thisfile_riff_audio)) {			unset($thisfile_riff['audio']);		}		if (empty($thisfile_riff_video)) {			unset($thisfile_riff['video']);		}		return true;	}	function ParseRIFF(&$fd, $startoffset, $maxoffset, &$ThisFileInfo) {		$maxoffset = min($maxoffset, $ThisFileInfo['avdataend']);		$RIFFchunk = false;		fseek($fd, $startoffset, SEEK_SET);		while (ftell($fd) < $maxoffset) {			$chunkname = fread($fd, 4);			if (strlen($chunkname) < 4) {				$ThisFileInfo['error'][] = 'Expecting chunk name at offset '.(ftell($fd) - 4).' but found nothing. Aborting RIFF parsing.';				break;			}			$chunksize = getid3_riff::EitherEndian2Int($ThisFileInfo, fread($fd, 4));			if ($chunksize == 0) {				$ThisFileInfo['error'][] = 'Chunk size at offset '.(ftell($fd) - 4).' is zero. Aborting RIFF parsing.';				break;			}			if (($chunksize % 2) != 0) {				// all structures are packed on word boundaries				$chunksize++;			}			switch ($chunkname) {				case 'LIST':					$listname = fread($fd, 4);					switch ($listname) {						case 'movi':						case 'rec ':							$RIFFchunk[$listname]['offset'] = ftell($fd) - 4;							$RIFFchunk[$listname]['size']   = $chunksize;							static $ParsedAudioStream = false;							if ($ParsedAudioStream) {								// skip over							} else {								$WhereWeWere = ftell($fd);								$AudioChunkHeader = fread($fd, 12);								$AudioChunkStreamNum  =                              substr($AudioChunkHeader, 0, 2);								$AudioChunkStreamType =                              substr($AudioChunkHeader, 2, 2);								$AudioChunkSize       = getid3_lib::LittleEndian2Int(substr($AudioChunkHeader, 4, 4));								if ($AudioChunkStreamType == 'wb') {									$FirstFourBytes = substr($AudioChunkHeader, 8, 4);									if (preg_match('/^\xFF[\xE2-\xE7\xF2-\xF7\xFA-\xFF][\x00-\xEB]/s', $FirstFourBytes)) {										// MP3										if (getid3_mp3::MPEGaudioHeaderBytesValid($FirstFourBytes)) {											$dummy = $ThisFileInfo;											$dummy['avdataoffset'] = ftell($fd) - 4;											$dummy['avdataend']    = ftell($fd) + $AudioChunkSize;											getid3_mp3::getOnlyMPEGaudioInfo($fd, $dummy, $dummy['avdataoffset'], false);											if (isset($dummy['mpeg']['audio'])) {												$ThisFileInfo = $dummy;												$ThisFileInfo['audio']['dataformat']   = 'mp'.$ThisFileInfo['mpeg']['audio']['layer'];												$ThisFileInfo['audio']['sample_rate']  = $ThisFileInfo['mpeg']['audio']['sample_rate'];												$ThisFileInfo['audio']['channels']     = $ThisFileInfo['mpeg']['audio']['channels'];												$ThisFileInfo['audio']['bitrate']      = $ThisFileInfo['mpeg']['audio']['bitrate'];												$ThisFileInfo['bitrate']               = $ThisFileInfo['audio']['bitrate'];												$ThisFileInfo['audio']['bitrate_mode'] = strtolower($ThisFileInfo['mpeg']['audio']['bitrate_mode']);											}										}									} elseif (preg_match('/^\x0B\x77/s', $FirstFourBytes)) {										// AC3										$GETID3_ERRORARRAY = &$ThisFileInfo['warning'];										if (getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.audio.ac3.php', __FILE__, false)) {											$dummy = $ThisFileInfo;											$dummy['avdataoffset'] = ftell($fd) - 4;											$dummy['avdataend']    = ftell($fd) + $AudioChunkSize;											$dummy['error']        = array();											$ac3_tag = new getid3_ac3($fd, $dummy);											if (empty($dummy['error'])) {												$ThisFileInfo['audio']   = $dummy['audio'];												$ThisFileInfo['ac3']     = $dummy['ac3'];												$ThisFileInfo['warning'] = $dummy['warning'];											}										}									}								}								$ParsedAudioStream = true;								fseek($fd, $WhereWeWere, SEEK_SET);							}							fseek($fd, $chunksize - 4, SEEK_CUR);							break;						default:							if (!isset($RIFFchunk[$listname])) {								$RIFFchunk[$listname] = array();							}							$LISTchunkParent    = $listname;							$LISTchunkMaxOffset = ftell($fd) - 4 + $chunksize;							if ($parsedChunk = getid3_riff::ParseRIFF($fd, ftell($fd), ftell($fd) + $chunksize - 4, $ThisFileInfo)) {								$RIFFchunk[$listname] = array_merge_recursive($RIFFchunk[$listname], $parsedChunk);							}							break;					}					break;				default:					$thisindex = 0;					if (isset($RIFFchunk[$chunkname]) && is_array($RIFFchunk[$chunkname])) {						$thisindex = count($RIFFchunk[$chunkname]);					}					$RIFFchunk[$chunkname][$thisindex]['offset'] = ftell($fd) - 8;					$RIFFchunk[$chunkname][$thisindex]['size']   = $chunksize;					switch ($chunkname) {						case 'data':							$ThisFileInfo['avdataoffset'] = ftell($fd);							$ThisFileInfo['avdataend']    = $ThisFileInfo['avdataoffset'] + $chunksize;							$RIFFdataChunkContentsTest = fread($fd, 32);							if ((strlen($RIFFdataChunkContentsTest) > 0) && preg_match('/^\xFF[\xE2-\xE7\xF2-\xF7\xFA-\xFF][\x00-\xEB]/s', substr($RIFFdataChunkContentsTest, 0, 4))) {								// Probably is MP3 data								if (getid3_mp3::MPEGaudioHeaderBytesValid(substr($RIFFdataChunkContentsTest, 0, 4))) {							

⌨️ 快捷键说明

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