0

我想知道是否有办法以编程方式检索 AVI 的第一帧并获取位图图像以向用户显示预览。Silverlight 中的 MediaControl 显示 Silverlight 支持的视频文件的预览,但不显示 AVI。因为我在 Silverlight 环境中,所以不能使用非托管代码或库来执行此操作。我只能访问文件流。

4

2 回答 2

1

Silverlight 论坛上发布了类似的问题。论坛主题包括代码示例。

您可能希望在视频中进一步选择一帧,因为前几帧可能会淡入,或者不能很好地代表视频。

根据编码,MediaPlayer 类可能无法读取您的 AVI 文件。(有关兼容的编码,请参见此处)。您可能需要对视频进行转码才能使用托管代码执行此操作。除非您找到/编写自己的解码器。

于 2009-04-13T19:45:18.620 回答
1

Silverlight 运行时本身不支持 AVI 文件,因此您将无法将这些文件与 MediaElement 一起使用。

您需要做的实际上是手动解析 AVI 文件并从该文件中提取帧。一旦你到了解析帧的地步,它可能会变得有点棘手。

如果您计划在 Silverlight 2 上进行这项工作,您的 AVI 文件将需要包含 WMV 帧或 Silverlight 支持的图像格式(JPG 或 PNG)之一的帧。如果您使用 WMV,我将设置一个 MediaStreamSource 并将所需的视频帧传递给 MediaStreamSource 作为我的第一个示例。如果您正在使用其中一种图像格式,则应使用 Image 并将其源设置为流。您可以看到 Joe Stegman 使用它来帮助 Silverlight 2 支持非本地图像格式的示例。

如果您在 Silverlight 3(现在处于 Beta 版)中执行此操作,则技术通常是相同的,但媒体格式支持会有所增加(除了 WMV):H264、Raw YV12 或 Raw ARGB 帧。同样在成像方面,您现在拥有可用于绘制框架的 WriteableBitmap。

如果您的视频是 Theora、Divx、Xvid、VP6 等。您需要找到一种方法来解码该帧,以便在 Silverlight 中显示它。

于 2009-04-13T23:10:18.237 回答