语音聊天软件完成心得.
2007-11-08 23:00
363 查看
给自己看的^_^
1.为了保证实时性,给输入设备的单个缓冲块不能太大,最好用1K(相当于延时10多ms),然后多准备几个这样的数据块(一般20个).
2.最好是把WAVEHDR和数据定义在一起,方便传输控制.
SNDDATABLOCK struct
header WAVEHDR <?>
wavedata db 1024 dup(?)
SNDDATABLOCK ends
3.处理录音数据块用回调函数方法是很好的选择.虽然MSDN上很是强调,不要在回调里调用系统函数,除了它列的那几个函数,否则会造成死锁.但是只要仔细地想想,死锁也只会发生在声卡方面,总不可能说录个音,还会造成两个程序因为抢占打印机造成死锁的吧.这里面最容易造成的是数据块上的死锁.所以最好是把这次产生的数据块复制出去,然后再把它再次作为录音用的缓冲.而复制出去的数据,我们可以任意使用.
4.如果采用第2点说那种方法,显然是很好的,但是要注意,如果把数据复制出来后,这个结构体里header的lpData是没有改变的,它还是以前的那个内存地址,应该让它变成新地址.不然复制也没有意义.
mov esi,buffer
mov edi,buffer
add edi,sizeof WAVEHDR
assume esi:ptr SNDDATABLOCK
mov [esi].header.lpData,edi
5.采用UDP传输数据,接收方收到数据后更要注意第四点!!!!
6.接收方处理数据是比较简单的,就是把这个音频数据播放出来就OK了.采用waveOutWrite函数,但之前必须用waveOutPrepareHeader函数准备文件头,当然,这个已在数据包中,很简单,只不过非常要注意的地方就是准备之前,要记得将header里的一些内容设成0,不然会出错.
mov [esi].header.dwLoops,0
mov [esi].header.dwFlags,0
mov [esi].header.lpNext,0
mov [esi].header.Reserved,0
mov [esi].header.dwUser,0
1.为了保证实时性,给输入设备的单个缓冲块不能太大,最好用1K(相当于延时10多ms),然后多准备几个这样的数据块(一般20个).
2.最好是把WAVEHDR和数据定义在一起,方便传输控制.
SNDDATABLOCK struct
header WAVEHDR <?>
wavedata db 1024 dup(?)
SNDDATABLOCK ends
3.处理录音数据块用回调函数方法是很好的选择.虽然MSDN上很是强调,不要在回调里调用系统函数,除了它列的那几个函数,否则会造成死锁.但是只要仔细地想想,死锁也只会发生在声卡方面,总不可能说录个音,还会造成两个程序因为抢占打印机造成死锁的吧.这里面最容易造成的是数据块上的死锁.所以最好是把这次产生的数据块复制出去,然后再把它再次作为录音用的缓冲.而复制出去的数据,我们可以任意使用.
4.如果采用第2点说那种方法,显然是很好的,但是要注意,如果把数据复制出来后,这个结构体里header的lpData是没有改变的,它还是以前的那个内存地址,应该让它变成新地址.不然复制也没有意义.
mov esi,buffer
mov edi,buffer
add edi,sizeof WAVEHDR
assume esi:ptr SNDDATABLOCK
mov [esi].header.lpData,edi
5.采用UDP传输数据,接收方收到数据后更要注意第四点!!!!
6.接收方处理数据是比较简单的,就是把这个音频数据播放出来就OK了.采用waveOutWrite函数,但之前必须用waveOutPrepareHeader函数准备文件头,当然,这个已在数据包中,很简单,只不过非常要注意的地方就是准备之前,要记得将header里的一些内容设成0,不然会出错.
mov [esi].header.dwLoops,0
mov [esi].header.dwFlags,0
mov [esi].header.lpNext,0
mov [esi].header.Reserved,0
mov [esi].header.dwUser,0
相关文章推荐
- 语音聊天软件LoudTalks 免费
- Webus Fox(1)免安装的在线教学、视频会议软件(含文本、语音、视频聊天、电子白板)
- IOS、安卓IM语音聊天开发初探部分心得——本地音频处理篇(上)
- 完整源代码详细解释——聊天、文件传输、语音呼叫,安卓版飞鸽传书软件
- IOS、安卓IM语音聊天开发初探部分心得——网络基础篇
- 一个视频聊天软件,目前已经实现远程视频语音通讯(DirectShow+UDP)
- BlueTooth聊天软件(支持表情和语音)
- IOS、安卓IM语音聊天开发初探部分心得——本地音频处理篇(上)
- IOS、安卓IM语音聊天开发初探部分心得——本地音频处理篇(下)
- 【源码分享下载】一款基于微客服的仿微信的聊天软件
- 完成这最后的20%——《持续集成——软件质量改进和风险降低之道》书评
- 从“人间正道”领悟的八条软件开发与项目管理心得
- 一款语音软件
- 用Delphi开发视频聊天软件
- Fedora 18 软件使用心得
- 【管理心得之六】判定工作是否完成,标准是什么
- 网络编程UDP协议——聊天软件
- 程序UI设计——工业软件UI 设计心得
- 玩转Windows XP内置语音输入软件
- app语音聊天方案