Obsługa mikrofonu w C# (NAudio).

Obsługa mikrofonu w C# (NAudio).
Raniel
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad 11 lat
  • Postów:7
0

Od jakiegoś czasu próbuję nauczyć się obsługi mikrofonu w c# za pomocą NAudio. Chodzi o nagrywanie dzwięku z mikrofonu, i odtworzenie, ze strumienia bez zapisywania do pliku. Oto moje najnowsze osiągnięcie:

Kopiuj
 
public class SoundMessage
    {
        private BufferedWaveProvider waveProvider = null;
        private WaveIn m_WaveIn;
        WaveOut waveOut = new WaveOut();

        public void StartRecording()
        {
            m_WaveIn = new WaveIn();
            m_WaveIn.DeviceNumber = 0;
            m_WaveIn.BufferMilliseconds = 50;
            m_WaveIn.DataAvailable += new EventHandler<WaveInEventArgs>(WaveIn_DataAvailable);
            m_WaveIn.WaveFormat = new NAudio.Wave.WaveFormat(16000, 1);
            waveProvider = new BufferedWaveProvider(m_WaveIn.WaveFormat);
            m_WaveIn.StartRecording();
        }

        public void StopRecording()
        {
            m_WaveIn.StopRecording();
           // m_WaveIn.Dispose();
           // m_WaveIn = null;
        }

        public void Play()
        {
            waveOut.Init(waveProvider);
            waveOut.Play();
        }

        public void WaveIn_DataAvailable(object sender, WaveInEventArgs e)
        {
            byte[] buffer = e.Buffer;
            waveProvider.AddSamples(buffer, 0, buffer.Length);
        }
         
        public SoundMessage()
        {

        }
    }

Gdy wywołam metodę nagrywania po jakichś 5 sekundach program wywala "Buffer full". Z jakiegoś powodu bufor nie dodaje kolejnych fragmentów. Poradźcie coś. Ewentualnie jakąś naprawdę dobrą bibliotekę darmową do zastosowań komercyjnych.


Kto wcześnie wstaje, ten żałuje, że późno poszedł spać.
MasterBLB
Chyba deczko pomyliłeś działy Bracie ;) @Shalom @madmike użyjcie supermocy adminów!
Zellus
  • Rejestracja:prawie 13 lat
  • Ostatnio:około 4 lata
  • Lokalizacja:Wrocław
  • Postów:474
0

Wiem że jest na to gotowa prosta biblioteka w coding4Fun. Tutaj był kurs na którym jest to całkiem wytłumaczone : http://channel9.msdn.com/Series/Windows-Phone-8-Development-for-Absolute-Beginners/Part-20-Recording-an-Audio-Wav-File . Co prawda opisane na przykładzie Windows Phone, ale jeśli chodzi o sam proces nic nie powinno się zmienić. Tam chyba istniała też taka możliwość żeby odtworzyć ten plik bez zapisywania ( a może on zapisał to pliku tymczasowego, nie jestem pewnien, ale moim zdaniem nie powinieneś się tym przejmować)

Poza tym jak ktoś już wspomniał zły dział.

edytowany 2x, ostatnio: Zellus
Raniel
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad 11 lat
  • Postów:7
0

Nie wiem gdzie miałem oczy ładując to tutaj. Proszę admina o przeniesienie tematu.


Kto wcześnie wstaje, ten żałuje, że późno poszedł spać.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.