우리는 Java 기반의 Voice over IP 프로그램을 개발 중이고 스트림과 서버 측 스트레스를 합리적인 수준으로 유지하는 효과적인 방법을 찾아야합니다. 우리는 멀티 플레이어 게임을 위해이를 작성하고 있으며 오디오 믹싱 및 전송 방법을 결정하는 몇 가지 모드를 계획하고 있습니다. 우리는 음성 채팅에 참여하지 않기로 결정했다면 쓸모없는 스트림을 방치하지 않기 위해 "Opt In"을 사용할 계획입니다. 그 외에도 채널, 개인 채팅 (2 명) 및 근접성을 생각하고 있습니다. 16 명이 넘는 사용자가있는 채널을 사용하는 경우 x^2 스트림 (이 경우 256 개)을 피할 방법이 있는지 찾아야합니다. 우리는 또한 게임을 실행하기 때문에 클라이언트 측 작업을 합리적인 수준으로 유지해야합니다. 대형 서버가 처리 할 수있는 작업의 양은 채널에 더 많은 사람들이 있기 때문에 기하 급수적 일 것입니다. 채널당 사용자 수를 제한하거나 서버 소유자가 채널 수를 제한 할 수 있도록 허용해야 할 수도 있습니다. 이 게임은 인기에 따라 한 번에 한 서버에 약 40-500 명을 가질 수 있으며 서버의 처리 및 대역폭에서 이러한 유형의 스트레스를 처리하는 방법을 잘 모릅니다.오디오 스트림을 처리하고 VoIP 용으로 믹싱하는 방법
본질적으로 우리는 효율적인 처리 방법을 가진 기존 시스템에 대해 알고있는 사람이 있는지 묻습니다. 우리는 오디오 인코딩에 JSpeex를 사용하고 있습니다. 그렇다면이 문제를 해결하기위한 방법이 있습니까? 아니면 커뮤니티의 아이디어까지 포함 할 수 있습니까? 우리는 또한 우리가 개발해 온 소규모 Skype 프로그램에서 이것을 다시 구현할 계획입니다.
256 개의 스트림이 서버를 통해 트래 피킹됩니다. x^2 스트림, 우리 자신의 오디오 (에코)를 제외한 모든 사람, 모든 사람에게 오디오를 배포해야하기 때문입니다. 반환 할 때 자신의 오디오를 "음소거"할 수있는 방법이 있다면 x 스트림 만 있으면됩니다. 그것의 혼합 유형, 그리고 우리는 그것을 처리하는 방법을 잘 모르겠습니다. – Kristoff
그게 내가 말하는거야. 모든 사람과주고받는 개별 스트림이 필요하지 않습니다. 각자의 입력을 함께 다중화하기 위해서는 서버가 필요합니다. 따라서 각 사용자는 단일 입력 및 단일 출력 채널 만 있으면됩니다. 서버는 똑똑해야합니다. 분명히 에코 오디오는 포함시키지 않을 것입니다. – Smitty
클라이언트 당 하나의 소켓 연결 만 계획했습니다. 우리는 순수하게 서버의 처리 과정에 대해 이야기하고 있습니다. 내가 뭔가를 놓치고 있는지 확실하지 않지만 각 클라이언트로 보내지는 출력은 다중화됩니다. 나는 단지 뭔가를 놓친다면 사과드립니다. – Kristoff