簡體   English   中英

如何從默認音頻設備錄制和播放音頻

[英]How to record and playback audio from default audio device

我似乎無法錄制默認音頻設備中的音頻,而無法在其他音頻設備上播放..我不想錄制麥克風,但不想錄制音頻設備。

播放電影時,我可以通過耳機聽到聲音,我想將該聲音復制到我選擇的任何音頻設備上。

如果您有任何建議,則不必與NAudio一起使用。

據我所知,NAudio無法做到這一點。

這是我目前用於任務的代碼,但僅從我的麥克風輸入:NAudio的代碼片段。

void playSoundCopy(int dv0)
{
    disposeWave0();// stop previous sounds before starting
    var waveOut0 = new WaveOut();
    waveOut0.DeviceNumber = dv0;
    wave0 = waveOut0;

    Defaultwave0 = new WaveIn();
    Defaultwave0.DeviceNumber = (int)GetDefaultDevice(Defaultdevice.FriendlyName);
    var waveinReader0 = new WaveInProvider(Defaultwave0);
    wave0.Init(waveinReader0);

    play0 = false;
    Thread.Sleep(1000);

    play0 = true;
    t0 = new Thread(() => { timeline0(); });
    t0.IsBackground = true;
    t0.Start();

    Defaultwave0.StartRecording();
    wave0.Play();
}

真正的問題實際上是我無法從WaveOut設備錄制,只能從WaveIn。錄制。

工作結果:

void playSoundCopy(int dv0)
{
    disposeWave0();// stop previous sounds before starting
    var waveOut0 = new WaveOut();
    waveOut0.DeviceNumber = dv0;
    wave0 = waveOut0;

    var format0 = Defaultdevice.AudioClient.MixFormat;
    buffer0 = new BufferedWaveProvider(format0);
    wave0.Init(buffer0);

    capture = new WasapiLoopbackCapture(Defaultdevice);
    capture.ShareMode = AudioClientShareMode.Shared;
    capture.DataAvailable += CaptureOnDataAvailable;

    play0 = false;
    Thread.Sleep(1000);

    play0 = true;
    t0 = new Thread(() => { timeline0(); });
    t0.IsBackground = true;
    t0.Start();

    capture.StartRecording();
    wave0.Play();
}
void CaptureOnDataAvailable(object sender, WaveInEventArgs waveInEventArgs)
{
     try
     {
         var itm = new byte[waveInEventArgs.BytesRecorded];
         Array.Copy(waveInEventArgs.Buffer, itm, waveInEventArgs.BytesRecorded);
         buffer0.AddSamples(itm, 0, itm.Length);
     }
     catch { }
}

您可以使用WasapiLoopbackCapture捕獲發送到設備的WasapiLoopbackCapture 然后,您可以將其通過管道傳輸到BufferedWaveProvider並使用它來饋送另一個輸出設備。 但是會引入一些延遲,因此不要期望兩個設備同步。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM