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

📄 subject_61548.htm

📁 vc
💻 HTM
字号:
<p>
序号:61548 发表者:害羞的小二 发表日期:2003-11-20 11:38:45
<br>主题:请教:从采集卡上获得的音频PCM裸数据,如何压缩?
<br>内容:能用Filter吗?还是用ACM里面的接口函数?如果有什么思路?非常感谢!<BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:gzast163 回复日期:2003-11-21 10:01:12
<br>内容:ftp://private:private@redcode.meibu.com:2123/DSDemo.rar<BR><BR>ftp://private:private@redcode.meibu.com:2123/GSM610.bmp
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:害羞的小二 回复日期:2003-11-24 09:45:56
<br>内容:to gzast163:非常谢谢你,我应该如何给分?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:gzast163 回复日期:2003-11-24 09:53:51
<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>
回复者:害羞的小二 回复日期:2003-11-24 09:59:59
<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>
回复者:害羞的小二 回复日期:2003-12-01 11:38:21
<br>内容:To:gzast163.你好,你给我这个动态连接库及其Demo给了我很大的帮助,分析了这个代码後,我做的模块其实也出来了。但是在测试的时候除了问题,就是有的时候能够采集数据,有的时候却不能,这是为什么?请给小弟一点提示,非常感谢!<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>
回复者:gzast163 回复日期:2003-12-01 12:42:54
<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>
回复者:害羞的小二 回复日期:2003-12-01 16:29:50
<br>内容:to:gzast163.谢谢你这么快就回应。我发现一个现象,就是每一次运行的时候我都把:<BR>&nbsp;&nbsp;&nbsp;&nbsp;IFileSinkFilter*&nbsp;&nbsp;&nbsp;&nbsp;pSink;<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_pFileWriterFilter-&gt;QueryInterface(IID_IFileSinkFilter, (void**)&amp;pSink);<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(!pSink) return;<BR>&nbsp;&nbsp;&nbsp;&nbsp;pSink-&gt;SetFileName(L&#34;c:\\test4.wav&#34;, NULL);中的文件名改了就行了,但是如果不改,然后覆盖以前的,或者把以前的删除都无法写文件。你可以试下吗?,非常谢谢
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:gzast163 回复日期:2003-12-01 16:48:48
<br>内容:我试了都可以呀。<BR>如果你要覆盖原来文件,我建议你使用IFileSinkFilter2::SetMode(AM_FILE_OVERWRITE),这样才能保证文件长度是正确的。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:害羞的小二 回复日期:2003-12-01 17:11:34
<br>内容:to:gzast163。你试试看,如果刚刚采集了一个文件,然后把它删除,接着重新采集,文件名相同,看看能不能重新写文件。我这儿不能,我百思不得其解。还有,如果用IFileSinkFilter2::SetMode(AM_FILE_OVERWRITE),程序中如何修改。给我点提示,非常感谢!<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>
回复者:害羞的小二 回复日期:2003-12-01 17:26:51
<br>内容:我设为:&nbsp;&nbsp;&nbsp;&nbsp;IFileSinkFilter2*&nbsp;&nbsp;&nbsp;&nbsp;pSink;<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_pFileWriterFilter-&gt;QueryInterface(IID_IFileSinkFilter2, (void**)&amp;pSink);<BR>&nbsp;&nbsp;&nbsp;&nbsp;pSink-&gt;SetMode(AM_FILE_OVERWRITE);<BR><BR>但是开始的那个问题还是没有解决:就是我采集了一个test4.wav文件,然后我立刻删了,重新编译连接,写不出文件来。或者不删除,就这样重新采集,这时候的现象是,test4.wav文件大小不变,也就是说没办法覆盖。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:害羞的小二 回复日期:2003-12-02 15:41:17
<br>内容:还有:pSink-&gt;SetFileName(L&#34;c:\\test4.wav&#34;, NULL);函数中的第一个参数可不可以为参数变量,如果可以,应该如何定义这个变量
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:gzast163 回复日期:2003-12-02 18:12:45
<br>内容:哈哈,你真懒,这种问题也拿来问我。<BR><BR>WCHAR wFile[MAX_PATH];<BR>CString strIndexFile = &#34;c:\\test.wav&#34;;<BR>MultiByteToWideChar(CP_ACP, 0, strIndexFile, -1, wFile, MAX_PATH);<BR>pSink-&gt;SetFileName(wFile, NULL );<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>
回复者:害羞的小二 回复日期:2003-12-02 18:23:43
<br>内容:gzast163 大哥,真的冤枉,我看了很多资料,试了很多方法,真的搞不定才请教的,呜呜呜呜……。其他几个问题能解决吗?谢谢
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:害羞的小二 回复日期:2003-12-04 16:44:13
<br>内容:to:gzast163大哥。我把OnButtonRec修改成这样,然后我加一个OnButtonPauseRec,执行的时候出错了,请大哥指点。非常感谢!<BR><BR>void CDSDemoDlg::OnButtonRec() <BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (m_bPausedRecording)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_MC-&gt;Run();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_bPausedRecording=FALSE;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GetDlgItem(IDC_BUTTON_REC)-&gt;EnableWindow(FALSE);<BR>&nbsp;&nbsp;&nbsp;&nbsp;GetDlgItem(IDC_BUTTON_STOP_REC)-&gt;EnableWindow(TRUE);<BR>&nbsp;&nbsp;&nbsp;&nbsp;GetDlgItem(IDC_BUTTON_PAUSE_REC)-&gt;EnableWindow(TRUE);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp; // TODO: Add your control notification handler code here<BR>&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RetVal;<BR>//&nbsp;&nbsp;LPCOLESTR Filename;<BR>&nbsp;&nbsp;&nbsp;&nbsp;//LPCTSTR&nbsp;&nbsp;Buffer0;<BR>&nbsp;&nbsp;//char *Filename=&#34;c:\test.wav&#34;;<BR>&nbsp;&nbsp;&nbsp;&nbsp;//wcsncpy(wFileDes,T2W(Buffer0),128);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;RlsResource();<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;RetVal = DSGetFilterByIndex(FC_AudioCaptureSources, 0, (void**)&amp;m_pSourceFilter);<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(RetVal) { ShowErrMsg(RetVal); return; }<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;RetVal = DSGetPinByIndex(m_pSourceFilter, TRUE, 0, (void**)&amp;m_pSourceOutPin);&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(RetVal) { ShowErrMsg(RetVal); return; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;RetVal = DSGetFilterByName(FC_AudioCompressors, &#34;GSM 6.10&#34;, (void**)&amp;m_pGSMEncoder);&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(RetVal) { ShowErrMsg(RetVal); return; }<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;RetVal = DSGetPinByName(m_pGSMEncoder, &#34;Input&#34;, (void**)&amp;m_pEncInPin);&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(RetVal) { ShowErrMsg(RetVal); return; }<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;RetVal = DSGetPinByName(m_pGSMEncoder, &#34;Output&#34;, (void**)&amp;m_pEncOutPin);&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(RetVal) { ShowErrMsg(RetVal); return; }<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;RetVal = DSGetFilterByName(FC_DirectShowFilters, &#34;AVI Mux&#34;, (void**)&amp;m_pAviMuxFilter);&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(RetVal) { ShowErrMsg(RetVal); return; }<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;RetVal = DSGetFilterByName(FC_DirectShowFilters, &#34;File Writer&#34;, (void**)&amp;m_pFileWriterFilter);&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(RetVal) { ShowErrMsg(RetVal); return; }<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;IFileSinkFilter2*&nbsp;&nbsp;&nbsp;&nbsp;pSink;<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_pFileWriterFilter-&gt;QueryInterface(IID_IFileSinkFilter2, (void**)&amp;pSink);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;if(!pSink) return;<BR><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;&nbsp;buffer[MAX_PATH];<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SYSTEMTIME sysTime;<BR>&nbsp;&nbsp;&nbsp;&nbsp;GetLocalTime(&amp;sysTime);<BR>&nbsp;&nbsp;&nbsp;&nbsp;sprintf( buffer,&#34;c:\\%02d%02d%02d%02d%02d.wav&#34;, sysTime.wMonth, sysTime.wDay, sysTime.wHour, <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sysTime.wMinute, sysTime.wSecond);<BR>&nbsp;&nbsp;&nbsp;&nbsp;WCHAR wFile[MAX_PATH];<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;MultiByteToWideChar(CP_ACP, 0,buffer, -1, wFile, MAX_PATH);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pSink-&gt;SetFileName(wFile, NULL );<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;HRESULT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hr;<BR>&nbsp;&nbsp;&nbsp;&nbsp;hr = CoCreateInstance(CLSID_FilterGraph,<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;NULL,<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;CLSCTX_INPROC_SERVER,<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;IID_IGraphBuilder,<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;(void **) &amp;m_pGraph);<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (FAILED(hr))&nbsp;&nbsp;&nbsp;&nbsp;return;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;m_pGraph-&gt;AddFilter(m_pSourceFilter, NULL);<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_pGraph-&gt;AddFilter(m_pGSMEncoder, NULL);<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_pGraph-&gt;AddFilter(m_pAviMuxFilter, NULL);<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_pGraph-&gt;AddFilter(m_pFileWriterFilter, NULL);<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_pGraph-&gt;Connect(m_pSourceOutPin, m_pEncInPin);<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_pGraph-&gt;Render(m_pEncOutPin);<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_pGraph-&gt;QueryInterface(IID_IMediaControl, (void**)&amp;m_MC);<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_MC-&gt;Run();<BR>&nbsp;&nbsp;&nbsp;&nbsp;GetDlgItem(IDC_BUTTON_REC)-&gt;EnableWindow(FALSE);<BR>&nbsp;&nbsp;&nbsp;&nbsp;GetDlgItem(IDC_BUTTON_STOP_REC)-&gt;EnableWindow(TRUE);<BR>&nbsp;&nbsp;&nbsp;&nbsp;GetDlgItem(IDC_BUTTON_PAUSE_REC)-&gt;EnableWindow(TRUE);<BR>}<BR><BR>void CDSDemoDlg::OnButtonPauseRec() <BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;// TODO: Add your control notification handler code here<BR>&nbsp;&nbsp;&nbsp;&nbsp;//RlsResource();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (m_MC)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_MC-&gt;Pause();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Say(TEXT(&#34;Paused audio recording&#34;));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_bPausedRecording = TRUE;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;GetDlgItem(IDC_BUTTON_REC)-&gt;EnableWindow(TRUE);<BR>&nbsp;&nbsp;&nbsp;&nbsp;GetDlgItem(IDC_BUTTON_PAUSE_REC)-&gt;EnableWindow(FALSE);<BR>}<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>

⌨️ 快捷键说明

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