티스토리 뷰

IT/IT뻘글

ipCAM 제작기 #3

리쫑v 2012.10.31 14:16

우선 하드웨어는 아두이노로 하기로 했다.

아두이노에 웹캠달린 모듈을 구입해서 와이파이 모듈을 덧붙일 계획이다.



아두이노개발에 C가사용되기 때문에

스트리밍서버개발에도 C를 사용하기로 한다. 

안드로이드어플개발에 자바가 쓰일테지만 뭐 그건 나중이야기고



C#으로 스트리밍서버를 만들어 웹으로 구현한 예제가 있어 스크랩한다.

http://blog.naver.com/atom_jazz?Redirect=Log&logNo=167821290

아톰님의 블로그



그의 개발과정은 이러하다

1. Socket.io 에 접속할 수 있어야하는데 c#으로 누군가 잘 만들어줘서 약간 커스터마이징한다..

2. DirectShow를 이용해서 웹캠을 캡쳐한다..(이것도 소스 따왔다 -_-;)


3. timer를 이용해서 tick interval을 선택하고 socket.io 서버에 이미지 던진다..


4. socket.io서버는 volatile 로 emit() 한다. (뷰어에서 못받아도 되니까..)


5. 뷰어페이지에서 그 이미지를 받아서 canvas태그에 그린다.


6. 아무나 볼 수 없도록 PIN Code를 입력받는다..겹칠 수 있는 건 체크안했음..귀찮아서..


7. 폰갭(phonegap 으로 뷰어 어플 만듦. iOS는 아직 안만들었음..)



그의 개발과정은 이러하다

근데 무슨말인지 잘 모르겠다.


ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ


socket.io 라는 리얼타임으로 웹과 모바일기기에서 소통하는 라이브러리가 있는것 같다.

자바스크립트로 작성되었다고 한다.


ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

자바스크립트가아니라 Node.js라는 언어가 바탕이 되는 것 같다. Node.js에대해 조사해보았다


 

node.js는 자바스크립트를 사용하는 개발자들을 위한 언어로 이 언어가 주로 많이 사용이 되는 분야가

서버인데 이러한 서버에서 사용이 되는 언어가 주목을 받는 이유에는 다음과 같은 큰 이유가 있다는

것입니다.  우리가 흔히 알고 있는 네트워크방식은 스레드를 기반으로 하는 동기 방식인데 이 처리 방식인데

이 방식을 쉽게 표현을 한다면 처리를 해야할 곳이 4군데 인데 몸은 하나라고 치고 또한 대기시간이 있으실

것입니다.  이럴 경우에 처리를 할 수가 있는 방식은 몸을 복제하여 동시에 처리를 하는 방식이 있는데 이

방법은 좋은 것 같아 보이지만 일이 많아질 수록 스레드를 더 많이 나누어야 하기때문에 메모리 사용량이

폭발적으로 증가를 하게 되어 결국에는 서버가 다운이 되는 원인이 되기도 하는 것입니다.

이러한 원인은 주로 한정적인 네트워크에 대량의 접속자가 갑자기 많이 들어와서 접속량이 많아지게 되면

서버가 다운이 되는 형상이 있는데 최근으로 친다면 디아블로3도 이와 같은 원인이 될 수가 있다는

것입니다.

 

 

하지만 node.js가 주목을 받는 이유에는 기존의 네트워크 처리와는 전혀 다른 것으로 이벤트를 기반으로

하는 비동기 방식으로 위와 같은 예를 들어서 설명을 한다면 4군데를 돌아야 한느 경우 먼저 처리를 해야할

부분에 번호표를 주어서 하나씩 처리를 하는 것입니다.

그만큼 대기시간이 줄어들고 바로바로 처리를 할 수가 있기때문에 스레드를 하나만 사용을 해도 빠르게

처리를 할 수가 있어서 서버의 운영을 해야 하는 사람에게는 node.js를 공부를 한다면 서버의 자원을 좀 더

효율적으로 이용을 할 수가 있다는 것입니다.

 


 

이러한 특징으로 있기때문에 Node.js를 이용을 하면 기업에서는 서버의 능력을 극대화시킬수가 있다고

보시면 될 것입니다.

그렇기때문에 한정이 되어 있는 서버의 능력을  최대로 사용을 할 수가 있다는 장점으로 인해 기업에서는

매우 주목을 받고 있는 기술중의 하나로 평가를 받고 있어서 node.js를 공부하면 그만큼의 높은 능력을

보장을 하실 수가 있으십니다.

 ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ


기본필요사항이라고 생각해서 Node.js를 설치했다.


ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ


npm이라는게 node.js를 설치하면 같이 들어있는 패키지 설치 프로그램으로 추정된다.


npm install socket.io



'IT > IT뻘글' 카테고리의 다른 글

OCZ Vertex3 60g  (0) 2013.03.22
ipCAM 제작기 #4  (0) 2012.10.31
ipCAM 제작기 #3  (1) 2012.10.31
ipCAM 제작기 #2  (0) 2012.10.26
ipCAM 제작기 #1  (0) 2012.10.25
SSD 구입후. 네살먹은 나의Q210  (1) 2012.04.23
댓글
  • 프로필사진 BlogIcon Atom 통계보다가 여기까지 오게 됐네요 ㅋㅋ
    프로젝트는 잘되가시나요?
    저는 컴공전공이 아니라 학교 다닐 때 이렇게 프로젝트 해봤던 후배들이 참 부럽더라구요..
    회사와서 코딩에 너무 빠져서 회사에서 시키지도 않은 것들 해보고 있어요 ㅋㅋ
    그건 그렇고 ㅋㅋ
    원리를 잘 모르시겠나요?
    다시 설명드리면..
    1. directshow 라이브러리를 이용해서 윈폼(C#)에서 영상을 받아올 수 있습니다.
    2. 그 영상을 밀리세컨단위로 timer를 실행시켜서 비트맵으로 바꿀 수 있습니다.
    3. 그 비트맵을 byte array(byte[])로 변환시키면 base64스트링(String)으로 변환이 가능합니다.
    (String imgStr = decodeBase64(bytearray); --> socket.emit("webcam", imgStr); 이런 식으로요)
    4. node.js에서 imgStr을 ON하면 그걸 다시 접속한 사람들한테 emit하면 됩니다.
    socket.on('webcam', function(data) {
    socket.broadcast.emit('webcam', data)
    } // 저같은 경우는 socket.io에서 제공하는 room을 구현해서 그걸 Pin Code로 사용하고 있답니다.
    5. 클라이언트에서는
    socket.on('webcam', function(data) {
    img.src = data;
    ctx.drawImage(img, 0, 0, w, h); // ctx, img, w, h는 자바스크립트 전역변수로 선언했습니다.
    }
    이 정도면 원리는 이해되시겠죠?
    2012.11.02 15:01 신고
댓글쓰기 폼