缩略图视频C#

时间:2009-11-04 14:48:05

标签: c# video thumbnails

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

小更新:我需要在C#中使用FLV视频的缩略图,因为我正在使用Flex来显示视频。是的,链接到某些库会很有用。

3 个答案:

答案 0 :(得分:7)

我可以想到两个选项:

  1. 使用外部工具(如ffmpeg)生成缩略图。这可能是解决此问题最常用的解决方案。
  2. 解析FLV文件,仅将文件发送到第一个I Frame的末尾。 (您可以在代码中找到解析逻辑,允许您按时间标记搜索到FLV的中间。

答案 1 :(得分:4)

您可以使用开源库来执行此操作。查看OpenCVDotNetOpenCV的托管.NET包装器,一个“计算机视觉”库。 Here's a link to a tutorial您可能会觉得有用。

答案 2 :(得分: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,甚至包括subitems:

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

然后从ImageList

中读取正确的索引号