如何从默认音频设备录制和播放音频

问题描述:

我似乎无法从默认音频设备录制音频,并将其播放到另一个音频设备上。 我不想录制麦克风,但音频设备..如何从默认音频设备录制和播放音频

当我演电影,我可以听到声音,通过我的耳机,我想那声音复制到任何音频设备,我选择..

如果您有任何建议,这不必须与NAudio ..

据我所知,NAudio不能这样做..

这是我用在这个时候任务的代码,但是只需要输入从我的麦克风:代码片断与n音讯..

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 { } 
} 
+0

有了这些信息,我认为没有人能够帮到你。请详细解释并在需要时添加一些代码/更多上下文。 – 2016-10-10 18:31:27

+0

我要求的是建议,而不是实际的代码,除非它是一个代码片段。 – ArchAngel

+0

也许你首先需要启用这个所需的录音设备。从大胆看这个页面例如:http://manual.audacityteam.org/man/tutorial_recording_computer_playback_on_windows.html –

您可以捕获音频发送到使用WasapiLoopbackCapture的设备。然后,您可以将其转换为BufferedWaveProvider并用它来馈送另一个输出设备。虽然会引入一些延迟,所以不要指望两个设备同步。

+0

听起来不错,但WasapiLoopbackCapture,它是否适用于我的音频设备而不是我的麦克风?代码片段会很好.. – ArchAngel

+0

是WasapiLoopbackCapture将记录声卡的输出。您可以在NAudio WPF演示项目中找到一些示例代码 –

+0

您可以给我一个链接吗? – ArchAngel