我想知道,如何从Flash视频文件中提取缩略图,然后将其显示在列表框中。
列表框假设有很多视频我需要以编程方式从动作脚本中提取缩略图。
Flash播放器将在网络上,并且必须在加载swf文件时进行提取,因此,该方法不能太花时间。
我如何继续这样做?这有可能吗?
提前预订
答案 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来触发绘图可以在这里找到:
还有一件事,为了操作flvs(draw方法工作),文件必须驻留在你自己的域中,或者根服务器上应该有一个包含flv的跨域文件,表明你的域名是允许的访问