已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1/8实时混音的实现1摘要本文主要讨论多路声音实时混叠的实现方法,以及实现过程中对一些特殊情况的处理。关键词WAVE混音混音器1引言将多个WAVE文件或多路WAVE数据同时在WAVE设备上输出,就可同时听到多个不同的声音,达到混音的效果。如果是将多个不同端点的话音数据经局域网络传输到达某一个端点再经该端点的WAVE设备输出,就能同时听到多个人的话音,从而实现局域网络中多方的话音交谈。在网络上实现话音交谈,特别强调实时性,要尽量保证话音的平滑、连续,因此为了保证话音数据连续,减少话音数据存储带来的延时,在具体实现中,话音的录制和播放都不采用文件的形式,录制和播放的话音数据都存在缓冲区中。在WINDOWS系统中,一般情况下,高层WAVE接口函数无法直接播放缓冲区中的话音数据,而必须用底层函数来实现,常用的是WINDOWSAPI中的WAVE函数。将WAVE数据在WAVE设备上输出使用的是WAVEOUTWRITE函数,但是该函数不支持多路WAVE数据的同时播放,为了能达到多路WAVE数据同时播放的效果,对缓冲区中多路WAVE数据进行必要的预处理后,再提交给WAVE输出设备播放。实现原理如图1所示。2/8图1多路WAVE混音的实现原理实现原理实时地混音,就是将多路WAVE数据进行相互叠加处理到另一个目的缓冲区,最终将该目的的缓冲区提交给WAVE输出设备。将每一路WAVE数据作为一个单独通道,分别从每个通道取一数据片段,把取得的几个数据片段相互叠加,然后存进另外一个目的缓冲区中。为了便于处理,缓冲区通常采用数组的形式存放WAVE数据。如果话音数据,采用采样频率1025HZ,8位单声道的数据格式,那么一秒的话音数据量为11025个字节。为了达到实时的效果,目的缓冲区通常都设置比较小,大约可存放1/8秒的话音数据量,对于前述的话音格式,目的缓冲区的大小为11025/81375个字节。下面具体看一下WAVE数据以数组形式存放时的混音过程。如图2所示。图多路WAVE数据的叠加过程假设有4路WAVE数据,目的缓冲区的大小为1378,混音子函数调用为MIXERLPDEST,RGPCDDATA,4,1378。下面给出混音子函数的实现。其中LPDEST为目的缓3/8冲区,RGWAVESRC为多路WAVE数据源,INUMWAVES为WAVE数据源的通道数,WLEN为目的缓冲区长度。转贴于论文联盟HTTP/VOIDMIXITLPSAMPLELPDEST,LPSAMPLERGWAVESRC,INTINUMWAVES,WORDWLENINT,ISUMWORDCTRCTR0WHILEWLENISUM128/静音时数值为128/FORI0IINUMWAVESIISUMISUMRGWAVESRCCTR128PEGINT0,ISUM,INT225/对转换结果处理/LPDESTISUMCTRWLEN注意一点的是对于单声道数据一个字节表示一个采样值,采样值在0255之间,各个通道的对应WAVE数据相4/8加后,就会溢出,还需要将相加结果转换成0255之间的数值。将该目的缓冲区中的WAVE数据经WAVEOUTWRITE函数输出,就能同时听到四个不同的声音,当WAVE输出设备播放完目的缓冲区中的数据便返回,请求用户提供更多的WAVE输出数据,因为WAVE输出设备只能输出提交给它的WAVE数据;另外,对WAVE数据进行混音还需要一定的时间,因此当提交一个目的缓冲区中的数据给WAVE输出设备后,就必须马上混叠另一段WAVE数据来提交给WAVE输出设备,作为下一个输出的数据缓冲区,避免声音输出的中断,后一个目的缓冲区提交后被输出设备放入输出队列中,当第一个目的缓冲区中输出完毕后再输出它的数据,当输出设备在输出第二个目的缓冲区的数据时,又能将第三段数据混合进第一个目的缓冲区中,然后重新提交,直到提交完所有的WAVE数据,那时就将停止输出。在实际应用中目的缓冲区的数要多个,一般为3至4个,图3给出了混音、提交的完整过程。混音、提交过程特殊情况的处理上面讨论了混音及播放的一般过程,但在实际应用中,还需要到对一些特殊情况进行处理。各通道中待混音的WAVE数据长度不同。5/8图各通道中的WAVE数据长度不同这种情况是指当前要混音的某一通道中的声音片段数据比WAVE混音器所定义的缓冲区长度要小,这时该路被采样的声音没有足够的数据与WAVE混音器中的数据相混叠。对于这种情况,采用以下的方法可以有效地解决,主要包括三步AWAVE混音器在混音前首先判断是否有这种情况出现,如果出现,WAVE混音器必须确定该WAVE通道中所能被采样的数据长度;B按照该通道所能被采样的数据长度,将该路的数据与其它多个通道中的数据相混叠存入WAVE混音器的目的缓冲区中;C停止对该通道WAVE数据的采样混叠处理,只采样混叠其它通道中的WAVE数据,存入WAVE混音器目的缓冲区的余下部分。因为在接下来的采样混音过程还会出现相同的情况,所以必须重复上述AC的步骤,直到WAVE混音器的缓冲区填充完毕或再没有可填充的数据为止。这时将该WAVE混音器的目的缓冲区提交给WAVE输出设备。6/8当播放混音数据时又有新的一路WAVE数据要求混叠并且被播放。当前正在播放WAVE混音器中一个已经混叠的目的缓冲区中WAVE数据,这时又有一路声音要求马上混叠并且被播放。这种情况处理起来比较复杂。多路WAVE数据经过混叠,存储到目的缓冲区,该目的缓冲区中的WAVE数据在提交给输出设备前,是确定时长的。当有新的一路WAVE数据要求加入时,WAVE混音器必须要能确定目的缓冲区中的WAVE数据已经播放到什么位置了,同时通知WAVE播放设备当前所播放的WAVE数据以及WAVE设备播放队列中的所有WAVE数据不再有效,然后从该时间点起,重新采样混叠各通道中余下未播放的WAVE数据,采样混叠过程中加入新的一路要求混叠的WAVE数据,将重新混叠的WAVE数据提交给WAVE输出设备,所有这一切必须在很短的时间完成,要不然用户可能听到声音有中断现象出现。而且这种方法中该重新采样的时间点比较难定。因此,对于这种情况还可以采用图2所示的方法来处理,也能达到同样的效果。这样WAVE混音器不用中断WAVE输出当前所在播放的数据,只要重新处理一下WAVE设备播放队列中的WAVE数据便可以了。在混叠下一个目的缓冲区中数据时,包含进新的7/8WAVE数据。这种方法有一定的延时,延时的时间长度为,从重新混叠的数据提交到WAVE设备的播放队列中算起,直到该缓冲区的WAVE数据被播放开始为止。如果定义输出队列的长度3个缓冲区,那么延时的长度最长也就2个缓冲区中的WAVE数据播放长度,要是缓冲区的长度设置的非常短的话,这种延时一般是不容易听出来的。播放过程中中止其中某一路WAVE数据的播放。当正在播放多路WAVE数据时,在某一通道中的WAVE数据还未播放完成前,要求中止该通道中WAVE数据的播放。对于这种情况的处理,与前面提到的情况2相似。WAVE混音器首先确定当前缓冲区中WAVE数据已经播放到什么位置,同时通知WAVE播放设备当前所播放的WAVE数据以及WAVE设备播放队列中的所有WAVE数据不再有效,然后从该时间点起,重新混叠余下的未播放的WAVE数据,但在采样混叠过程不包括要求去除的WAVE数据。同样当前播放位置的确定比较困难,所以实际中解决的方法基本同第二种情况中方法2相同,不过在进行后续的采样混叠过程不是加入新的WAVE数据,而是去除某一指定通道中的WAVE数据。结束语该方法已经在实际中使用,因考虑到网络中数据流量和系统的性能要求,话音数据的录制与播放都采用了8/88位单声道的格式,对于立体声16位WAVE数据的混音处理较复杂,有待
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年高职工程审计管理应用(应用技术)试题及答案
- 2025年中职新能源汽车(充电枪更换)试题及答案
- 2026年营养咨询(孕妇营养调理)试题及答案
- 按价值付费下5G医疗成本效益分析
- 养老院老人紧急联络通讯制度
- 养老院老人生活娱乐活动组织人员培训制度
- 养老院老人家庭关系沟通制度
- 养老院突发事件应急预案制度
- 养老院医疗护理服务质量制度
- 2026年国企财务知识成本核算方法应用练习与答题指引含答案
- 2025年江苏省建筑施工企业主要负责人安全员A证考核考试题库附答案
- 高校学生评价体系改革方案
- 防火防盗安全知识
- 施工现场安全生产网格化管理方案
- 19CJ87-2 采光、通风、消防排烟天窗(二)-屋面节能通风装置图集
- 雨课堂在线学堂《英美音乐与文化》作业单元考核答案
- 电石生产安全技术规程
- 智能制造车间SCADA系统设计方案
- 自考劳动法2025年10月真题及答案
- CD20单抗治疗免疫性疾病
- 三角债三方协议合同范本
评论
0/150
提交评论