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

📄 module.audio-video.asf.php

📁 一个用PHP编写的
💻 PHP
📖 第 1 页 / 共 5 页
字号:
									$thisfile_video['bitrate_mode'] = 'vbr';								}								break;							case 'id3':								// id3v2 module might not be loaded								if (class_exists('getid3_id3v2')) {								    $tempfile         = tempnam('*', 'getID3');								    $tempfilehandle   = fopen($tempfile, "wb");									$tempThisfileInfo = array('encoding'=>$ThisFileInfo['encoding']);									fwrite($tempfilehandle, $thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value']);									fclose($tempfilehandle);									$tempfilehandle = fopen($tempfile, "rb");									$id3 = new getid3_id3v2($tempfilehandle, $tempThisfileInfo);									fclose($tempfilehandle);									unlink($tempfile);									$ThisFileInfo['id3v2'] = $tempThisfileInfo['id3v2'];								}								break;							case 'wm/encodingtime':								$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['encoding_time_unix'] = $this->FILETIMEtoUNIXtime($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value']);								$thisfile_asf_comments['encoding_time_unix'] = array($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['encoding_time_unix']);								break;							case 'wm/picture':								//typedef struct _WMPicture{								//  LPWSTR  pwszMIMEType;								//  BYTE  bPictureType;								//  LPWSTR  pwszDescription;								//  DWORD  dwDataLen;								//  BYTE*  pbData;								//} WM_PICTURE;								$wm_picture_offset = 0;								$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['image_type_id'] = getid3_lib::LittleEndian2Int(substr($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value'], $wm_picture_offset, 1));								$wm_picture_offset += 1;								$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['image_type']    = $this->WMpictureTypeLookup($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['image_type_id']);								$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['image_size']    = getid3_lib::LittleEndian2Int(substr($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value'], $wm_picture_offset, 4));								$wm_picture_offset += 4;								$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['image_mime'] = '';								do {									$next_byte_pair = substr($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value'], $wm_picture_offset, 2);									$wm_picture_offset += 2;									$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['image_mime'] .= $next_byte_pair;								} while ($next_byte_pair !== "\x00\x00");								$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['image_description'] = '';								do {									$next_byte_pair = substr($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value'], $wm_picture_offset, 2);									$wm_picture_offset += 2;									$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['image_description'] .= $next_byte_pair;								} while ($next_byte_pair !== "\x00\x00");								$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['dataoffset'] = $wm_picture_offset;								$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['data'] = substr($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value'], $wm_picture_offset);								unset($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value']);								break;							default:								switch ($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value_type']) {									case 0: // Unicode string										if (substr($this->TrimConvert($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['name']), 0, 3) == 'WM/') {											$thisfile_asf_comments[str_replace('wm/', '', strtolower($this->TrimConvert($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['name'])))] = array($this->TrimTerm($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value']));										}										break;									case 1:										break;								}								break;						}					}					break;				case GETID3_ASF_Stream_Bitrate_Properties_Object:					// Stream Bitrate Properties Object: (optional, one only)					// Field Name                   Field Type   Size (bits)					// Object ID                    GUID         128             // GUID for Stream Bitrate Properties object - GETID3_ASF_Stream_Bitrate_Properties_Object					// Object Size                  QWORD        64              // size of Extended Content Description object, including 26 bytes of Stream Bitrate Properties Object header					// Bitrate Records Count        WORD         16              // number of records in Bitrate Records					// Bitrate Records              array of:    variable        //					// * Flags                      WORD         16              //					// * * Stream Number            bits         7  (0x007F)     // number of this stream					// * * Reserved                 bits         9  (0xFF80)     // hardcoded: 0					// * Average Bitrate            DWORD        32              // in bits per second					// shortcut					$thisfile_asf['stream_bitrate_properties_object'] = array();					$thisfile_asf_streambitratepropertiesobject       = &$thisfile_asf['stream_bitrate_properties_object'];					$thisfile_asf_streambitratepropertiesobject['objectid']                  = $NextObjectGUID;					$thisfile_asf_streambitratepropertiesobject['objectid_guid']             = $NextObjectGUIDtext;					$thisfile_asf_streambitratepropertiesobject['objectsize']                = $NextObjectSize;					$thisfile_asf_streambitratepropertiesobject['bitrate_records_count']     = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));					$offset += 2;					for ($BitrateRecordsCounter = 0; $BitrateRecordsCounter < $thisfile_asf_streambitratepropertiesobject['bitrate_records_count']; $BitrateRecordsCounter++) {						$thisfile_asf_streambitratepropertiesobject['bitrate_records'][$BitrateRecordsCounter]['flags_raw'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));						$offset += 2;						$thisfile_asf_streambitratepropertiesobject['bitrate_records'][$BitrateRecordsCounter]['flags']['stream_number'] = $thisfile_asf_streambitratepropertiesobject['bitrate_records'][$BitrateRecordsCounter]['flags_raw'] & 0x007F;						$thisfile_asf_streambitratepropertiesobject['bitrate_records'][$BitrateRecordsCounter]['bitrate'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 4));						$offset += 4;					}					break;				case GETID3_ASF_Padding_Object:					// Padding Object: (optional)					// Field Name                   Field Type   Size (bits)					// Object ID                    GUID         128             // GUID for Padding object - GETID3_ASF_Padding_Object					// Object Size                  QWORD        64              // size of Padding object, including 24 bytes of ASF Padding Object header					// Padding Data                 BYTESTREAM   variable        // ignore					// shortcut					$thisfile_asf['padding_object'] = array();					$thisfile_asf_paddingobject     = &$thisfile_asf['padding_object'];					$thisfile_asf_paddingobject['objectid']                  = $NextObjectGUID;					$thisfile_asf_paddingobject['objectid_guid']             = $NextObjectGUIDtext;					$thisfile_asf_paddingobject['objectsize']                = $NextObjectSize;					$thisfile_asf_paddingobject['padding_length']            = $thisfile_asf_paddingobject['objectsize'] - 16 - 8;					$thisfile_asf_paddingobject['padding']                   = substr($ASFHeaderData, $offset, $thisfile_asf_paddingobject['padding_length']);					break;				case GETID3_ASF_Extended_Content_Encryption_Object:				case GETID3_ASF_Content_Encryption_Object:					// WMA DRM - just ignore					$offset += ($NextObjectSize - 16 - 8);					break;				default:					// Implementations shall ignore any standard or non-standard object that they do not know how to handle.					if ($this->GUIDname($NextObjectGUIDtext)) {						$ThisFileInfo['warning'][] = 'unhandled GUID "'.$this->GUIDname($NextObjectGUIDtext).'" {'.$NextObjectGUIDtext.'} in ASF header at offset '.($offset - 16 - 8);					} else {						$ThisFileInfo['warning'][] = 'unknown GUID {'.$NextObjectGUIDtext.'} in ASF header at offset '.($offset - 16 - 8);					}					$offset += ($NextObjectSize - 16 - 8);					break;			}		}		if (isset($thisfile_asf_streambitrateproperties['bitrate_records_count'])) {			$ASFbitrateAudio = 0;			$ASFbitrateVideo = 0;			for ($BitrateRecordsCounter = 0; $BitrateRecordsCounter < $thisfile_asf_streambitrateproperties['bitrate_records_count']; $BitrateRecordsCounter++) {				if (isset($thisfile_asf_codeclistobject['codec_entries'][$BitrateRecordsCounter])) {					switch ($thisfile_asf_codeclistobject['codec_entries'][$BitrateRecordsCounter]['type_raw']) {						case 1:							$ASFbitrateVideo += $thisfile_asf_streambitrateproperties['bitrate_records'][$BitrateRecordsCounter]['bitrate'];							break;						case 2:							$ASFbitrateAudio += $thisfile_asf_streambitrateproperties['bitrate_records'][$BitrateRecordsCounter]['bitrate'];							break;						default:							// do nothing							break;					}				}			}			if ($ASFbitrateAudio > 0) {				$thisfile_audio['bitrate'] = $ASFbitrateAudio;			}			if ($ASFbitrateVideo > 0) {				$thisfile_video['bitrate'] = $ASFbitrateVideo;			}		}		if (isset($thisfile_asf['stream_properties_object']) && is_array($thisfile_asf['stream_properties_object'])) {			$thisfile_audio['bitrate'] = 0;			$thisfile_video['bitrate'] = 0;			foreach ($thisfile_asf['stream_properties_object'] as $streamnumber => $streamdata) {				switch ($streamdata['stream_type']) {					case GETID3_ASF_Audio_Media:						// Field Name                   Field Type   Size (bits)						// Codec ID / Format Tag        WORD         16              // unique ID of audio codec - defined as wFormatTag field of WAVEFORMATEX structure						// Number of Channels           WORD         16              // number of channels of audio - defined as nChannels field of WAVEFORMATEX structure						// Samples Per Second           DWORD        32              // in Hertz - defined as nSamplesPerSec field of WAVEFORMATEX structure						// Average number of Bytes/sec  DWORD        32              // bytes/sec of audio stream  - defined as nAvgBytesPerSec field of WAVEFORMATEX structure						// Block Alignment              WORD         16              // block size in bytes of audio codec - defined as nBlockAlign field of WAVEFORMATEX structure						// Bits per sample              WORD         16              // bits per sample of mono data. set to zero for variable bitrate codecs. defined as wBitsPerSample field of WAVEFORMATEX structure						// Codec Specific Data Size     WORD         16              // size in bytes of Codec Specific Data buffer - defined as cbSize field of WAVEFORMATEX structure						// Codec Specific Data          BYTESTREAM   variable        // array of codec-specific data bytes						// shortcut						$thisfile_asf['audio_media'][$streamnumber] = array();						$thisfile_asf_

⌨️ 快捷键说明

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