65.9K
CodeProject 正在变化。 阅读更多。
Home

将屏幕活动录制成电影

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.81/5 (38投票s)

2004 年 11 月 24 日

CPOL

1分钟阅读

viewsIcon

651306

downloadIcon

17015

一篇文章,介绍如何使用 Microsoft Windows Media Encoder 9 将屏幕活动捕获为电影文件。

Sample Image - CaptureScreenAsVideo.jpg

引言

bkniazi 在 experts-exchange.com 上问我一个问题,关于如何将机器上发生的事情捕获为电影。我发现这个问题很有趣,所以找了一下,但没有找到好的解决方案。不过,我找到了一些可以完成这项工作的软件。我发现 Windows Media Encoder 9 非常有趣。在研究的过程中,我找到了它的 SDK,并开始研究它。它非常有趣。所以在研究 API 并查看了一些示例后,我制作了这个小示例。

必备组件

您需要 Windows Media Encoder 9 SeriesSDK

使用代码

这个 API 最好的地方在于它是完全基于接口的。WMEncoder 是主要的类。设置它的参数并启动编码器以开始编码。停止它以保存到文件。

Encoder = New WMEncoder

Encoder 的集合中创建一个名为 SG_1 的源组。

Dim SrcGrp As IWMEncSourceGroup2
Dim SrcGrpColl As IWMEncSourceGroupCollection
SrcGrpColl = Encoder.SourceGroupCollection
SrcGrp = SrcGrpColl.Add("SG_1")

指定视频和音频的输入类型。指定屏幕捕获插件以设置视频源。

SrcVid.SetInput("ScreenCap://ScreenCapture1")
SrcAud.SetInput("Device://Default_Audio_Device")

找到配置文件并从所有可用的配置文件中设置 Encoder 的组配置文件。

ProColl = Encoder.ProfileCollection
lLength = ProColl.Count
For i = 0 To lLength - 1
    Pro = ProColl.Item(i)
    If Pro.Name = "Windows Media Video 8 for Local Area Network (384 Kbps)" Then
        SrcGrp.Profile = Pro
        Exit For
    End If
Next

指定 Encoder 的标头信息。例如,描述或属性。

Dim Descr As IWMEncDisplayInfo
Descr = Encoder.DisplayInfo
Descr.Author = "Armoghan Asif"
Descr.Copyright = "Copyright information"
Descr.Description = "Text description of encoded content"
Descr.Rating = "Rating information"
Descr.Title = "Title of encoded content"

' Add an attribute to the collection.
Dim Attr As IWMEncAttributes
Attr = Encoder.Attributes
Attr.Add("URL", "IP address")

如果需要,您可以对 Encoder 进行一些裁剪。

' Crop 2 pixels from each edge of the video image.
SrcVid.CroppingBottomMargin = 2
SrcVid.CroppingTopMargin = 2
SrcVid.CroppingLeftMargin = 2
SrcVid.CroppingRightMargin = 2

指定本地文件作为输出。您还可以设置文件的其他字段,例如文件大小、文件秒数等。

Dim File As IWMEncFile
File = Encoder.File
File.LocalFileName = "C:\OutputFile.avi"

开始编码过程

' Start the encoding process.
Encoder.Start()

停止编码过程

' Stop the encoding process.
Encoder.Stop()

关注点

演示中没有放置任何花哨的东西。它只是说明了屏幕捕获。它可以很容易地添加到任何现有应用程序中。仅此而已:)

© . All rights reserved.