《DirectShow 实务精选》实例调试-- AudioCap

 

 

调试程序:   C:/DXSDK/Samples/C++/DirectShow/Capture/AudioCap/AudioCap.sln

 

调试环境:VS2005

 

过程:

 

1、BaseClasses编译

      Debug版本生成strmbasd.lib, Release版本生成strmbase.lib

      编译时出现的错误和修改方法在上一章。

 

2、VS2005配置

      配置方法在上一章。

 

3、注册Filter

      (1)WavDest

        主要完成的功能是,在结束采集时,即PCM数据全部写入文件之后,再在文件头位置插入一个WAVE格式的数据块。

        路径:<dxsdk>/samples/c++/directshow/filters/WavDest下

            

        不需要编译第2个组件

       (2)InfTee

         实现边听边录音功能。

         路径:<dxsdk>/samples/c++/directshow/filters/inftee

 

       编译以上两个工程时都提示找不到largeint.lib的错误。因为VS2005不提供独立的largeint库,所以在工程设置中直接把该库删除即可。

        方法: 右键工程名--》属性,在弹出的“***属性页”对话框中找到:配置属性--》链接器--》输入,在右边弹出的对话框中找到“附加依赖项”,点击最右边的“…”按钮,在弹出的对话框中找到 largeint.lib 并删除之。

        编译通过后,在相应的Debug or Release版本下可以找到 .ax 文件。如:

        C:/DXSDK/Samples/C++/DirectShow/Filters/INFTee/Debug 下可以找到 inftee.ax 文件

   

        进行注册。在命令行状态下(即执行“运行”--》 cmd)执行:

        regsvr32 C:/DXSDK/Samples/C++/DirectShow/Filters/WavDest/Debug /wavdest.ax

 

 

         注销Filter使用命令行参数 /u , 即执行 regsvr32 /u 路径

        命令行参数/s 可以禁止执行 regsvr32.exe时弹出提示对话框。

 

        注册完这两个Filter之后,运行AudioCap就可以把录音写入指定文件和边听边录功能了。

         现在疑问是,在《DirectShow开发指南》第6章 音频采集 中提到实现边听边录功能的一个方法就是上面提到的手动插入一个Infinite Pin Tee Filter。“其实, 使用ICaptureGraphBuiler2::RenderStream实现起来更简单。它会根据需要自动插入一个Smart Tee Filter,(一个类似于Infinite Pin Tee Filter 的DirectShow标准Filter)。”,可是,没装 InfTee 或者注销掉时,没有边听边录功能。跟踪了代码 这个函数是有运行的,但不知为何实现不了,为什么呢?

 

           我错了~~~~~~原来是不用注册Inftee组件的,开发指南那里说的确实是实现了的。没有听到声音的原因是,运行AudioCap后,“Select an input pin”选项默认的是立体声混音,点击“麦克风音量”后就可以了~~~

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值