I. GStreamer 소개

GStreamer 소개 파트에서는 설명하는 기술에 관한 개괄을 알려줍니다. 

1장. GStreamer란 무엇인가?

GStreamer는 스트리밍 미디어 애플리케이션을 만들기 위한 프레임워크입니다. GStreamer의 기본적인 디자인은 오레곤 대학원의 비디오 파이프라인이란 개념과 다이렉트쇼의 몇 가지 아이디어에서 시작되었습니다.

GStreamer의 개발 프레임워크는 모든 유형의 스트리밍 애플리케이션을 개발 가능하게 해줍니다. GStreamer 프레임워크는 오디오와 비디오를 처리하기 쉽게 만들기 위해 설계되었습니다. GStreamer는 오디오나 비디오에 제한을 두지 않고, 모든 종류의 데이터 흐름도 처리할 수 있습니다. 파이프라인은 약간의 적용된 필터가 유발하는 약간의 오버헤드를 갖게 설계되었습니다. 이러한 사항들은 GStreamer를 많은 지연을 필요로 하는 고사양의 오디오 애플리케이션조차도 설계할 수 있는 좋은 프레임워크로 만들어줍니다.

GStreamer를 사용하는 가장 분명한 용도는 미디어 플레이어를 만들기 위해 사용하는 것 입니다. GStreamer는 이미 MP3, Ogg/Vorbis, MPEG-1/2, AVI, Quicktime, mod 등과 같은 다양한 포맷을 지원한는 미디어 플레이어를 만들 수 있는 여러 컴포넌트를 포함하고 있습니다. GStreamer는 다른 미디어 플레이어 보다 많은 컴포넌트를 지원합니다. 이러한 점의 가장 좋은점은 플러그인이 가능한 컴포넌트는 임의적인 파이프라인으로 믹스/매치 할 수 있고, 이러한 조합을 통해 본격적인 비디오/오디오 편집 애플리케이션을 작성할 수 있게 해줍니다.

프레임워크는 댜양한 코덱과 기능을 제공하는 플러그인을 기반으로 합니다. 플러그인은 파이프라인으로 연결/배열됩니다. 파이프라인은 데이터의 흐름을 정의합니다. 파이프라인은 GUI 에디터를 이용해 편집하여 XML파일로 저장할 수 있어, 최소한의 노력으로 파이프라인 라이브러리를 만들 수 있습니다.

GStreamer의 핵심 기능은 플러그인, 데이터 흐름, 미디어 타입 핸들링/협상을 할 수 있는 프레임워크를 제공합니다. 또한, 다양한 플러그인을 사용하여 애플리케이션을 만들 수 있는 API를 제공합니다.

구체적으로, GStreamer는 하기의 사항들을 제공합니다.

  • 멀티미디어 애플리케이션을 위한 API
  • 플러그인 아키텍처
  • 파이프라인 아키텍쳐
  • 미디어 타입 핸들링/협상을 위한 메카니즘
  • 동기화를 위한 메카니즘
  • 250개 이상의 플러그인이 제공하는 1000개 이상의 엘리먼트
  • 툴의 집합

GStreamer의 플러그인은 하기와 같이 구분됩니다.

  • 프로토콜 핸들링
  • 소스 : 오디오/비디오를 위한 (프로토콜 플러그인과 연관됨)
  • 포맷들 : 파서, 포매터, 먹서, 디먹서, 메타데이터, 자막
  • 코덱 : 코덱과 디코더
  • 필터 : 컨버터, 믹서, 효과 등
  • 싱크 : 오디오와 비디오를 위한 (프로토콜 플러그인과 연관됨)

GStreamer는 하기와 같이 패키지 되어 있습니다.

  • gstreamer : 핵심 패키지
  • gst-plugins-base : 핵심적인 본보기 엘리먼트의 집합
  • gst-plugins-good : LGPL을 따르는 양질의 플러그인 집합
  • gst-plugins-ugly : 배포 문제를 야기할 수 있는 양질의 플러그인 집합
  • gst-plugins-bad : 질이 부족한 플러그인의 집합
  • gst-libav : 디코딩과 인코딩을 위해 libav로 포장된 플러그인의 집합
  • 몇 개의 다른 패키지

본 포스트에 사용된 모든 그림의 출처는 GStreamer Application Development Manual입니다.


Posted by _유부남J군_