<?php
/*
* purpose of this class is to retrieve media info from movie/video files
* NO media file is provided; so you have to use of your own.
* "mediainfo" dependancy (MEDIAINFO must be installed ...http://mediainfo.sourceforge.net - for ubuntu: sudo apt-get install mediainfo)
* Tested on debian/ubuntu
*
*/
class mediaInfo{
var $filename;
var $media_data;
var $arrGeneral;
var $arrVideo;
var $arrAudio;
/*
* Initialize the class
* Get the media info of the passed file
*/
function __construct($filename = ''){
$mediainfo = trim(shell_exec('type -P mediainfo'));
if (empty($mediainfo)){
die('<h1>Mediainfo is not available</h1>');
}
if($filename != ''){
$this->filename = trim($filename);
if(!file_exists($this->filename)) die('File does not exists.');
$this->filename = escapeshellarg($this->filename);
$this->media_data = shell_exec("mediainfo $this->filename");
}
$this->make_info_array();
}
/*
* Print a PREformatted info of the media file
*/
function print_media_info(){
echo('<pre>'.$this->media_data.'</pre>');
}
/*
* Makes 3 arrays with general, video and audio info
*/
function make_info_array(){
$arrData = explode(chr(10),$this->media_data);
$general = TRUE;
$audio = FALSE;
$video = FALSE;
$count = 0;
if(is_array($arrData)){
foreach($arrData as $key=>$val){
$arrProperty = explode(': ',$val);
if(array_key_exists(1, $arrProperty) && TRUE === $general && $count == 0) $this->arrGeneral[trim($arrProperty[0])] = trim($arrProperty[1]);
if(array_key_exists(1, $arrProperty) && TRUE === $video && $count == 1) $this->arrVideo[trim($arrProperty[0])] = trim($arrProperty[1]);
if(array_key_exists(1, $arrProperty) && TRUE === $audio && $count == 2) $this->arrAudio[trim($arrProperty[0])] = trim($arrProperty[1]);
if(trim($arrProperty[0]) == 'Video' && !array_key_exists(1, $arrProperty)){$general = FALSE; $video = TRUE; $count++;}
if(trim($arrProperty[0]) == 'Audio' && !array_key_exists(1, $arrProperty)){$video = FALSE; $audio = TRUE; $count++;}
}
}
}
/*
* Returns an array with the general info
*/
function get_general_info(){
return($this->arrGeneral);
}
/*
* Returns an array with the video info
*/
function get_video_info(){
return($this->arrVideo);
}
/*
* Returns an array with the audio info
*/
function get_audio_info(){
return($this->arrAudio);
}
/*
* Returns an item from the array with the general info
*/
function get_general_property($property){
if(array_key_exists($property, $this->arrGeneral)){
return($this->arrGeneral[$property]);
}else{
return('Property does not exists');
}
}
/*
* Returns an item from the array with the video info
*/
function get_video_property($property){
if(array_key_exists($property, $this->arrVideo)){
return($this->arrVideo[$property]);
}else{
return('Property does not exists');
}
}
/*
* Returns an item from the array with the audio info
*/
function get_audio_property($property){
if(array_key_exists($property, $this->arrAudio)){
return($this->arrAudio[$property]);
}else{
return('Property does not exists');
}
}
/*
* Returns the aspect ratio of a media file
*/
function get_aspect_ratio(){
return($this->arrVideo['Display aspect ratio']);
}
/*
* Returns the width of a media file
*/
function get_width(){
return((int)str_replace(' ', '', $this->arrVideo['Width']));
}
/*
* Returns the height of a media file
*/
function get_height(){
return((int)str_replace(' ', '', $this->arrVideo['Height']));
}
/*
* Returns the filesize of a media file
*/
function get_file_size(){
return($this->arrGeneral['File size']);
}
}
?>
|