2009-11-04 153 views
6

是否有可能在C#中创建视频的缩略图图像(如第一帧)?缩略图视频C#

小小更新:因为我使用Flex来显示视频,所以我需要C#中FLV视频的缩略图图像。是的,链接到一些图书馆将是有益的。

+0

是将是简短的回答你的问题 – sshow 2009-11-04 14:49:41

回答

7

我能想到的两种选择把我的头顶部:

  1. 使用外部工具,像ffmpeg,生成缩略图。这可能是解决这个问题最常用的解决方案。
  2. 解析FLV文件,只发送文件到第一个I Frame的末尾。 (您可以在代码解析逻辑,允许您通过时间标记,以寻求到FLV中间
+0

FFMPEG是我能找到的唯一解决方案。有一些.NET库提供FFMPEG的托管包装,但我找不到任何有关如何使用它们的文档。我很想听听你提出的解决方案! – 2009-11-12 15:57:11

+0

我只是掏出ffmpeg并解析输出。它对我来说工作得很好,并不像听起来那么复杂或不合适。我已经读过关于C API的ffmpeg,但这似乎是太多的努力。 – 2009-11-12 16:50:52

4

有一些开源库可以用来做到这一点。查看OpenCVDotNet,一个托管的.NET包装器OpenCV,一个“计算机视觉”库。 Here's a link to a tutorial你可能会觉得有用。

+0

我的第一印象是它只支持AVI ...我需要flv的支持。但我必须检查这一点是肯定的。 – 2009-11-04 17:03:04

1

这工作:

ShellFile thumbNail = ShellFile.FromFilePath(<fullpath and filename>); 
Bitmap thumbSmall = thumbNail.Thumbnail.MediumBitmap; 
Bitmap thumbLarge = thumbNail.Thumbnail.LargeBitmap; 
videoThumb_Small.Images.Add(thumbSmall); 
videoThumb_Large.Images.Add(thumbLarge); 

其中“videoThumb _ ????? =与ImageList中同种(其中来控制图像的大小,再次显示)搜索不同的MIME格式时,缓慢的地狱,但速度不够快需求:。

using Microsoft.WindowsAPICodePack.Shell; 
using Microsoft.WindowsAPICodePack; 

,你可以从NuGet包以获得Microsoft.WindowsAPICodePack同名。至于FFMpeg,Vlc.Dotnet或aXMediaPlayer(WMP),他们都吸取尽我所测(Vlc甚至不工作,因为它应该,FFmpeg再次需要5亿行之前,你得到相同的结果和aXMediaPlayer好,嘿)他们旁边的Windows本机。

例如,如果你使用的ListView喜欢的东西甚至子项目:

for(int mememe = 0; mememe < stuff_counter; mememe++) 
{ 
listview1.Items.Add("strings", mememe).SubItems.Add("strings" + mememe.ToString()); 
} 

然后将从ImageList中

读取正确的索引号