2012-04-12 61 views
0

我需要得到一个图片从一个视频作为缩略图的提取从视频文件中的图像
所以我想这样的:如何使用的ffmpeg

ffmpeg -ss 00:05:34.05 -i input.avi -vframes 1 -sameq output.jpg 

这只是正常不过每隔一段时间在一段时间我遇到一个文件,其中该失败,出现以下错误消息

av_interleaved_write_frame(): I/O error occurred 

通常,这意味着输入文件是截短的和/或损坏。

如果有我的选择,我有什么选择?
谢谢

回答

0

试试这个命令

ffmpeg -ss 5 -i sample.mp4 -vframes 1 -s 320x240 -f image2 -y sample.jpg; 

始终设置-ss -i之前,为了从时长较长的视频抓住拇指来优化性能。

0

我认为如果您将其中一个第一帧作为缩略图提取,我认为更容易。

相反-ss我使用-vf缩略图= num_frame

ffmpeg -i input.avi -vf thumbnail=25 -vframes 1 -sameq output.jpg 
+0

我不断收到的ffmpeg: '室颤' – Rahul 2012-04-13 00:49:50

+0

室颤识别的选项,videofilter是,如果你主动libavfilter http://ffmpeg.org/libavfilter.html#thumbnail认可 – 2012-04-13 06:54:07

0

确定这似乎为我工作 的ffmpeg -itsoffset -4 -i test.avi -vcodec MJPEG -vframes 1 -an -f rawvideo -s 320×240 test.jpg放在

0

是的,它可以使用ffmpeg。

-在你的服务器上安装ffmpeg。
- 检查下面的示例代码。

extension_loaded('ffmpeg') or die('Error in loading ffmpeg'); 

// $vid = realpath('./video/Wildlife.wmv'); 

$video_url = 'http://download.wavetlan.com/SVV/Media/HTTP/H264/Talkinghead_Media/H264_test1_Talkinghead_mp4_480x360.mp4'; 

$image_filename = 'images/' . time() . ".jpg"; 

$movie = new ffmpeg_movie($video_url, false); 

$frameCount = $movie->getFrameCount(); 

$capPos = ceil($frameCount/4); 

$frameObject = $movie->getFrame($capPos); 

if ($frameObject) { 

    $frameObject->resize(500, 250, 0, 0, 0, 0); 

    imagejpeg($frameObject->toGDImage()); 

} else { 

    echo 'error'; 

}