毕业设计论文网公告: 本站服务范围:计算机毕业设计|计[admin  2009年7月26日]   设为首页 加入收藏
网站首页 加入收藏 辅导流程 付款方式 BUY流程 常见问题

* 专业辅导毕业设计,毕业论文,硕士论文。
* 以人为本,人尽其才,有分工更有协作。
* 不以低价争客户,但求精品出效益。

当前位置:毕业设计论文网 >> VB.NET设计 >> 浏览文章
7003数字语音教室中DirectShow的应用
来源:本站原创  作者:adminp  添加日期:2013年01月08日  点击数:

4. 声音的捕捉和回放
4.1声音的捕捉
4.1.1 声音捕获过滤器
DirectShow对硬件的支持是通过特定的包装Filter来实现的。声卡使用的是Audio Capture Filter,Filter内部使用以waveIn开头的一套API实现(如waveInOpen等)。运行GraphEdit,插入Filter时,在“Audio Capture Sources”目录下,我们就能看到所有代表本地机器上的声卡的各个Filter(有的机器装了几张声卡,这里就会有几个Filter)。在Filter Graph中加入这个Filter,我们发现这个Filter有很多Input pin,如Line In、CD Audio、Microphone、Stereo Mix等等;有一个Capture output pin。需要说明的是,在Filter Graph中,这些Input pin并没有真正的数据流入,它们只是声卡的各个输入端子的象征性表示;所以这些Input pin永远也不用连接。
    Directshow 允许直接将声卡里的模拟输入转换成硬盘可存储的各种格式,通过一个Audio Capture Filter封装了所有的功能。每一个声卡都可以通过一个过滤器被枚举出来从而加入到捕捉Graph中。对于声卡的各种输入选项如声音大小,BASS,TREBLE和PAN等声音捕捉过滤器都提供了相对应的接口。
建造一个声音捕获的Graph首要的是添加声音捕捉过滤器到Graph中,虽然所有的过滤器都是COM组件,但是不同于一般的过滤器,由于它涉及到低层硬件,不能通过简单的调用CoCreaeInstance函数来创建它,相反,需要调用系统设备枚举的途径,在特定的设备目录下才能找到它,然后调用相对应的名字绑定对象的类似于命名服务的方法使用。在Directshow中,所有涉及到硬件的,都需要通过此类途径来生成一个新的过滤器。
4.1.2 声音捕获属性
Directshow不仅仅对声音的捕捉做了支持,同时对于捕捉样本的大小和速度都有很好的支持。IAMAudioInputMixer接口是每一个声音捕捉过滤器都提供的接口,通过它可以允许或者禁止特定的输入和输出。甚至可以同时捕获多种输入。声音的采样率和声音格式是由硬件决定的,通过IAMStreamConfig接口我们可以枚举所可用的采样率和格式。一般来说,声音捕捉时都将有一定的延迟,通过过滤器上的IAMBufferNegotiation 接口,
我们可以改善这个性能。
4.3声音的回放
声音的捕捉和回放其实在实质上相反,前者将模拟信号转换成数字信号,后者将数字信号转换成模拟信号,同样在Directshow中,声音的播放不象捕获那样复杂,需要设定很多东西,它仅仅需要一个过滤器即可。对于多声卡的系统,同样对于每一个声卡,在过滤器列表中都有相对应的过滤器。
    声音可以在一端捕获,在2端同时回放。由于在Directshow中包含一写重复数据过滤器,可以将样本数据复制一分,这样可以在说话的同时让自己和别人都能听到说话的内容。
    由于在接收端,可能接收的声音并不一定来自同一端,这样各个声音样本到达接收端的时间可能发生颠倒,导致在回放时与本来的顺序出现误差,所以需要缓存后再进行混音。混音时需要特别注意,每个声音样本在被接收时会被设置一个时间戳,这个时间戳对于Render过滤器来说,就是样本的播放时间,这个时间戳就可以用来同步各个不同的声音播放时间,按照样本的时间从缓存中挑取最早的予以播放这样可以尽可能的避免声音的乱序。
    声音在到达接收端一定会发生延迟,在声音还在发送端时就已经不可避免的发生了稍许延迟,但这对于人类来说是可以容忍的,特别是在实时性要求不是很高的时候。我们可以通过Capture output pin上的IAMBufferNegotiation接口,改变音频捕捉缓冲的大小,以减少声音播放的延迟。默认情况下,Audio Capture Filter使用0.5秒钟的缓冲。对于一些特殊的应用,这么大的缓冲是没有必要的,带来的延迟也比较大。一般,缓冲设置成能够容纳80毫秒的数据已经很可靠;甚至30-40毫秒也已经足够了。但是也不能太小,否则会影响到音频捕捉的效率,使音质受到损害。
6.2.3  实现Filter
    选择一个FILTER后,我们就需要为这个FILTER做点真正的实事了,添加一个真正做事的PIN。同样和FILTER选择基类一样,PIN也需要选择一个合适的基类。在PIN的实现中,需要实现基类所有的纯虚函数,比如CheckMediaType,在该函数内,需要对媒体类型进行检验,以次来让GRAPH按照设定的模式准确的运行。由于之前的设计方案中定下的是使用MP3格式进行传送,这就涉及到音质问题。声音数据在未压缩前的存储和带宽要求是相当吓人,一般来说将达到176000B每秒,这对带宽无疑将是一个重大的消耗,改用MP3格式后能数据尽量压缩到22100左右,这样能在一般的MTU允许下进行正常的数据传送。MP3格式在DIRECTSHOW中有很好的支持,如现成的压缩FILTER和解压缩FILTER。这也是之前采用DIRECTSHOW而非DIRECDSOUND的一个很明显的优势。
    PIN之间的连接是通过媒体信息的匹配,而媒体信息的匹配到最低层也就是CMediaType类的匹配,这个类主要提供3个方面的信息:MAJOR TYPE,SUBTYPE和WAVEFORMATEX。前2个是32位的标志符,主要是为某一种类型的数据提供统一的标志,如果是VIDEO类型的话,可能就可以由这2中数据确认而不必查看WAVEFORMATEX了,但某些时候WAVEFORMATEX也是不要的,比如我们这个系统中MP3格式的具体设置,如若缺少,很显然,声音这个GRAPH是连接不起来的,这在实际的编程中也确有深刻的体会。同样的MAJOR,SUBTYPE,不一样的WAVEFORMATEX确会带来截然不同的音质效果。
在得到一个有效的声音数据包后,我们需要给这个包加上一些时间戳,时间戳定义了呈现时间(presentation time),用以让renderer filter确定播放的合适时机。尽管这个可能不是必须的,但是正确的时间戳能确保以后在加入视频后提供可扩展的功能。
【购买方式】【联系方式】【关闭窗口】
上一篇:7002商业银行信贷审批系统的设计与实现

下一篇:没有了
论文咨询
   
  本站所有毕业设计和毕业论文作品均出自原创,集多年从事毕业设计工作的经验及资料,结合强劲的毕业设计开发管理团队,全面面向高校学生提供毕业设计和毕业论文指导,快速的毕业设计,毕业论文辅导服务。
  在线咨询:计算机毕业论文咨询
            计算机毕业论文咨询QQ
  服务邮箱:paper51cn@163.com
    咨询热线:毕业设计论文网咨询电话
最新文章   更多
我汇款后你们不将毕业设计发给我怎么
答辩时通常会问到什么问题?
能帮我修改程序及论文排版吗?
我购买的程序为什么不能运行?
我在贵站购买的论文会和其他同学重复
汇款后多久可收到论文?
毕业设计论文网--毕业设计题目列表
智能型充电器的电源和显示的设计
智能家居的发展
制冷专业毕业设计(家用空调)
推荐文章   更多
旅蒙晋商明清时代开发蒙古市场研究
我国物流成本预算管理体系构建研究
农户“贮+销”经营行为影响因素分析
江苏商业区域发展影响因素分析
基于新产业区理论的小商品市场空间集聚特
基于AHP分析的大型购物中心聚客力研究
基于消费者时间资源的市场营销策略分析
农村劳动力转移:改革开放以来的实证分析
黑龙江省装备制造业技术引创能力评价
黑龙江省发展绿色食品产业对策研究
热门文章   更多
毕业设计论文网--毕业设计题目列表
ASP.NET011 图书馆管理信息系统
网络003 计算机网络故障的诊断与解决
ASP.NET016 网络考试系统的设计与实
VB017 医院门诊信息管理系统
网络002 校园网络工程综合布线方案(
JSP020 学生网上选课系统设计与实现
Delphi011 银行学生助学贷款信息管理
VB015 合同信息管理系统的设计与实现
JSP014 企业人事信息管理系统的设计

版权所有:毕业设计论文网 www.paper51.cn CopyRight @ 2006-2013 All Rights Reserved
客服QQ: Email:paper51cn@163.com 服务电话:计算机毕业论文咨询电话
本站所列毕业设计(论文)资料均属于原创者所有,初衷是为大家在毕业设计(论文)过程中参考和学习交流之用,请勿做其他非法用途,转载必究,本站不接受任何形式的代理.如有侵犯您的权利或有损您的利益,请联系本站,经查实我们会立即进行修正或删除相关内容!