En este tip mostraré cómo subir a un servidor un archivo de vídeo de cualquier formato y codificarlo automáticamente en formato FLV.
Pare realizar este proceso tendremos los siguiente requerimientos:
- Tener instalado PHP (Por ejemplo, con AppServ)
- Descargar el php_ffmpeg.
- Descargar el FFMPEG ya compilado para Windows.
Una vez cumplamos con ellos, iniciaremos los siguientes procesos:
Instalar php_ffmpeg
Ya descargado el php_ffmpeg, lo descomprimes y copias el archivo php_ffmpeg.dll en php/ext
Añades esta lineas en el php.ini: "extensión = php_ffmpeg.dll"
Luego copias los archivos avcodec.dll y avformat.dll en windows/system32
Nota :
Instalar ffmpeg
Es simple. Ya descargado, coges el ffmpeg.exe y lo copias en windows/system32. Para ver si te funcionó, dirígete a Inicio -> Ejecutar luego escribes ffmpeg.exe y enter. Si corre es por que ya esta muy bien. Ya puedes convertir tus vídeos a .FLV o a cualquier formato.
Convertir los videos mediante PHP
Como ya tienes instalado todo lo necesario ahora esto es muy fácil tan solo llamando al ffmpeg con la función exec(),
los las conversiones se guardan en la misma carpeta donde esta el archivo.php
De .xxx formato a .FLV
Código :
<form id="form2" name="form1" enctype="multipart/form-data" method="post" action=""> <span id="sprytextfield3"> Nombre del el mp3<br /> <input name="arts" type="text" id="arts" /> <span class="textfieldRequiredMsg"></span></span> <br /> Seleciona el video que quieres transformar a mp3<br /> <input type="file" name="video" id="video" /> <br /> <br /> <input type="submit" name="button" id="button" value="Convertir" /> </label> </form> <? if(isset($_FILES[video])){ //$pumit = rand(1,50);md5($pumit); $to = $_POST["arts"]; $video = $_FILES['video']['tmp_name']. $_FILES['archivito']['name'] ; $imagenes=(exec("ffmpeg -i ".$video." ".$to.".flv 2>&1",$output)); echo $imagenes."<br>"; foreach($output as $item){ echo $item; }} else {echo "Selecciona tu video";} ?>
Extraer audio de un video
Código :
<form id="form2" name="form1" enctype="multipart/form-data" method="post" action=""> <span id="sprytextfield3"> Nombre del el mp3<br /> <input name="arts" type="text" id="arts" /> <span class="textfieldRequiredMsg"></span></span> <br /> Seleciona el video que quieres transformar a mp3<br /> <input type="file" name="video" id="video" /> <br /> <br /> <input type="submit" name="button" id="button" value="Convertir" /> </label> </form> <? if(isset($_FILES[video])){ //$pumit = rand(1,50);md5($pumit); $to = $_POST["arts"]; $video = $_FILES['video']['tmp_name']. $_FILES['archivito']['name'] ; $imagenes=(exec("ffmpeg -i ".$video." -ar 44100 -ac 2 -ab 192 -f mp3 ".$to.".mp3 2>&1",$output)); echo $imagenes."<br>"; foreach($output as $item){ echo $item; }} else {echo "Selecciona tu video";} ?>
Extraer una imagen de un video
Código :
<form id="form" name="form1" enctype="multipart/form-data" method="post" action=""> <label> Del segundo<br /> <input name="ds" type="text" id="ds" value="00:00:10 " /> <br /> <br /> Al segundo<br /> <input name="fs" type="text" id="textfield4" value="00:00:10 " /> <br /> <br /> Seleciona el video que quieres transformar a mp3<br /> <input type="file" name="videos" id="videos" /> </label> <label> <br /> <br /> <input type="submit" name="buttons" id="buttons" value="Convertir" /> </label> </form> <? if(isset($_FILES["videos"])){ $pumit = rand(1,5); $to = md5($pumit); $video = $_FILES['videos']['tmp_name']. $_FILES['archivitoz']['name'] ; $imagenes=(exec("ffmpeg -i ".$video." -t ".$_POST['ds']." -ss ".$_POST['ds']." -vframes 1 ".$to."%d.jpg 2>&1",$output)); echo $imagenes."<br>"; foreach($output as $item){ echo $item;} } else { echo "Selecciona tu video"; } ?>
Más cosas que puede hacer con ffmpeg
Obtener información de un vídeo
Código :
ffmpeg -i video.avi
Combinar una serie de imágenes en un vídeo
Código :
ffmpeg -f image2 -i imagen%d.jpg video.mpg
Con este comando convertiríamos todas las imágenes del directorio actual (con nombres imagen1.jpg, imagen2.jpg, etc) en un video llamado video.mpg.
Convertir un vídeo en imágenes
Código :
ffmpeg -i video.mpg imagen%d.jpg
Con este comando se crearan varias imágenes imagen1.jpg, imagen2.jpg, ... Para las imágenes resultantes se pueden usar los formatos PGM, PPM, PAM, PGMYUV, JPEG, GIF, PNG, TIFF o SGI.
Convertir un vídeo para verlo en el iPod/iPhone
Código :
ffmpeg -i entrada.avi input -acodec aac -ab 128kb -vcodec mpeg4 -b 1200kb -mbd 2 -flags +4mv+trell -aic 2 -cmp 2 -subcmp 2 -s 320×180 -title X salida.mp4
- Video original: entrada.avi
- Codec de audio: aac
- Bitrate del audio: 128kb/s
- Codec de vídeo: mpeg4
- Bitrate del vídeo: 1200kb/s
- Tamaño del vídeo: 320×180
- Vídeo generado: salida.mp4
Convertir un vídeo para verlo en la PSP
Código :
ffmpeg -i entrada.avi -b 300 -s 320×240 -vcodec xvid -ab 32 -ar 24000 -acodec aac salida.mp4
- Video original: entrada.avi
- Codec de audio: aac
- Bitrate del audio: 32kb/s
- Codec de vídeo: xvid
- Bitrate del vídeo: 1200kb/s
- Tamaño del vídeo: 320×180
- Vídeo generado: salida.mp4
Extraer el sonido de un vídeo, y guardarlo como MP3
Código :
ffmpeg -i video.avi -vn -ar 44100 -ac 2 -ab 192 -f mp3 audio.mp3
- Video original: video.avi
- Codec de audio: mp3
- Bitrate del audio: 192kb/s
- Archivo generado: audio.mp3
Convertir un wav en MP3
Código :
ffmpeg -i audio.wav -ar 44100 audio.mp3
Convertir un avi a mpg
Código :
ffmpeg -i entrada.avi salida.mpg
Convertir un mpg a avi
Código :
ffmpeg -i entrada.mpg salida.avi
Convertir un avi a gif
Código :
ffmpeg -i entrada.avi salida.gif
Añadir el sonido de un archivo de audio a un vídeo
Código :
ffmpeg -i audio.wav -i video_entrada.avi video_salida.mpg
Convertir avi a flv
Código :
ffmpeg -i entrada.avi -ab 56 -ar 44100 -b 200 -r 15 -s 320×240 -f flv salida.flv
Convertir avi a dv
Código :
ffmpeg -i entrada.avi -s pal -r pal -aspect 4:3 -ar 48000 -ac 2 salida.dv
O bien
Código :
ffmpeg -i entrada.avi -target pal-dv salida.dv
Convertir avi a mpeg para reproductores de dvd
Código :
ffmpeg -i entrada.avi -target pal-dvd -ps 2000000000 -aspect 16:9 salida.mpeg
- target pal-dvd: Formato de salida
- ps 2000000000: Tamaño máximo del archivo resultante en bits (en el ejemplo, 2Gb)
- aspect 16:9: Panorámico
Comprimir avi a divx
Código :
ffmpeg -i entrada.avi -s 320×240 -vcodec msmpeg4v2 salida.avi
Comprimir Ogg Theora a Mpeg dvd
Código :
ffmpeg -i entrada.ogm -s 720×576 -vcodec mpeg2video -acodec mp3 salida.mpg
Comprimir avi a SVCD mpeg2. Para PAL:
Código :
ffmpeg -i entrada.avi -target pal-svcd salida.mpg
Para NTSC:
Código :
ffmpeg -i entrada.avi -target ntsc-svcd salida.mpg
Comprimir avi a VCD mpeg2. Para PAL:
Código :
ffmpeg -i entrada.avi -target pal-vcd salida.mpg
Para NTSC:
Código :
ffmpeg -i entrada.avi -target ntsc-vcd salida.mpg
Codificación con varias pasadas
Código :
ffmpeg -i entrada -pass 2 -passlogfile ffmpeg2pass salida
¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.
Por Zguillez el 15 de Noviembre de 2008
Por Freddie el 26 de Noviembre de 2008
Por marcosdev el 26 de Noviembre de 2008
Un saludo
Por UrbaN77 el 10 de Diciembre de 2008
Saludos.
Por Jimmy Villegas el 26 de Diciembre de 2008
Por Brundows el 21 de Enero de 2009
Por Juan el 03 de Marzo de 2009
Por panchesco el 09 de Marzo de 2009
Muchas gracias
Por Oscar el 15 de Marzo de 2009
Por Omarcingo el 07 de Mayo de 2009
y no me sale ninguna informacion del ffmpeg.. por fa una ayudita.. hice todos los pasos.. tengo el mismo servidor que es appserver instale bajo windows xp gracias mano
Por Juan Pablo el 07 de Mayo de 2009
Por hiulit el 17 de Junio de 2009
como podría hacerlo?
gracias!
Por Jorge el 29 de Julio de 2009
Por demon011 el 20 de Agosto de 2009
Nombre del el mp3
Seleciona el video que quieres transformar a mp3
&1",$output)); echo $imagenes."
"; foreach($output as $item){ echo $item; }} else {echo "Selecciona tu video";} ?>
lo ultmo es el codigo que tiene error supongo.....
espero me puedan resolver mi duda
Saludos......
Por Hyavary el 20 de Agosto de 2009
Could not open '.flv'
FFmpeg version SVN-r19672, Copyright (c) 2000-2009 Fabrice Bellard, et al. configuration: --enable-shared --prefix=/usr libavutil 50. 3. 0 / 50. 3. 0 libavcodec 52.32. 0 / 52.32. 0 libavformat 52.37. 0 / 52.37. 0 libavdevice 52. 2. 0 / 52. 2. 0 libswscale 0. 7. 1 / 0. 7. 1 built on Aug 20 2009 09:45:21, gcc: 4.1.2 20070925 (Red Hat 4.1.2-27)Input #0, avi, from '/tmp/phpu2907A': Duration: 00:00:01.73, start: 0.000000, bitrate: 5132 kb/s Stream #0.0: Video: rawvideo, bgr24, 180x79, 15 tbr, 15 tbn, 15 tbcCould not open '.flv'
alguien me podria ayudar por fas
Por Hyavary el 20 de Agosto de 2009
Por ViriPA el 14 de Septiembre de 2009
Segui las instrucciones de instalacion y copie el primer ejemplo, no he logrado que funcione.
Alguien me podria ayudar por favor.
Por Albert el 29 de Septiembre de 2009
Gracias
ffmpeg -i entrada.avi input -acodec aac -ab 128kb -vcodec mpeg4 -b 1200kb -mbd 2 -flags +4mv+trell -aic 2 -cmp 2 -subcmp 2 -s 320×180 -title X salida.mp4
Por Alan el 05 de Octubre de 2009
Por MIKE MORALES el 27 de Octubre de 2009
Por yose el 04 de Noviembre de 2009
Por azhton el 22 de Noviembre de 2009
Por yo el 05 de Enero de 2010
Por Web-Master el 08 de Febrero de 2010
Por dimdaos el 18 de Febrero de 2010
muy buen aporte, he estado trabajando con FFMPEG y he logrado realizar varios de los ejemplos que acá aparecen...
Tengo una duda...
COMO PUEDO OPTIMIZAR EL PESO DE LOS VÍDEOS CONVERTIDOS?
he intentado con
exec("ffmpeg -i {video-in} -ar 11025 -ab 16 -b 100k -f flv -s 320x240 {video-out}v");
Este queda mucho mas ligero que el original, pero su calidad no es la optima...
Puedes recomendarme alguna configuración para no perder calidad y que me permita bajar el peso del archivo?
Muchas gracias
Por Jorge Rubiano el 06 de Marzo de 2010
Esto se ha realizado, debido a que se ha hecho una aplicación que ayudado con otro excelente recurso como es RED5 se hace la grabación de vídeos, pero hay momentos en que se el usuario se equivoca y se necesita tan sólo quitar algunas partes de ls vídeos realizados.
Mi problema es el siguiente:
A través de una aplicación en Flash envio los cortes que deseo realizar, como son el punto inicial y final, y guardo los vídeos de forma sucesiva: video_1, video_2
El video de origen en FLV, he leído que hasta el momento para realizar la acción de ?combinación? de vídeos sólo es posible con MPEG, entonces hago lo siguiente:
Creo las partes de los videos:
ffmpeg -i video_a_partir.flv -ss 00 -t 10 video_1.mpeg
ffmpeg -i video_a_partir.flv -ss 80 -t 100 video_2.mpeg
Y así sucesivamente con los cortes que se requieran, luego los combino, leyendo encontré que para windows que es mi caso, se usa el comando copy
copy video_1.mpeg /b + video_2.mpeg /b video_unido.mpeg
Lo cual se hace correctamente, pero como el visor a mostrar el vídeo esta realizado en Flash, hago la conversión al formato FLV
ffmpeg -y -i video_unido.mpeg -f flv -vcodec flv -s 320×240 -ar 22050 video_final.flv
La conversión se hace de forma correcta, pero la duración del vídeo se pierde, por lo cual la reproducción no funciona de forma correcta
Viendo la información del vídeo
ffmpeg -i video_final.flv
Me da como respuesta lo siguiente
Duration: 00:00:00.00, start: 0.000000, bitrate: 64 kb/s
No sé si me hace falta algún paramétro, pero lo he intentado de varias formas y me sigue saliendo igual, espero haber sido claro en mi inquietud y agradecería cualquier ayuda que me puedieran prestar.
Muchas gracias.
Jorge Rubiano.
Por Freeki el 26 de Mayo de 2010
y si hice todos los pasos tal cual y no corre?
Por Freeki el 08 de Junio de 2010
será problema de codecs??
necesito de su ayuda clabers!
gracias.
Por Pablo el 12 de Julio de 2010
Por RAM el 16 de Agosto de 2010
Por triki el 20 de Agosto de 2010
Por damian el 11 de Marzo de 2011
Por mario el 10 de Abril de 2011
Por cristian_cena el 07 de Mayo de 2011
Por novata el 03 de Noviembre de 2011
¡¡Mil gracias!!
Por Rudy el 20 de Enero de 2012
Por azhton el 12 de Febrero de 2013
Por danaoso el 03 de Mayo de 2013
solo necesito de una ayudadita, necesito convertir un gif a video, probé con el primer
script, pero me sale un error dice que el formato es desconocido, entonces no se si me falta un codec o que es lo que pasa por que el script dice que de cualquier formato a video, pero no me funciona con el gif con otros videos sí... ayuda porfavor!!
Por sergio andrs el 17 de Septiembre de 2013
no puedo continuar en mi proyecto gracias
Por jonathancr el 04 de Abril de 2014
quisiera saber como reproducir o absorver los audios dentro de un flv en algunos sitios webs sin tener que descargar todo el video.
Por Norberto (Herrpiluso el 19 de Junio de 2014
En varios programas que utilizan ffmpeg.dll he visto que el audio de los .avi quedan con VBR y eso a veces trae problemas de sincronismo.
¿Hay algún parámetro adicional para especificar que deseo CBR ?
Gracias desde ya.
Por HER el 06 de Octubre de 2014
Nesecito hacer un crop, es decir de un video hacer 2 por la mitad del ancho, no del tiempo.
Es decir si tengo un video de 1000X500 tener uno desde el punto cero hasta la mitad y otro desde la mitad hasta los 1000 pixeles de ancho, alguna idea??
abrazo
Por LuisPadron el 29 de Enero de 2015
Por Ruben el 31 de Marzo de 2015
Por rey el 01 de Noviembre de 2015