|
실시간 화상 전송이란 의미는 이렇게 해석될 수도 있겠군요(음성은 제외해 보도록 하겠습니다.)
우선 실세계의 타임라인이 있습니다.
예를 들어 12시 50분이 스타트 타임이라 생각하시고 시간은 계속 흐릅니다.
실시간으로 화상 전송을 하기 위해서 첫번째는 화상의 입력이겠죠? 이것 화상카메라의 IN 이 어떤건지에 따라서 다르겠지만 USB 의 경우라면 USB 에서 들어오는 데이터를 버퍼에 저장하고 있을 겁니다.
관련 API 함수를 통해 현재 시간 12시 50분 30초의 화면을 지정된 버퍼에 저장후 사이즈를 줄이기 위해
인코딩을 합니다.
인코딩된 버퍼의 내용을 접속된 클라이언트에 보내는 쓰레드가 있다고 가정하고
초당 몇 프레임(Frame per second)을 전송할 것인이 결정합니다.
1초에 한 화면을 보낸다고 가정하고 1 frame per second 라 치구 쓰레드를 통해 계속 전송합니다.
받는 쪽은 버퍼링을 해야 합니다. 버퍼링 타임을 넉넉잡아 5초라 치고 인코딩된 데이터를 받는 쓰레드가 있다구 치고
버퍼에 데이터를 계속 기록합니다.
데이터를 디코딩해서 시간을 계산해서 화면에 뿌려줍니다.
데충 이러한 흐름(flow)가 되지 않을까 생각됩니다. -_-;;;; 써놓구 보니 무슨말인지 헷갈리네요
술을 한잔했더니;;;;
정리하면
화면캡쳐 - 인코딩 - 전송 - 버퍼링 - 디코딩 - 화면출력
이정도입니다.
이성제 님이 쓰신 글 :
: 화상채팅은 어떤 원리 인가요.
:
: 그냥 파일로 저장한 후에 전송한다음 재생하는겁니까??
:
: 그럼 실시간이 안될텐데..
:
: 흠 막 화상채팅 같은거 보면 실시간으로 바로 바로 되잖아요
:
: 어떤 원리 인지좀 가르쳐 주세요.
:
: 감사합니다.
|