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

📄 module.audio-video.asf.php

📁 一个用PHP编写的
💻 PHP
📖 第 1 页 / 共 5 页
字号:
						case GETID3_ASF_No_Error_Correction:							// should be no data, but just in case there is, skip to the end of the field							$offset += $thisfile_asf_errorcorrectionobject['error_correction_data_length'];							break;						case GETID3_ASF_Audio_Spread:							// Field Name                   Field Type   Size (bits)							// Span                         BYTE         8               // number of packets over which audio will be spread.							// Virtual Packet Length        WORD         16              // size of largest audio payload found in audio stream							// Virtual Chunk Length         WORD         16              // size of largest audio payload found in audio stream							// Silence Data Length          WORD         16              // number of bytes in Silence Data field							// Silence Data                 BYTESTREAM   variable        // hardcoded: 0x00 * (Silence Data Length) bytes							$thisfile_asf_errorcorrectionobject['span']                  = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 1));							$offset += 1;							$thisfile_asf_errorcorrectionobject['virtual_packet_length'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));							$offset += 2;							$thisfile_asf_errorcorrectionobject['virtual_chunk_length']  = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));							$offset += 2;							$thisfile_asf_errorcorrectionobject['silence_data_length']   = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));							$offset += 2;							$thisfile_asf_errorcorrectionobject['silence_data']          = substr($ASFHeaderData, $offset, $thisfile_asf_errorcorrectionobject['silence_data_length']);							$offset += $thisfile_asf_errorcorrectionobject['silence_data_length'];							break;						default:							$ThisFileInfo['warning'][] = 'error_correction_object.error_correction_type GUID {'.$this->BytestringToGUID($thisfile_asf_errorcorrectionobject['reserved']).'} does not match expected "GETID3_ASF_No_Error_Correction" GUID {'.$this->BytestringToGUID(GETID3_ASF_No_Error_Correction).'} or  "GETID3_ASF_Audio_Spread" GUID {'.$this->BytestringToGUID(GETID3_ASF_Audio_Spread).'}';							//return false;							break;					}					break;				case GETID3_ASF_Content_Description_Object:					// Content Description Object: (optional, one only)					// Field Name                   Field Type   Size (bits)					// Object ID                    GUID         128             // GUID for Content Description object - GETID3_ASF_Content_Description_Object					// Object Size                  QWORD        64              // size of Content Description object, including 34 bytes of Content Description Object header					// Title Length                 WORD         16              // number of bytes in Title field					// Author Length                WORD         16              // number of bytes in Author field					// Copyright Length             WORD         16              // number of bytes in Copyright field					// Description Length           WORD         16              // number of bytes in Description field					// Rating Length                WORD         16              // number of bytes in Rating field					// Title                        WCHAR        16              // array of Unicode characters - Title					// Author                       WCHAR        16              // array of Unicode characters - Author					// Copyright                    WCHAR        16              // array of Unicode characters - Copyright					// Description                  WCHAR        16              // array of Unicode characters - Description					// Rating                       WCHAR        16              // array of Unicode characters - Rating					// shortcut					$thisfile_asf['content_description_object'] = array();					$thisfile_asf_contentdescriptionobject      = &$thisfile_asf['content_description_object'];					$thisfile_asf_contentdescriptionobject['objectid']              = $NextObjectGUID;					$thisfile_asf_contentdescriptionobject['objectid_guid']         = $NextObjectGUIDtext;					$thisfile_asf_contentdescriptionobject['objectsize']            = $NextObjectSize;					$thisfile_asf_contentdescriptionobject['title_length']          = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));					$offset += 2;					$thisfile_asf_contentdescriptionobject['author_length']         = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));					$offset += 2;					$thisfile_asf_contentdescriptionobject['copyright_length']      = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));					$offset += 2;					$thisfile_asf_contentdescriptionobject['description_length']    = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));					$offset += 2;					$thisfile_asf_contentdescriptionobject['rating_length']         = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));					$offset += 2;					$thisfile_asf_contentdescriptionobject['title']                 = substr($ASFHeaderData, $offset, $thisfile_asf_contentdescriptionobject['title_length']);					$offset += $thisfile_asf_contentdescriptionobject['title_length'];					$thisfile_asf_contentdescriptionobject['author']                = substr($ASFHeaderData, $offset, $thisfile_asf_contentdescriptionobject['author_length']);					$offset += $thisfile_asf_contentdescriptionobject['author_length'];					$thisfile_asf_contentdescriptionobject['copyright']             = substr($ASFHeaderData, $offset, $thisfile_asf_contentdescriptionobject['copyright_length']);					$offset += $thisfile_asf_contentdescriptionobject['copyright_length'];					$thisfile_asf_contentdescriptionobject['description']           = substr($ASFHeaderData, $offset, $thisfile_asf_contentdescriptionobject['description_length']);					$offset += $thisfile_asf_contentdescriptionobject['description_length'];					$thisfile_asf_contentdescriptionobject['rating']                = substr($ASFHeaderData, $offset, $thisfile_asf_contentdescriptionobject['rating_length']);					$offset += $thisfile_asf_contentdescriptionobject['rating_length'];					$ASFcommentKeysToCopy = array('title'=>'title', 'author'=>'artist', 'copyright'=>'copyright', 'description'=>'comment', 'rating'=>'rating');					foreach ($ASFcommentKeysToCopy as $keytocopyfrom => $keytocopyto) {						if (!empty($thisfile_asf_contentdescriptionobject[$keytocopyfrom])) {							$thisfile_asf_comments[$keytocopyto][] = $this->TrimTerm($thisfile_asf_contentdescriptionobject[$keytocopyfrom]);						}					}					break;				case GETID3_ASF_Extended_Content_Description_Object:					// Extended Content Description Object: (optional, one only)					// Field Name                   Field Type   Size (bits)					// Object ID                    GUID         128             // GUID for Extended Content Description object - GETID3_ASF_Extended_Content_Description_Object					// Object Size                  QWORD        64              // size of ExtendedContent Description object, including 26 bytes of Extended Content Description Object header					// Content Descriptors Count    WORD         16              // number of entries in Content Descriptors list					// Content Descriptors          array of:    variable        //					// * Descriptor Name Length     WORD         16              // size in bytes of Descriptor Name field					// * Descriptor Name            WCHAR        variable        // array of Unicode characters - Descriptor Name					// * Descriptor Value Data Type WORD         16              // Lookup array:																					// 0x0000 = Unicode String (variable length)																					// 0x0001 = BYTE array     (variable length)																					// 0x0002 = BOOL           (DWORD, 32 bits)																					// 0x0003 = DWORD          (DWORD, 32 bits)																					// 0x0004 = QWORD          (QWORD, 64 bits)																					// 0x0005 = WORD           (WORD,  16 bits)					// * Descriptor Value Length    WORD         16              // number of bytes stored in Descriptor Value field					// * Descriptor Value           variable     variable        // value for Content Descriptor					// shortcut					$thisfile_asf['extended_content_description_object'] = array();					$thisfile_asf_extendedcontentdescriptionobject       = &$thisfile_asf['extended_content_description_object'];					$thisfile_asf_extendedcontentdescriptionobject['objectid']                  = $NextObjectGUID;					$thisfile_asf_extendedcontentdescriptionobject['objectid_guid']             = $NextObjectGUIDtext;					$thisfile_asf_extendedcontentdescriptionobject['objectsize']                = $NextObjectSize;					$thisfile_asf_extendedcontentdescriptionobject['content_descriptors_count'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));					$offset += 2;					for ($ExtendedContentDescriptorsCounter = 0; $ExtendedContentDescriptorsCounter < $thisfile_asf_extendedcontentdescriptionobject['content_descriptors_count']; $ExtendedContentDescriptorsCounter++) {						// shortcut						$thisfile_asf_extendedcontentdescriptionobject['content_descriptors'][$ExtendedContentDescriptorsCounter] = array();						$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current                                  = &$thisfile_asf_extendedcontentdescriptionobject['content_descriptors'][$ExtendedContentDescriptorsCounter];						$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['base_offset']  = $offset + 30;						$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['name_length']  = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));						$offset += 2;						$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['name']         = substr($ASFHeaderData, $offset, $thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['name_length']);						$offset += $thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['name_length'];						$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value_type']   = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));						$offset += 2;						$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value_length'] = getid3_lib::LittleEndian2Int(substr($ASFHeaderData, $offset, 2));						$offset += 2;						$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value']        = substr($ASFHeaderData, $offset, $thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value_length']);						$offset += $thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value_length'];						switch ($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value_type']) {							case 0x0000: // Unicode string								break;							case 0x0001: // BYTE array								// do nothing								break;							case 0x0002: // BOOL								$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value'] = (bool) getid3_lib::LittleEndian2Int($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value']);								break;							case 0x0003: // DWORD							case 0x0004: // QWORD							case 0x0005: // WORD								$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value'] = getid3_lib::LittleEndian2Int($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value']);								break;							default:								$ThisFileInfo['warning'][] = 'extended_content_description.content_descriptors.'.$ExtendedContentDescriptorsCounter.'.value_type is invalid ('.$thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value_type'].')';								//return false;								break;						}						switch ($this->TrimConvert(strtolower($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['name']))) {							case 'wm/albumartist':							case 'artist':								$thisfile_asf_comments['artist'] = array($this->TrimTerm($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value']));								break;							case 'wm/albumtitle':							case 'album':								$thisfile_asf_comments['album']  = array($this->TrimTerm($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value']));								break;							case 'wm/genre':							case 'genre':								$thisfile_asf_comments['genre'] = array($this->TrimTerm($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value']));								break;							case 'wm/tracknumber':							case 'tracknumber':								$thisfile_asf_comments['track'] = array(intval($this->TrimTerm($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value'])));								break;							case 'wm/track':								if (empty($thisfile_asf_comments['track'])) {									$thisfile_asf_comments['track'] = array(1 + $this->TrimConvert($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value']));								}								break;							case 'wm/year':							case 'year':							case 'date':								$thisfile_asf_comments['year'] = array( $this->TrimTerm($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value']));								break;							case 'wm/lyrics':							case 'lyrics':								$thisfile_asf_comments['lyrics'] = array($this->TrimTerm($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value']));								break;							case 'isvbr':								if ($thisfile_asf_extendedcontentdescriptionobject_contentdescriptor_current['value']) {									$thisfile_audio['bitrate_mode'] = 'vbr';

⌨️ 快捷键说明

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