| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316 | <?php//////////////////////////////////////////////////////////////////// getID3() by James Heinrich <info@getid3.org>               ////  available at https://github.com/JamesHeinrich/getID3       ////            or https://www.getid3.org                        ////            or http://getid3.sourceforge.net                 ////                                                             //// /demo/demo.audioinfo.class.php - part of getID3()           ////                                                            ////////////////////////////////////////////////////////////////////// +----------------------------------------------------------------------+// | PHP version 4.1.0                                                    |// +----------------------------------------------------------------------+// | Placed in public domain by Allan Hansen, 2002. Share and enjoy!      |// +----------------------------------------------------------------------+// | /demo/demo.audioinfo.class.php                                       |// |                                                                      |// | Example wrapper class to extract information from audio files        |// | through getID3().                                                    |// |                                                                      |// | getID3() returns a lot of information. Much of this information is   |// | not needed for the end-application. It is also possible that some    |// | users want to extract specific info. Modifying getID3() files is a   |// | bad idea, as modifications needs to be done to future versions of    |// | getID3().                                                            |// |                                                                      |// | Modify this wrapper class instead. This example extracts certain     |// | fields only and adds a new root value - encoder_options if possible. |// | It also checks for mp3 files with wave headers.                      |// +----------------------------------------------------------------------+// | Example code:                                                        |// |   $au = new AudioInfo();                                             |// |   print_r($au->Info('file.flac');                                    |// +----------------------------------------------------------------------+// | Authors: Allan Hansen <ahØartemis*dk>                                |// +----------------------------------------------------------------------+/*** getID3() settings*/require_once('../getid3/getid3.php');/*** Class for extracting information from audio files with getID3().*/class AudioInfo {	/**	* Private variables	*/	private $result;	private $info;	private $getID3;	/**	* Constructor	*/	function __construct() {		// Initialize getID3 engine		$this->getID3 = new getID3;		$this->getID3->option_md5_data        = true;		$this->getID3->option_md5_data_source = true;		$this->getID3->encoding               = 'UTF-8';	}	/**	* Extract information - only public function	*	* @param    string  $file    Audio file to extract info from.	*	* @return array	*/	public function Info($file) {		// Analyze file		$this->info = $this->getID3->analyze($file);		// Exit here on error		if (isset($this->info['error'])) {			return array ('error' => $this->info['error']);		}		// Init wrapper object		$this->result = array();		$this->result['format_name']     = (isset($this->info['fileformat']) ? $this->info['fileformat'] : '').'/'.(isset($this->info['audio']['dataformat']) ? $this->info['audio']['dataformat'] : '').(isset($this->info['video']['dataformat']) ? '/'.$this->info['video']['dataformat'] : '');		$this->result['encoder_version'] = (isset($this->info['audio']['encoder'])         ? $this->info['audio']['encoder']         : '');		$this->result['encoder_options'] = (isset($this->info['audio']['encoder_options']) ? $this->info['audio']['encoder_options'] : '');		$this->result['bitrate_mode']    = (isset($this->info['audio']['bitrate_mode'])    ? $this->info['audio']['bitrate_mode']    : '');		$this->result['channels']        = (isset($this->info['audio']['channels'])        ? $this->info['audio']['channels']        : '');		$this->result['sample_rate']     = (isset($this->info['audio']['sample_rate'])     ? $this->info['audio']['sample_rate']     : '');		$this->result['bits_per_sample'] = (isset($this->info['audio']['bits_per_sample']) ? $this->info['audio']['bits_per_sample'] : '');		$this->result['playing_time']    = (isset($this->info['playtime_seconds'])         ? $this->info['playtime_seconds']         : '');		$this->result['avg_bit_rate']    = (isset($this->info['audio']['bitrate'])         ? $this->info['audio']['bitrate']         : '');		$this->result['tags']            = (isset($this->info['tags'])                     ? $this->info['tags']                     : '');		$this->result['comments']        = (isset($this->info['comments'])                 ? $this->info['comments']                 : '');		$this->result['warning']         = (isset($this->info['warning'])                  ? $this->info['warning']                  : '');		$this->result['md5']             = (isset($this->info['md5_data'])                 ? $this->info['md5_data']                 : '');		// Post getID3() data handling based on file format		$method = (isset($this->info['fileformat']) ? $this->info['fileformat'] : '').'Info';		if ($method && method_exists($this, $method)) {			$this->$method();		}		return $this->result;	}	/**	* post-getID3() data handling for AAC files.	*	*/	private function aacInfo() {		$this->result['format_name']     = 'AAC';	}	/**	* post-getID3() data handling for Wave files.	*	*/	private function riffInfo() {		if ($this->info['audio']['dataformat'] == 'wav') {			$this->result['format_name'] = 'Wave';		} elseif (preg_match('#^mp[1-3]$#', $this->info['audio']['dataformat'])) {			$this->result['format_name'] = strtoupper($this->info['audio']['dataformat']);		} else {			$this->result['format_name'] = 'riff/'.$this->info['audio']['dataformat'];		}	}	/**	* * post-getID3() data handling for FLAC files.	*	*/	private function flacInfo() {		$this->result['format_name']     = 'FLAC';	}	/**	* post-getID3() data handling for Monkey's Audio files.	*	*/	private function macInfo() {		$this->result['format_name']     = 'Monkey\'s Audio';	}	/**	 * post-getID3() data handling for Lossless Audio files.	 */	private function laInfo() {		$this->result['format_name']     = 'La';	}	/**	* post-getID3() data handling for Ogg Vorbis files.	*	* @access   private	*/	function oggInfo() {		if ($this->info['audio']['dataformat'] == 'vorbis') {			$this->result['format_name']     = 'Ogg Vorbis';		} else if ($this->info['audio']['dataformat'] == 'flac') {			$this->result['format_name'] = 'Ogg FLAC';		} else if ($this->info['audio']['dataformat'] == 'speex') {			$this->result['format_name'] = 'Ogg Speex';		} else {			$this->result['format_name'] = 'Ogg '.$this->info['audio']['dataformat'];		}	}	/**	* post-getID3() data handling for Musepack files.	*	* @access   private	*/	function mpcInfo() {		$this->result['format_name']     = 'Musepack';	}	/**	* post-getID3() data handling for MPEG files.	*	* @access   private	*/	function mp3Info() {		$this->result['format_name']     = 'MP3';	}	/**	* post-getID3() data handling for MPEG files.	*	* @access   private	*/	function mp2Info() {		$this->result['format_name']     = 'MP2';	}	/**	* post-getID3() data handling for MPEG files.	*	* @access   private	*/	function mp1Info() {		$this->result['format_name']     = 'MP1';	}	/**	* post-getID3() data handling for WMA files.	*	* @access   private	*/	function asfInfo() {		$this->result['format_name']     = strtoupper($this->info['audio']['dataformat']);	}	/**	* post-getID3() data handling for Real files.	*	* @access   private	*/	function realInfo() {		$this->result['format_name']     = 'Real';	}	/**	* post-getID3() data handling for VQF files.	*	* @access   private	*/	function vqfInfo() {		$this->result['format_name']     = 'VQF';	}}
 |