2016-07-07 18 views
6

Tôi cố gắng để gắn thiết bị USB dùng để gọi điện thoại tele có điều khiển âm thanh PnP cho mic và loa. Bây giờ tôi có hai loa và hai mic cho đầu ra đầu vào như thể hiện trong hình dưới đây. <code>Speaker</code>mic. Bây giờ động cơ của tôi là chuyển luồng âm thanh từ mic hệ thống sang micrô usb và từ loa usb sang loa hệ thống.Làm thế nào hệ thống chuyển mic dòng âm thanh cho thiết bị gắn mic dòng âm thanh

tôi đã cố gắng để giải quyết vấn đề này với phần mềm cáp ảo nhưng với điều này tôi cần phải phụ thuộc vào bên thứ ba. Những gì có thể là giải pháp có thể có thể đạt được bằng cách sử dụng C#.

tôi không có kiến ​​thức về vấn đề này, do đó, không biết làm thế nào để bắt đầu. Sau khi googling tôi tìm thấy

  1. CS Core
  2. N Audio

có thể giúp tôi tôi không biết làm thế nào.

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     List<NAudio.Wave.WaveInCapabilities> sources = new List<NAudio.Wave.WaveInCapabilities>(); 

     for (int i = 0; i < NAudio.Wave.WaveIn.DeviceCount; i++) 
     { 
      sources.Add(NAudio.Wave.WaveIn.GetCapabilities(i)); 
     } 

     sourceList.Items.Clear(); 

     foreach (var source in sources) 
     { 
      ListViewItem item = new ListViewItem(source.ProductName); 
      item.SubItems.Add(new ListViewItem.ListViewSubItem(item, source.Channels.ToString())); 
      sourceList.Items.Add(item); 
     } 
    } 

    NAudio.Wave.WaveIn sourceStream,sourceStream1 = null; 
    NAudio.Wave.DirectSoundOut waveOut = null; 

    private void button2_Click(object sender, EventArgs e) 
    { 
     if (sourceList.SelectedItems.Count == 0) return; 

     int deviceNumber = sourceList.SelectedItems[0].Index; 

     sourceStream = new NAudio.Wave.WaveIn(); 
     sourceStream.DeviceNumber = 0; 
     sourceStream.WaveFormat = new NAudio.Wave.WaveFormat(44100, NAudio.Wave.WaveIn.GetCapabilities(deviceNumber).Channels); 



     NAudio.Wave.WaveInProvider waveIn = new NAudio.Wave.WaveInProvider(sourceStream1); 
     sourceStream. 
     waveOut = new NAudio.Wave.DirectSoundOut(); 
     waveOut.Init(waveIn); 

     sourceStream1.StartRecording(); 
     waveOut.Play(); 
    } 

    private void button3_Click(object sender, EventArgs e) 
    { 
     if (waveOut != null) 
     { 
      waveOut.Stop(); 
      waveOut.Dispose(); 
      waveOut = null; 
     } 
     if (sourceStream != null) 
     { 
      sourceStream.StopRecording(); 
      sourceStream.Dispose(); 
      sourceStream = null; 
     } 
    } 

    private void button4_Click(object sender, EventArgs e) 
    { 
     button3_Click(sender, e); 
     this.Close(); 
    } 
} 

Sử dụng mã này tôi có thể gửi âm thanh mic cho loa nhưng làm cách nào tôi có thể thực hiện tác vụ bằng cách sử dụng tính năng này.

+0

Đây không phải là câu trả lời nhưng nó sẽ cung cấp cho bạn một gợi ý http://www.daveamenta.com/2011-05/programmatically-or-command-line-change-the-default-sound-playback-device-in -windows-7/nó trong c + + nhưng bạn có thể biên dịch nó thành DLL hoặc EXE và gọi nó từ mã C#. –

+0

Bạn có thể giải thích thêm, tại sao bạn muốn làm điều đó? Mục tiêu là gì? Với tôi, có vẻ như bạn muốn sử dụng cả hai, micrô hệ thống và micrô usb, cùng một lúc - phải không? Có lẽ bạn có thể cho biết sự cố bạn gặp phải với hai thiết bị, có thể có giải pháp tốt hơn. –

+0

@DanielGilbert usb microphone là cổng duy nhất có thể lấy đầu vào không có micrô vật lý cho đầu vào âm thanh (được kết nối với card âm thanh bên ngoài). Mục tiêu của tôi tôi đang phát triển điện thoại được vận hành bằng cách sử dụng C# bằng cách gửi lệnh đến thiết bị của tôi đang hoạt động hoàn hảo. Nếu tôi gắn tai nghe trực tiếp vào thiết bị của tôi, nó hoạt động hoàn hảo. Nhưng tôi muốn trao đổi âm thanh qua tai nghe kết nối với hệ thống. Vì vậy mà tôi có thể loại bỏ mic và loa jack từ phần cứng bên ngoài của tôi. –

Trả lời

2

Trên thực tế không có cách nào để làm điều này mà không cần viết bất kỳ điều khiển tùy chỉnh. Bạn không thể hiển thị dữ liệu âm thanh cho thiết bị đầu vào. Thiết bị đầu vào có nghĩa là đọc dữ liệu từ đó. Thiết bị đầu ra (loa) có nghĩa là ghi dữ liệu vào.

Có những chương trình như cáp âm thanh ảo, mà đang sử dụng trình điều khiển tùy chỉnh để vượt qua những hạn chế này.

+0

bất kỳ trình điều khiển ảo nguồn mở nào có thể giúp tôi .. –

+0

WinDDK chứa một số mẫu. –

Các vấn đề liên quan