Uno script in php che usa ffmpeg per convertire files audio wma in mp3

Un semplice script php da lanciarsi da shell che, data una cartella, cerca i files wma e li converte in mp3 in un’altra cartella, mantenendo intatta l’alberatura e il naming della directory sorgente.
Prerequisiti:
ffmpeg e php5-cli installabili con il comando

sudo apt-get install ffmpeg php5-cli


Ecco il codice php

<?php

$outDir = "out";
$baseDir= "Music";

$lbaseDir = strlen ($baseDir);


function doDir ($dirname){
  global $outDir,$baseDir,$lbaseDir;

  $cleandir= substr($dirname,$lbaseDir);
  $cleandirout = $outDir.$cleandir;

  if ($dirname==$outDir) return;
  
  echo "Processing dir [$dirname] ($cleandir ==> $cleandirout)\n";


  $filez = scandir ($dirname);  
  foreach ($filez as $file) {

    if ( ($file == ".") || ($file=="..")) continue;
    //echo $file;
    
    $filePath = "${dirname}/${file}";
    if (preg_match ("/(.*?)\.wma$/",$file,$arr)) {      
      $wmain = $filePath;
      $fwe = $arr[1];
      $mp3out= "${cleandirout}/${fwe}.mp3";
      
      echo "Processing wma [${wmain}]\n";
      if (!file_exists ($cleandirout)){
        mkdir ($cleandirout,0777,true);
      }
      if (file_exists ($mp3out)) continue;

      system ("ffmpeg -i \"${wmain}\" -ar 44100  -ab 128k \"${mp3out}\"\n");
    }


    
    if (is_dir ($filePath)){
      doDir ($dirname."/".$file);
    }
  }
}

doDir ($baseDir);


?>

Nell’esempio lo script esamina la cartella “Music” e deposita i files convertiti nella cartella “out”, ricreando in quest’ultima l’alberatura che trova in “Music”.

Le istruzioni
$outDir = “out”;
$baseDir= “Music”;
si possono cambiare per far lavorare lo script su qualsivoglia cartella.
E’ possibile ovviamente cambiare anche i parametri di bitrate e sample rate di ffmpeg, settati rispettivamente a 128Kbit e 44100Hz.

E’ consigliabile scaricare lo script da qui piuttosto che fare copia e incolla da quello riportato nel post.

#per scaricare
wget http://fabrizio.zellini.org/wma2mp3/converter.php.txt -O converter.php
# per editare i parametri
gedit converter.php
# per lanciare 
php converter.php