Fonction php qui renvoie le bitrate (en kbps) d'un fichier mp3

Contenu du snippet

Voici une fonction assez simple qui prend en paramètre d'entrée le chemin vers un fichier (type MP3)
et renvoie le bitrate de ce mp3 (en kbps)
Exemple : 128 kbps

On pourrait également récupérer plein d'autres infos (ID3) mais j'ai simplifié pour ceux qui n'ont besoin QUE du bitrate.

Source / Exemple :


//  Classe pour trouver le bitrate du fichier mp3
class mp3var 
{                   
	var $bitrate1 = array (
			0x10 =>  32,
			0x20 =>  40,
			0x30 =>  48,
			0x40 =>  56,
			0x50 =>  64,
			0x60 =>  80,
			0x70 =>  96,
			0x80 => 112,
			0x90 => 128,
			0xA0 => 160,
			0xB0 => 192,
			0xC0 => 224,
			0xD0 => 256,
			0xE0 => 320
	);
	
	
	var $bitrate2 = array (
			0x10 =>   8,
			0x20 =>  16,
			0x30 =>  24,
			0x40 =>  32,
			0x50 =>  40,
			0x60 =>  48,
			0x70 =>  56,
			0x80 =>  64,
			0x90 =>  80,
			0xA0 =>  96,
			0xB0 => 112,
			0xC0 => 128,
			0xD0 => 144,
			0xE0 => 160
	);
	

	// Methode qui renvoie le bitrate du fichier (MP3) entré
	function getBitrate($nom_fichier)
	{           
		$done=false;
		if(!$file=fopen($nom_fichier, "r")) 
		{ 
			print "IMPOSSIBLE D'OUVRIR LE FICHIER $nom_fichier";
			return false;
		} 
		else 
		{
			$point=0;
			// recherche du ID3
			while ((!feof($file)) and (!$done))
			{
				fseek($file, $point);
				$data=fread($file,2);
				$data=unpack ("Cint/Cint2",$data);
				if (($data[int] == 0xFF) and ($data[int2] < 0xFF) and ($data[int2] >= 0xF0))
				{
					$done=true;
					$id3=$point;
				}
				$point++;
			}
			fseek($file, $id3);   // On se déplace au bon endroit dans le fichier $file
			$bindata = fread($file, 4);  // On lit les 4 prochains octets
			fclose($file);
			if(! ($bindata = unpack('nint/C2', $bindata)) ) return false;
			if (($bindata[int] & 0xFFF0) != 0xFFF0) return false;
			if (($bindata[int] & 0x08) == 0x08) 
				$this->info[bitrate] = $this->bitrate1[($bindata[1] & 0xF0)];
			if (($bindata[int] & 0x08) == 0x00) 
				$this->info[bitrate] = $this->bitrate2[($bindata[1] & 0xF0)];
			// On retourne le Bitrate
			return $this->info[bitrate];
		}
	}  // Fin de la fonction
       
}  // Fin de la classe

//         APPEL DE LA FONCTION . . . UTILISATION		
		

/************************************************************/
/*  Calcul et affichage du bitrate du fichier MP3 (en kbps)  */
/************************************************************/
		
$fichier = "../MonFichier.mp3"; 	// Chemin vers le fichier mp3
$mp3 = new mp3var;		// Instanciation de la classe "mp3var"
$btr = $mp3->getBitrate($fichier);	// Appel de la méthode getBitrate()
echo $btr;			// Affichage du bitrate
print " kbps";

Conclusion :


Pas la peine de tout expliquer.
On ouvre le fichier
on va chercher les bons bits
on fait un MASK pour récupérer ce qui nous intéresse, et voilà le travail,
. . . ;o) enjoy !

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.