視頻採集: 保存一個有時間限制的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.