線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2864
推到 Plurk!
推到 Facebook!

如何直接將音效卡(喇叭)發生的聲音錄下

答題得分者是:RedSnow
GGL
資深會員


發表:104
回覆:600
積分:335
註冊:2006-11-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-09-19 07:43:17 IP:61.70.xxx.xxx 未訂閱
請問除了將耳機孔跟麥克風孔接起來的方法外,如何直接將音效卡(喇叭)發生的聲音錄下?謝謝    記得好幾個月前有在站上看到如何實做,但我找不到那篇文章,不知道是不是我記錯了
RedSnow
版主


發表:79
回覆:1322
積分:845
註冊:2003-12-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-09-19 13:05:38 IP:59.115.xxx.xxx 未訂閱
GGL 您好:    看看下列這一篇是不是您早先看過的那一篇?(Delphi 的討論與範例) 直接錄下電腦音效卡所發出的聲音!!!! http://delphi.ktop.com.tw/topic.php?topic_id=58252 該篇討論中 linmon416 說是這程式真的可以錄,但是數天前另一位網友詢問類似問題,我也提供了相同的連結供發問者參考,但是發問者回應說該篇是錄麥克風聲音的....,我都不知道誰說的才是正確的了? 7 天天敲鍵盤 v 時時按滑鼠 8 發表人 - RedSnow 於 2005/09/19 13:11:06
GGL
資深會員


發表:104
回覆:600
積分:335
註冊:2006-11-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-09-20 12:15:24 IP:140.118.xxx.xxx 未訂閱
這一篇我有看過,但是是delphi的,我不知道該怎麼改成BCB...像是TWavHeader我不知道該怎麼改成BCB可以用的,麻煩指導一下吧,謝謝
RedSnow
版主


發表:79
回覆:1322
積分:845
註冊:2003-12-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-09-20 16:59:12 IP:59.115.xxx.xxx 未訂閱
GGL 您好:    我對 Delphi 也不是很瞭解,剛才試著將那支程式轉為 BCB 的敘述,雖然測試過的結果是可以執行,但是我並不確定是不是有什麼地方轉得不正確?您參考一下吧:
// 於 .h 檔案內:
#include     typedef struct{
    long    rId;
    long    rLen;
    long    wId;
    long    fId;
    long    fLen;
    WORD    wFormatTag;
    WORD    nChannels;
    long    nSamplesPerSec;
    long    nAvgBytesPerSec;
    WORD    nBlockAlign;
    WORD    wBitsPerSample;
    long    dId;
    long    wSampleLength;
} TWavHeader;    __published:    // IDE-managed Components
    void __fastcall BtStartClick(TObject *Sender);
    void __fastcall BtStopClick(TObject *Sender);    private:    // User declarations
    void __fastcall CreateWav(WORD channels, WORD resolution, long rate, String fn);        // 於 .cpp 檔案內:
void __fastcall TForm1::CreateWav(WORD channels, WORD resolution, long rate, String fn)
{
    TFileStream *wf = new TFileStream(fn, fmCreate);
    TWavHeader wh;
    wh.rId = 0x46464952;
    wh.rLen = 36;
    wh.wId = 0x45564157;
    wh.fId = 0x20746d66;
    wh.fLen = 16;
    wh.wFormatTag = 1;
    wh.nChannels = channels;
    wh.nSamplesPerSec = rate;
    wh.nAvgBytesPerSec = channels*rate*(resolution / 8);
    wh.nBlockAlign = channels*(resolution / 8);
    wh.wBitsPerSample = resolution;
    wh.dId = 0x61746164;
    wh.wSampleLength = 0;        int cnt = sizeof(TWavHeader);
    wf->WriteBuffer(&wh, cnt);
    delete wf;
}
//---------------------------------------------------------------------------    void __fastcall TForm1::BtStartClick(TObject *Sender)
{
    try {
        CreateWav(1, 8, 11025, (ExtractFilePath(Application->ExeName)  "Temp.wav"));
        MediaPlayer1->DeviceType = dtAutoSelect;
        MediaPlayer1->FileName = (ExtractFilePath(Application->ExeName)  "Temp.wav");
        MediaPlayer1->Open();
        MediaPlayer1->StartRecording();
        BtStart->Enabled = false;
        BtStop->Enabled = true;
    } __except(true) {
        BtStart->Enabled = true;
        BtStop->Enabled = false;
        Application->MessageBox("媒体設備初始化失敗!", "錯誤", MB_ICONERROR MB_OK);
    }
}
//---------------------------------------------------------------------------    void __fastcall TForm1::BtStopClick(TObject *Sender)
{
    try {
        MediaPlayer1->Stop();
        MediaPlayer1->Save();
        MediaPlayer1->Close();
        Application->MessageBox("聲音錄製完畢!", "成功", MB_ICONINFORMATION MB_OK);
        BtStart->Enabled = true;
        BtStop->Enabled = false;
    } __except(true) {
        Application->MessageBox("保存聲音文件出錯!", "錯誤", MB_ICONERROR MB_OK);
        BtStart->Enabled = true;
        BtStop->Enabled = false;
    }
}
7 天天敲鍵盤 v 時時按滑鼠 8
GGL
資深會員


發表:104
回覆:600
積分:335
註冊:2006-11-05

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-09-21 03:37:26 IP:61.70.xxx.xxx 未訂閱
謝謝,可以錄音了,只是我有一個疑問.... 如果我的系統音量控制的錄音選項選擇的是麥克風,他就是透過麥克風錄音,如果是選擇立體聲混音,他就會錄下音效卡發出的聲音。那是一般的麥克風錄音程式將錄音裝置改成立體聲混音就可以達到我的要求了嗎還有,可以透過程式自動將錄音裝置改成立體聲混音嗎?謝謝
RedSnow
版主


發表:79
回覆:1322
積分:845
註冊:2003-12-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-09-21 12:16:41 IP:59.115.xxx.xxx 未訂閱
GGL 您好:
引言:那是一般的麥克風錄音程式將錄音裝置改成立體聲混音就可以達到我的要求了嗎
應該是的,至少在視窗系統所附著的 "錄音機" 程式是可以的,或許所有的錄音程式都應該適用,但是我無法肯定的答覆您,因為我不能排除某些程式可能會使用一些特殊的寫法而導致不同結果。
引言:還有,可以透過程式自動將錄音裝置改成立體聲混音嗎?
理論上應該是可以的,您不是透過視窗系統的音量調整程式來設定的嗎?那就應該可以透過程式來做相關設定,但是我手邊並無相關資訊可直接提供給您參考,真的很抱歉....。 <> <>> 天天敲鍵盤 <>> 時時按滑鼠 <>>
jeffreck
高階會員


發表:247
回覆:340
積分:197
註冊:2003-01-23

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-09-21 13:44:47 IP:61.218.xxx.xxx 未訂閱
我的作法 是直接修改 錄音控制之設定 Mono Mix,就可以錄音了    我想因該也可以用 WINAPI 去改     
系統時間:2024-11-25 17:38:14
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!