directshow 之 视频文件AVI格式摄制.doc_第1页
directshow 之 视频文件AVI格式摄制.doc_第2页
directshow 之 视频文件AVI格式摄制.doc_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

directshow 之 视频文件AVI格式摄制 HRESULT CVideoSource:RecoderAVIFrames(char* szFile) HRESULT hr = NULL;OFSTRUCT os;/IBaseFilter *pMux;IFileSinkFilter *pSink;IConfigAviMux * pConfigAviMux;if(OpenFile(szFile, &os, OF_EXIST) = HFILE_ERROR)/ bring up dialog, and set new file size/*CFile f;bool bFile = f.Open(szFile,CFile:modeCreate|CFile:modeWrite);if (!bFile)MessageBox(AfxGetMainWnd()-m_hWnd, TEXT(很抱歉,不能创建文件,请检查该文件夹是否有权限的严格控制),TEXT(Error),MB_OK | MB_ICONEXCLAMATION);*/hr = m_pBuilder-AllocCapFile(LPCOLESTR(szFile),(DWORDLONG)100* 1024 * 1024);if (hr != NOERROR)MessageBox(AfxGetMainWnd()-m_hWnd, TEXT(很抱歉,磁盘空间不够,请调整磁盘空间),TEXT(Error),MB_OK | MB_ICONEXCLAMATION);return FALSE;/hr = m_pBuilder-SetOutputFileName(&MEDIASUBTYPE_Avi,(LPCOLESTR)szFile, &m_pMux, NULL);/hr = m_pBuilder-SetOutputFileName(&MEDIASUBTYPE_Avi,(LPCOLESTR)szFile, &m_pMux, &pSink);hr = m_pBuilder-SetOutputFileName(&MEDIASUBTYPE_Avi,(LPCOLESTR)szFile, &m_pVideoRender, &pSink);if(hr != NOERROR)ErrMsg(TEXT(Cannot set output file);/ Now tell the AVIMUX to write out AVI files that old apps can read properly./ If we dont, most apps wont be able to tell where the keyframes are,/ slowing down editing considerably/ Doing this will cause one seek (over the area the index will go) when/ you capture past 1 Gig, but thats no big deal./ NOTE: This is on by default, so its not necessary to turn it on/ Also, set the proper MASTER STREAMhr = m_pVideoRender-QueryInterface(IID_IConfigAviMux, (void *)&pConfigAviMux);if (hr = NOERROR & pConfigAviMux)hr = pConfigAviMux-SetOutputCompatibilityIndex(TRUE);/ Render the video capture and preview pins - even if the capture filter only/ has a capture pin (and no preview pin) this should work. because the/ capture graph builder will use a smart tee filter to provide both capture/ and preview. We dont have to worry. It will just work./ NOTE that we try to render the interleaved pin before the video pin, because/ if BOTH exist, its a DV filter and the only way to get the audio is to use/ the interleaved pin. Using the Video pin on a DV filter is only useful if/ you dont want the audio./m_pBuilder-GetFiltergraph(&m_pGrapher);/有声音录制,需设置/*if(gcap.fCapAudio)hr = gcap.pConfigAviMux-SetMasterStream(gcap.iMasterStream);if(hr != NOERROR)ErrMsg(TEXT(SetMasterStream failed!);*/hr = m_pBuilder-RenderStream(&PIN_CATEGORY_CAPTURE,&MEDIATYPE_Interleaved,m_pVideoCap, NULL, m_pVideoRender);/hr = m_pBuilder-RenderStream(&PIN_CATEGORY_CAPTURE,&MEDIATYPE_Interleaved,m_pVideoCap, NULL, m_pMux);if(hr != NOERROR)hr = m_pBuilder-RenderStream(&PIN_CATEGORY_CAPTURE, &MEDIATYPE_Video, m_pVideoCap, NULL, m_pVideoRender);/hr = m_pBuilder-RenderStream(&PIN_CATEGORY_CAPTURE, &MEDIATYPE_Video, m_pVideoCap, NULL, m_pMux);if(hr != NOERROR)ErrMsg(TEXT(Cannot render video c

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论