Запись звука с микрофона - C# (234128)

Узнай цену своей работы

Формулировка задачи:

Попытался записать звук с микрофона компиляция ошибок не дает но при запуске виснет. Помогите разобраться.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Microsoft.DirectX;
using Microsoft.DirectX.DirectSound;
using Buffer = Microsoft.DirectX.DirectSound.Buffer;
using System.IO; 

namespace DirectSound_
{
    public partial class Form1 : Form
    {
        Device device;
        Capture capture;
        Buffer buffer;
        BufferDescription bufferDesc;
        CaptureBuffer captureBuffer;
        WaveFormat waveFormat;
        CaptureBufferDescription captureBuffDesc;
        MemoryStream stream;
        byte[] streamBuffer; 
 
        public Form1()
        {
            InitializeComponent();
            
            device = new Device(); // Setup DirectSound 
 
            waveFormat = new WaveFormat();// Load the sound 
            waveFormat.BitsPerSample = 8;
            waveFormat.BlockAlign = 1;
            waveFormat.Channels = 1;
            waveFormat.AverageBytesPerSecond = 20500;
            waveFormat.SamplesPerSecond = 20500;
            waveFormat.FormatTag = WaveFormatTag.Pcm;
 
            bufferDesc = new BufferDescription();
            bufferDesc.Format = waveFormat;
            bufferDesc.BufferBytes = 100000;
            bufferDesc.ControlPositionNotify = true;
            bufferDesc.ControlFrequency = true;
            bufferDesc.ControlPan = true;
            bufferDesc.ControlVolume = true;
 
            buffer = new Buffer(bufferDesc, this.device);
 
            device.SetCooperativeLevel(this, CooperativeLevel.Priority); // Set the cooperative level 
 
            capture = new Capture();
            
            captureBuffDesc = new CaptureBufferDescription();
            captureBuffDesc.BufferBytes = 100000;
            captureBuffDesc.Format = this.waveFormat;
 
            captureBuffer = new CaptureBuffer(captureBuffDesc, capture);
            
            streamBuffer = new byte[100000];

            for (int i = 0; i < 100000; i++)
            {
                
                streamBuffer[i] = 0;
            }
            stream = new MemoryStream(streamBuffer); 
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            this.captureBuffer.Read(0, this.stream, 100000, LockFlag.None);
            buffer.Write(0, this.stream, (int)this.stream.Length, LockFlag.EntireBuffer);
            buffer.Play(0, BufferPlayFlags.Looping); 
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            buffer.Stop(); 
        }
 
        private void button3_Click(object sender, EventArgs e)
        {
            this.captureBuffer.Start(true); 
        }
 
        private void button4_Click(object sender, EventArgs e)
        {
            this.captureBuffer.Stop(); 
        }

    }
}
прикремпил весь проект на вский случай

Решение задачи: «Запись звука с микрофона»

textual
Листинг программы
captureBuffDesc.BufferBytes = 20500 / 20;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4 из 5