• 大小: 1.66MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-10-03
  • 语言: 其他
  • 标签: 语音聊天  

资源简介

基于windows API函数用QT做界面的点对点语音聊天程序

资源截图

代码片段和文件信息

#include “csound.h“
#include
//#pragma comment(lib“WINMM.LIB“)

CSound::CSound()
{

}

CSound::~CSound()
{
    waveInClose(m_hWaveIn); //关闭录音设备
    waveOutClose(m_hWaveOut); //关闭录音设备
}

void CSound::Init(MainWindow *dlg)
{


    m_dlg=dlg;
    if(waveInGetNumDevs()==0)
    {
     qDebug(“cannot2“);
    }
    if(waveOutGetNumDevs()==0)
    {

    }
    m_soundFormat.wFormatTag=WAVE_FORMAT_PCM;
    m_soundFormat.nChannels=1;
    m_soundFormat.nSamplesPerSec=8000;
    m_soundFormat.nAvgBytesPerSec=16000;
    m_soundFormat.nBlockAlign=2;
    m_soundFormat.cbSize=0;
    m_soundFormat.wBitsPerSample=16;     //指定录音格式

    int retCode=waveInOpen(&m_hWaveInWAVE_MAPPER &m_soundFormat (DWORD)m_dlg->winId()0LCALLBACK_WINDOW); //打开录音设备



    if(retCode!= MMSYSERR_NOERROR)
    {
        qDebug(“cannot“);
        return;
    }
    retCode=waveOutOpen(&m_hWaveOutWAVE_MAPPER &m_soundFormat (DWORD)m_dlg->winId()0LCALLBACK_WINDOW); //打开放音设备
    if(retCode!= MMSYSERR_NOERROR)
    {
        qDebug(“cannot2“);
        return;
    }
    //in
    m_pWaveHdrIn[0].lpData=m_cBufferIn;
    m_pWaveHdrIn[0].dwBufferLength=MAX_BUFFER_SIZE;
    m_pWaveHdrIn[0].dwBytesRecorded=0;
    m_pWaveHdrIn[0].dwFlags=0;

    retCode=waveInPrepareHeader(m_hWaveIn&m_pWaveHdrIn[0]sizeof(WAVEHDR)); //准备内存块录音
    if(retCode!= MMSYSERR_NOERROR)
    {

        return;
    }

    retCode=waveInAddBuffer(m_hWaveIn&m_pWaveHdrIn[0]sizeof(WAVEHDR)); //增加内存块
    if(retCode!= MMSYSERR_NOERROR)
    {

        return;
    }

    //out
    m_pWaveHdrOut[0].lpData=m_cBufferOut;
    m_pWaveHdrOut[0].dwBufferLength=MAX_BUFFER_SIZE;
    m_pWaveHdrOut[0].dwBytesRecorded=0;
    m_pWaveHdrOut[0].dwFlags=0;

    waveOutPrepareHeader(m_hWaveOut&m_pWaveHdrOut[0]sizeof(WAVEHDR)); //准备内存块放音
    waveOutWrite(m_hWaveOut&m_pWaveHdrOut[0]sizeof(WAVEHDR));
}

void CSound::Record()
{
    waveInStart(m_hWaveIn);//开始录音
}

void CSound::Play()
{
    memcpy(m_cBufferOutm_cBufferInMAX_BUFFER_SIZE);
}

void CSound::StopRecord()
{
    waveInStop(m_hWaveIn); //停止录音
    waveInReset(m_hWaveIn); //清空内存块
}

void CSound::FreeRecordBuffer()
{
    int retCode;
    retCode =waveInUnprepareHeader(m_hWaveIn&m_pWaveHdrIn[0]sizeof(WAVEHDR));
    if  (retCode!= MMSYSERR_NOERROR)
    {

        return;
    } //in

    m_pWaveHdrIn[0].lpData=m_cBufferIn;
    m_pWaveHdrIn[0].dwBufferLength=MAX_BUFFER_SIZE;
    m_pWaveHdrIn[0].dwBytesRecorded=0;
    m_pWaveHdrIn[0].dwFlags=0;

    retCode=waveInPrepareHeader(m_hWaveIn&m_pWaveHdrIn[0]sizeof(WAVEHDR)); //准备内存块录音
    if(retCode!= MMSYSERR_NOERROR)
    {

        return;
    }

    retCode=waveInAddBuffer(m_hWaveIn&m_pWaveHdrIn[0]sizeof(WAVEHDR)); //增加内存块
    if(retCode!= MMSYSERR_NOERROR)
    {

        return;
    }
}

void CSound::FreePlayBuffer()
{
 //   static bool once=true;
    int result;

    result=waveOutUnprepareHeader(

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2013-04-13 22:39  sheji2\
     文件        3962  2013-03-23 17:17  sheji2\csound.cpp
     文件         836  2013-03-19 20:24  sheji2\csound.h
     目录           0  2013-04-13 20:33  sheji2\debug\
     文件      232842  2013-04-13 18:10  sheji2\debug\csound.o
     文件      207095  2012-07-19 10:19  sheji2\debug\frame.o
     文件      231489  2013-04-13 18:09  sheji2\debug\main.o
     文件      472315  2013-04-13 20:33  sheji2\debug\mainwindow.o
     文件        2344  2012-07-19 10:19  sheji2\debug\moc_frame.cpp
     文件      132805  2012-07-19 10:20  sheji2\debug\moc_frame.o
     文件        2965  2013-04-13 18:10  sheji2\debug\moc_mainwindow.cpp
     文件      241750  2013-04-13 18:10  sheji2\debug\moc_mainwindow.o
     文件      184422  2013-03-19 20:24  sheji2\debug\mythread.o
     文件      590286  2013-04-13 18:01  sheji2\debug\qrc_ziyuan.cpp
     文件      123476  2013-04-13 18:01  sheji2\debug\qrc_ziyuan.o
     文件     1565706  2013-04-13 20:33  sheji2\debug\sheji.exe
     文件         417  2013-03-11 22:19  sheji2\main.cpp
     文件        7637  2013-04-13 22:32  sheji2\mainwindow.cpp
     文件        1163  2013-04-13 18:09  sheji2\mainwindow.h
     文件       11245  2013-04-13 18:01  sheji2\mainwindow.ui
     文件        5718  2013-04-13 20:34  sheji2\Makefile
     文件        6365  2013-04-13 20:34  sheji2\Makefile.Debug
     文件        6467  2013-04-13 20:34  sheji2\Makefile.Release
     目录           0  2013-03-11 21:50  sheji2\pic\
     文件        2888  2012-08-20 17:34  sheji2\pic\addline_highlight.png
     文件        2850  2012-08-20 17:34  sheji2\pic\addline_normal.png
     文件         926  2012-08-05 11:58  sheji2\pic\close1.png
     文件         824  2012-08-05 12:05  sheji2\pic\close2.PNG
     文件        3058  2012-08-20 17:34  sheji2\pic\handle_highlight.png
     文件        3029  2012-08-20 17:34  sheji2\pic\handle_normal.png
     文件         851  2012-08-06 14:54  sheji2\pic\kuang.png
............此处省略23个文件信息

评论

共有 条评论