从.flv中提取缩略图

时间:2010-04-21 11:38:11

标签: flash actionscript-3 flv thumbnails

我想知道,如何从Flash视频文件中提取缩略图,然后将其显示在列表框中。

列表框假设有很多视频我需要以编程方式从动作脚本中提取缩略图。

Flash播放器将在网络上,并且必须在加载swf文件时进行提取,因此,该方法不能太花时间。

我如何继续这样做?这有可能吗?

提前预订

4 个答案:

答案 0 :(得分:1)

你可以使用ffmpeg。也许调用脚本是最好的方法。

答案 1 :(得分:1)

你应该看一下FFMpeg - 用它你可以从视频中提取缩略图(以及其他很多很酷的东西)。一旦在服务器上安装了它,就可以通过PHP的exec()函数传递命令,就是这样。

例如:

$cmd = "ffmpeg -i you_video.flv -f image2 -vframes 1 -ss 00:00:01 -y -s 100x100 my_video_thumb.png";

exec($cmd, $output, $return);

Where:

-i is your specify the input file
-f is to force the output format, this case "image2" since we are generating an image
-vframes video frames we want to record in the snapshot, only one
-ss starting time of the snapshot
-y overwrite any existing file with the same name
-s size/dimensions of the output image

有一些很好的教程如何在你的服务器上安装FFMpeg,如果你google它你会发现大量的信息。这是一个起点http://vexxhost.com/blog/2007/03/03/installing-ffmpeg-ffmpeg-php-mplayer-mencoder-flv2tool-lame-mp3-encoder-libogg-%E2%80%93-the-easy-way/

干杯, 微米。

答案 2 :(得分:0)

最佳解决方案是generate the thumbnail server side并将网址发送到此图片。 如果你想“在运行中”缩略图,你需要先加载视频,至少要等到你想要拍摄截图的时候,这不会特别快。

答案 3 :(得分:0)

如果您不想使用ffmpeg,我相信您可以执行以下操作:

加载主SWF,

对于每个flv文件,

  • 加载flv;

  • 将flv发送到所需的时间;

  • 创建一个新的BitmapData对象;

  • 将flv的内容绘制到
    使用draw方法的位图数据;

  • 将BitmapData添加到位图对象 并在列表框中显示;

完成后显示主要应用程序

一个与此类似的东西的aproach但是它使用cuepoints来触发绘图可以在这里找到:

http://blog.flexexamples.com/2007/08/03/creating-flv-cuepoint-thumbnails-using-the-bitmap-and-bitmapdata-classes/

还有一件事,为了操作flvs(draw方法工作),文件必须驻留在你自己的域中,或者根服务器上应该有一个包含flv的跨域文件,表明你的域名是允许的访问

实施例: http://api.flickr.com/crossdomain.xml