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