ffmpeg-php, manipuler les vidéos et sons avec PHP
Jusqu’ici, je ne m’étais frotté qu’à la manipulation d’images avec PHP. L’utilisation de vidéos avec ce langage me paraissait infaisable. Et pourtant …
ffmpeg-php est une extension de PHP qui permet d’ajouter une API dédiée à la manipulation et au contrôle de vidéo et de sons. Cette API de haut niveau permet d’accéder à des fonctions simples et compréhensibles afin d’extraire des informations des fichiers.
Ces méthodes permettent de récupérer notamment des « frames » comme des images. celles-ci deviennent à leur tour manipulables en utilisant la librairie GD.
ffmpeg-php est juste parfait pour créer des vignettes depuis une vidéo, ou pour automatiser l’extraction de méta-données (durée, bitrate, …).
Il est même possible de créer des GIF animés en extrayant plusieurs frames.
$ffmpeg = ‘encoderffmpeg’; //put the relative path to the ffmpeg.exe file $second = 15; //specify the time to get the screen shot at (can easily be randomly generated) $image = ‘thumbnails/sample.jpg’; //define the output file //finally assemble the command and execute it $command = "$ffmpeg -itsoffset -$second -i $video -vcodec mjpeg -vframes 1 -an -f rawvideo -s 150×84 $image"; exec($command);
Voici quelques exemples de méthodes :
<?php extension_loaded('ffmpeg') or die('Error in loading ffmpeg'); $ffmpegInstance = new ffmpeg_movie('clock.avi'); echo "getDuration: " . $ffmpegInstance->getDuration() . "getFrameCount: " . $ffmpegInstance->getFrameCount() . "getFrameRate: " . $ffmpegInstance->getFrameRate() . "getFilename: " . $ffmpegInstance->getFilename() . "getComment: " . $ffmpegInstance->getComment() . "getTitle: " . $ffmpegInstance->getTitle() . "getAuthor: " . $ffmpegInstance->getAuthor() . "getCopyright: " . $ffmpegInstance->getCopyright() . "getArtist: " . $ffmpegInstance->getArtist() . "getGenre: " . $ffmpegInstance->getGenre() . "getTrackNumber: " . $ffmpegInstance->getTrackNumber() . "getYear: " . $ffmpegInstance->getYear() . "getFrameHeight: " . $ffmpegInstance->getFrameHeight() . "getFrameWidth: " . $ffmpegInstance->getFrameWidth() . "getPixelFormat: " . $ffmpegInstance->getPixelFormat() . "getBitRate: " . $ffmpegInstance->getBitRate() . "getVideoBitRate: " . $ffmpegInstance->getVideoBitRate() . "getAudioBitRate: " . $ffmpegInstance->getAudioBitRate() . "getAudioSampleRate: " . $ffmpegInstance->getAudioSampleRate() . "getVideoCodec: " . $ffmpegInstance->getVideoCodec() . "getAudioCodec: " . $ffmpegInstance->getAudioCodec() . "getAudioChannels: " . $ffmpegInstance->getAudioChannels() . "hasAudio: " . $ffmpegInstance->hasAudio(); ?>
ffmpeg-php supporte un grand nombre de formats (mpeg, avi, wmv, mov, mp3, wma, …).
A titre d’exemple, Vimeo.com utilise ffmpeg-php pour créer ses vignettes. on peut donc penser que cette API est solide.
Téléchargez ffmpeg-php