2014-08-29 5 views
1

나는 C++로 클래식 클라이언트 서버 환경을 가지고 있습니다.
이제 특정 클라이언트간에 음성 채팅을 구현하려고합니다.
내 문제는 : 오디오를 "일시 중지"하지 않고 스트리밍하는 방법입니다. 나는 이론에만 관심이있다.
나의 첫 번째 아이디어는 버퍼에 0.5 초 간격으로 몇 바이트를 캡처 한 다음 서버로 보내서 관심있는 클라이언트에게 다시 보냅니다.
그러나 가능한 한 실시간으로이를 수행하는 방법을 모르겠습니다!
C++ 마이크로폰에서 오디오 스트리밍

편집 클라이언트는 윈도우이며, 서버는 사용자가 코덱을 선택할 것이며, 그 코덱에 의해 지정된 클럭 속도에 따라 류를 리눅스

+1

이 질문에 대한 정답은 운영 체제에 따라 다릅니다. 이 작업을 수행하는 Microsoft Windows에서 실행되는 응용 프로그램은 Linux에서 실행되는 응용 프로그램과 완전히 다릅니다. 여기에 사용 된 운영 체제를 지정해야합니다. –

답변

3

입니다. 예를 들어 G.711 코덱은 클록 속도를 8000Hz로 지정합니다 (이는 마이크 입력 소스가 초당 8000 회 샘플링됨을 의미 함). 또한 기본적으로 각 패킷에 20 밀리 초의 오디오가 있어야하므로 1 초에 1 초 = 1000 밀리 초/20 밀리 초/초당 50 패킷을 보내도록 지정합니다.

구현 방식 (실시간)으로 마이크에서 오디오 샘플링, RTP 패킷에 랩핑 및 해당 패킷 전달을 담당하는 "실시간"우선 순위가있는 개별 스레드가 있습니다. 귀하의 서버. 서버는 마찬가지로 각 RTP 패킷을 수신하고 가입 된 각 클라이언트로 전달하는 별도의 "실시간"우선 순위 스레드를 갖습니다.