Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2017, 11:55   #1
vladiksan
 
Регистрация: 17.05.2017
Сообщений: 4
По умолчанию Запись звука с Динамиков

Необходимо сделать программу которая записывает звуки с динамиков и сохраняет в его в виде файла.
Помогите пожалуйста уже весь интернет перерыл нашел информацию только о записи с микрофона.
vladiksan вне форума Ответить с цитированием
Старый 17.05.2017, 12:16   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

До Висты/7 надо что-то типа виртуального кабеля использовать http://software.muzychenko.net/eng/vac.htm

В более-менее новых:
https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx
https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx

Для .Net можно взять https://github.com/filoe/cscore
Код:
wave = new WasapiLoopbackCapture();
wave.DataAvailable += InputBufferToFileCallback;    
wave.StartRecording();
...
public void InputBufferToFileCallback(object sender, WaveInEventArgs e)
{
  // e.Buffer
  // e.BytesRecorded
}
p51x вне форума Ответить с цитированием
Старый 17.05.2017, 12:29   #3
vladiksan
 
Регистрация: 17.05.2017
Сообщений: 4
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
До Висты/7 надо что-то типа виртуального кабеля использовать http://software.muzychenko.net/eng/vac.htm

В более-менее новых:
https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx
https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx

Для .Net можно взять https://github.com/filoe/cscore
Код:
wave = new WasapiLoopbackCapture();
wave.DataAvailable += InputBufferToFileCallback;    
wave.StartRecording();
...
public void InputBufferToFileCallback(object sender, WaveInEventArgs e)
{
  // e.Buffer
  // e.BytesRecorded
}
Тут дело в том что я работаю на XP. Пытался манипулировать с Virtual Audio Cable но у меня всё равно ничего толкового не вышло. Он всё равно записывает только микрофон. вот была попытка через NAudio
Код:
WaveIn waveIn;
        WaveFileWriter writer;
        string outputFilename = "запись.wav";

        public Form2()
        {
            InitializeComponent();
        }

        void waveIn_DataAvailable(object sender, WaveInEventArgs e)
        {
            if (this.InvokeRequired)
            {
                this.BeginInvoke(new EventHandler<WaveInEventArgs>(waveIn_DataAvailable), sender, e);
            }
            else
            {
                writer.WriteData(e.Buffer, 0, e.BytesRecorded);
            }
        }
        void StopRecording()
        {
            MessageBox.Show("StopRecording");
            waveIn.StopRecording();
        }
        private void waveIn_RecordingStopped(object sender, EventArgs e)
        {
            if (this.InvokeRequired)
            {
                this.BeginInvoke(new EventHandler(waveIn_RecordingStopped), sender, e);
            }
            else
            {
                waveIn.Dispose();
                waveIn = null;
                writer.Close();
                writer = null;
            }
        }
Код:
private void button26_Click(object sender, EventArgs e)
        {
             try
        {
            MessageBox.Show("Start Recording");
            waveIn = new WaveIn();
            waveIn.DeviceNumber = 0;
            waveIn.DataAvailable += waveIn_DataAvailable;
            waveIn.RecordingStopped += new EventHandler(waveIn_RecordingStopped);
            waveIn.WaveFormat = new WaveFormat(8000, 1);
            writer = new WaveFileWriter(outputFilename, waveIn.WaveFormat);
            waveIn.StartRecording();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void button27_Click(object sender, EventArgs e)
        {
            if (waveIn != null)
            {
                StopRecording();
            }
        }

Последний раз редактировалось vladiksan; 17.05.2017 в 12:32.
vladiksan вне форума Ответить с цитированием
Старый 17.05.2017, 13:00   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Может документацию прочитать? Вы же пишите всегда с оного и того же устройства
Код:
waveIn.DeviceNumber = 0;
и скорее всего оно микрофон...
p51x вне форума Ответить с цитированием
Старый 17.05.2017, 13:05   #5
vladiksan
 
Регистрация: 17.05.2017
Сообщений: 4
По умолчанию

При смене этого индекса ничего не меняется. Как был микрофон так и есть
vladiksan вне форума Ответить с цитированием
Старый 17.05.2017, 13:13   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Ну вы распечатайте список всех устройств с индексами то... Там в начале скорее всего идут микрофон1, микшер входа, ...
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запись звука TUberwer Мультимедиа в Delphi 25 02.01.2014 23:15
Запись звука на С++ MBelka Помощь студентам 2 06.01.2011 19:38
Запись звука апельсинка Помощь студентам 0 03.06.2009 13:57
Запись звука Zloy_Doomer Мультимедиа в Delphi 0 25.11.2008 10:14