正文

主窗体设计(21)

Visual C++项目开发案例全程实录(第2版) 作者:明日科技


 

处理“录像”按钮的单击事件,代码如下:

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); //停止视频捕获

}

}


上一章目录下一章

Copyright © 读书网 www.dushu.com 2005-2020, All Rights Reserved.
鄂ICP备15019699号 鄂公网安备 42010302001612号