资源简介
VC 可支持声卡输入输出声音同时录音的程序 找了好久 可以选择声道 可以设定混音录音还是只录制声卡输入声音。 可支持wav和mp3两种方式保存 非常好的程序
代码片段和文件信息
// AudioPlayRec.cpp : implementation file
// Download by http://www.codefans.net
#include “stdafx.h“
#include “hwaudiorec.h“
#include “AudioPlayRec.h“
#include
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
BOOL CALLBACK InputLineProc ( UINT uLineIndex MIXERLINE* pLineInfo DWORD dwUserValue )
{
CAudioPlayRec *pAudioPlayRec = reinterpret_cast(dwUserValue);
ASSERT ( pAudioPlayRec );
CString csShortName = pLineInfo->szShortName;
csShortName.MakeLower ();
if ( csShortName.Find ( “microphone“ ) >= 0 || pLineInfo->dwComponentType == MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE )
{
pAudioPlayRec->m_uLineIndex_Microphone = pLineInfo->dwSource;
}
else if ( csShortName.Find ( “line in“ ) >= 0 || pLineInfo->dwComponentType == MIXERLINE_COMPONENTTYPE_SRC_LINE )
{
pAudioPlayRec->m_uLineIndex_LineIn = pLineInfo->dwSource;
}
TRACE ( “csShortName = %s dwComponentType = %d\n“ csShortName pLineInfo->dwComponentType );
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// CAudioPlayRec
CAudioPlayRec::CAudioPlayRec ()
: m_eStatus ( ENUM_STATUS_INVALID )
m_hRecord ( NULL )
m_hPlay ( NULL )
m_dwQueuBufferSize ( 1024 )
m_nDataQueueNum ( 0 )
m_bRecording ( FALSE )
m_eRecChannel ( ENUM_REC_CHANNEL_MONO )
m_szAryInData ( NULL )
m_szLeftInData ( NULL )
m_szRightInData ( NULL )
m_pAryHdr ( NULL )
m_bAlwaysDrawTowChannel ( FALSE )
m_uLineIndex_Microphone ( 0 )
m_uLineIndex_LineIn ( 0 )
{
memset ( &m_Format 0 sizeof(WAVEFORMATEX) );
ZeroMemory(&m_MMCKInfoParentsizeof(m_MMCKInfoParent));
ZeroMemory(&m_MMCKInfoChildsizeof(m_MMCKInfoChild));
memset ( m_hWaveFile 0 sizeof(m_hWaveFile) );
ResetMp3EncodeVar ();
m_clrBK = RGB ( 000 );
SetBkColor ( m_clrBK );
}
CAudioPlayRec::~CAudioPlayRec()
{
StopAndFreeAll ();
if ( m_brsBkGnd.GetSafeHandle() )
{
m_brsBkGnd.DeleteTempMap();
m_brsBkGnd.Deleteobject();
}
if ( m_PenB.GetSafeHandle() )
m_PenB.Deleteobject();
if ( m_PenG.GetSafeHandle() )
m_PenG.Deleteobject();
if ( m_PenPartLine.GetSafeHandle() )
m_PenPartLine.Deleteobject();
if ( m_fntChannelText.GetSafeHandle() )
m_fntChannelText.Deleteobject();
if ( m_fntDeviceNameText.GetSafeHandle() )
m_fntDeviceNameText.Deleteobject();
}
BEGIN_MESSAGE_MAP(CAudioPlayRec CWnd)
//{{AFX_MSG_MAP(CAudioPlayRec)
ON_WM_ERASEBKGND()
ON_WM_SETCURSOR()
ON_WM_TIMER()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CAudioPlayRec message handlers
void CAudioPlayRec::SetWaveFormat ( ENUM_REC_CHANNEL eRecChannel DWORD nSamplesPerSec WORD wBitsPerSample )
{
m_eRecChannel = eRecChannel;
memset ( &m_Format 0 sizeof(WAVEFORMATEX) );
m_Format.cbSize = 0;
m_Format.wFormatTag = WAVE_FORMAT_PCM;
m_Format.wBitsPerSample = wBitsPe
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
----------- --------- ---------- ----- ----
369615 23
相关资源
- vcf解析工具--安卓通讯录备份文件解析
- VC树形控件 自己封装的树形控件拓展
- vc多个封装类方便编程
- JPEG图像压缩VC代码实现
- FPGA应用WM8731语音芯片的录音功能开发
- spring+mybatis+springmvc+ajax简单聊天室
- VC中GDI方法在Picture控件中显示PNG、b
- springmvc4+spring4+hibernate5.1.3+二级缓存
- 间接平差编程
- 介绍uC/OS-II移植到VC的pdf
- 天津科技大学校园导游
- 基于PSO移动机器人路径规划算法
- VC实现teechart时间轴自右向左推移
- vc网卡流量监控网速监控(GetIfTable)
- springMVC配置连接数据库实现登录功能
- vc需要的psapi.h和psapi.lib
- 基于TMS320VC5402的语音信号采集系统设
- VC的MSCOMM控件
- BMP图像信息隐藏vc实现
- 高保真声卡驱动的安装方法
- 自己分装的一个winhttp类
- devcon.exe(32位,64位)驱动安装卸载工
- 小型公司工资管理系统设计
- VC中利用多线程技术实现线程之间的通
- 基于MVC的网上书店
- 软件的层架构设计详解
- SpringSpringMVCmybatis电商项目实战教程
- VC编程实现使用WinInet通过HTTP协议读取
- 整车控制器和电机控制器通讯协议
- maven+spring4+springmvc+redis实现分页
评论
共有 条评论