gStreamer를 공부해서 뭘 만들어 보려고 의욕에 가득 찬 마음으로 gStremaer Application Development Manual을 찾아 열어 봤는데.. 젠장 선수 과목이 있다.

 

gStreamer는 크로스 플랫폼( 컴파일만 가능하면 리눅스에서도 돌아가고 윈도우에서도 돌아감), multi language binding (C로 짜놨어도 각 객체 타입간 관계만 알 수 있으면 인터프리터 언어 등 개발언어와 상관없이 가져다 쓸 수 있음) 이라는 특성을 구현하기 위해, C기반 객체지향 구조와 multi language binding을 지원하는 gLib라고 하는 플랫폼을 이용하여 구현했기 때문에 gStreamer를 공부하기 전에 이 gLib라고 하는 플랫폼을 공부해야 하는 필요성이 생겼다.

 

친절하게도 gStreamer매뉴얼에 gLib와 gLib에서 사용하는 gObject에 대해서 설명해 놓은 메뉴얼 싸이트를 링크해 놧는데 들어가보면, 대략 "gLib는 GTK+나 GNOME등에서도 이런 다중언어 바인딩, C를 기반으로 하는 객체지향 설계등을 반영하기 위해서 선택된 플랫폼으로 오픈 소스이다." 라는 설명과 함께 gLib가 어떻게 타입들을 정의하고 사용하는지에 대한 장대한 설명이 펼쳐진다. 물론 영어로.

 

즉, gStreamer를 이해하려면 최소한 그 기반에 깔려있는 gLib의 타입구조와 gObject를 생성하고, 소멸하는 정도는 이해하고 있어야 한다. 공부할게 또 늘었다. 세상 참 쉽게 되는게 없다.

Posted by 굿쟌
,

 한 동안 그냥 미뤄두고만 있었던 RTSP 미디어 서버 기능이 현재 진행하고 있는 프로젝트에서 필요하게 되어 더이상 미룰 수 없게 되었다. 원래는 RTSP 표준 문서인 RFC인가 치킨집 이름과 비슷한 표준 규약을 분석해서 직접 소켓으로 구현하고 싶었으나, stackoverflow에 한 글을 보고 관련 라이브러리를 찾아 보게 되었다.

 

Q) RTSP 미디어 서버를 구현하려고 하는데 어떻게 하면 되나요?

A) RFC 규약을 구현해 본 경험이 있습니다. 왜 스스로 지옥으로 걸어 들어가려고 하나요?

 

실제답변)

Don't do it yourself if you've never written a networking application before. It's no easy task to write a scalable and robust networking app and it's even harder to implement an existing protocol so that the implementation is fully compatible with the specification

 

그래서 일단은 미디어 서버를 구현하는데 기존의 라이브러리를 사용하기로 마음먹고, 상용으로 사용 가능한 라이브러리들을 찾아보았다. 구글링 결과 LIVE555 Streaming Media, 다윈 스트리밍 미디어, gStreamer를 찾았는데, 이 세 라이브러리 중에 gStreamer가 훨씬 보기 쉬운 API 문서를 제공하고 있는데다가, 전송, 수신, 코덱처리, 렌더링과 같은 다양한 기능을 모두 제공하고 있어서 배워두면 이곳저곳 여러모로 쓸 수 있을 것 같아 일단은 요걸 좀 살펴보고 잘 안된다 싶으면, LIVE555로 갈아 타야지 하고 마음먹었다.

 

(Darwin은 안 찾아 봐서 잘 모르겠고, LIVE555 streaming media, gStreamer는 둘다 LGPL을 따르고 있어서 상용으로 쓸 때도 소스코드를 공개할 필요는 없는것으로 보였다.)

 

그리하야... 학습 목표는

 

1순위 gStreamer

2순위 LIVE555 streaming media

 

요렇게 결정이 되었다.

Posted by 굿쟌
,