Home Blog Portfólio Projetos Downloads Sobre
Últimas Atualizações


Pelo Mundo
Android Police
Gizmodo
Buscar no blog por: Assinar feed

Usando o FFmpeg para criar uma imagem

sexta-feira, 09 de março de 2012 Tags: thumbnail, condificação, mp4, flv, video, printscreen

Aqui ta sanada um dúvida que muita gente tem. Como criar uma imagem de um vídeo, igual ao youtube. É bem mais simples do que se imagina, primeiro você precisa instalar o FFmpeg faça o download do arquivo e descompacte os arquivos a pasta
c:\window\system32
avcodec-51.dll
avformat-51.dll
avutil-49.dll
pthreadGC2.dll

e na pasta php\ext do seu servidor web o arquivo.
php_ffmpeg.dll

Feito isso, ainda precisamos adicionar a extensão no php, abra a pasta php\php.ini e adicione o seguinte comando
extension=php_ffmpeg.dll


Prontinho, agora é só reiniciar o servidor web.

Fiz um classe para fazer alguns teste e vou passar a vocês simples, fácil e rápido.
<?php
extension_loaded
('ffmpeg') or die('Error in loading ffmpeg');

class 
ffmpeg{

 var 
$ffmpeg;
 var 
$size;

 public function 
setVideo($file$path=""){
  
$this->ffmpeg = new ffmpeg_movie("{$path}{$file}");
  
$this->size = array('width'=>$this->ffmpeg->getFrameWidth(), 'height'=>$this->ffmpeg->getFrameHeight());
 }

 function 
createThumb($posFrame$name$size=null){
  if(
$posFrame $this->getFrameCount())$posFrame $this->getFrameCount();
  
$frame $this->ffmpeg->getFrame($posFrame);
  
$gd_image $frame->toGDImage();
  
imagejpeg($gd_image"$name.jpg");
  
imagedestroy($gd_image);
  
  if(
$size!=null){
   
$thumb imagecreatetruecolor($size['width']|$size[0], $size['height']|$size[1]);
   
$image imagecreatefromjpeg("$name.jpg");
   
imagecopyresampled($thumb$image0000$size['width']|$size[0], $size['height']|$size[1], $this->size['width'], $this->size['height']);
   
imagejpeg($thumb"$name.jpg"100);
   
imagedestroy($thumb);
  }
 }
 
 function 
getDuration(){
  return 
$this->ffmpeg->getDuration();
 }
 
 function 
getFrameCount(){
  return 
$this->ffmpeg->getFrameCount();
 }

}
//Criação do objecto
$ffmpeg = new ffmpeg();
//Define o video a ser buscado, primeiro o nome do video depois o pasta <- o caminho da pasta deve ser absoluto
$ffmpeg->setVideo("rootsoffaith4.mp4","C:/xampp/htdocs/ffmpeg/");
//Criar uma imagem a partir do quadro do filme
#$ffmpeg->createThumb(5, "nome") cria uma imagem sem redimensionar;
$ffmpeg->createThumb(5"nome", array(150,80));
?>


E ai vai funções que facilitaram e implementaram ainda mais o seu desenvolvimento.

"getDuration: " . $ffmpeg->ffmpeg->getDuration() .
"getFrameCount: " . $ffmpeg->ffmpeg->getFrameCount() .
"getFrameRate: " . $ffmpeg->ffmpeg->getFrameRate() .
"getFilename: " . $ffmpeg->ffmpeg->getFilename() .
"getComment: " . $ffmpeg->ffmpeg->getComment() .
"getTitle: " . $ffmpeg->ffmpeg->getTitle() .
"getAuthor: " . $ffmpeg->ffmpeg->getAuthor() .
"getCopyright: " . $ffmpeg->ffmpeg->getCopyright() .
"getArtist: " . $ffmpeg->ffmpeg->getArtist() .
"getGenre: " . $ffmpeg->ffmpeg->getGenre() .
"getTrackNumber: " . $ffmpeg->ffmpeg->getTrackNumber() .
"getYear: " . $ffmpeg->ffmpeg->getYear() .
"getFrameHeight: " . $ffmpeg->ffmpeg->getFrameHeight() .
"getFrameWidth: " . $ffmpeg->ffmpeg->getFrameWidth() .
"getPixelFormat: " . $ffmpeg->ffmpeg->getPixelFormat() .
"getBitRate: " . $ffmpeg->ffmpeg->getBitRate() .
"getVideoBitRate: " . $ffmpeg->ffmpeg->getVideoBitRate() .
"getAudioBitRate: " . $ffmpeg->ffmpeg->getAudioBitRate() .
"getAudioSampleRate: " . $ffmpeg->ffmpeg->getAudioSampleRate() .
"getVideoCodec: " . $ffmpeg->ffmpeg->getVideoCodec() .
"getAudioCodec: " . $ffmpeg->ffmpeg->getAudioCodec() .
"getAudioChannels: " . $ffmpeg->ffmpeg->getAudioChannels() .
"hasAudio: " . $ffmpeg->ffmpeg->hasAudio();


Twitter facebook Orkut