WaveLib.dll: файл недоступен или повреждён - C#
Формулировка задачи:
Доброе время суток пишу диплом по работе со звуком необходимо подключить библиотеку WaveLib.dll но выскакивает ошибка что к файлу нету доступа или он поврежден, что делать не знаю в инете ничего не нашёл.
WaveLib.dll нужна мне для воспроизвидения звука по данным извлеченным из аудио сигнала. Работаю отталкиваясь от этой темы NAudio - воспроизвести мелодию по значениям амплитуд из wav-файла
вот мой код
По возможности скиньте рабочий WaveLib.dll или подскажите вариант реализации через nAudio
var header = new WavHeader(); //Размер заголовка var headerSize = Marshal.SizeOf(header);//Предоставляет коллекцию методов для выделения неуправляемой памяти var fileStream = new FileStream("house_tex.wav", FileMode.Open, FileAccess.Read);// чтение var buffer = new byte[headerSize]; fileStream.Read(buffer, 0, headerSize);//Выполняет чтение блока байтов из потока и запись данных в заданный буфер // Чтобы не считывать каждое значение заголовка по отдельности, // воспользуемся выделением unmanaged блока памяти var headerPtr = Marshal.AllocHGlobal(headerSize); // Копируем считанные байты из файла в выделенный блок памяти Marshal.Copy(buffer, 0, headerPtr, headerSize); // Преобразовываем указатель на блок памяти к нашей структуре Marshal.PtrToStructure(headerPtr, header); var pcmLength = (int)fileStream.Length; var _leftBuffer = new byte[pcmLength / 2]; var bytesRead = fileStream.Read(buffer, 0, pcmLength); int index = 0; for (int i = 0; i < bytesRead; i += 4) { _leftBuffer[index] = buffer[i]; index++; _leftBuffer[index] = buffer[i + 1]; index++; } //var player = new WaveLib.WaveOutPlayer(-1, new WaveLib.WaveFormat(header.SampleRate, header., header.NumChannels), _leftBuffer.Length, 1, (data, size) => //{ // byte [] b = _leftBuffer ; // System . Runtime . InteropServices . Marshal . Copy ( b , 0 , data , size ); // });
Решение задачи: «WaveLib.dll: файл недоступен или повреждён»
textual
Листинг программы
using System; using System.Windows.Forms; using NAudio.Wave; namespace FirstTutorial { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private WaveFileReader wave = null; private DirectSoundOut output = null; private void button1_Click(object sender, EventArgs e) { OpenFileDialog open = new OpenFileDialog(); open.Filter = "Wave File (*.wav)|*.wav;"; if (open.ShowDialog() != DialogResult.OK) return; DisposeWave(); wave = new WaveFileReader(open.FileName); output = new DirectSoundOut(); output.Init(new WaveChannel32(wave)); output.Play(); pauseButton.Enabled = true; } private void pauseButton_Click(object sender, EventArgs e) { if (output != null) { if (output.PlaybackState == PlaybackState.Playing) output.Pause(); else if (output.PlaybackState == PlaybackState.Paused) output.Play(); } } private void DisposeWave() { if (output != null) { if (output.PlaybackState == PlaybackState.Playing) output.Stop(); output.Dispose(); output = null; } if (wave != null) { wave.Dispose(); wave = null; } } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { DisposeWave(); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д