2011-05-05 11 views
8

J'ai un scénario pour créer un fichier vidéo en utilisant diff. actifs comme des images, fichier audio. Ce que je veux faire est, trouver des fichiers audio à partir du dossier particulier et le définir comme musique de fond, et récupérer des images à partir d'un dossier particulier et afficher ces images une par une.Créer un fichier vidéo en utilisant PHP

Donc, fondamentalement, j'ai des images et des fichiers audio et je veux créer un fichier vidéo en utilisant ces actifs en utilisant PHP.

Quelqu'un peut-il suggérer le point de départ pour cela? J'ai fait de la capture d'image de la vidéo et de la conversion de la vidéo en utilisant Ffmpeg donc j'ai pensé à Ffmpeg mais, je pense que cela ne permettra pas de créer une vidéo.

+1

Avez-vous besoin de créer un diaporama, ou sont les images d'entrée on voulait vraiment faire comme des images vidéo? – mario

+0

en tant que trames vidéo .. ma sortie finale devrait être un fichier vidéo, disons flv ou mp4. avec l'audio dans la musique de fond et les images montrant un par un .. – Avinash

+0

Et "un par un" signifie que chaque image devrait être visible pendant quelques secondes? (En contrat à 1/25 s pour les images vidéo.) – mario

Répondre

17

ffmpeg permet de créer des vidéos à partir d'images fixes.

Par exemple, pour créer une vidéo avec une fréquence d'image de 10 images par seconde, à partir d'images 001.jpg .... 999.jpg:

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

Vous pouvez multiplexer les flux (audio et vidéo) comme (ajouter pertinentes options de codec pour le bitrate, etc.)

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

Je ne vais pas aller plus en détail, comme ffmpeg est une douleur (args devenir incompatible entre les versions, et selon la façon dont il a été compilé), et de trouver un paramètre de taux/compression/résolution qui vous convient est un test et une erreur.

+0

toute autre solution alternative pour cela? – Avinash

+0

première commande ne crée pas de diapositives vidéo, Il a créé un fichier vidéo, mais avec seulement les dernières images qu'il a obtenu à partir du dossier. donc pas de vidéo car elle n'a qu'une image à montrer.:( – Avinash

+0

Vous devez avoir les fichiers nommés comme spécifié ci-dessus; 001.jpg à 999.jpg –

4

La solution de Phil est la bonne approche. Déterminez ce qui doit être fait en vous documentant sur ffmpeg (c'est salissant, et je ne peux pas le blâmer de ne pas vouloir faire vos devoirs), et ensuite l'appeler depuis php. La numérisation de profil révèle des enveloppes de php (par exemple http://ffmpeg-php.sourceforge.net/)

Si aucune n'est récente/complète, tenez-vous à l'envoi des commandes shell nécessaires à partir de php.

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

Ou

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

imagemagick créer une vidéo, mais y at-il une option que je peux ajouter Transition aux images, comme fondu, fondu, etc ..... – Avinash

5

Sous Ubuntu, vous devez PHP5, ffmpeg et l'accès à binaire ffmpeg, cela peut être réalisé facilement avec:

apt-get install php5 ffmpeg 

J'utilise cette fonction php générer une vidéo mp4 à partir d'une image gif et un fichier mp3, les deux fichiers image source et vidéo de sortie sont 720x576 pixels:

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); 
} 

Exemple d'utilisation:

$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 version 2.7.6-0ubuntu0.15.10.1 Copyright (c) 2000- 2016 les développeurs FFmpeg construit avec gcc 5.2.1 (Ubuntu 5.2.1-22ubuntu2) 20151010 donne la sortie: Option non reconnue 'loop_input'. – Lisitso

Questions connexes