mediaInfo = (string)$mediaInfo; $this->mediaInfoArr = $this->getMediaInfoArr((string)$mediaInfo); } public function getMediaInfoArr(string $mediaInfo) { $arr = preg_split('/[\r\n]+/', $mediaInfo); $result = []; $parentKey = ""; foreach ($arr as $key => $value) { $value = trim($value); if (empty($value)) { continue; } $rowKeyValue = explode(':', $value); $rowKeyValue = array_filter(array_map('trim', $rowKeyValue)); if (count($rowKeyValue) == 1) { $parentKey = $rowKeyValue[0]; } elseif (count($rowKeyValue) == 2) { if (empty($parentKey)) { continue; } $result[$parentKey][$rowKeyValue[0]] = $rowKeyValue[1]; } } return $result; } public function getRuntime() { return $this->mediaInfoArr['General']['Duration'] ?? ''; } public function getResolution() { $width = $this->mediaInfoArr['Video']['Width'] ?? ''; $height = $this->mediaInfoArr['Video']['Height'] ?? ''; $ratio = $this->mediaInfoArr['Video']['Display aspect ratio'] ?? ''; $result = $width . 'x' . $height; if ($ratio) { $result .= "($ratio)"; } return $result; } public function getBitrate() { $result = $this->mediaInfoArr['Video']['Bit rate'] ?? ''; return $result; } public function getFramerate() { $result = $this->mediaInfoArr['Video']['Frame rate'] ?? ''; return $result; } public function getProfile() { $result = $this->mediaInfoArr['Video']['Format profile'] ?? ''; return $result; } public function getRefFrame() { foreach ($this->mediaInfoArr['Video'] as $key => $value) { if (strpos($key, 'Reference frames') !== false) { return $value; } } return ''; } public function getAudios() { $result = []; foreach ($this->mediaInfoArr as $parentKey => $values) { if (strpos($parentKey, 'Audio') == false) { continue; } $audioInfoArr = []; if (!empty($values['Language'])) { $audioInfoArr[] = $values['Language']; } if (!empty($values['Format'])) { $audioInfoArr[] = $values['Format']; } if (!empty($values['Channel(s)'])) { $audioInfoArr[] = $values['Channel(s)']; } if (!empty($values['Bit rate'])) { $audioInfoArr[]= "@" . $values['Bit rate']; } if (!empty($audioInfoArr)) { $result[$parentKey] = implode(" ", $audioInfoArr); } } return $result; } public function getSubtitles() { $result = []; foreach ($this->mediaInfoArr as $parentKey => $values) { if (strpos($parentKey, 'Text') == false) { continue; } $audioInfoArr = []; if (!empty($values['Language'])) { $audioInfoArr[] = $values['Language']; } if (!empty($values['Format'])) { $audioInfoArr[] = $values['Format']; } if (!empty($audioInfoArr)) { $result[$parentKey] = implode(" ", $audioInfoArr); } } return $result; } public function renderOnDetailsPage() { global $lang_functions; $runtime = $this->getRuntime(); $resolution = $this->getResolution(); $bitrate = $this->getBitrate(); $profile = $this->getProfile(); $framerate = $this->getFramerate(); $refFrame = $this->getRefFrame(); $audios = $this->getAudios(); $subtitles = $this->getSubtitles(); $html = ''; if (!empty($runtime)) { } } }