⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 readme.txt

📁 声卡数据采集的代码,可做学习与参考,对学习数据采集的人有一定帮助
💻 TXT
字号:
========================================================================
       Talk About 使用说明
========================================================================

一、结构说明
1、设备列表,可以是回放和录音设备
typedef struct _tagSoundDevice{
	BYTE btDeviceType;		//0:回放设备,1:捕获设备
	char pstrDeviceDesc[100];		//设备说明
	char pstrDeviceName[100];		//设备名称
	GUID * pDeviceGuid;				//设备GUID
} SOUND_DEVICE;

2、支持的音频格式
typedef struct _tagFormat{
	int nFormatIndex;			//格式序号
	char pstrFormatDesc[255];	//格式说明
	WAVEFORMATEX wfx;			//格式的信息
} SOUND_FORMAT;

3、支持的音频输入源
typedef struct _tagInputSource{
	UINT uLineIndex;			//音频输入源序号
	MIXERLINE LineInfo;			//音频输入源信息
	char pstrSourceName[255];	//音频输入源名称
} SOUND_INPUT_SOURCE;

二、回调函数说明
1、typedef BOOL (CALLBACK *LPReadDataCallback)(BYTE *, DWORD, DWORD *, HANDLE, short, LPVOID);
说明:
	这个回调函数在音频播放时使用。
	在播放完已有的音频数据,需要新的音频数据填充时回调。
	BYTE *			将新的音频数据拷贝到这里
	DWORD			需要拷贝的数据的长度
	DWORD *			实际拷贝的数据的长度(如果没有新的数据,请将该项赋值为0返回)
	HANDLE			播放设备句柄,由TK_CreateOut返回
	short			播放设备的混音通道
	LPVOID			用户数据指针
使用:
	请参照如下定义:
	BOOL CALLBACK ReadDataCallback( BYTE * pData,DWORD nDataLen, DWORD * pnDataReaded, HANDLE hDevice, short nChannel, VOID* pContext );

2、typedef BOOL (CALLBACK *LPCaptureDataCallback)(BYTE *, UINT, HANDLE, LPVOID);
说明:
	这个回调函数在音频捕获时使用。
	在捕获到一定量的数据,通过这个回调函数交给用户。
	BYTE *			数据地址
	UINT			数据长度
	HANDLE			采集设备句柄,由TK_CreateIn返回
	LPVOID			用户数据指针
使用:
	请参照如下定义:
	BOOL CALLBACK CaptureDataCallback( BYTE * pData,UINT nDataLen,HANDLE hDevice,VOID* pContext );

三、函数列表
1、公用函数
BOOL TK_Destroy();
函数说明:删除函数。
参数列表:无
注意事项:将同时卸载采集和播放设备

BOOL __stdcall TK_GetFIleWaveFormatex(LPCTSTR pFile, WAVEFORMATEX * pwfx);
函数说明:从WAVE文件中取得格式信息。
参数列表:
	LPCTSTR pFile						(IN)WAVE全路径文件名
	WAVEFORMATEX * pwfx					(OUT)WAVE格式
注意事项:无

2、关于音频捕获的函数
BOOL TK_EnumCaptureSoundDevice(SOUND_DEVICE * pDeviceList,int & nDeviceCount);
函数说明:
	获得捕获设备列表函数。
参数列表:
	SOUND_DEVICE * pDeviceList			(IN)设备列表
	int & nDeviceCount					(IN/OUT)设备数量
										传入时需要赋值分配的设备数组长度
										传出时值是已赋值设备个数
注意事项:
	可以在TK_CreateIn前调用。

HANDLE __stdcall TK_CreateIn(HWND hMsgWnd,SOUND_DEVICE * pInputDevice);
函数说明:
	初始化音频采集设备
参数列表:
	HWND hMsgWnd						(IN)接收消息的窗口句柄
	SOUND_DEVICE * pInputDevice			(IN)指定采集设备,赋NULL则为缺省采集设备
返回值:打开的采集设备句柄
注意事项:无

BOOL __stdcall TK_EnumInputSource(HANDLE hDevice, SOUND_INPUT_SOURCE * pSourceList,int & nSourceCount);
函数说明:
	获得捕获音频输入源列表。
参数列表:
	HANDLE hDevice						(IN)指定采集设备句柄
	SOUND_INPUT_SOURCE * pSourceList	(OUT)输入源列表
	int & nSourceCount					(IN/OUT)输入源数量
										传入时需要赋值分配的输入源数组长度
										传出时值是已赋值输入源个数
注意事项:无

BOOL __stdcall TK_EnumInputFormats(HANDLE hDevice, SOUND_FORMAT * pFormatList,int & nFormatCount);
函数说明:
	获得捕获设备支持的格式列表。
参数列表:
	HANDLE hDevice						(IN)指定采集设备句柄
	SOUND_FORMAT * pFormatList			(IN)格式列表
	int & nFormatCount					(IN/OUT)格式数量
										传入时需要赋值分配的格式数组长度
										传出时值是已赋值格式个数
注意事项:无

BOOL __stdcall TK_SetInputSource(HANDLE hDevice, SOUND_INPUT_SOURCE & source);
函数说明:
	设置捕获音频输入源。
参数列表:
	HANDLE hDevice						(IN)指定采集设备句柄
	SOUND_INPUT_SOURCE & source			(IN)要设置的输入源
注意事项:必须设置音频输入源,否则无法设定音量。

BOOL __stdcall TK_InputGetMinMaxVolume(HANDLE hDevice, LONG * pMinVol, LONG * pMaxVol);
函数说明:
	得到捕获音量的范围。
参数列表:
	HANDLE hDevice						(IN)指定采集设备句柄
	LONG * pMinVol						(OUT)音频范围的最小值
	LONG * pMaxVol						(OUT)音频范围的最大值
注意事项:无

BOOL __stdcall TK_InputGetVolume(HANDLE hDevice, LONG* pVol);
函数说明:
	得到当前捕获音频。
参数列表:
	HANDLE hDevice						(IN)指定采集设备句柄
	LONG* pVol							(OUT)当前音量
注意事项:无

BOOL __stdcall TK_InputSetVolume(HANDLE hDevice, LONG vol);
函数说明:
	设置当前捕获音量。
参数列表:
	HANDLE hDevice						(IN)指定采集设备句柄
	LONG vol							(IN)要设置的音量
注意事项:无

BOOL __stdcall TK_StartCaputre(HANDLE hDevice, WAVEFORMATEX * pwfx, UINT nDataMsg, LPCaptureDataCallback fb, VOID* pContext, LPCTSTR pstrFile);
函数说明:
	开始捕获音频数据。
参数列表:
	HANDLE hDevice						(IN)指定采集设备句柄
	WAVEFORMATEX * pwfx					(IN)捕获音频的格式
	UINT nDataMsg						(IN)有数据消息:将发送这个消息到hMsgWnd
	LPCaptureDataCallback fb			(IN)有数据时回调
	VOID* pContext						(IN)用户数据指针
	LPCTSTR pstrFile					(IN)需要直接保存文件时的文件名
											不保存则赋NULL
注意事项:无

BOOL __stdcall TK_StopCaputre(HANDLE hDevice);
函数说明:
	停止捕获音频数据。
参数列表:
	HANDLE hDevice						(IN)指定采集设备句柄
注意事项:无

3、关于音频播放的函数
BOOL TK_EnumSoundDevice(SOUND_DEVICE * pDeviceList,int & nDeviceCount);
函数说明:
	获得回放音频设备。
参数列表:
	SOUND_DEVICE * pDeviceList			(OUT)设备列表
	int & nDeviceCount					(IN/OUT)设备数量
										传入时需要赋值分配的设备数组长度
										传出时值是已赋值设备个数
注意事项:
	可以在TK_CreateOut前调用

HANDLE __stdcall TK_CreateOut(HWND hMsgWnd,SOUND_DEVICE * pOutputDevice);
函数说明:
	初始化音频播放设备
参数列表:
	HWND hMsgWnd						(IN)接收消息的窗口句柄
	SOUND_DEVICE * pInputDevice			(IN)指定播放设备,赋NULL则为缺省播放设备
返回值:打开的播放设备句柄
注意事项:无

BOOL __stdcall TK_EnumOutputFormats(HANDLE hDevice, SOUND_FORMAT * pFormatList,int & nFormatCount);
函数说明:
	获得回放设备支持的音频格式。
参数列表:
	HANDLE hDevice						(IN)指定播放设备句柄
	SOUND_FORMAT * pFormatList			(IN)格式列表
	int & nFormatCount					(IN/OUT)格式数量
										传入时需要赋值分配的格式数组长度
										传出时值是已赋值格式个数
注意事项:无

BOOL __stdcall TK_StartPlay(HANDLE hDevice, short nChannel,WAVEFORMATEX * pwfx,LPReadDataCallback fb,VOID * pContext,LPCTSTR pstrFile);
函数说明:
	开始回放。
参数列表:
	HANDLE hDevice						(IN)指定播放设备句柄
	short nChannel						(IN)指定播放的混音通道,最大为16
	SOUND_FORMAT &format				(IN)音频回放格式
	LPReadDataCallback fb				(IN)需要数据时回调
	VOID * pContext						(IN)用户数据指针
	LPCTSTR pstrFile					(IN)需要将回放的数据存盘时的文件名
											不保存则赋NULL
注意事项:无

BOOL __stdcall TK_StopPlay(HANDLE hDevice, short nChannel);
函数说明:
	停止回放
参数列表:
	HANDLE hDevice						(IN)指定播放设备句柄
	short nChannel						(IN)指定播放的混音通道
注意事项:无

BOOL __stdcall TK_OutputGetMinMaxVolume(HANDLE hDevice, short nChannel, LONG * pMinVol, LONG * pMaxVol);
函数说明:
	得到播放音量的范围。
参数列表:
	HANDLE hDevice						(IN)指定播放设备句柄
	short nChannel						(IN)指定播放的混音通道
	LONG * pMinVol						(OUT)音频范围的最小值
	LONG * pMaxVol						(OUT)音频范围的最大值
注意事项:如果hDevice为非法的(如0),将控制系统主音量

BOOL __stdcall TK_OutputGetVolume(HANDLE hDevice, short nChannel, LONG* pVol);
函数说明:
	得到当前播放音频。
参数列表:
	HANDLE hDevice						(IN)指定播放设备句柄
	short nChannel						(IN)指定播放的混音通道
	LONG* pVol							(OUT)当前音量
注意事项:如果hDevice为非法的(如0),将控制系统主音量

BOOL __stdcall TK_OutputSetVolume(HANDLE hDevice, short nChannel, LONG vol);
函数说明:
	设置当前播放音量。
参数列表:
	HANDLE hDevice						(IN)指定播放设备句柄
	short nChannel						(IN)指定播放的混音通道
	LONG vol							(IN)要设置的音量
注意事项:如果hDevice为非法的(如0),将控制系统主音量

/////////////////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -