none
请问各位,下面的代码出现什么问题导致不能正常录音...? RRS feed

  • 常规讨论

  • #include<iostream.h>
    #include<windows.h>
    #include "mmsystem.h"

    void main()
    {
    //打开设备信息结构体
    MCI_OPEN_PARMS open;
    open.lpstrDeviceType="waveaudio";//参数设置
    open.lpstrElementName="";

    //打开录音设备
    mciSendCommand(0,MCI_OPEN,MCI_OPEN_TYPE,(DWORD)( LPVOID)&open);

    UINT m_device_id=open.wDeviceID;

    MCI_WAVE_SET_PARMS set;//录音格式参数设置
    set.wFormatTag = WAVE_FORMAT_PCM;
    set.wBitsPerSample = 16;
    set.nChannels = 2;
    set.nSamplesPerSec = 44100;
    set.nAvgBytesPerSec = ((set.wBitsPerSample)/8) * set.nChannels * set.nSamplesPerSec;
    set.nBlockAlign = ((set.wBitsPerSample)/8) * set.nChannels;

    mciSendCommand( m_device_id, MCI_SET, MCI_WAIT | MCI_WAVE_SET_FORMATTAG | MCI_WAVE_SET_BITSPERSAMPLE |
                                       MCI_WAVE_SET_CHANNELS | MCI_WAVE_SET_SAMPLESPERSEC | MCI_WAVE_SET_AVGBYTESPERSEC |
                                       MCI_WAVE_SET_BLOCKALIGN,
                                       (DWORD)(LPVOID)&set);
    cout<<"录音前"<<endl;
    //录音信息结构体
    MCI_RECORD_PARMS record;
    record.dwFrom=0;
    record.dwTo=3000;
    mciSendCommand(m_device_id,MCI_RECORD,MCI_FROM | MCI_TO,(DWORD)(LPVOID)&record);
    cout<<"录音后"<<endl;

    mciSendCommand(m_device_id,MCI_STOP,0,NULL);

    MCI_SAVE_PARMS saveparms;
    saveparms.lpfilename="c:\\bbc.wav";
    mciSendCommand(m_device_id,MCI_SAVE,MCI_SAVE_FILE|MCI_WAIT,(DWORD)(LPVOID)&saveparms);
    cout<<"程序结尾"<<endl;

    }

    2012年8月18日 9:42

全部回复

  • 把你报的错误贴出来,好修正。

    Please not forget mark your answer, and unmark your disagreed point.

    2012年8月20日 10:51
  • 你好,

    欢迎来到这里。

    由于您的问题可能没有唯一的答案,所以我建议您吧帖子改为常规讨论。

    感谢您的理解。

    此致


    Elegentin Xie [MSFT]
    MSDN Community Support | Feedback to us

    2012年9月11日 7:55
    版主