2010-02-05 5 views
3

우선, 나는 애호가 일 뿐이므로 바보 같은 질문이거나 내가 너무 순진하다면 미안합니다. (비싼 라이브러리를 살 수 없다는 의미이기도합니다.)음성 컨퍼런스 - 더 많은 사람들을 대화하는 법?

다음과 같은 상황입니다. 저는 Ventrilo 또는 TeamSpeak와 같은 간단한 음성 채팅 응용 프로그램을 구축하고 있지만 약 15 명 또는 20 명의 사용자 만 사용할 수 있습니다. 100Mbps LAN에서 실행). 나는 서버 (각 클라이언트에 대한 스레드 생성) 및 연결을 위해 UDP를 사용하고 사운드를 캡처하고 재생하기위한 DirectSound를 사용하는 클라이언트 응용 프로그램을 가지고 있습니다. "1 대 1"통화를 할 수 있지만 가장 중요한 것 중 하나를 알아낼 수는 없습니다.

대화에 두 명 이상의 사람이 있습니까?

+3

질문을 수정하실 수 있습니다. "다른 사람들이하는 말을 모든 사람이 듣게하는 가장 좋은 방법은 무엇인가?" 사람들이 마이크를 마주 보지 못하거나 음소거가 눌려져있는 경우는 다루지 않습니다. 질문의 나머지 부분을 토대로, "나는 대화에서 두 명 이상을 어떻게 만날 수 있습니까?"라고 정말로 묻고 있습니까? 그렇다면 스타 또는 메시 토폴로지를 고려할 수 있습니다. IP 멀티 캐스트 사용을 고려할 수도 있습니다. – atk

+0

의견을 보내 주셔서 감사합니다. 나는 당신이 제안한 것처럼 그 질문을 다시 말해왔다. 멀티 캐스트 사용을 고려하고 있었지만이 경우 좋은 아이디어인지 확실하지 않았습니다. – Ken

답변

2

멀티 캐스트를 통해 패킷을 다시 전송하려면 중앙 집중식 장소가 필요합니다. 그렇지 않으면 모든 클라이언트가 모든 다른 클라이언트에 연결되고 각 클라이언트가 멀티 캐스트를 호스팅하는 분산 된 방식이 필요합니다. 당신이 피하고 싶은 것은 머신을 다른 머신으로 데이터를 전송하는 것으로 O (n) 시간마다 각 머신에 메시지를 보내고 (I/O가 느리다!).

두 경우 모두 오디오 스트림을 결합하는 방법과 동일한 문제가 발생합니다. 이것을 달성하기위한 간단한 메커니즘은 비트 단위로 또는 신호를 함께 전송하기 전에 (네트워크 포트 밖으로 또는 스피커로 보내기)이지만 압축되지 않은 스트림과 합리적으로 동기화 된 스트림에 액세스 할 수 있다고 가정합니다.

관련 문제