经常我们在处理视频文件时,会遇到各种各样格式的文件,FLV就是常见的一种,FLV的流行是因为它文件小。FLV是伴随着FLASH MX发展而来的新兴格式。目前各大视频网站,如优酷、土豆、酷六、56网、Youtube等都采用了FLV格式的视频文件。FLV的详细介绍请参考百度百科:FLV

以上所说的视频网站均采用了FLV作为视频文件,那他们是如何处理视频缩略图的呢?也许有人会猜想使用最笨拙的方法,播放后使用截图软件进行截图。对于我们这种普通的小博客、小网站,这当然是首选,但是对于像优酷这样的视频网站,绝对不会采用这种笨拙的方法的。至于优酷等视频网站是如何进行截图的,我无法了解,但可以肯定的是,绝对已经实现程序自动化处理视频截图。我这里要讲的只是一种实现的方法(FFMPEG),有了这种方法我们也就不再需要人工处理视频截图了。这种方法也用到之前的一个项目中去,总体来说还不错,稳定性也比较高。截图速度不要期望太高,一般1秒到2秒即可输出截图。图片质量也是非常不错的。

在Windows下的实现方法得先下载ffmpeg.exe文件,下载完了以后任意目录即可

运行方法

ffmpeg -i test.flv -y -f image2 -ss 00:00:02 -t 0.001 -s 320x240 /tmp/test.jpg

WIndows的完成安装了,那在Linux下如何安装呢?安装命令如下

sudo apt-get install ffmpeg libavcodec-extra-52
sudo wget http://www.medibuntu.org/sources.list.d/`lsb_release -cs`.list --output-document=/etc/apt/sources.list.d/medibuntu.list && sudo apt-get -q update && sudo apt-get --yes -q --allow-unauthenticated install medibuntu-keyring && sudo apt-get -q update

运行方法

# /usr/local/ffmpeg/bin/ffmpeg -i /tmp/test.flv -y -f image2 -ss 00:00:02 -t 0.001 -s 320x240 /tmp/test.jpg

当然以上方法均是在命令行实现的,那如果在程序中进行实现呢?以下提供的方法仅限于Win平台。这里提供一个类下载,配合上面讲的Win下台下的ffmpeg.exe即可实现。

ffmpeg = "C:\Progra~1\ffmpeg\ffmpeg.exe";
//flv所在的文件绝对路径
$flv->flv = "D:\flv\test.flv";
//需要生成的JPG绝对路径
$flv->pic ="D:\jpg\test.jpg";
//图片宽
$flv->picwidth = 150;
//图片高
$flv->picheight = 120;
//生成CMD的执行命令
$piccmd = $flv->getpiccmd();
//执行并生成截图
$flv->run($piccmd);
?>

相关文件和参考链接

FFMPEG下载:点击下载
PHP版类文件下载:点击下载
FFMPEG官网:点击查看
Linux安装方法参考:点击查看