执行以下步骤,使用LEADTOOLS Media Foundation CaptureCt188宝金博怎么下载rl控件创建并运行多媒体电视调谐器捕获应用程序。
启动Visual Studio。
选择文件- >新- >项目…菜单上的。
在新项目对话框中,选择Visual c#项目或者VB项目在项目类型列表中,并选择“Windows应用程序在模板列表中。
输入项目名称为“188宝金博怎么下载多媒体电视调谐器捕获“在项目名称字段,然后选择好吧.类型为项目键入新位置或选择目录(如果需要)浏览按钮,然后选择好吧.
在“解决方案资源管理器窗口中,右键单击参考文献"文件夹并选择"添加引用…从上下文菜单。在“添加引用对话框中,选择net选项卡并选择Leadtools。MediaFoundation并点击好吧.
确保Form1在设计视图中。去工具箱(视图->工具箱),然后拖放一个CaptureCtrl控件。注意:如果您没有CaptureCtrl在工具箱中,选择工具->选择工具箱项目菜单上的。点击浏览然后选择Leadtools.MediaFoundation.dll从“< LEADTOOLS_INSTALLDIR > \ Bin \ Dotnet4 \ Win32然后点击开放然后点击好吧.将其添加到表单后,在捕获控件上设置以下属性:
| 财产 | 价值 |
|---|---|
| 名字 | _capturectrl |
| 锚 | 上,下,左,右 |
转到工具箱(视图->工具箱),在窗体(捕获控件下面)上拖放一个ProgressBar控件(用于显示捕获进度),并设置以下属性:
| 财产 | 价值 |
|---|---|
| 名字 | _progress |
| 锚 | 下,左,右 |
转到工具箱(视图->工具箱),并在窗体底部拖放4个按钮控件(用于捕获,通道向上和通道向下),并设置以下属性:
| 财产 | 价值 |
|---|---|
| 名字 | _buttonCapture |
| 文本 | 捕获 |
| 锚 | 下,右 |
| 名字 | _buttonChannelUp |
| 文本 | 向上 |
| 锚 | 下,右 |
| 名字 | _buttonChannelDown |
| 文本 | 下来 |
| 锚 | 下,右 |
转到工具箱(视图->工具箱),在窗体左下角拖放一个标签控件、一个文本控件、另一个标签控件和一个ProgressBar控件(用于“Channel:”标签、通道文本框、“Signal:”标签和信号强度计),并设置以下属性:
| 财产 | 价值 |
|---|---|
| 名字 | label1 |
| 文本 | 渠道: |
| 锚 | 下,从左 |
| 名字 | _textChannel |
| 锚 | 下,从左 |
| 锁着的 | 真正的 |
| 只读的 | 真正的 |
| TextAlign | 中心 |
| 名字 | label2 |
| 文本 | 信号: |
| 锚 | 下,从左 |
| 名字 | _signal |
| 锚 | 下,从左 |
开关Form1编码视图(右键单击Form1在解决方案资源管理器中选择视图代码),并在文件开头添加以下行:
使用System.Runtime.InteropServices;使用Leadtools.MediaFoundation;
进口System.Runtime.InteropServices进口Leadtools。MediaFoundation
声明以下私有变量:
私人字符串_targetFile;私人int_captureTime;
私人_targetFile作为字符串私人_captureTime作为整数
在Form1 Load事件中添加一个事件处理程序,代码如下:
私人无效Form1_Load (对象发送者,EventArgs{如果(_capturectrl.VideoDevices。计数== 0)扔新异常(“没有可用的捕获设备”);如果(_capturectrl。VideoDevices [“模拟”) = =零)扔新异常(“没有模拟电视捕捉设备可用”);_capturectrl。VideoDevices [“模拟”]。选择=真正的;_capturectrl。UseVideoDeviceAudio =真正的;_capturectrl…TargetFormats。选择ion = TargetFormatType.MP4;_targetFile =@“capture.mp4”;_captureTime = 30;_capturectrl。PreviewSource = CapturePreview.Video;_capturectrl。预览=真正的;DisplayChannelAndSignal ();}
私人子Form1_Load (按值传递发送方作为对象,按值传递e作为EventArgs)处理MyBase.Load如果_capturectrl.VideoDevices。数= 0然后扔新异常(“没有可用的捕获设备”)结束如果如果_capturectrl。VideoDevices (“模拟”)是没有什么然后扔新异常(“没有模拟电视捕捉设备可用”)结束如果_capturectrl。VideoDevices (“模拟”).选择=真正的_capturectrl…TargetFormats。选择ion = TargetFormatType.MP4_targetFile =“capture.mp4”_captureTime = 30_capturectrl。PreviewSource = CapturePreview。视频_capturectrl。预览=真正的DisplayChannelAndSignal ()结束子
添加如下helper方法:
私人无效DisplayChannelAndSignal (){如果(_capturectrl。TVTuner ! =零){intcurrChannel = _capturectrl.TVTuner.Channel;_textChannel。文本= currChannel.ToString();TunerSignalStrength信号= _capturectrl.TVTuner.SignalPresent;开关(信号){情况下TunerSignalStrength。NoSignal:_signal。值=0;打破;情况下TunerSignalStrength。HasNoSignalStrength:_signal。值=10;打破;情况下TunerSignalStrength。SignalPresent:_signal。值=100;打破;}}}私人无效ChangeChannel (保龄球){intchanMin = _capturectrl.TVTuner.ChannelMin;intchanMax = _capturectrl.TVTuner.ChannelMax;intcurrChannel = _capturectrl.TVTuner.Channel;intcurrVideoChannel = _capturectrl.TVTuner.VideoSubChannel;如果(了){如果(currChannel == chanMax)currChannel = chanMin;其他的currChannel + +;}其他的{如果(currChannel == chanMin)currChannel = chanMax;其他的currChannel——;}_capturectrl.TVTuner。SetChannel(currChannel, -1, -1);DisplayChannelAndSignal ();}
私人子DisplayChannelAndSignal ()如果不_capturectrl。TVTuner是没有什么然后昏暗的currChannel作为整数= _capturectrl.TVTuner.Channel_textChannel。文本= currChannel.ToString()昏暗的信号作为TunerSignalStrength = _capturectrl.TVTuner.SignalPresent选择情况下信号情况下TunerSignalStrength。NoSignal_signal。值=0情况下TunerSignalStrength。HasNoSignalStrength_signal。值=10情况下TunerSignalStrength。SignalPresent_signal。值=100结束选择结束如果结束子私人子ChangeChannel (按值传递向上作为布尔)昏暗的chanMin作为整数= _capturectrl.TVTuner.ChannelMin昏暗的chanMax作为整数= _capturectrl.TVTuner.ChannelMax昏暗的currChannel作为整数= _capturectrl.TVTuner.Channel昏暗的currVideoChannel作为整数= _capturectrl.TVTuner.VideoSubChannel如果向上然后如果currChannel = chanMax然后currChannel = chanMin其他的currChannel += 1结束如果其他的如果currChannel = chanMin然后currChannel = chanMax其他的currChannel -= 1结束如果结束如果_capturectrl.TVTuner。SetChannel(currChannel, -1, -1)DisplayChannelAndSignal ()结束子
向_capturectrl Progress事件添加一个事件处理程序,并将其编码如下:
私人无效_capturectrl_Progress (对象发送者,progressevenargs e){_progress。值= (int) ((_progress。Maximum * e.time) / (_captureTime * 1000));}
私人子_capturectrl_Progress (按值传递发送方作为系统。对象,按值传递e作为ProgressEventArgs)处理_capturectrl。进步_progress。值=CInt((_progress。Maximum * e.time) / (_captureTime * 1000)结束子
在_capturectrl Complete事件中添加一个事件处理程序,并按照如下代码编写它:
私人无效_capturectrl_Complete (对象发送者,EventArgs{对话框。显示(“捕获完整”);_buttonCapture。启用了=真正的;}
私人子_capturectrl_Complete (按值传递发送方作为系统。对象,按值传递e作为EventArgs)处理_capturectrl。完整的对话框。显示(“捕获完整”)_buttonCapture。启用了=真正的结束子
在_buttonChannelUp Click事件中添加一个事件处理程序,并将其编码如下:
私人无效_buttonChannelUp_Click (对象发送者,EventArgs{如果(_capturectrl。TVTuner ! =零){ChangeChannel (真正的);}}
私人子_buttonChannelUp_Click (按值传递发送方作为对象,按值传递e作为EventArgs)处理_buttonChannelUp。点击如果不_capturectrl。TVTuner是没有什么然后ChangeChannel (真正的)结束如果结束子
添加一个事件处理程序到_buttonChannelDown单击事件,并将其编码如下:
私人无效_buttonChannelDown_Click (对象发送者,EventArgs{如果(_capturectrl。TVTuner ! =零){ChangeChannel (假);}}
私人子_buttonChannelDown_Click (按值传递发送方作为对象,按值传递e作为EventArgs)处理_buttonChannelDown。点击如果不_capturectrl。TVTuner是没有什么然后ChangeChannel (假)结束如果结束子
向_buttonCapture Click事件添加一个事件处理程序,并按照如下代码编写它:
私人无效_buttonCapture_Click (对象发送者,系统。EventArgs e){试一试{_capturectrl。预览=真正的;_capturectrl。目标文件= _targetFile;_capturectrl。UseTimeLimit =真正的;_capturectrl。TimeLimit = _captureTime;_capturectrl.StartCapture (CaptureMode.Video);_buttonCapture。启用了=假;}抓(异常交货){MessageBox.Show (ex.Message);}}
私人子_buttonCapture_Click (按值传递发送方作为系统。对象,按值传递e作为System.EventArgs)处理_buttonCapture。点击试一试_capturectrl。预览=真正的_capturectrl。TargetFile = _targetFile_capturectrl。UseTimeLimit =真正的_capturectrl。TimeLimit = _captureTime_capturectrl.StartCapture (CaptureMode.Video)_buttonCapture。启用了=假抓前女友作为异常MessageBox.Show (ex.Message)结束试一试结束子
构建并运行程序以测试它。