मुझे नोडियो के साथ कुछ समस्याएं हैं और ध्वनि रिकॉर्डिंग सहेज रही हैं। कोड जो मैं वर्तमान में उस बिंदु पर काम करता हूं जहां यह WAV फ़ाइल सहेजता है, लेकिन जब मैं इसे खोलता हूं, तो विंडोज मीडिया प्लेयर एक त्रुटि देता है: "फ़ाइल को चलाने के दौरान विंडोज मीडिया प्लेयर को एक समस्या आई"माइक्रोफोन से ध्वनि रिकॉर्ड ध्वनि
मेरे पास दो बटन हैं , एक "रिकॉर्ड" बटन, जो दबाए जाने के बाद स्टॉप बटन में बदल जाता है। और मेरे पास "सेव" बटन है जो क्लिक करते समय, रिकॉर्डिंग को sample.wav
पर सहेजता है।
NAudio.Wave.WaveIn sourceStream = null;
NAudio.Wave.DirectSoundOut waveOut = null;
NAudio.Wave.WaveFileWriter waveWriter = null;
private void recordButton_Click(object sender, EventArgs e)
{
int deviceNumber = sourceList.SelectedItems[0].Index;
sourceStream = new NAudio.Wave.WaveIn();
sourceStream.DeviceNumber = deviceNumber;
sourceStream.WaveFormat = new NAudio.Wave.WaveFormat(44100, NAudio.Wave.WaveIn.GetCapabilities(deviceNumber).Channels);
NAudio.Wave.WaveInProvider waveIn = new NAudio.Wave.WaveInProvider(sourceStream);
waveOut = new NAudio.Wave.DirectSoundOut();
waveOut.Init(waveIn);
sourceStream.StartRecording();
waveOut.Play();
recordButton.Visible = false;
stopRecord.Visible = true;
}
private void saveResponse_Click(object sender, EventArgs e)
{
int deviceNumber = sourceList.SelectedItems[0].Index;
string saveLocation = "c:\\wav\\sample.wav";
sourceStream = new NAudio.Wave.WaveIn();
sourceStream.DeviceNumber = deviceNumber;
sourceStream.WaveFormat = new NAudio.Wave.WaveFormat(44100, NAudio.Wave.WaveIn.GetCapabilities(deviceNumber).Channels);
sourceStream.DataAvailable += new EventHandler<NAudio.Wave.WaveInEventArgs>(sourceStream_DataAvailable);
waveWriter = new NAudio.Wave.WaveFileWriter(saveLocation, sourceStream.WaveFormat);
sourceStream.StartRecording();
MessageBox.Show("Recording successfully saved.");
}
private void sourceStream_DataAvailable(object sender, NAudio.Wave.WaveInEventArgs e)
{
if (waveWriter == null) return;
waveWriter.WriteData(e.Buffer, 0, e.BytesRecorded);
waveWriter.Flush();
}
private void stopRecord_Click(object sender, EventArgs e)
{
if (waveOut != null)
{
waveOut.Stop();
waveOut.Dispose();
waveOut = null;
}
if (sourceStream != null)
{
sourceStream.StopRecording();
sourceStream.Dispose();
sourceStream = null;
}
if (waveWriter != null)
{
waveWriter.Dispose();
waveWriter = null;
}
recordButton.Visible = true;
stopRecord.Visible = false;
saveResponse.Enabled = true;
}
आप अपने 'स्टॉप' कार्रवाई के पीछे कोड दिखा सकते हैं तो कृपया:
यहाँ कोड मैं डिस्क पर एक लहर फाइल करने के लिए प्रत्यक्ष रिकॉर्डिंग के परीक्षण के लिए इस्तेमाल किया है? बस यह देखने की ज़रूरत है कि आप 'waveWriter' और इस तरह से बंद कैसे हो रहे हैं। – Corey
@ कोरी, मैंने कोड में 'स्टॉप' एक्शन जोड़ा। चीयर्स। – Spencer
ठीक है, इसी तरह के कोड के साथ परीक्षण किया गया है और सभी मेरे लिए काम कर रहे हैं। क्या आप डब्लूएमपी में इसे चलाने का प्रयास करने से पहले रिकॉर्डिंग रोक रहे हैं? – Corey