/** * MagicDb::analyze should properly detect the file type and output additional info as requested. * * @access public */ function testAnalyze() { $r = $this->Db->read(MagicDbTestData::get('magic.db')); $this->assertTrue($r === true); $r = $this->Db->analyze(array()); $this->assertTrue($r === false); // TODO: Check several serialized file samples for accurate detection }
public function testAnalyze() { $result = $this->fcgi->analyze(); $this->assertTrue($result); }
/** * Convert info getted with demuxer to standart view * * @param object $mplayerInstance * @param string $url * @param int $fileSize * @return array */ public static function analyze($mplayerInstance, $url, $fileSize) { $infoSource = $mplayerInstance->analyze($url); $bitrate = 0; //Video if (self::getVideoCodec($infoSource['ID_VIDEO_FORMAT'])) { $info['video']['streams'][0]['codec'] = self::getVideoCodec($infoSource['ID_VIDEO_FORMAT']); } else { $info['video']['streams'][0]['codec'] = $infoSource['ID_VIDEO_CODEC']; } $info['video']['streams'][0]['resolution_x'] = $infoSource['ID_VIDEO_WIDTH']; $info['video']['streams'][0]['resolution_y'] = $infoSource['ID_VIDEO_HEIGHT']; $info['video']['streams'][0]['frame_rate'] = $infoSource['ID_VIDEO_FPS']; $info['video']['streams'][0]['bitrate_mode'] = ''; $info['video']['streams'][0]['total_frames'] = ''; $info['video']['streams'][0]['fourcc'] = ''; $info['video']['streams'][0]['pixel_aspect_ratio'] = $infoSource['ID_VIDEO_ASPECT']; $info['video']['streams'][0]['lossless'] = ''; $info['video']['streams'][0]['bits_per_sample'] = ''; $info['video']['streams'][0]['bitrate'] = $infoSource['ID_VIDEO_BITRATE']; $bitrate += $infoSource['ID_VIDEO_BITRATE']; $info['video']['streams'][0]['compression_ratio'] = ''; $info['video']['streams'][0]['dataformat'] = $infoSource['ID_DEMUXER']; //audio $numberOfAudioTracks = $infoSource['numberOfAudioTracks']; $info['audio']['streams'][0]['bitrate'] = $infoSource['ID_AUDIO_BITRATE']; $info['audio']['streams'][0]['sample_rate'] = $infoSource['ID_AUDIO_RATE']; $info['audio']['streams'][0]['channels'] = $infoSource['ID_AUDIO_NCH']; $info['audio']['streams'][0]['channelmode'] = ''; if (@$infoSource['ID_AUDIO_NCH'] == '1') { $info['audio']['streams'][0]['channelmode'] = 'mono'; } elseif (@$infoSource['ID_AUDIO_NCH'] == '2') { $info['audio']['streams'][0]['channelmode'] = 'stereo'; } $info['audio']['streams'][0]['dataformat'] = ''; $info['audio']['streams'][0]['wformattag'] = ''; $info['audio']['streams'][0]['lossless'] = ''; $info['audio']['streams'][0]['bitrate_mode'] = ''; $info['audio']['streams'][0]['compression_ratio'] = ''; $info['audio']['streams'][0]['codec'] = self::getAudioCodec($infoSource['ID_AUDIO_FORMAT']); //Если больше одной дорожки if ($numberOfAudioTracks > 1) { for ($i = 1; $i < (int) $numberOfAudioTracks; $i++) { $infoSource = $mplayerInstance->analyze($url, $i); $info['audio']['streams'][$i]['bitrate'] = $infoSource['ID_AUDIO_BITRATE']; $bitrate += $infoSource['ID_AUDIO_BITRATE']; $info['audio']['streams'][$i]['sample_rate'] = $infoSource['ID_AUDIO_RATE']; $info['audio']['streams'][$i]['channels'] = $infoSource['ID_AUDIO_NCH']; $info['audio']['streams'][$i]['channelmode'] = ''; if (@$infoSource['ID_AUDIO_NCH'] == '1') { $info['audio']['streams'][$i]['channelmode'] = 'mono'; } elseif (@$infoSource['ID_AUDIO_NCH'] == '2') { $info['audio']['streams'][$i]['channelmode'] = 'stereo'; } $info['audio']['streams'][$i]['dataformat'] = ''; $info['audio']['streams'][$i]['wformattag'] = ''; $info['audio']['streams'][$i]['lossless'] = ''; $info['audio']['streams'][$i]['bitrate_mode'] = ''; $info['audio']['streams'][$i]['compression_ratio'] = ''; $info['audio']['streams'][$i]['codec'] = self::getAudioCodec($infoSource['ID_AUDIO_FORMAT']); } } //Common $info['playtime_seconds'] = (int) $infoSource['ID_LENGTH']; $info['file_size'] = $fileSize; $info['mime_type'] = ''; $info['bitrate'] = $bitrate; $minutes = floor((int) $info['playtime_seconds'] / 60); $seconds = (int) $info['playtime_seconds'] - $minutes * 60; $seconds = $seconds < 10 ? '0' . $seconds : $seconds; $info['playtime_string'] = $minutes . ':' . $seconds; return $info; }