⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_32347.htm

📁 一些关于vc的问答
💻 HTM
📖 第 1 页 / 共 3 页
字号:
<p>
序号:32347 发表者:jacky 发表日期:2003-03-11 17:12:23
<br>主题:用directshow 用*.MPG 转*.AVI(MPEG4)原代码!请帮看看!谢谢!
<br>内容://////此例子是根据Direct8.0中的directshow中的代码来的!<BR>#include &lt;dshow.h&gt;<BR>#include &lt;stdio.h&gt;<BR>#include &lt;Mtype.h&gt;<BR><BR>////指定了所有的库了<BR>#pragma comment(lib,"amstrmid.lib")<BR>#pragma comment(lib,"d3d8.lib")<BR>#pragma comment(lib,"d3dx.lib")<BR>#pragma comment(lib,"d3dx8.lib")<BR>#pragma comment(lib,"d3dx8d.lib")<BR><BR><BR>#pragma comment(lib,"d3dx8dt.lib")<BR>#pragma comment(lib,"d3dxd.lib")<BR>#pragma comment(lib,"d3dxof.lib")<BR>#pragma comment(lib,"ddraw.lib")<BR>#pragma comment(lib,"dinput.lib")<BR><BR>#pragma comment(lib,"dinput8.lib")<BR>#pragma comment(lib,"dmoguids.lib")<BR>#pragma comment(lib,"dplayx.lib")<BR>#pragma comment(lib,"dpnaddr.lib")<BR>#pragma comment(lib,"dpnlobby.lib")<BR><BR>#pragma comment(lib,"dpvoice.lib")<BR>#pragma comment(lib,"dsetup.lib")<BR>#pragma comment(lib,"dsound.lib")<BR>#pragma comment(lib,"dxerr8.lib")<BR>#pragma comment(lib,"dxguid.lib")<BR><BR>#pragma comment(lib,"dxtrans.lib")<BR>#pragma comment(lib,"ksproxy.lib")<BR>#pragma comment(lib,"ksuser.lib")<BR>#pragma comment(lib,"dpnlobby.lib")<BR>#pragma comment(lib,"msdmo.lib")<BR><BR>#pragma comment(lib,"qedit.lib")<BR>#pragma comment(lib,"quartz.lib")<BR>#pragma comment(lib,"strmiids.lib")<BR><BR><BR><BR><BR><BR><BR><BR>void __cdecl main()<BR>{<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;ICaptureGraphBuilder2 *pBuild =NULL;<BR>&nbsp;&nbsp;&nbsp;&nbsp;IGraphBuilder&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *pGraph =NULL;<BR>&nbsp;&nbsp;&nbsp;&nbsp;IBaseFilter&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *pSrc&nbsp;&nbsp; =NULL;<BR>&nbsp;&nbsp;&nbsp;&nbsp;IBaseFilter&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *pMux&nbsp;&nbsp; =NULL;<BR>&nbsp;&nbsp;&nbsp;&nbsp;IBaseFilter&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *pVComp =NULL;<BR><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;CoInitialize(NULL);<BR>&nbsp;&nbsp;&nbsp;&nbsp;HRESULT hr;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;hr=CoCreateInstance(CLSID_CaptureGraphBuilder,NULL,CLSCTX_INPROC,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IID_ICaptureGraphBuilder,(void **)&amp;pBuild);<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;if(hr!=S_OK)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit(0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;hr=&nbsp;&nbsp;&nbsp;&nbsp;pBuild-&gt;SetOutputFileName(<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;MEDIASUBTYPE_Avi,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;L"G:\\Output.avi",<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;pMux,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;if(hr!=S_OK)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit(0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;hr=pBuild-&gt;GetFiltergraph(&amp;pGraph);<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(hr!=S_OK)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit(0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;hr=pGraph-&gt;AddSourceFilter(L"g:\\Output.MPG",L"Source Filter",&amp;pSrc);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;if(hr!=S_OK)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit(0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;hr=CoCreateInstance(CLSID_AVICo, NULL,CLSCTX_INPROC,IID_IBaseFilter,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(void**)&amp;pVComp);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(hr!=S_OK)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit(0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;//pGraph-&gt;AddFilter(pVComp,L"DivX Pro 5.0.2 Codec");<BR>&nbsp;&nbsp;&nbsp;&nbsp;hr=pGraph-&gt;AddFilter(pVComp,L"DivX :-) MPEG4 Fast-Motion");<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;if(hr!=S_OK)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit(0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;pBuild-&gt;RenderStream(<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NULL,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NULL,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pSrc,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pVComp,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pMux);&nbsp;&nbsp;&nbsp;&nbsp; //程序运行到这除了问题!怎么解决啊!<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;pBuild-&gt;RenderStream(NULL,NULL,pSrc,NULL,pMux);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;IAMStreamConfig&nbsp;&nbsp;*pStreamConfig =NULL;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;IAMVideoCompression&nbsp;&nbsp;*pCompress=NULL;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;AM_MEDIA_TYPE *pmt;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;pBuild-&gt;FindInterface(NULL, NULL,pVComp, IID_IAMStreamConfig,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(void**)&amp;pStreamConfig);<BR>&nbsp;&nbsp;&nbsp;&nbsp;pStreamConfig-&gt;GetFormat(&amp;pmt);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;if(pmt-&gt;formattype==FORMAT_VideoInfo)<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;((VIDEOINFOHEADER *)(pmt-&gt;pbFormat)) -&gt;dwBitRate=100000;<BR>&nbsp;&nbsp;&nbsp;&nbsp;pStreamConfig-&gt;SetFormat(pmt);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;//DeleteMediaType(pmt); //加上此条出错可能是因为少了库(加了以上所有库也不行)<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;pStreamConfig-&gt;QueryInterface(IID_IAMVideoCompression,(void **)&amp;pCompress);<BR> <BR>&nbsp;&nbsp;&nbsp;&nbsp;pCompress-&gt;put_KeyFrameRate(10);<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;pCompress-&gt;Release();<BR>&nbsp;&nbsp;&nbsp;&nbsp;pStreamConfig-&gt;Release();<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;IMediaControl *pControl =NULL;<BR>&nbsp;&nbsp;&nbsp;&nbsp;IMediaSeeking *pSeek&nbsp;&nbsp;&nbsp;&nbsp;=NULL;<BR>&nbsp;&nbsp;&nbsp;&nbsp;IMediaEvent&nbsp;&nbsp; *pEvent&nbsp;&nbsp; =NULL;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;pGraph-&gt;QueryInterface(IID_IMediaControl,(void **)&amp;pControl);<BR>&nbsp;&nbsp;&nbsp;&nbsp;pGraph-&gt;QueryInterface(IID_IMediaEvent,(void **)&amp;pEvent);<BR>&nbsp;&nbsp;&nbsp;&nbsp;hr=pMux-&gt;QueryInterface(IID_IMediaSeeking,(void **)&amp;pSeek);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;pControl-&gt;Run();<BR>&nbsp;&nbsp;&nbsp;&nbsp;printf("Recompressing .....");<BR>&nbsp;&nbsp;&nbsp;&nbsp;long evCode;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(SUCCEEDED(hr))<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;REFERENCE_TIME rtTotal,rtNow=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;pSeek-&gt;GetDuration(&amp;rtTotal);<BR>&nbsp;&nbsp;&nbsp;&nbsp;while((pEvent-&gt;WaitForCompletion(1000,&amp;evCode))==E_ABORT)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;pSeek-&gt;GetCurrentPosition(&amp;rtNow);<BR>&nbsp;&nbsp;&nbsp;&nbsp;printf("%d%%\n",(rtNow *100)/rtTotal);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;pSeek-&gt;Release();<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;else<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;pEvent-&gt;WaitForCompletion(INFINITE,&amp;evCode);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp; pControl-&gt;Stop();<BR>&nbsp;&nbsp; printf("All done \n");<BR> <BR>&nbsp;&nbsp; pSrc-&gt;Release();<BR>&nbsp;&nbsp; pMux-&gt;Release();<BR>&nbsp;&nbsp; pVComp-&gt;Release();<BR>&nbsp;&nbsp; pBuild-&gt;Release();<BR>&nbsp;&nbsp; pGraph-&gt;Release();<BR>&nbsp;&nbsp; pGraph-&gt;Release();<BR>&nbsp;&nbsp; CoUninitialize();<BR>}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR><BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:jacky 回复日期:2003-03-13 20:07:41
<br>内容:怎么没人告诉我啊???!!!!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:鸡蛋壳 回复日期:2003-03-14 12:51:28
<br>内容:你好!<BR><BR>请问你的DivX的压缩IBaseFilter是怎么来的?是CoCreateInstance来的?这样不好吧?<BR><BR>你应该这样:用CLSID_VideoCompressCategory(好像是这样的,查查看吧)然后用ISysEnum一个个的枚举出所有的Codec,发现有FriendlyName叫做"DivX Pro 5.0"之类的,那才是真的IBaseFilter, 然后要用Bind才能得到IBaseFilter, 然后加入IGraphBuilder.<BR><BR>另外,DeleteMediaType这个函数,我也觉得奇怪DX为什么不把他放到库里去,而是在DxUtils.cpp里面,这个函数很短,你干脆把他Ctrl+V过来就可以了。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:jacky 回复日期:2003-03-22 20:38:53
<br>内容://////此例子是根据Direct8.0中的directshow中的代码来的!<BR>#include &lt;dshow.h&gt;<BR>#include &lt;stdio.h&gt;<BR>#include &lt;Mtype.h&gt;<BR><BR>////指定了所有的库了<BR>#pragma comment(lib,"amstrmid.lib")<BR>#pragma comment(lib,"d3d8.lib")<BR>#pragma comment(lib,"d3dx.lib")<BR>#pragma comment(lib,"d3dx8.lib")<BR>#pragma comment(lib,"d3dx8d.lib")<BR><BR><BR>#pragma comment(lib,"d3dx8dt.lib")<BR>#pragma comment(lib,"d3dxd.lib")<BR>#pragma comment(lib,"d3dxof.lib")<BR>#pragma comment(lib,"ddraw.lib")<BR>#pragma comment(lib,"dinput.lib")<BR><BR>#pragma comment(lib,"dinput8.lib")<BR>#pragma comment(lib,"dmoguids.lib")<BR>#pragma comment(lib,"dplayx.lib")<BR>#pragma comment(lib,"dpnaddr.lib")<BR>#pragma comment(lib,"dpnlobby.lib")<BR><BR>#pragma comment(lib,"dpvoice.lib")<BR>#pragma comment(lib,"dsetup.lib")<BR>#pragma comment(lib,"dsound.lib")<BR>#pragma comment(lib,"dxerr8.lib")<BR>#pragma comment(lib,"dxguid.lib")<BR><BR>#pragma comment(lib,"dxtrans.lib")<BR>#pragma comment(lib,"ksproxy.lib")<BR>#pragma comment(lib,"ksuser.lib")<BR>#pragma comment(lib,"dpnlobby.lib")<BR>#pragma comment(lib,"msdmo.lib")<BR><BR>#pragma comment(lib,"qedit.lib")<BR>#pragma comment(lib,"quartz.lib")<BR>#pragma comment(lib,"strmiids.lib")<BR><BR><BR><BR><BR><BR><BR><BR>void __cdecl main()<BR>{<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;ICaptureGraphBuilder2 *pBuild =NULL;<BR>&nbsp;&nbsp;&nbsp;&nbsp;IGraphBuilder&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *pGraph =NULL;<BR>&nbsp;&nbsp;&nbsp;&nbsp;IBaseFilter&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *pSrc&nbsp;&nbsp; =NULL;<BR>&nbsp;&nbsp;&nbsp;&nbsp;IBaseFilter&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *pMux&nbsp;&nbsp; =NULL;<BR>&nbsp;&nbsp;&nbsp;&nbsp;IBaseFilter&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *pVComp =NULL;<BR><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;CoInitialize(NULL);<BR>&nbsp;&nbsp;&nbsp;&nbsp;HRESULT hr;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;hr=CoCreateInstance(CLSID_CaptureGraphBuilder,NULL,CLSCTX_INPROC,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IID_ICaptureGraphBuilder,(void **)&amp;pBuild);<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;if(hr!=S_OK)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit(0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;hr=&nbsp;&nbsp;&nbsp;&nbsp;pBuild-&gt;SetOutputFileName(<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;MEDIASUBTYPE_Avi,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;L"G:\\Output.avi",<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;pMux,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;if(hr!=S_OK)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit(0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;hr=pBuild-&gt;GetFiltergraph(&amp;pGraph);<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(hr!=S_OK)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit(0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;hr=pGraph-&gt;AddSourceFilter(L"g:\\ruby.avi",L"File Source (Async.)",&amp;pSrc);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;if(hr!=S_OK)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit(0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;hr=CoCreateInstance(CLSID_AVICo, NULL,CLSCTX_INPROC,IID_IBaseFilter,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(void**)&amp;pVComp);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(hr!=S_OK)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit(0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;ICreateDevEnum *pSysDevEnum = NULL;<BR>&nbsp;&nbsp;&nbsp;&nbsp;IEnumMoniker *pEnum = NULL;<BR>&nbsp;&nbsp;&nbsp;&nbsp;IMoniker *pMoniker = NULL;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;hr = CoCreateInstance(CLSID_SystemDeviceEnum, NULL, <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CLSCTX_INPROC_SERVER, IID_ICreateDevEnum, <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(void**)&amp;pSysDevEnum);<BR>&nbsp;&nbsp;&nbsp;&nbsp;hr = pSysDevEnum-&gt;CreateClassEnumerator(<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CLSID_VideoCompressorCategory, &amp;pEnum, 0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;char hh[32];<BR>&nbsp;&nbsp;&nbsp;&nbsp;LPCWSTR compressor;<BR>&nbsp;&nbsp;&nbsp;&nbsp;while (S_OK == pEnum-&gt;Next(1, &amp;pMoniker, NULL))<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IPropertyBag *pPropBag = NULL;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pMoniker-&gt;BindToStorage(0, 0, IID_IPropertyBag, <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(void **)&amp;pPropBag);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VARIANT var;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VariantInit(&amp;var);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hr = pPropBag-&gt;Read(L"FriendlyName", &amp;var, 0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (SUCCEEDED(hr))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ::WideCharToMultiByte(CP_ACP,0,var.bstrVal,-1,hh,32,NULL,NULL);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; compressor=var.bstrVal;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( lstrcmp("DivX Pro 5.0.3 Codec",hh)==0)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;compressor=var.bstrVal;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hr = pMoniker-&gt;BindToObject(0, 0, IID_IBaseFilter, <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (void**)&amp;pVComp);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VariantClear(&amp;var); <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pPropBag-&gt;Release();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pMoniker-&gt;Release();<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;pSysDevEnum-&gt;Release();<BR>&nbsp;&nbsp;&nbsp;&nbsp;pEnum-&gt;Release();<BR>&nbsp;&nbsp;&nbsp;&nbsp;//hr=pGraph-&gt;AddFilter(pVComp,L"DivX Pro 5.0.3 Codec");<BR>&nbsp;&nbsp;&nbsp;&nbsp;//hr=pGraph-&gt;AddFilter(pVComp,hh);<BR>&nbsp;&nbsp;&nbsp;&nbsp;hr=pGraph-&gt;AddFilter(pVComp,compressor);&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(hr!=S_OK)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit(0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;pBuild-&gt;RenderStream(<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NULL,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NULL,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pSrc,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pVComp,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pMux);&nbsp;&nbsp;&nbsp;&nbsp; //程序运行到这除了问题!怎么解决啊!<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;pBuild-&gt;RenderStream(NULL,NULL,pSrc,NULL,pMux);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;IAMStreamConfig&nbsp;&nbsp;*pStreamConfig =NULL;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;IAMVideoCompression&nbsp;&nbsp;*pCompress=NULL;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;AM_MEDIA_TYPE *pmt;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;pBuild-&gt;FindInterface(NULL, NULL,pVComp, IID_IAMStreamConfig,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(void**)&amp;pStreamConfig);<BR>&nbsp;&nbsp;&nbsp;&nbsp;pStreamConfig-&gt;GetFormat(&amp;pmt);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;if(pmt-&gt;formattype==FORMAT_VideoInfo)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;((VIDEOINFOHEADER *)(pmt-&gt;pbFormat)) -&gt;dwBitRate=100000;<BR>&nbsp;&nbsp;&nbsp;&nbsp;pStreamConfig-&gt;SetFormat(pmt);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;//DeleteMediaType(pmt); //加上此条出错可能是因为少了库(加了以上所有库也不行)<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;pStreamConfig-&gt;QueryInterface(IID_IAMVideoCompression,(void **)&amp;pCompress);<BR> <BR>&nbsp;&nbsp;&nbsp;&nbsp;pCompress-&gt;put_KeyFrameRate(10);<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;pCompress-&gt;Release();<BR>&nbsp;&nbsp;&nbsp;&nbsp;pStreamConfig-&gt;Release();<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;IMediaControl *pControl =NULL;<BR>&nbsp;&nbsp;&nbsp;&nbsp;IMediaSeeking *pSeek&nbsp;&nbsp;&nbsp;&nbsp;=NULL;<BR>&nbsp;&nbsp;&nbsp;&nbsp;IMediaEvent&nbsp;&nbsp; *pEvent&nbsp;&nbsp; =NULL;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;pGraph-&gt;QueryInterface(IID_IMediaControl,(void **)&amp;pControl);<BR>&nbsp;&nbsp;&nbsp;&nbsp;pGraph-&gt;QueryInterface(IID_IMediaEvent,(void **)&amp;pEvent);<BR>&nbsp;&nbsp;&nbsp;&nbsp;hr=pMux-&gt;QueryInterface(IID_IMediaSeeking,(void **)&amp;pSeek);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;pControl-&gt;Run();<BR>&nbsp;&nbsp;&nbsp;&nbsp;printf("Recompressing .....");<BR>&nbsp;&nbsp;&nbsp;&nbsp;long evCode;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(SUCCEEDED(hr))<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;REFERENCE_TIME rtTotal,rtNow=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;pSeek-&gt;GetDuration(&amp;rtTotal);<BR>&nbsp;&nbsp;&nbsp;&nbsp;while((pEvent-&gt;WaitForCompletion(1000,&amp;evCode))==E_ABORT)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;pSeek-&gt;GetCurrentPosition(&amp;rtNow);<BR>&nbsp;&nbsp;&nbsp;&nbsp;printf("%d%%\n",(rtNow *100)/rtTotal);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;pSeek-&gt;Release();<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;else<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;pEvent-&gt;WaitForCompletion(INFINITE,&amp;evCode);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;pControl-&gt;Stop();<BR>&nbsp;&nbsp;&nbsp;&nbsp;printf("All done \n");<BR> <BR>&nbsp;&nbsp;&nbsp;&nbsp;pSrc-&gt;Release();<BR>&nbsp;&nbsp;&nbsp;&nbsp;pMux-&gt;Release();<BR>&nbsp;&nbsp;&nbsp;&nbsp;pVComp-&gt;Release();<BR>&nbsp;&nbsp;&nbsp;&nbsp;pBuild-&gt;Release();<BR>&nbsp;&nbsp;&nbsp;&nbsp;pGraph-&gt;Release();<BR>&nbsp;&nbsp;&nbsp;&nbsp;pGraph-&gt;Release();<BR>&nbsp;&nbsp;&nbsp;&nbsp;CoUninitialize();<BR>}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp; 我现在是枚举出Divx来了怎么还是有问题!请再帮忙看看啊!谢谢你了!<BR>&nbsp;&nbsp; 
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -