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

📄 subject_32347.htm

📁 一些关于vc的问答
💻 HTM
📖 第 1 页 / 共 3 页
字号:
<blockquote><p>
回复者:Creator 回复日期:2003-03-24 13:32:12
<br>内容:ICaptureGraphBuilder2 *pBuild =NULL;<BR>................<BR>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><BR><BR>另你的主要意图是干吗?<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>
回复者:jacky 回复日期:2003-03-24 15:56:39
<br>内容:ICaptureGraphBuilder2 *pBuild =NULL;<BR>................<BR>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);(如果此处是用CLSID_CaptureGraphBuilder2,则hr返回的不是S_OK,出错!这个例子是directx8.0 c++中的,稍改的!原代码在下!#include &lt;dshow.h&gt;<BR>#include &lt;stdio.h&gt;<BR><BR>void __cdecl main(void)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;ICaptureGraphBuilder2&nbsp;&nbsp; *pBuild = NULL;<BR>&nbsp;&nbsp;&nbsp;&nbsp;IGraphBuilder&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *pGraph = NULL;<BR>&nbsp;&nbsp;&nbsp;&nbsp;IBaseFilter&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *pSrc = NULL;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Source filter<BR>&nbsp;&nbsp;&nbsp;&nbsp;IBaseFilter&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *pMux = NULL;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // MUX filter<BR>&nbsp;&nbsp;&nbsp;&nbsp;IBaseFilter&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *pVComp = NULL;&nbsp;&nbsp;&nbsp;&nbsp; // Video compressor filter<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;CoInitialize(NULL);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;// Create the capture graph builder.<BR>&nbsp;&nbsp;&nbsp;&nbsp;CoCreateInstance(CLSID_CaptureGraphBuilder2, NULL, CLSCTX_INPROC, <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IID_ICaptureGraphBuilder2, (void **)&amp;pBuild);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;// Make the rendering section of the graph.<BR>&nbsp;&nbsp;&nbsp;&nbsp;pBuild-&gt;SetOutputFileName(<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;MEDIASUBTYPE_Avi,&nbsp;&nbsp;// File type. <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;L"C:\\Output.avi",&nbsp;&nbsp;// File name.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;pMux,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Receives a pointer to the multiplexer.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Receives a pointer to the file writer. <BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;// Load the source file.<BR>&nbsp;&nbsp;&nbsp;&nbsp;pBuild-&gt;GetFiltergraph(&amp;pGraph);<BR>&nbsp;&nbsp;&nbsp;&nbsp;pGraph-&gt;AddSourceFilter(L"C:\\Input.avi", L"Source Filter", &amp;pSrc);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;// Add the compressor filter.<BR>&nbsp;&nbsp;&nbsp;&nbsp;CoCreateInstance(CLSID_AVICo, NULL, CLSCTX_INPROC,&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IID_IBaseFilter, (void **)&amp;pVComp); <BR>&nbsp;&nbsp;&nbsp;&nbsp;pGraph-&gt;AddFilter(pVComp, L"Compressor");<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;// Render the video stream, through the compressor.<BR>&nbsp;&nbsp;&nbsp;&nbsp;pBuild-&gt;RenderStream(<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Output pin category<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Media type<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pSrc,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Source filter<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pVComp,&nbsp;&nbsp;&nbsp;&nbsp; // Compressor filter<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pMux);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Sink filter (the AVI Mux)<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;// Render the audio stream.<BR>&nbsp;&nbsp;&nbsp;&nbsp;pBuild-&gt;RenderStream(NULL, NULL, pSrc, NULL, pMux);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;// Set video compression properties.<BR>&nbsp;&nbsp;&nbsp;&nbsp;IAMStreamConfig&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *pStreamConfig = NULL;<BR>&nbsp;&nbsp;&nbsp;&nbsp;IAMVideoCompression&nbsp;&nbsp;&nbsp;&nbsp; *pCompress = NULL;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;// Compress at 100k/second data rate.<BR>&nbsp;&nbsp;&nbsp;&nbsp;AM_MEDIA_TYPE *pmt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;pBuild-&gt;FindInterface(NULL, NULL, pVComp, IID_IAMStreamConfig, (void **)&amp;pStreamConfig);&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; <BR>&nbsp;&nbsp;&nbsp;&nbsp;pStreamConfig-&gt;GetFormat(&amp;pmt);<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (pmt-&gt;formattype == FORMAT_VideoInfo) <BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((VIDEOINFOHEADER *)(pmt-&gt;pbFormat))-&gt;dwBitRate = 100000;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pStreamConfig-&gt;SetFormat(pmt);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;DeleteMediaType(pmt);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;// Request key frames every four frames.<BR>&nbsp;&nbsp;&nbsp;&nbsp;pStreamConfig-&gt;QueryInterface(IID_IAMVideoCompression, (void **)&amp;pCompress);<BR>&nbsp;&nbsp;&nbsp;&nbsp;pCompress-&gt;put_KeyFrameRate(4);<BR>&nbsp;&nbsp;&nbsp;&nbsp;pCompress-&gt;Release();<BR>&nbsp;&nbsp;&nbsp;&nbsp;pStreamConfig-&gt;Release();<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;// Run the graph.<BR>&nbsp;&nbsp;&nbsp;&nbsp;IMediaControl&nbsp;&nbsp; *pControl = NULL;<BR>&nbsp;&nbsp;&nbsp;&nbsp;IMediaSeeking&nbsp;&nbsp; *pSeek = NULL;<BR>&nbsp;&nbsp;&nbsp;&nbsp;IMediaEvent&nbsp;&nbsp;&nbsp;&nbsp; *pEvent = NULL;<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; <BR>&nbsp;&nbsp;&nbsp;&nbsp;HRESULT 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... \n");<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;long evCode;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (SUCCEEDED(hr))&nbsp;&nbsp;// IMediaSeeking is supported<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;REFERENCE_TIME rtTotal, rtNow = 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pSeek-&gt;GetDuration(&amp;rtTotal);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while ((pEvent-&gt;WaitForCompletion(1000, &amp;evCode)) == E_ABORT)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pSeek-&gt;GetCurrentPosition(&amp;rtNow);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("%d%%\n", (rtNow * 100)/rtTotal);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pSeek-&gt;Release();<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;&nbsp;// Cannot update the progress.<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&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");&nbsp;&nbsp; <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;pControl-&gt;Release();<BR>&nbsp;&nbsp;&nbsp;&nbsp;pEvent-&gt;Release();<BR>&nbsp;&nbsp;&nbsp;&nbsp;pBuild-&gt;Release();<BR>&nbsp;&nbsp;&nbsp;&nbsp;pGraph-&gt;Release();<BR>&nbsp;&nbsp;&nbsp;&nbsp;CoUninitialize();<BR>}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;真的需要你的帮助!谢谢你兄台!望快点回应!谢谢!<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>
回复者:Creator 回复日期:2003-03-25 08:57:46
<br>内容:我看了一下,你的意图是要将avi经过压缩后重新生成avi文件,你一定是参考的Building the Recompression Graph 文章,但你没有完全理解其过程。请仔细参考SDK给出的FILTER GRAPH。实在没招,晚上给写你一个DEMO。
<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-25 10:28:47
<br>内容:非常感谢你的热心帮助!如果你能给我提供一个DEMO !那真的万分感谢了!<BR>我是想把一个普通的*.avi转为MPEG4的*.avi和*.mpg转为MPEG4的*.avi.<BR>而且把*.vob文件通过这种方式转为MPEG4的*.avi是否更难些啊!<BR> 再次谢谢你!急盼回音!&nbsp;&nbsp;&nbsp;&nbsp; <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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;新手上路&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 + -