Ottenere media info di un file video con php

Chiunque voglia informazioni relative ad un file video, sa che con il programma open source Mediainfo può ottenere tutte le informazioni relative al formato video, risoluzione, codec ecc. e così analogamente tutte le informazioni relative alle tracce audio.

Tuttavia se volete determinare queste informazioni all’interno di una vostra applicazione, è necessario ricorrere ad una libreria specifica per il linguaggio scelto. Qui vi descriviamo una soluzione PHP che utilizza la libreria di classi GetID3. Sul sito web trovate tutte le specifiche e la descrizione delle potenzialità di questa libreria relativamente ai formati audio e video riconosciuti.

La prima operazione da compiere è ovviamente scaricare la libreria ed includere la cartella ‘getid3’ con tutti i moduli nella vostra applicazione php. L’esempio che vi forniamo in questa pagina è relativo alle informazioni di un file video di formato mkv.

Il nostro programma php inizierà quindi così:

<?php
// GetId3
	require_once('includes/getid3/getid3.php');
	$filename="PathToMyVideo.mkv";

A questo punto va inizializzato il motore di getid3 e analizzato il file mkv:

    $getID3 = new getID3();
    $ThisFileInfo = $getID3->analyze($filename);

Di seguito vi mostriamo il codice completo utilizzato per ottenere le informazioni relative al video, tracce audio e sottotitoli del file .mkv

	$FileFormat=$ThisFileInfo['fileformat'];
	if (isset ($ThisFileInfo['audio']['streams'])) {
		$i=0;
		foreach ($ThisFileInfo['audio']['streams'] as $item) {
			$AudioTrack[$i]['codec']=$item['dataformat'];
			$AudioTrack[$i]['media_type']=0;
			$AudioTrack[$i]['canali']=$item['channels'];
			$AudioTrack[$i]['lingua']=$item['language'];
			if (isset($item['bitrate'])) $AudioTrack[$i]['bitrate']=$item['bitrate'] / 1000;
			else {
				$AudioTrack[$i]['bitrate']=0;
				if (isset($item['name'])) {
					if (stripos($item['name'],'@') > 0) {
						$start=stripos($item['name'],'@') + 2;
						$end=stripos($item['name'],'kbit') - 1;
						$AudioTrack[$i]['bitrate']=substr($item['name'],$start,$end-$start);
					}
				}
			}
			$i++;
		}
	}
	else {
		$AudioTrack[0]['bitrate']=$ThisFileInfo['bitrate'];
		$AudioTrack[0]['canali']=$ThisFileInfo['audio']['channels'];
		$AudioTrack[0]['codec']=$ThisFileInfo['audio']['dataformat'];
		$AudioTrack[0]['language']=$ThisFileInfo['audio']['language'];
		$AudioTrack[0]['media_type']=0;
	}
	$n=0;
	if (isset($ThisFileInfo[$FileFormat]['tracks']['tracks'])) {
		for ($i=0; $i<count($ThisFileInfo[$FileFormat]['tracks']['tracks']); $i++) {
			$item=$ThisFileInfo[$FileFormat]['tracks']['tracks'];
			if ($item[$i]['TrackType']==17) {
				$SubTitle[$n]['media_type']=1;
				if (isset($item[$i]['Language'])) $SubTitle[$n]['Language']=$item[$i]['Language'];
				else $SubTitle[$n]['Language']='';
				$SubTitle[$n]['codec']=$item[$i]['CodecID'];
				$n++;
			}
		}
	}

Potete stampare tutte le informazioni catturate relative a video, tracce audio e sottotitoli, chiudendo il programma con le istruzioni:

	echo '<pre>'; print_r($ThisFileInfo); echo'</pre>';
	echo'<hr>';
	echo '<pre>'; print_r($AudioTrack); echo'</pre>';
	echo'<hr>';
	echo '<pre>'; print_r($SubTitle); echo'</pre>';
?>

Il risultato sarà:

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *