执行以下步骤,使用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)
结束试一试
结束子
构建并运行程序以测试它。