Вопрос по голосовому чату
Пишу голосовой чат,работает 1 на 1, но хочу сделать конференсвязь, вопросы такие:
1. Как сделать что бы при конференции звуковой поток приходил всем ,
2. Сделал для каждого клинта progressBar ,как узнать от кого именно приходят звуковые данные. если в конференцсвязи будут участвовать 5-10 человек.
Пытаюсь пока так, получаю буфер(байтов) звуковых данных размером 4096. Разбиваю поток по 120 байт, в начало каждого пакета добовляю свои данные(4-байта)-
1_байт -начало пакета
2_байт-что за пакет(1-звуковой,2-текстовый)
3_байт - ID клинта кто передал пакет
4_байт - номер пакета(0 до 255) что бы складывать пакеты друг за другом
Что у нас получаеться ,полных созданых пакетов получаеться 34,
16 байт остаток ,его сохраняем для передачи следующего буфера .
34X120=4080 байт , а унас 4096, 4096-4080=16
каждый пакет у нас получился 124 байта.
При приеме ищем начало пакета проверяем кому относиться пакет и отправляем тому окну кто говорить в конференцсвязи.
Вся проблема в том что работает но звук искаженный ,где то с байтами на путал.
Может кто знает или подскажет где посмотреть, как можно сделать, что бы каждый поток клиента шел именно в свой Stream .
текстовый чат понятно чо можно узнать по нику или еще как, просто если прогрессбар не ставить кадому клинту в конференцсвязи ,не понятно кто говорит ,не определить визуально.
Может есть готовые функции для разделения потока и складывания их на клиенте.
Спасибо.
|