summaryrefslogtreecommitdiffstats
path: root/apps/media/getID3/demos/demo.audioinfo.class.php
diff options
context:
space:
mode:
authorRobin Appelman <icewind1991@gmail.com>2011-07-22 06:30:52 +0200
committerRobin Appelman <icewind1991@gmail.com>2011-07-22 06:30:52 +0200
commit38f1cffab39ae763f3929bcc37e6f8746f582083 (patch)
treea833cacb98acc372f40dda0c757904b4cba9c331 /apps/media/getID3/demos/demo.audioinfo.class.php
parentf441059b015b01af1fcafcdeeef8727f19d0d2d5 (diff)
downloadnextcloud-server-38f1cffab39ae763f3929bcc37e6f8746f582083.tar.gz
nextcloud-server-38f1cffab39ae763f3929bcc37e6f8746f582083.zip
import media app
Diffstat (limited to 'apps/media/getID3/demos/demo.audioinfo.class.php')
-rw-r--r--apps/media/getID3/demos/demo.audioinfo.class.php319
1 files changed, 319 insertions, 0 deletions
diff --git a/apps/media/getID3/demos/demo.audioinfo.class.php b/apps/media/getID3/demos/demo.audioinfo.class.php
new file mode 100644
index 00000000000..d38ec19807f
--- /dev/null
+++ b/apps/media/getID3/demos/demo.audioinfo.class.php
@@ -0,0 +1,319 @@
+<?php
+
+// +----------------------------------------------------------------------+
+// | 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
+ */
+ var $result = NULL;
+ var $info = NULL;
+
+
+
+
+ /**
+ * Constructor
+ */
+
+ function AudioInfo() {
+
+ // 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
+ *
+ * @access public
+ * @param string file Audio file to extract info from.
+ */
+
+ 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'] = @$this->info['fileformat'].'/'.@$this->info['audio']['dataformat'].(isset($this->info['video']['dataformat']) ? '/'.@$this->info['video']['dataformat'] : '');
+ $this->result['encoder_version'] = @$this->info['audio']['encoder'];
+ $this->result['encoder_options'] = @$this->info['audio']['encoder_options'];
+ $this->result['bitrate_mode'] = @$this->info['audio']['bitrate_mode'];
+ $this->result['channels'] = @$this->info['audio']['channels'];
+ $this->result['sample_rate'] = @$this->info['audio']['sample_rate'];
+ $this->result['bits_per_sample'] = @$this->info['audio']['bits_per_sample'];
+ $this->result['playing_time'] = @$this->info['playtime_seconds'];
+ $this->result['avg_bit_rate'] = @$this->info['audio']['bitrate'];
+ $this->result['tags'] = @$this->info['tags'];
+ $this->result['comments'] = @$this->info['comments'];
+ $this->result['warning'] = @$this->info['warning'];
+ $this->result['md5'] = @$this->info['md5_data'];
+
+ // Post getID3() data handling based on file format
+ $method = @$this->info['fileformat'].'Info';
+ if (@$this->info['fileformat'] && method_exists($this, $method)) {
+ $this->$method();
+ }
+
+ return $this->result;
+ }
+
+
+
+
+ /**
+ * post-getID3() data handling for AAC files.
+ *
+ * @access private
+ */
+
+ function aacInfo() {
+ $this->result['format_name'] = 'AAC';
+ }
+
+
+
+
+ /**
+ * post-getID3() data handling for Wave files.
+ *
+ * @access private
+ */
+
+ function riffInfo() {
+ if ($this->info['audio']['dataformat'] == 'wav') {
+
+ $this->result['format_name'] = 'Wave';
+
+ } else if (ereg('^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.
+ *
+ * @access private
+ */
+
+ function flacInfo() {
+ $this->result['format_name'] = 'FLAC';
+ }
+
+
+
+
+
+ /**
+ * post-getID3() data handling for Monkey's Audio files.
+ *
+ * @access private
+ */
+
+ function macInfo() {
+ $this->result['format_name'] = 'Monkey\'s Audio';
+ }
+
+
+
+
+
+ /**
+ * post-getID3() data handling for Lossless Audio files.
+ *
+ * @access 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';
+ }
+
+}
+
+
+?> \ No newline at end of file