直接上代码。假设有须要能够直接建一个win32控制台程序然后将代码拷过去改个文件名称就能够用了(注意将声道和频率与你自己的文件相应)。当然我自己也用VS2008写了个样例上传了,假设有须要下载地址例如以下:点击打开链接。
这份代码是打开文件截取一段数据然后播放的,能够轻松的经过加一条线程的方式改成网络传输的形式,但经过本人測试,由于没有缓存机制会有“哒哒”的噪声,也就是说这份代码在网络实时音频上的表现并不太好。为了解决问题,能够加上缓存机制,本人由于一開始用的是事件响应方式。所以一直困在这个框架里,不能非常好的利用缓存的机制解决上面提到的问题,后来尝试了用回调函数的方式来响应数据播放完毕的消息。问题就轻松的攻克了。
那部分的代码会在稍候放上去。
#include "stdafx.h"
#include
#include
#pragma comment(lib, "winmm.lib")
char buf[1024 * 1024 * 4];
int _tmain(int argc, _TCHAR* argv[]) {
FILE* thbgm;//文件
int cnt;
HWAVEOUT hwo;
WAVEHDR wh;
WAVEFORMATEX wfx;
HANDLE wait;
wfx.wFormatTag = WAVE_FORMAT_PCM;//设置波形声音的格式
wfx.nChannels = 1;//设置音频文件的通道数量
wfx.nSamplesPerSec = 8000;//设置每一个声道播放和记录时的样本频率
wfx.nAvgBytesPerSec