poma1
1
.NET 2.x

NAudio ошибка "AcmStreamHeader dispose was not called"

06.05.2012, 19:49. Показов 1314. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
вот отрывок кода. проблема в том. что при закрытии формы зависает звук и иногда вылазит ошибка "AcmStreamHeader dispose was not called".
zmForms.Properties.Resources.waiting - mp3 файл (byte[])
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
private NAudio.Wave.BlockAlignReductionStream gameStream = null, overStream = null, waitStream = null;
        private NAudio.Wave.DirectSoundOut gameOut = null, overOut = null, waitOut = null;
 
        public void PlayWait()
        {
            if (waitOut == null)
            {
                DisposeWait();
                NAudio.Wave.WaveStream pcm = NAudio.Wave.WaveFormatConversionStream.CreatePcmStream(new NAudio.Wave.Mp3FileReader(new MemoryStream(zmForms.Properties.Resources.waiting)));
                waitStream = new NAudio.Wave.BlockAlignReductionStream(pcm);
                waitOut = new NAudio.Wave.DirectSoundOut();
                waitOut.Init(waitStream);
            }
            waitOut.Play();
        }
 
        public void PauseWait()
        {
            if (waitOut != null)
            {
                waitOut.Pause();
            }
        }
 
        public void StopWait()
        {
            if (waitOut != null)
            {
                waitOut.Stop();
            }
        }
 
        private void DisposeWait()
        {
            if (waitOut != null)
            {
                if (waitOut.PlaybackState == NAudio.Wave.PlaybackState.Playing) waitOut.Stop();
                waitOut.Dispose();
                waitOut = null;
            }
            if (waitStream != null)
            {
                waitStream.Dispose();
                waitStream = null;
            }
        }
При запуске вызывается PlayWait()
В обработчике события FormClosing вызывается DisposeWait()
Если воспроизводить тоже файл не через ресурсы (через путь к файлу), то все норм:
C#
1
NAudio.Wave.WaveStream pcm = NAudio.Wave.WaveFormatConversionStream.CreatePcmStream(new NAudio.Wave.Mp3FileReader(path));
Как исправить ошибку при воспроизведении через ресурсы?
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.05.2012, 19:49
Ответы с готовыми решениями:

Ошибка abort() has been called
Всех приветствую! Столкнулся с ошибкой в коде "abort() has been called". Также выводит бред в...

Abort() has been called - Ошибка в работе программы
Только начал изучать C++. Нужно немного помощи. Задача такова, ввести текст(строку), отсортировать...

Ошибка terminate called after throwing an instance of
Здравствуйте помогите исправить ошибку: terminate called after throwing an instance of...

Ошибка There is no overloaded version of 'Get' that can be called with thes
Добрый вечер! Подскажите в чем проблема? Ошибка: E2250 There is no overloaded version of 'Get' that...

2
poma1
12.05.2012, 18:06 2
Неужели никто не знает решение этой проблемы?
0 / 0 / 0
Регистрация: 02.06.2020
Сообщений: 3
12.06.2020, 20:48 3
Нашли ответ? Мне тоже интересно
0
12.06.2020, 20:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.06.2020, 20:48
Помогаю со студенческими работами здесь

Ошибка: There is no overloaded version of 'inttostr' that can be called with there arguments
Пробую изучить классы. Пишу маленький класс program Project1; uses Dialogs,SysUtils; type...

Ошибка: There is no overloaded version of 'EncodeBytes' that can be called with these arguments
Всем привет. Подскажите что могло случиться. Раньше все работало. Но на другом компьютере....

Ошибка: There is no overloaded version of floattostr that can be called with these arguments
Объясните пожалуйста в чем ошибка, уже вторые сутки сижу, ничего понять не могу, как заставить...

Ошибка: There is no overloaded version of 'IntToHex' that can be called with these arguments
var a:TRegistry; test:array of byte; go,i:integer; s: string; begin a := TRegistry.Create; ...

Ошибка - Function to be called, DateOf, was eliminated by linker
Доброе время суток, Пользуюсь Delphi 10.2 уже месяцев 5, но до этого не видел, чтоб при отладке...

Ошибка: There is no overloaded version of 'FloatToStrF' that can be called with these arguments
Добрый вечер, подскажите, пожалуйста, из-за чего в этом коде может вылетать ошибка, а именно в...

Ошибка: There is no overloaded version of 'Synchronize' that can be called with these arguments
получаю на эту строку Synchronize(UpdateList(jObject.GetValue('name').Value)); полный...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru