Я новичок в php. Я установил ffmpeg в моем локальном iis .. Возможно ли создать миниатюру для FLV-файла? Пожалуйста помоги..
Попробуй это
$ffmpeg = 'ffmpeg.exe'; //video dir $video = 'video.flv'; //where to save the image $image = 'image.jpg'; //time to take screenshot at $interval = 5; //screenshot size $size = '320x240'; //ffmpeg command $cmd = "$ffmpeg -i $video -deinterlace -an -ss $interval -f mjpeg -t 1 -r 1 -y -s $size $image 2>&1"; $return = `$cmd`;
Объяснение параметров команды:
-i имя файла (путь к файлу исходного видео)
-deinterlace (конвертирует чересстрочное видео в не чересстрочную форму)
-an (запись звука отключена, мы не нуждаемся в ней для эскизов)
-ss (входное видео декодируется и сбрасывается до тех пор, пока метка времени не достигнет позиции , позиция нашего эскиза в секундах)
-f формат выходного файла
-t (выходной файл прекращает запись после длительности секунд)
-r fps (задает частоту кадров для записи по адресу: fps выражается в Hertz (1 / секунд), мы используем 1, чтобы мы захватили только один кадр)
-y (перезаписывает выходной файл, если он уже существует)
-s widthxheight (размер кадра в пикселях)
После создания скрипта, созданного с использованием библиотеки PHP FFMPEG. Вы можете захватить видеоинформацию и миниатюру с помощью заданных функций
<?php class PHP_FFMPEG { function getVideoInformation($videoPath) { $movie = new ffmpeg_movie($videoPath,false); $this->videoDuration = $movie->getDuration(); $this->frameCount = $movie->getFrameCount(); $this->frameRate = $movie->getFrameRate(); $this->videoTitle = $movie->getTitle(); $this->author = $movie->getAuthor() ; $this->copyright = $movie->getCopyright(); $this->frameHeight = $movie->getFrameHeight(); $this->frameWidth = $movie->getFrameWidth(); $this->pixelFormat = $movie->getPixelFormat(); $this->bitRate = $movie->getVideoBitRate(); $this->videoCodec = $movie->getVideoCodec(); $this->audioCodec = $movie->getAudioCodec(); $this->hasAudio = $movie->hasAudio(); $this->audSampleRate = $movie->getAudioSampleRate(); $this->audBitRate = $movie->getAudioBitRate(); } function getAudioInformation($videoPath) { $movie = new ffmpeg_movie($videoPath,false); $this->audioDuration = $movie->getDuration(); $this->frameCount = $movie->getFrameCount(); $this->frameRate = $movie->getFrameRate(); $this->audioTitle = $movie->getTitle(); $this->author = $movie->getAuthor() ; $this->copyright = $movie->getCopyright(); $this->artist = $movie->getArtist(); $this->track = $movie->getTrackNumber(); $this->bitRate = $movie->getBitRate(); $this->audioChannels = $movie->getAudioChannels(); $this->audioCodec = $movie->getAudioCodec(); $this->audSampleRate = $movie->getAudioSampleRate(); $this->audBitRate = $movie->getAudioBitRate(); } function getThumbImage($videoPath) { $movie = new ffmpeg_movie($videoPath,false); $this->videoDuration = $movie->getDuration(); $this->frameCount = $movie->getFrameCount(); $this->frameRate = $movie->getFrameRate(); $this->videoTitle = $movie->getTitle(); $this->author = $movie->getAuthor() ; $this->copyright = $movie->getCopyright(); $this->frameHeight = $movie->getFrameHeight(); $this->frameWidth = $movie->getFrameWidth(); $capPos = ceil($this->frameCount/4); if($this->frameWidth>120) { $cropWidth = ceil(($this->frameWidth-120)/2); } else { $cropWidth =0; } if($this->frameHeight>90) { $cropHeight = ceil(($this->frameHeight-90)/2); } else { $cropHeight = 0; } if($cropWidth%2!=0) { $cropWidth = $cropWidth-1; } if($cropHeight%2!=0) { $cropHeight = $cropHeight-1; } $frameObject = $movie->getFrame($capPos); if($frameObject) { $imageName = "tmb_vid_"1212.jpg"; $tmbPath = "/home/home_Dir/public_html/uploads/thumb/".$imageName; $frameObject->resize(120,90,0,0,0,0); imagejpeg($frameObject->toGDImage(),$tmbPath); } else { $imageName=""; } return $imageName; } } ?>
функция
getThumbImage($videoPath); //pass path to video file //
создаст количество эскизов в папке, указанной в функции. Вы можете изменить код в соответствии с вашими требованиями. Это работает, если вы установили библиотеку ffmpeg и php ffmpeg.
См. Эту ссылку http://tecserver.blogspot.in/2009/07/ffmpeg-video-conversion-tool.html
<?php $W = intval($_GET['W']); $H = intval($_GET['H']); $pic = ''.htmlspecialchars($_GET['file']).''; $name = 'wapadmin/'.str_replace('/','--',$pic).'.gif'; $location = 'http://'.str_replace(array('\\','//'),array('/','/'), $_SERVER [ 'HTTP_HOST'].dirname($_SERVER['PHP_SELF']).'/'.$name); if(file_exists($name)){ header('Location: '.$location, true, 301); exit; } $mov = new ffmpeg_movie($pic, false); $wn = $mov->GetFrameWidth(); $hn = $mov->GetFrameHeight(); $frame = $mov->getFrame(480); $gd = $frame->toGDImage(); if(!$W and !$H){ $a = "131*79"; $size = explode('*',$a); $W = round(intval($size[0])); $H = round(intval($size[1])); } $new = imageCreateTrueColor($W, $H); imageCopyResampled($new, $gd, 0, 0, 0, 0, $W, $H, $wn, $hn); imageGif($new, $name, 100); header('Location: '.$location, true, 301); ?>
Да. Вы можете запустить ffmpeg из PHP, используя правильные параметры .
Используя ffmpeg-php, вы можете использовать $ movie-> getFrame () для получения фрейма и $ frame-> toGDImage (), чтобы получить изображение GD .
Нет необходимости указывать время 1. ffmpeg api предоставляет формат image2 и возможность передавать -vframes 1.
$time = 3; $infile = 'in.mp4'; $thumbnail = 'my_thumbnail.png'; $cmd = sprintf( 'ffmpeg -i %s -ss %s -f image2 -vframes 1 %s', $infile, $time, $thumbnail ); exec($cmd);