电脑音频录制和播放

网络语音通讯技术研究

 

摘 要 本文讲述了利用计算机进行声音录制和播放技术,以及数据在网络上传输的方法,并结合实例设计了一个网络语音通讯程序。
关键字 网络通讯,声音录制,声音播放,GSM610语音压缩
网络语音通讯是一项很实用的技术,由于这方面的资料较少,所以本文将结合程序对此作详细介绍,要实现网络语音通讯,必须搞清楚以下几个问题以及相应的编程方法:1.电脑如何录音;2.电脑如何播放声音;3.电脑之间如何进行数据传输;4.声音数据如何压缩与解压。

  1. 电脑录音的原理 

电脑依靠声卡来处理声音,Windows把声卡看作是录音和放音设备的组合体,录音时首先要准备一个录音队列,队列中包含录音的基本参数,比如录音 数据缓冲区的地址,缓冲区的大小等,为了使录音过程平滑的进行,队列中至少包含两个以上数据缓冲区,当一个缓冲区录完后,Windows系统会给应用程序 发送一个录音结束的消息,并自动开始转入下一个缓冲区进行录音,应用程序收到该消息后应该释放含有录音数据的队列,并取出该队列所指向的缓冲区的声音数 据,然后将该缓冲区再次加入录音队列,以便继续进行录音。Windows就是这样利用这些数据缓冲区进行周而复始的录入工作。使用到的函数说明如下:
waveInOpen() 打开录音设备
waveInPrepareHeader()准备录音缓冲区
waveInAddBuffer()将缓冲区加入录音队列
waveInStart()开始录音
waveInUnprepareHeader()从录音队列中释放缓冲区
waveInReset()复位录音设备
waveInClose()关闭录音设备

  1. 电脑播放声音的原理 

同样的道理放音时也有放音队列和放音数据缓冲区,当用户需要播放声音时,先把声音数据放入数据缓冲区,然后将缓冲区加入放音队列,并向放音设备发送 写数据命令,声卡就可以播放缓冲区中的声音了。缓冲区中数据播放完成后系统会向应用程序发送放音完成的消息,应用程序可以重复前面的工作,先释放完成的队 列,然后向缓冲区加入新的声音数据,并再次将该缓冲区加入放音队列,让该队列继续工作。
waveOutOpen()打开放音设备
waveOutStart()开始放音
waveOutPrepareHeader()准备放音缓冲区
waveOutWrite()将数据写到放音设备上
waveOutUnprepareHeader()从放音队列中释放缓冲区
waveOutReset()复位放音设备
waveOutClose()关闭放音设备

...................................................(作者:倪建华)

转载自http://www.comprg.com.cn/detail.asp?hw_id=91

你可能感兴趣的:(编程,工作,网络,通讯)