首 页 用户登录 | ![]() |
|||
|
|||
按字母检索 | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
按声母检索 | A | B | C | D | E | F | G | H | J | K | L | M | N | O | P | Q | R | S | T | W | X | Y | Z | 数字 | 符号 |
|
![]() |
您的位置: 5VAR论文频道 → 论文中心 → 计算机论文 → 计算机理论 |
|
|||||
实时混音的实现 | |||||
收集整理:佚名 来源:本站整理 时间:2009-01-10 12:08:12 点击数:[] ![]() |
|||||
ve数据,这时又有一路声音要求马上混叠并且被播放。 这种情况处理起来比较复杂。多路Wave数据经过混叠,存储到目的缓冲区,该目的缓冲区中的Wave数据在提交给输出设备前,是确定时长的。当有新的一路Wave数据要求加入时,Wave混音器必须要能确定目的缓冲区中的Wave数据已经播放到什么位置了,同时通知Wave播放设备当前所播放的Wave数据以及Wave设备播放队列中的所有Wave数据不再有效,然后从该时间点起,重新采样混叠各通道中余下未播放的Wave数据,采样混叠过程中加入新的一路要求混叠的Wave数据,将重新混叠的Wave数据提交给Wave输出设备,所有这一切必须在很短的时间完成,要不然用户可能听到声音有中断现象出现。而且这种方法中该重新采样的时间点比较难定。 因此,对于这种情况还可以采用图2所示的方法来处理,也能达到同样的效果。这样Wave混音器不用中断Wave输出当前所在播放的数据,只要重新处理一下Wave设备播放队列中的Wave数据便可以了。 在混叠下一个目的缓冲区中数据时,包含进新的Wave数据。这种方法有一定的延时,延时的时间长度为,从重新混叠的数据提交到Wave设备的播放队列中算起,直到该缓冲区的Wave数据被播放开始为止。如果定义输出队列的长度3个缓冲区,那么延时的长度最长也就2个缓冲区中的Wave数据播放长度,要是缓冲区的长度设置的非常短的话,这种延时一般是不容易听出来的。 ●播放过程中中止其中某一路Wave数据的播放。 当正在播放多路Wave数据时,在某一通道中的Wave数据还未播放完成前,要求中止该通道中Wave数据的播放。对于这种情况的处理,与前面提到的情况(2)相似。Wave混音器首先确定当前缓冲区中Wave数据已经播放到什么位置,同时通知Wave播放设备当前所播放的Wave数据以及Wave设备播放队列中的所有Wave数据不再有效,然后从该时间点起,重新混叠余下的未播放的Wave数据,但在采样混叠过程不包括要求去除的Wave数据。 同样当前播放位置的确定比较困难,所以实际中解决的方法基本同第二种情况中方法2相同,不过在进行后续的采样混叠过程不是加入新的Wave数据,而是去除某一指定通道中的Wave数据。 4.结束语 该方法已经在实际中使用,因考虑到网络中数据流量和系统的性能要求,话音数据的录制与播放都采用了8位单声道的格式,对于立体声16位Wave数据的混音处理较复杂,有待作进一步的研究。 参考文献 《Microsoft Corporation.Microsoft Windows Multimedia Programmer's Referce》 Microsoft Press 1995 《Advance Multimedia Programming》 电子工业版社 1995 《Microsoft Corporation.Microsoft Windows API Referce》 Microsoft Press 1999 Tags: |
提供人:佚名 | |
【返回上一页】【打 印】【关闭窗口】 |
![]() |
5VAR论文频道 |
![]() |
5VAR论文频道 |
最新热点 | 最新推荐 | 相关新闻 | ||
|
|
![]() |
关于本站 -
网站帮助 -
广告合作 -
下载声明 -
网站地图
Copyright © 2006-2033 5Var.Com. All Rights Reserved . |