2011-05-05 21 views
8

Tengo un escenario para crear un archivo de video usando diff. activos como imágenes, archivo de audio.Crear archivo de video usando PHP

Lo que quiero hacer es encontrar archivos de audio de la carpeta en particular y configurarlo como música de fondo, y buscar imágenes de una carpeta en particular y mostrar esas imágenes una por una.

Básicamente, tengo imágenes y archivos de audio y quiero crear un archivo de video usando esos activos usando PHP.

¿Alguien puede sugerir el punto de partida para esto? Hice la captura de imágenes del video y la conversión del video usando Ffmpeg, así que he pensado en Ffmpeg, pero creo que no permitirá la creación de un video.

+1

¿Es necesario crear una presentación de diapositivas o imágenes de entrada son los realmente previstos como fotogramas de vídeo? – mario

+0

como marcos de video ... mi resultado final debe ser un archivo de video, por ejemplo flv o mp4. con audio en música de fondo e imágenes que muestran una por una ... – Avinash

+0

¿Y "uno por uno" significa que cada imagen debe ser visible durante unos segundos? (En contrato de 1/25 s para marcos de video.) – mario

Respuesta

17

ffmpeg le permiten crear videos a partir de imágenes estáticas.

Por ejemplo, para crear un vídeo con una velocidad de fotogramas de 10 fps, a partir de imágenes 001.jpg 999.jpg ....:

ffmpeg -r 10 -b 1800 -i %03d.jpg test1800.mp4 

Puede mux corrientes (audio y vídeo) como (añadir relevante opciones de códec de tasa de bits, etc.)

ffmpeg -i video.mp4 -i audio.wav -map 1.1 -map 2.1 output.mp4 

no voy a entrar en más detalles, como fFmpeg es un dolor (args cambian de manera incompatibles entre versiones, y dependiendo de lo que fue compilado), y la búsqueda de una configuración de tasa/compresión/resolución que es buena para usted es de prueba y error.

+0

alguna otra solución alternativa para esto? – Avinash

+0

primer comando no crea diapositivas de video, ha creado un archivo de video pero con solo las últimas imágenes que ha obtenido de la carpeta. así que no se reproduce el video porque solo tiene una imagen para mostrar.:( – Avinash

+0

Tendrá que tener los archivos nombrados como se especificó anteriormente; 001.jpg a 999.jpg –

4

La solución de Phil es el enfoque correcto. Resuelva lo que necesita hacerse documentando en ffmpeg (es desordenado, y no puedo culparlo por no querer hacer su tarea), y luego llámelo desde php.

Google Cursory revela envolturas php (por ejemplo, http://ffmpeg-php.sourceforge.net/). Si ninguno es reciente/completo, adhiérase a emitir los comandos de shell necesarios desde php.

3
ImageMagick convert -delay 100 -quality 75 photo1.jpg photo2.jpg movie.mpg 

O

http://dvd-slideshow.sourceforge.net/wiki/Main_Page 
+0

imagemagick creando un video, pero ¿hay alguna opción que pueda agregar Transición a las imágenes, como fundido de entrada, fundido de salida, etc. ..... – Avinash

5

Bajo Ubuntu que necesita PHP5, ffmpeg y el acceso a binario ffmpeg, esto puede ser logrado con fácil:

apt-get install php5 ffmpeg 

estoy usando esta función php para generar un video mp4 desde una imagen gif y un archivo mp3, tanto la imagen de origen como los archivos de video de salida son 720x576 píxeles:

function mix_video($audio_file, $img_file, $video_file) { 
    $mix = "ffmpeg -loop_input -i " . $img_file . " -i " . $audio_file . " -vcodec mpeg4 -s 720x576 -b 10k -r 1 -acodec copy -shortest " . $video_file; 
    exec($mix); 
} 

ejemplo, el uso:

$audio_file = "/path/to/mp3-file"; 
$img_file = "/path/to/img-file"; 
$video_file = "/path/to/video-file"; 

mix_video($audio_file, $img_file, $video_file); 
+0

fmpeg versión 2.7.6-0ubuntu0.15.10.1 Copyright (c) 2000- 2016 los desarrolladores FFmpeg construidos con gcc 5.2.1 (Ubuntu 5.2.1-22ubuntu2) 20151010 da salida: Opción no reconocida 'loop_input'. – Lisitso