|
C++ Builder 가 설치된 폴더 아래
Examples\FastNet\Stream 에 보시면 FastNet 소켓 컴포넌트를 이용해 화일 이미지를
주고 받는 예가 있습니다. (두 개 띄워 놓고 보내고 받고 해 보시면 되죠)
물론, 이 예제는 화상 채팅에서 사용하기엔 무척 부적절합니다.
1. 일일이 화일에다 쓰고 보내고 읽을 순 없으니
TFileStream이 아닌 TMemoryStream을 이용하게끔 변환해야 한다.
2. bmp는 쓸데없이 용량이 크다.
3. TMemoryStream을 이용해 JPEG으로 인코딩 해서 보내는 정도의 예제는 볼랜드 포럼 곳곳에 존재한다.
현실적으로 화상 채팅의 구현을 위해 VFW 라이브러리를 이용해 카메라로 부터 화상 입력을 받고,
그걸 독립된 화면 위주로 네트웍에 쏜다는건 용량이나 처리시간 면에서 엄청난 낭비입니다.
만들어 본다 해도 원격지 컴퓨터와 주고 받는데 초당 2프레임 정도가 한계이겠지요.
해결책은 H263 기반의 동영상 코덱을 사용하는 정도인데, 이 또한 성재님이 구현하기엔 만만치 않은
일로 보이고, VFW를 이용한 개발은 무리가 있어 보입니다.
VFW로 근근히 이미지를 처리해서 소켓으로 날리는 아마츄어틱한 노가다 보다는
DirectShow 를 이용한다면 이미 공개된 동영상 코덱들을 이용할 수 있고,
NetMeeting SDK를 활용하는 법도 있겠지만...
우선 공부해야 될 문제들이 산더미겠죠.
Windows 내장 H263 코덱이 QCIF 사이즈의 화상만 지원한다거나, DirectShow 기술의 기반인
DLL, COM, ActiveX 의 개략적인 개념은 갖고 있어야 한다는 것.
Microsoft 사가 제공한 DirectX SDK를 가져다 쓰는데는 빌더 보다 차라리 Visual Studio가 편하다는것..
그나마 다른 사람이 VCL로 랩핑해둔 컴포넌트가 있긴 한데... (자료실에도 있는 DSPACK 이라는)
이걸 사용한다 쳐도, 인코딩된 동영상 스트림을 분석해서 DirectShow 의 필터 그래프를 타게 하려면
Push Source Filter 하나 정도는 만들어야 하고
빌더에서 제공하는 TSocket 이 얼마나 깡무식하게 만들어져 있는지 깨닫게 되실테니 인디 소켓을 쓰시든
RTP를 구현하시든 하셔야 할텐데... 음...
기존에 나와 있는 화상 채팅 정도를 구현하시려면 이런식의 접근은 무의미 하다 보이구요.
간단히 그냥 만들어 보시는데 의의를 두실것이라면 아까 말씀 드렸듯,
TMemoryStream 을 사용해 JPEG를 전송하는 예제 정도는 다른 분이 이미 올려 두셨으니 찾아보시길 바라고
제대로 만들어 보시고 싶으시다면...
그나마 국내에 DirectShow 기술 관련 해서 나온 책이 신화선씨가 지은 책 한 권 뿐이니
참고해 보시면 되긴 하겠지만 ㅡ,.ㅡ 몇 개월 잡고 차근 차근 보셔야 될 것 같네요.
(물론 그 책의 내용으로 많은 힌트를 얻을수 있겠지만 답이 나오진 않을듯 합니다)
열심히 하시려는데 찬물을 끼얹는듯 해서 맘이 편하진 않습니다.
제가 하려는 말을 요약한다면 다음과 같겠군요.
1. 빌더포럼에 질문하기 전에 이미 올려진 관련자료를 충분히 찾아 볼 것.
2. 뭔가 만들고 싶은게 생겼다면 내가 사용하려는 기술이나 방향이 요구사항에 맞는지 먼저 점검해 볼 것.
3. 기초부터 확실히 다질 것.
|