![]() 9 / 9 / 5
Регистрация: 24.03.2014
Сообщений: 313
|
|||||||||||
Mp3FileReader - медленный вывод аудио (NAudio.dll)28.02.2019, 21:37. Показов 2858. Ответов 6
P.S. Т.к. я думаю что это из за особенности строения mp3 файла, публикую в эту тему
Доброго времени суток! Я преобразую входящий поток wav в mp3 через Lame этой функцией:
Перерыв весь интернет, нашел только это, но, говоря честно, я не понял до конца где и что надо убрать в моем коде, дабы искажения не было: https://stackoverflow.com/ques... ith-naudio И тут у человека что-то подобное было, но это не то: https://coderpapers.com/question/2203124/ В двух словах: кадры с mp3 воспроизводятся через браузер MPEG-ом искаженно(замедленно, прерывисто, с отставанием). Согласно изученным результатам, полагаю, что кроме чистых данных, в кадрах есть еще какой-то мусор, который и дает эти искажения в плеере. Буду благодарен за любую помощь или направление. Спасибо! Добавлено через 1 минуту Pastebin раскадровки https://pastebin.com/r7ZvQ1hu
0
|
28.02.2019, 21:37 | |
Ответы с готовыми решениями:
6
NAudio - Mp3FileReader - искаженный вывод аудио NAudio. Реализовать смену высоты звука(тона) аудио
|
Asm/C++/Delphi/Py/PHP/VBA
![]() |
|
01.03.2019, 00:16 | |
Приветствую!
А если вы будете записывать это в файл (или выводить как аудио... но лучше в файл, а потом открыть в редакторе), а не передавать по сети, у вас тоже будет прерывистый звук? Т.е. это не может быть связано как-то с передачей по сети?
0
|
![]() 9 / 9 / 5
Регистрация: 24.03.2014
Сообщений: 313
|
||
01.03.2019, 13:59 [ТС] | ||
Добавлено через 2 часа 8 минут Jin X, у меня там получается передача потока звука блочная. один блок содержит по 6 кадров. предлагаю изучить вам это, меня там удивляет тот факт, что некоторые кадры "выбиваются" из общего стада, у них другая дискретизация и битрейт. если я их удаляю - звук становится кашей из шумов. удаление хотя бы одного кадра приводит к еще более худшей картине. причем в разных блоках разная линия кадров, которая через n-ый цикл вроде как повторяется https://pastebin.com/r7ZvQ1hu
0
|
Asm/C++/Delphi/Py/PHP/VBA
![]() |
|||
01.03.2019, 15:06 | |||
А у вас вообще получаемый звук кэшируется? Или новый блок читается после воспроизведения старого? И даже если буфер есть, но небольшой, он может не успевать заполниться новыми данными. Поэтому звук и прерывается. ![]()
0
|
![]() 9 / 9 / 5
Регистрация: 24.03.2014
Сообщений: 313
|
||
01.03.2019, 15:31 [ТС] | ||
Алгоритм такой: есть три девайса(сейчас все на одном тестится): клиент-запись(далее З), сервер(С), клиент-получатель(П) - На З записывается wav звук с аудиокарты (микрофон, вн.рестрасляция из колонок(WaveIn) и т.п. - Далее он идет по классическому TCP на в виде массива байт к С. С конвертирует из wav byte[] в mp3 кадры, из которых уже получаются mp3 байты - С в другом потоке ждет подключение в любом промежутке времени (если клиенты не подключены, данные просто умирают, взятые от З). Приходит подключение от К(браузера) и для него создается персональный поток. Далее С отправляет заголовок и бесконечным потоком, пока есть это подключение, перенаправляет Mp3 байты кадра сразу в поток на Write для К. Если К несколько, он делает отправку данных методом перебора. В браузере К я заметил, кстати, что аудио-контрольный ползунок все время как бы задыхается, он на приделе в конце, на подобных потоках он где-то ближе к своей середине. Полагаю, что может реально нужен кэш?
0
|
Asm/C++/Delphi/Py/PHP/VBA
![]() |
|
01.03.2019, 16:32 | |
Не всё понял из описания.
Но учитывайте следующее: • Фреймы mp3 должны передаваться целыми блоками и вместе с заголовком фрейма, т.к. у вас VBR, соответственно, битрейт разный и при воспроизведении на постоянном битрейте могут быть глюки. Это так, на всякий случай. • Нужен буфер для получения данных, т.е. не начинать воспроизведение, пока клиент не получил, скажем, 10 блоков, а когда проигрывается последний блок, воспроизведение останавливается и снова ожидается заполнение буфера в 10 блоков (ну или сколько-то ещё... я не знаю, какой размер блока у вас в секундах, насколько большое отставание по времени от записи допустимо и насколько быстрое соединение... можно 5 секунд сделать, к примеру, или 1-2 секунды, если важна более или менее синхронность (и соединение быстрое), или 10 секунд, если важнее стабильность – короче, можно тут тестить, при каком буфере зву не прерывается + взять запас раза в 2-3). Посмотрите, как работает YouTube, к примеру, при плохом соединении: сначала идёт буферизация видеопотока, а только потом начинается воспроизведение.
1
|
![]() 9 / 9 / 5
Регистрация: 24.03.2014
Сообщений: 313
|
||
01.03.2019, 18:45 [ТС] | ||
0
|
01.03.2019, 18:45 | |
Помогаю со студенческими работами здесь
7
NAudio.dll не работает в Wi7 и Win8.1 64 bit Воспроизведение wave из потока средствами NAudio.dll Запись и вывод звука с NAudio Медленный ввод в текстовые поля / медленный отклик в google chrome? STM32F103 + TFT 240x320 + SD = медленный вывод картинок Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
![]() |
||||
Unity 4D
GameUnited 13.06.2025
Четырехмерное пространство. . . Звучит как что-то из научной фантастики, правда? Однако для меня, как разработчика со стажем в игровой индустрии, четвертое измерение давно перестало быть абстракцией из. . .
|
SSE (Server-Sent Events) в ASP.NET Core и .NET 10
UnmanagedCoder 13.06.2025
Кажется, Microsoft снова подкинула нам интересную фичу в новой версии фреймворка. Работая с превью . NET 10, я наткнулся на нативную поддержку Server-Sent Events (SSE) в ASP. NET Core Minimal APIs. Эта. . .
|
С днём независимости России!
Hrethgir 13.06.2025
Решил побеседовать, с утра праздничного дня, с LM о завоеваниях. То что она написала о народе, представителем которого я являюсь сам сначала возмутило меня, но дальше только смешило. Это чисто. . .
|
Лето вокруг.
kumehtar 13.06.2025
Лето вокруг.
Наполненное бурями и ураганами событий. На фоне магии Жизни, священной и вечной, неумелой рукой человека рисуется панорама душевного непокоя.
Странные серые краски проникают и. . .
|
Популярные LM модели ориентированы на увеличение затрат ресурсов пользователями сгенерированного кода (грязь -заслуги чистоплюев).
Hrethgir 12.06.2025
Вообще обратил внимание, что они генерируют код (впрочем так-же ориентированы разработчики чипов даже), чтобы пользователь их использующий уходил в тот или иной убыток. Это достаточно опытные модели,. . .
|
Топ10 библиотек C для квантовых вычислений
bytestream 12.06.2025
Квантовые вычисления - это та область, где теория встречается с практикой на границе наших знаний о физике. Пока большая часть шума вокруг квантовых компьютеров крутится вокруг языков высокого уровня. . .
|
Dispose и Finalize в C#
stackOverflow 12.06.2025
Работая с C# больше десяти лет, я снова и снова наблюдаю одну и ту же историю: разработчики наивно полагаются на сборщик мусора, как на волшебную палочку, которая решит все проблемы с памятью. Да,. . .
|
Повышаем производительность игры на Unity 6 с GPU Resident Drawer
GameUnited 11.06.2025
Недавно копался в новых фичах Unity 6 и наткнулся на GPU Resident Drawer - штуку, которая заставила меня присвистнуть от удивления. По сути, это внутренний механизм рендеринга, который автоматически. . .
|
Множества в Python
py-thonny 11.06.2025
В Python существует множество структур данных, но иногда я сталкиваюсь с задачами, где ни списки, ни словари не дают оптимального решения. Часто это происходит, когда мне нужно быстро проверять. . .
|
Работа с ccache/sccache в рамках C++
Loafer 11.06.2025
Утилиты ccache и sccache занимаются тем, что кешируют промежуточные результаты компиляции, таким образом ускоряя последующие компиляции проекта. Это означает, что если проект будет компилироваться. . .
|