|
176 / 124 / 49
Регистрация: 30.11.2012
Сообщений: 1,330
|
|||||||||||
Как одновременно воспроизвести аудио-потоки от разных участников чата?08.12.2018, 00:07. Показов 6740. Ответов 30
Метки нет (Все метки)
Пишу аудио-чат конференцию.
Передаю аудио-поток с микрофона клиента на сервер, с сервера отправляю его всем участникам конференции по TCP. Для записи и воспроизведения звука использую библиотеку Naudio, готов рассмотреть другие реализации. Когда говорит 1 участник конференции, а другие слушают - всё ок. Когда говорят одновременно 2 или более участников, начинаются проблемы. Как можно одновременно воспроизвести аудио-потоки от разных участников?
Проблема в том, что буфер забивается аудио-данными от разных участников конференции и эти данные не успевают воспроизводится. В случае когда говорит 1 участник, то данные успевают воспроизводится.
0
|
|||||||||||
| 08.12.2018, 00:07 | |
|
Ответы с готовыми решениями:
30
Как записать аудио с микрофона и воспроизвести? Как воспроизвести аудио и видео в приложении Как воспроизвести аудио файлы размером 1 килобайт? |
|
176 / 124 / 49
Регистрация: 30.11.2012
Сообщений: 1,330
|
|
| 14.12.2018, 09:46 [ТС] | |
|
В клиенте проще, там всего 1 принимающий поток
Вот реализация через mixingWaveProvider32. Не знаю насколько стабильно она работать правда будет. До этого делал через создание нового экземпляра WaveOut и буфера для него, по аналогичному принципу. Проблем с такой реализацией не было, но она наверняка неправильная. Но мне вообще не нравится идея посылать какие-то примечания в массиве с аудиоданными, мне кажется это очень плохо. А на сервере сделать микширование что-то не получается( P.s. Микширование сделано в клиенте в классе Client, в методе Listening(). Задействован класс с микшированием VoiceMix.
0
|
|
|
176 / 124 / 49
Регистрация: 30.11.2012
Сообщений: 1,330
|
|
| 14.12.2018, 12:38 [ТС] | |
|
nicolas2008, есть идеи как сделать такое на сервере?)
0
|
|
|
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
|
|||
| 15.12.2018, 02:12 | |||
Сообщение было отмечено Nalik как решение
Решение![]() Да, сделал микс на сервере, но по другому. Чтение из буфера со скоростью воспроизведения плюс таймаут на звуковые данные. client_server_13_12_2018_15_20_fixed.rar
0
|
|||
|
176 / 124 / 49
Регистрация: 30.11.2012
Сообщений: 1,330
|
|||
| 16.12.2018, 12:41 [ТС] | |||
0
|
|||
|
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
|
|
| 16.12.2018, 19:53 | |
|
Там еще упростить можно (и нужно).
Вместо того что я нагородил с таймаут буфером, просто включить режим циклического буфера в BufferedWaveProvider
0
|
|
|
176 / 124 / 49
Регистрация: 30.11.2012
Сообщений: 1,330
|
|
| 16.12.2018, 20:19 [ТС] | |
|
nicolas2008, вы же понимаете, что моих знаний библиотеки пока что не хватит для этого)) мне потом ещё с кодеками разбираться нужно будет, чтобы сжимать данные перед отправкой, но это уже другая история)
0
|
|
|
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
|
|
| 16.12.2018, 21:23 | |
|
Сорри, это я сложно написал.
Реализуется установкой свойства DiscardOnBufferOverflow = true
0
|
|
|
176 / 124 / 49
Регистрация: 30.11.2012
Сообщений: 1,330
|
|
| 16.12.2018, 21:47 [ТС] | |
|
А какие функции при этом нужно убрать из за неактуальности?
0
|
|
|
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
|
|
| 16.12.2018, 23:19 | |
|
Убрать класс InputState и все что с ним связано
0
|
|
|
176 / 124 / 49
Регистрация: 30.11.2012
Сообщений: 1,330
|
||
| 17.12.2018, 08:55 [ТС] | ||
|
Понял, спасибо)
Добавлено через 9 часов 34 минуты Еще раз большое спасибо за помощь!
1
|
||
|
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
|
|
| 18.12.2018, 02:47 | |
|
1
|
|
| 18.12.2018, 02:47 | |
|
Как воспроизвести любой аудио-файл по нажатию на кнопку? Как одновременно воспроизвести несколько звуков?
Как воспроизвести два wav-файла одновременно (второй с некоторой задержкой)? Как запустить потоки одновременно Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
|
Лето уходит
kumehtar 17.08.2026
|
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
|
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины".
За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html
Задача: . . .
|
|
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|