处理“录像”按钮的单击事件,代码如下:
void CCaptureDlg::OnKinescope()
{
if(!m_Kinescope) //判断是否录像
{
if(CPreView::m_CurIndex != -1)
{
//创建文件保存对话框
CFileDialog fDlg(FALSE,"avi","avi_001",OFN_HIDEREADONLY
| OFN_OVERWRITEPROMPT,"AVI|*.avi",this);
if (fDlg.DoModal()==IDOK)
{
m_Kinescope = TRUE;
CString file = fDlg.GetPathName(); //获得文件保存路径
//设置MPEG压缩的关键帧间隔,必须大于等于帧率
VCASetKeyFrmInterval(CPreView::m_CurIndex,250);
//设置MPEG压缩的位率,范围为56Kbps ~ 10Mbps
VCASetBitRate(CPreView::m_CurIndex,256);
//设置视频捕获帧率,bFrameRateReduction参数为保留参数
//PAL显示帧率始终为25,NTSC显示帧率始终为30
//PAL捕获帧率最大为25,NTSC捕获帧率最大为30
VCASetVidCapFrameRate(CPreView::m_CurIndex,25);
//设置视频捕获尺寸
VCASetVidCapSize(CPreView::m_CurIndex,320,240);
//设置MPEG4_XVID压缩的质量
VCASetXVIDQuality(CPreView::m_CurIndex,10,3);
//设置MPEG4_XVID压缩模式
VCASetXVIDCompressMode(CPreView::m_CurIndex,XVID_VBR_MODE);
BOOL ret = VCAStartVideoCapture(CPreView::m_CurIndex,CAP_ORIGIN_MPEG4_STREAM,
MPEG4_AVIFILE_CALLBACK ,file); //开始视频捕获
GetDlgItem(IDC_KINESCOPE)->SetWindowText("停止录像");
}
}
}
else
{
m_Kinescope = FALSE;
GetDlgItem(IDC_KINESCOPE)->SetWindowText("录像");
VCAStopVideoCapture(CPreView::m_CurIndex); //停止视频捕获
}
}