까멜레오 구현.

Posted 2008. 4. 10. 17:14
개발자들이면 당연히 어떤 어플리케이션이나 프레임워크를 들여다 볼 때 어떤 기반 기술로 이루어졌는지 궁금해 하실 것입니다. 까멜레오는 100% 오픈소스 라이브러리들만 사용해서 만들었습니다. 까멜레오에서 중요하게 사용되는 컴포넌트는 다음과 같습니다. UI를 비롯해 거의 대부분의 요소를 파이썬 바인딩을 통해 사용하고 있습니다.

GStreamer (with DirectShow plugin)
cairo
librsvg
GTK+
OpenGL

Python
pyglet
PIL(Python Imaging Library)
PkgResources


까멜레오는 비디오 위에 자연스럽게 UI를 보여주기 위해 OpenGL 기반의 3D GUI 툴킷인 GLUX를 만들었습니다. GLUX는 GTK+와 QT처럼 (물론 훨씬 간단합니다) 일반적인 2D UI를 표현할 수 있고, 3D 애니메이션과 반투명(translucent)한 UI를 구현할 수 있게 해주는 파이썬으로 작성된 라이브러리입니다.

또한 비디오 메타데이터를 처리하는 부분이 까멜레오가 GStreamer 등 로우레벨 미디어프레임워크와 차별화하는 부분입니다. 일례로, 간단한 자막 등을 표시하기 위해 자막을 GStreamer 파이프라인(DirectShow의 필터그래프로 유사한 개념)을 통해 흘려보는 방식은 비디오 메타데이터를 처리하는 최선의 방법으로 보기 어렵습니다. 까멜레오는 자막을 비롯한 비디오 태그, 각종 메타데이터를 쉽게 붙이고 처리할 수 있는 프레임워크를 제공합니다.

자막을 단순히 보여주기만 하는 것이 아니라 자막 데이터를 받아서 빈칸을 만들어 받아쓰기 위젯을 만들 수도 있고, 자막을 검색할 수도 있고, 어려운 단어는 자동으로 인터넷 사전을 뒤져서 뜻을 보여주는 등 간단한 메타데이터 하나로도 무궁무진한 어플리케이션을 만들어낼 수 있습니다.

까멜레오 오픈과 더불어 지금까지 예제로 만들어진 까멜레오 위젯을 몇 개 소개해 볼까 합니다. 1탄으로는 자막 검색 위젯입니다. 자막 검색이라고 하면 약간 혼란의 여지가 있는데, 곰플레이어가 제공하는 것처럼 자막이 없는 비디오의 자막을 자동으로 찾아주는 서비스는 아니고 자막 내에서 원하는 단어를 찾는 기능입니다.

사용자 삽입 이미지

요즘 웹에 글 올릴 때 특정 장면을 캡춰해서 이미지나 애니메이트 GIF로 올리는 경우가 많은데, 이 때 효율적으로 사용하실 수 있는 도구입니다. 위 그림은 자막 내에서 "호모"라는 단어를 찾아본 것입니다. 검색 결과를 클릭하면 해당 장면의 스냅샷과 함께 자막을 보실 수 있습니다. 초록색으로 크게 보이는 버튼을 누르시면 해당 장면부터 재생을 할 수도 있습니다.

일단은 가장 기본적인 기능만 구현되어 있는데, 자막 검색 관련해서 추가적인 아이디어 있으면 알려주세요.

까멜레오 오픈소스 준비.

Posted 2008. 4. 10. 15:51
제가 일하는 노매드커넥션에서 1년간 준비해오던 까멜레오 프로젝트를 이번주에 오픈소스로 릴리즈하기 위해 지금 열심히 다듬고 있는 중입니다. 원래 계획은 이번주 금요일인데, 지금 문서화 작업 정도에 따라서 토요일이나 일요일 정도로 연기될 수도 있을 것 같습니다.

블로그를 통해 몇 번 소개드린 적이 있는데 까멜레오는 미디어 어플리케이션을 쉽게 만들 수 있는 미디어 프레임워크입니다. 물론 일반 사용자에게는 까멜레오 미디어 플레이어를 제공하기도 하지만, 오픈 소스 까멜레오는 미디어 플레이어 보다는 프레임워크에 가깝습니다.

오픈소스 까멜레오의 모토는 "Your Custom Player"입니다. 까멜레오는 단순히 미디어 재생을 넘어서 멀티미디어를 활용한 다양한 어플리케이션을 쉽게 만들 수 있게 프레임워크를 제공합니다. 까멜레오는 여러가지 방식으로 개인화할 수 있는 데 현재 크게는 1) 위젯과 2) 채널을 통해서 나만의 미디어 플레이어를 만들 수 있도록 하고 있습니다.

사용자 삽입 이미지

위 스냅샷은 위젯들을 고를 수 있는 화면입니다. 비디오 위젯은 동영상을 보면서 즐길 수 있는 간단한 어플리케이션으로 생각하시면 됩니다. 까멜레오는 일반 개발자들이 이런 동영상 위젯을 쉽게 작성할 수 있는 플랫폼 역할을 한다고 생각하시면 됩니다.

예를 들어 다음 스냅샷처럼 돋보기 위젯은 화면의 일부 영역을 확대할 수 있습니다. 미디어 플레이어에 일부 장면을 확대하는 기능을 집어 넣기 위해 미디어 플레이어를 전부 다 만들 수는 없는 노릇입니다. 까멜레오를 활용하면 기본 인프라는 그대로 활용하고 내가 원하는 기능만 플러그인 형태로 쉽게 끼워넣을 수 있습니다.

사용자 삽입 이미지


채널은 미디어 콘텐트를 다운로드 혹은 재생할 수 있는 유통 경로를 말합니다. 주스트(Joost), 바벨검(Babelgum), 미로(Miro) 등 요즘 미디어 플레이어는 전통적인 동영상 재생 기능과 콘텐트 다운로드 기능을 합친 것이 특징입니다. 까멜레오는 채널 개념을 만들고 개발자들이 자신이 보고 싶은 채널(P2P, UCC 등)을 쉽게 추가할 수 있게 하는 것이 특징입니다.어차피 동영상 재생 기능 및 기본적인 기능은 똑같은데 채널 하나 추가하려고 새로운 미디어 플레이어를 만들어내는 수고를 줄이는 것이 목적입니다.

사용자 삽입 이미지


까멜레오를 확장하는 구체적인 방법이나 API는 오픈소스와 더불어 공개할 예정입니다. 지금 열심히 문서 작업 중에 있으니 나만의 미디어 플레이어를 만들어서 친구들에게 배포하고 싶으신 분들은 관심 가지고 지켜봐주시면 좋을 듯 합니다.


« PREV : 1 : ··· : 11 : 12 : 13 : 14 : 15 : 16 : 17 : ··· : 82 : NEXT »