视频采集: 保存一个有时间限制的AVI文件

讲解如何使用IC Imaging control把一个图象数据流保存为一个确定时间长度的AVI文件。
语言:.NET C#/Visual Basic
版本:3.0.3
发布于:2005年4月7日
作者:IC Imaging Control 技术支持部
系统要求:IC Imaging Control >2.1
由WDM数据流类驱动程序驱动的相机、视频转换器或图像采集卡

示例程序如图所示:

The Testdialog of IC Imaging Control,

程序首先调用一个内置对话框(.ShowDeviceSettingsDialog),使得用户可以选择设备。 而后显示设备传回的现场图像(.LiveStart):

[C#]
private void Form1_Load(object sender, System.EventArgs e)
{
    icImagingControl1.ShowDeviceSettingsDialog();

    if( !icImagingControl1.DeviceValid )
    {
        Close();
        return;
    }

    icImagingControl1.LiveStart();
}

用户点击"Start Capture",程序停止现场视频数据流(.LiveStop),开始录制AVI文件(.AviStartCapture),开启计时器(Timer1.Enabled = True):

[C#]
private void btnStartCapture_Click(object sender, System.EventArgs e)
{
    icImagingControl1.LiveStop();
    icImagingControl1.AviStartCapture( "video.avi", "DV Video Encoder" );
    btnStartCapture.Enabled = false;

    recordedTime = 0;
    recordTimer.Start();
}

AVI文件的录制由一个计时器控制。 Timer1循环调用事件处理程序Timer1_Timer()。 它的主要功能有:

  • 读取用户设定的录制时间长度(txtStop.Text)
  • 显示已录制时间(lblRecorded.Text)
  • 在到达时间后停止录制(.AviStopCapture)
  • 重新开始播放实时画面(.LiveStart)

[C#]
int recordedTime = 0;

private void recordTimer_Tick(object sender, System.EventArgs e)
{
    recordedTime += 1;
    lblRecordedTime.Text = recordedTime.ToString() + "s";

    if( recordedTime >= int.Parse( txtStopTime.Text ) )
    {
        recordTimer.Stop();

        icImagingControl1.AviStopCapture();
        icImagingControl1.LiveStart();
        btnStartCapture.Enabled = true;
    }
}

相关源代码示例

责任声明
IC Imaging Control 源代码库中的所有代码均只用于教学目的,The Imaging Source Europe GmbH 作为IC Imaging Control的开发制造商,不对任何由于使用本文或其中源代码所产生的后果承担责任。

该网站为The Imaging Source网络的一部分。其它的站点包括 公司, Imaging, 天文相机, Astronomy Cameras Blog, Blog caméras d'astronomie, 天文相机有奖竞答, TX Text Control, LiveDocx, phpLiveDocxForum.