domingo, 5 de abril de 2015

[PHP] Creando un convertidor a MP3 rapido y facil

Buenas tenia ya rato sin escribir algo, bueno espero ser rapido y breve, en esta entrada veremos sobre como crear un convertidor MP3 rapido y facil, en este caso estare utilizando windows, ustedes pueden bajarse el FFMPEG desde su pagina oficial para linux o macosx.

Bueno para ser mas breve posible lo que hare sera mostrar el script e ir explicando por pasos.

Esta es la estructura de nuestro proyectin:



 

 <?php
// sin limite de tiempo
set_time_limit(0);
// para que muestre errores
ini_set("display_errors",1);
error_reporting(E_ALL); 
// para que podamos subir archivos pesados 200MB
ini_set('upload_max_filesize', '200M');


// si se envio el formulario
if(isset($_POST["submit"])) {
 // el directorio a donde ira el video o archivo que conviertas en mp3
 $target_dir = "uploads/";
 // aqui se guarda el mp3
 $generador_archivo = "mp3/file_".md5(mt_rand()).".mp3";
 // el nombre del archivo a subir con su directorio a donde ira
 $target_file = $target_dir . basename($_FILES["file"]["name"]);

 // movemos el archivo
    if (move_uploaded_file($_FILES["file"]["tmp_name"], $target_file)) {
     // Aqui esta la magia! convertimos el archivo (Cuidado con la ejecucion de comandos XD)
     exec("ffmpeg -i \"$target_file\" $generador_archivo",$output,$return);
     // debug
     //print_r($output);
     // Si se ejecuto correctamente mostramos el enlace al archivo sino un error
     if(!$return){
         echo "<a href=\"mp3/". basename($generador_archivo). "\">Bajar Archivo</a>.";
        }else{
         echo "ERROR";
        }
    // si no se pudo mover el archivo ocurrio un error al subir
    } else {
        echo "Ocurrio un error al subir archivos";
        // debug
        //print_r($_FILES);
    }
}
?>
<!DOCTYPE html>
<html>
<body>

<form action="" method="post" enctype="multipart/form-data">
    Selecciona el archivo a convertir:
    <p><input type="file" name="file" id="file"></p>
    <p><input type="submit" value="Subir Archivo" name="submit"></p>
</form>

</body>
</html> 


Antes de comenzar a explicar el script, les dire que no es nada "seguro", ya que no le agregue seguridad para que se vea lo mas simple posible, pero si ustedes gustan pueden modificarlo. Y otra cosa es que para poder subir este script a un servidor tenemos que buscar que soporte FFMPEG o simplemente tener un servidor dedicado.
Aunque viene todo comentado, explicare...


1.- Le damos un set_time_limit(0) para que se ejecute el script hasta que termine. Mostramos errores con error_reporting y con ini_set establecemos la directiva de PHP.ini para mostrar errores. Establecemos upload_max_filesize en 200M para subir archivos pesados, muchas de las veces las directivas de PHP no te permiten solo con ini_set por lo que tendras que modificarlo desde el archivo de configuracion php.ini.

2.- Comprobamos si existe el formulario con isset($_POST['submit']), asignamos unas variables para la ruta, con md5(mt_rand()) genero un md5 aleatorio para que el archivo mp3 no se repita el nombre.

3.- movemos el archivo con move_uploaded_file a la ruta que asignamos.

4.- El comando mas importante es el comando de sistema exec, el cual realiza la conversion con el programa FFMPEG. La sintaxis es la siguiente:

ffmpeg.exe -i elarchivoaconvertir.mp4 elarchivodesalida.mp3

5.- Por ultimo verificamos que no haya retornado errores y mostramos el enlace en caso contrario mostramos un mensaje de error.
Con los print_r() podemos debuggear las matrices en caso de error.

Ya que nunca pongo imagenes pondre algunas, ya que dicen que "una imagen vale mas que mil palabras", yo les pondre 3 xD...




 

 Listo. Espero que esta entrada les haya sido de utilidad.

No hay comentarios:

Publicar un comentario