맨위로가기

GStreamer

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

GStreamer는 1999년 Erik Walthinsen에 의해 시작된 멀티미디어 프레임워크이다. 플러그인 아키텍처를 기반으로 하며, 다양한 코덱, 컨테이너 형식, 장치 드라이버 및 효과를 지원한다. 2005년 12월 0.10.0 버전을 시작으로 API/ABI 호환성을 유지하며 0.10.x 시리즈가 출시되었고, 2012년 9월에는 1.0 버전이 출시되어 DSP, GPU 가속, 동적 파이프라인 등 다양한 기능을 개선했다. GStreamer는 C 언어로 작성되었으며, Go, Python, Rust 등 다양한 언어에 대한 바인딩을 제공한다. 그놈 데스크톱 환경에서 기본적으로 사용되며, 다양한 운영 체제와 임베디드 기기에서 작동한다.

더 읽어볼만한 페이지

  • 자유 멀티미디어 소프트웨어 - 아이스캐스트
    아이스캐스트는 HTTP를 통해 Opus나 Vorbis 오디오, WebM이나 Theora 비디오를 스트리밍하고 SHOUTcast 프로토콜을 통해 MP3, AAC, NSV를 스트리밍할 수 있는 자유-오픈 소스 스트리밍 미디어 서버이다.
  • 자유 멀티미디어 소프트웨어 - VirtualDubMod
    VirtualDubMod는 VirtualDub의 포크들을 병합한 소프트웨어로, 마트료시카, OGM, MPEG-2 형식을 지원하지만, 2005년부터 개발이 중단되었고 예약된 비디오 캡처 기능은 제공하지 않는다.
  • 멀티미디어 프레임워크 - 퀵타임
    퀵타임은 1991년 애플에서 처음 출시된 멀티미디어 프레임워크로, 다양한 기능 업데이트를 거치며 발전했으나 애플의 소극적인 지원으로 쇠퇴하였고, 비디오 및 오디오 트랜스코딩, 코덱 지원 등의 특징을 가지며 퀵타임 플레이어를 통해 다양한 파일 형식을 재생할 수 있도록 지원했으나, 2016년 4월 윈도우 버전 지원이 중단되었다.
  • 멀티미디어 프레임워크 - 다이렉트쇼
    DirectShow는 마이크로소프트에서 개발한 윈도우 기반 멀티미디어 프레임워크이자 API로, 필터 그래프를 통해 비디오 재생, 오디오 녹음, 편집, 인코딩 등 다양한 작업을 처리하며, 뛰어난 코덱 확장성을 가지지만 복잡한 구조와 코덱 충돌 문제가 있다.
  • 그놈 - 자바 데스크톱 시스템
  • 그놈 - 그놈 셸
    그놈 셸은 그놈 데스크톱 환경의 그래픽 셸로, Mutter를 기반으로 하며 JavaScript로 작성된 플러그인 형태로 구성되어 다양한 그래픽 요소와 사용자 인터페이스를 제공하고, 확장 기능을 통해 기능을 변경할 수 있다.
GStreamer - [IT 관련 정보]에 관한 문서
기본 정보
GStreamer 로고
GStreamer 로고
종류멀티미디어 프레임워크
개발자GStreamer 팀
출시일2001년 1월 11일
프로그래밍 언어C
운영체제크로스 플랫폼
라이선스LGPL-2.1-or-later
웹사이트GStreamer 공식 웹사이트

2. 역사 및 개발

1999년 에릭 월틴센(Erik Walthinsen)은 GStreamer 프로젝트를 설립했다. 오리건 대학원 대학교의 연구 프로젝트에서 많은 핵심 아이디어가 나왔으며,[19] Wim Taymans는 곧 프로젝트에 참여하여 시스템을 여러 면에서 확장했다. 전 세계 많은 사람들이 다양한 면에서 기여했으며, 임베디드 리눅스 회사인 RidgeRun에서 일하던 브록 A. 프레이저(Brock A. Frazier)가 로고를 디자인했다. RidgeRun은 에릭 월틴센을 고용하여 소형 기기에 GStreamer를 통합하는 방법을 개발하도록 지원하면서 GStreamer의 첫 번째 스폰서가 되었다.

GStreamer 기술은 그놈 데스크톱 환경에 기본 포함되어 있으며, GTK+ 응용 프로그램, Chameleo 미디어 플랫폼, 포논 미디어 프레임워크, 송버드 미디어 플레이어 등 다양한 프로젝트에서 사용된다. Palm Pre[32], 노키아 770, N800, N810, N900마에모 운영 체제를 사용하는 임베디드 기기에서도 동작한다.

GStreamer는 크로스 플랫폼을 지원하여 리눅스 (x86, PowerPC, ARM), 솔라리스 (인텔, SPARC), 오픈솔라리스, FreeBSD, NetBSD, OS X, 마이크로소프트 윈도우, OS/400 등 다양한 운영 체제에서 작동한다. 파이썬, Vala, C++, , GNU Guile, 루비 등 다양한 프로그래밍 언어를 위한 바인딩을 제공하며, 라이선스는 GNU LGPL이다.

2. 1. 초기 역사

1999년 에릭 월틴센(Erik Walthinsen)은 GStreamer 프로젝트를 시작했다. 핵심 설계 아이디어의 많은 부분은 오리건 대학원 연구소의 연구 프로젝트에서 비롯되었다.[19] Wim Taymans는 곧 이 프로젝트에 합류하여 시스템의 여러 측면을 크게 확장했다. 이후 많은 소프트웨어 개발자들이 기여했다.

임베디드 리눅스 회사인 RidgeRun은 GStreamer의 첫 번째 상업적 후원사였는데, 에릭 월틴센을 고용하여 GStreamer를 소형 기기(휴대폰급)에 내장하는 방법을 개발하도록 하였다. RidgeRun의 직원 브록 A. 프레이저(Brock A. Frazier)는 GStreamer 로고를 디자인했다. 그러나 RidgeRun은 이후 재정적 어려움으로 에릭 월틴센을 포함한 직원을 해고해야 했다. GStreamer의 개발 진척에는 큰 영향이 없었다.

2. 2. 0.10 시리즈

2004년 Fluendo라는 회사가 설립되어 Flumotion이라는 스트리밍 서버를 만들고, GStreamer를 위한 멀티미디어 솔루션을 제공하고자 했다.[21] 이 회사는 Wim Taymans를 포함한 핵심 개발자들을 고용했고, Nokia 및 Intel 등의 지원을 받아 GStreamer를 전문적인 수준으로 끌어올렸다.

Wim Taymans의 지휘 아래 GStreamer의 핵심이 재설계되었고, 2005년 12월에 첫 번째 릴리스(0.10.0)가 출시되면서 현재의 0.10.x 시리즈가 시작되었다.[21] 이후 API 및 ABI 호환성을 유지해왔다.

안정적인 코어를 갖춘 GStreamer는 2006년에 인기를 얻었으며, 토템, 리듬박스 및 밴시를 포함한 미디어 플레이어에서 사용되었다. 또한 Nokia, Motorola, Texas Instruments, Freescale, Tandberg, Intel과 같은 기업에서도 채택되었다.

2. 3. 1.x 시리즈

GStreamer 1.0은 2012년 9월 24일에 출시되었다.[23] 1.x 시리즈는 GStreamer 0.10과 병렬 설치가 가능하며, 0.10 시리즈보다 많은 아키텍처적 이점을 제공한다.[24]

GStreamer 1.0의 주요 개선 사항은 다음과 같다.

  • 임베디드 프로세서 지원, 낮은 전력 소비, 특수 하드웨어 장치(DSP)로 작업 오프로딩
  • GPU를 사용한 하드웨어 가속 비디오 디코딩/인코딩
  • 제로 카피 메모리 관리 (CPU와 GPU 간의 불필요한 왕복 방지)를 통한 성능 향상 및 전력 소비 감소
  • 동적 파이프라인
  • API 및 코드 정리


1.x 시리즈는 새로운 릴리스 버전 관리 체계를 사용한다.[25] 모든 1.x.y 버전은 -1.0 API 버전 접미사를 가지며 안정적인 API/ABI를 갖는다. API/ABI는 새로운 주 릴리스 시리즈(예: 2.x)에 의해서만 변경될 수 있지만, 현재 2.0 릴리스 시리즈에 대한 계획은 없다. 각 릴리스의 용도는 다음과 같다.

  • 1.0.0, 1.0.1, 1.0.2, 1.0.3... 안정적인 릴리스 및 후속 버그 수정 릴리스
  • 1.1.0, 1.1.1, 1.1.2, 1.1.3... 사전 릴리스, 1.2.0으로 이어지는 개발 버전
  • 1.2.0, 1.2.1, 1.2.2, 1.2.3... 안정적인 릴리스 및 후속 버그 수정 릴리스
  • 1.3.0...
  • 1.4.0...
  • 등.


2013년 3월, GStreamer 프로젝트 유지 관리자는 0.10 시리즈가 더 이상 유지 관리되지 않는다고 발표했다.[26]

1.2 버전은 DASH 적응 스트리밍, JPEG 2000 이미지, VP9 및 Daala 비디오, WebP에 대한 디코딩 전용 지원을 추가했다.

버전 1.14는 2018년 3월 19일에 출시되었으며,[27] WebRTC, AV1, Nvidia NVDEC, 및 Secure Reliable Transport에 대한 지원을 추가했다.

버전 1.22는 2023년 1월 23일에 출시되어[28] AV1에 대한 향상된 지원을 추가했으며, 적응형 비트 전송률 스트리밍을 위한 HLS, DASH 및 Microsoft Smooth Streaming에 대한 지원을 추가했다.

3. 소프트웨어 구조

GStreamer는 C 프로그래밍 언어로 작성되었으며, 타입 시스템은 GObject와 GLib 2.0 객체 모델을 기반으로 한다. 그놈 데스크톱 환경은 GStreamer 기술의 주된 사용자이며, 그놈 버전 2.2부터 GStreamer를 기본 포함하고 있다.[32] GTK+ 응용 프로그램들이 이 기술을 많이 사용하고 있으며, Chameleo 미디어 플랫폼, 포논 미디어 프레임워크, 송버드 미디어 플레이어와 같은 프로젝트들도 이 기술을 사용하거나 지원한다.

GStreamer는 Palm Pre, 노키아 770, N800, N810, N900 인터넷 태블릿과 같이 마에모 운영 체제를 사용하는 임베디드 기기에서도 동작한다.[32] 크로스 플랫폼을 지원하여, 리눅스 (x86, PowerPC, ARM), 솔라리스 (인텔, SPARC), 오픈솔라리스, FreeBSD, NetBSD, OS X, 마이크로소프트 윈도우, OS/400에서 작동하며, 파이썬, Vala, C++, , GNU Guile, 루비와 같은 프로그래밍 언어를 위한 바인딩을 제공한다.[32]

3. 1. 개요

GStreamer 개요


GStreamer는 파이프라인이다.


GStreamer는 여러 개의 처리 "요소"를 "파이프라인"으로 연결하여 미디어를 처리한다. 각 요소는 플러그인에 의해 제공된다. 요소는 "빈"으로 그룹화할 수 있으며, 이는 다시 집계되어 계층적 그래프를 형성한다. 이는 필터 그래프의 한 예이다.

요소는 "패드"를 통해 통신한다. 한 요소의 "소스 패드"는 다른 요소의 "싱크 패드"에 연결될 수 있다. 파이프라인이 "재생" 상태일 때 데이터 "버퍼"는 소스 패드에서 싱크 패드로 흐른다. 패드는 "기능"을 사용하여 전송될 데이터 종류를 협상한다.

오른쪽의 다이어그램은 GStreamer를 사용하여 MP3 파일을 재생하는 것을 예시로 보여준다. 파일 소스는 컴퓨터의 하드 드라이브에서 MP3 파일을 읽어 MP3 디코더로 보낸다. 디코더는 파일 데이터를 디코딩하여 PCM 샘플로 변환한 다음 사운드 드라이버로 전달한다. 사운드 드라이버는 PCM 사운드 샘플을 컴퓨터의 스피커로 보낸다.

3. 2. 플러그인

GStreamer는 플러그인 아키텍처를 사용하여 기능을 확장하며, 대부분의 기능은 공유 라이브러리 형태로 구현된다.[7] GStreamer는 플러그인을 등록하고 로드하는 기능과 기본 클래스 형태로 모든 클래스의 기본 기능을 제공한다. 플러그인 라이브러리는 다양한 코덱, 컨테이너 포맷, 장치 드라이버 및 효과를 지원하기 위해 동적으로 로드된다.

플러그인은 처음 필요할 때 반자동으로 설치할 수 있다. 배포판은 기능 설명을 패키지 이름으로 변환하는 백엔드를 등록하여 이를 지원한다.

0.9 버전부터 플러그인은 세 가지 세트로 그룹화되어 제공된다 (영화 ''석양의 무법자''에서 이름을 따옴).[8]

플러그인 세트 이름설명
GoodLGPL 라이선스 하에 고품질인 "good" 세트의 GStreamer 플러그인을 포함한다.[9]
Bad수준 미달인 플러그인 세트로, 좋은 코드 검토, 문서, 테스트, 유지 관리자 또는 광범위한 사용 등이 부족할 수 있다.[10]
Ugly배포 문제를 일으킬 수 있는 고품질 플러그인 세트이다.[11]



개별 배포판은 이러한 플러그인을 더 세분화할 수 있다. 예를 들어 Ubuntu는 "bad" 및 "ugly" 세트를 "Universe" 또는 "Multiverse" 구성 요소로 그룹화한다.

또한 지원되는 미디어 형식의 수를 확장하는 '''GStreamer FFmpeg 플러그인'''(역사적인 이유로 ''gst-libav''라고 함[12])이 있다.

3. 2. 1. 비디오 가속

퓨어비디오(PureVideo), UVD(Unified Video Decoder), 퀵싱크 비디오(QuickSync Video), TI 두카티(TI Ducati) 등과 같이 비디오 코덱 디코딩 계산을 수행할 수 있는 다양한 SIP 블록이 있다.[32] 이러한 기능은 장치 드라이버에서 지원해야 하며, 장치 드라이버는 VDPAU, VAAPI, 분산 코덱 엔진(Distributed Codec Engine) 또는 DXVA와 같은 인터페이스를 제공하여 응용 프로그램이 하드웨어에 접근하여 계산을 오프로드할 수 있도록 한다.

  • OpenMAX IL 래퍼 플러그인 gst-omx영어를 통해 GStreamer와 함께 비디오 코딩 엔진(Video Coding Engine)을 사용할 수 있다.[13] 이는 라즈베리 파이에서 가능하다.[14]
  • 일부 텍사스 인스트루먼트(Texas Instruments) SoC에 존재하는 SIP 코어는 GStreamer를 통해 액세스할 수 있다. gst-dmai영어, gst-openmax영어, gst-dsp영어.[15]
  • VDPAU 및 VAAPI는 2010년부터 GNOME 비디오 >= 2.28.0 및 GStreamer >= 0.10.26에서 지원된다.[16]
  • 브로드컴 크리스탈 HD(Broadcom Crystal HD)가 지원된다.[17]

3. 2. 2. 미디어 포맷

GStreamer는 Good, Bad, Ugly 플러그인을 통해 다양한 파일 형식, 프로토콜, 멀티미디어 코덱을 지원한다. 여기에는 MPEG-1, MPEG-2, MPEG-4, H.261, H.263, H.264, RealVideo, MP3, WMV 등 100개 이상의 압축 형식에 대한 지원이 포함되며, ''gst-libav'' 플러그인을 통해 제공된다.[18]

3. 3. 언어 바인딩

그놈 데스크톱 환경을 주 사용자로 하는 GStreamer는 파이썬, Vala, C++, Perl, GNU Guile, Ruby 등 다양한 프로그래밍 언어를 위한 바인딩을 제공한다.[32] 한 프로그래밍 언어로 작성된 라이브러리는 바인딩이 작성되면 다른 언어에서도 사용할 수 있다. GStreamer는 Go, Python, Rust, Vala, C++, Perl, GNU Guile, C#, Ruby와 같은 다양한 언어에 대한 바인딩을 제공한다.

4. 배포 및 채택

그놈 데스크톱 환경은 그놈 버전 2.2부터 GStreamer를 기본 포함하고 있으며, 그놈과 GTK+ 응용 프로그램들이 이 기술을 많이 사용하고 있다. Chameleo 미디어 플랫폼, 포논 미디어 프레임워크, 송버드 미디어 플레이어와 같은 다른 프로젝트들 또한 이 기술을 사용하거나 지원한다.[3]

GStreamer는 Jolla 폰, 팜 프리,[4] 타이젠 및 노키아 770, N800, N810, N900, N9 인터넷 태블릿과 같은 임베디드 장치에서도 운영되며, 이는 마에모 운영 체제를 실행한다.[32]

GStreamer 프로젝트는 소스 코드 릴리스 외에도 안드로이드, iOS, OSX 및 윈도우용 바이너리 빌드를 제공한다.[5]

LIGO 연구소는 중력파 데이터를 시뮬레이션하고 분석하기 위해 GStreamer를 사용한다. GStreamer 인터페이스는 GstLAL이라고 불린다.[6]

참조

[1] 간행물 Ohloh Analysis Summary Ohloh 2016-11-06
[2] 웹사이트 What are the exact licensing terms for GStreamer and its plugins? https://gstreamer.fr[...] 2021-06-07
[3] 웹사이트 Igalia Multimedia https://www.igalia.c[...] 2021-09-01
[4] 웹사이트 webOS and GStreamer http://www.weboshelp[...] webOShelp 2009-07-25
[5] 웹사이트 GStreamer: Download https://gstreamer.fr[...] 2015-05-15
[6] 웹사이트 GstLAL Project Page https://wiki.ligo.or[...] 2019-05-06
[7] 간행물 Overview of the modules https://gstreamer.fr[...] Gstreamer.freedesktop.org 2012-02-08
[8] 간행물 GStreamer 0.9 development series - Hung by a Thread https://gstreamer.fr[...] Gstreamer.freedesktop.org 2013-02-24
[9] 웹사이트 GStreamer Good Plug-ins https://gstreamer.fr[...] 2019-02-05
[10] 웹사이트 GStreamer Bad Plug-ins https://gstreamer.fr[...] 2019-02-05
[11] 웹사이트 GStreamer Ugly Plug-ins https://gstreamer.fr[...] 2019-02-05
[12] 웹사이트 subprojects/gst-libav/README.md · 47ac79d7b8cc078f4890d0ce21f47e1c1af2c736 · GStreamer / gstreamer · GitLab https://gitlab.freed[...] 2022-07-12
[13] 웹사이트 GStreamer OpenMAX IL wrapper plugin https://gstreamer.fr[...] 2017-07-21
[14] 웹사이트 Gstreamer 1.0 for raspbian https://www.raspberr[...] 2017-07-21
[15] 웹사이트 GStreamer Plug-ins for TI hardware https://processors.w[...] 2017-07-21
[16] 웹사이트 Fluendo Codec Pack Release 11 bring VDPAU and VAAPI support http://eu.fluendo.co[...] 2010-03-25
[17] 웹사이트 Debian - Details of package gstreamer0.10-crystalhd in wheezy https://packages.deb[...] 2017-07-21
[18] 웹사이트 subprojects/gst-libav/ext/libav/gstavcodecmap.c · 47ac79d7b8cc078f4890d0ce21f47e1c1af2c736 · GStreamer / gstreamer · GitLab https://gitlab.freed[...] 2022-01-16
[19] 웹사이트 GStreamer: Past, present, and future https://lwn.net/Arti[...] 2022-05-15
[20] 웹사이트 GStreamer "Slipstream" 0.1.0 released https://sourceforge.[...] 2010-11-03
[21] 웹사이트 GStreamer 0.10.0 stable release - Announcement of the first release in 0.10 stable series https://gstreamer.fr[...] 2017-07-21
[22] 웹사이트 GStreamer documentation http://docs.gstreame[...] 2017-07-21
[23] 웹사이트 GStreamer 1.0 released https://gstreamer.fr[...] 2017-07-21
[24] 웹사이트 GStreamer 1.0 and 0.10 https://lwn.net/Arti[...] 2017-07-21
[25] 웹사이트 ReleasePlanning2013 - gstreamer Wiki http://gstreamer.fre[...] 2013-09-16
[26] 웹사이트 GStreamer 0.10 no longer maintained https://lists.freede[...] 2017-07-21
[27] 웹사이트 GStreamer 1.14 release notes https://gstreamer.fr[...] 2018-09-08
[28] 웹사이트 GStreamer 1.22 release notes https://gstreamer.fr[...] 2023-05-18
[29] 웹사이트 GStreamer: features https://gstreamer.fr[...] 2023-04-08
[30] 웹사이트 GStreamerとは|産業用UVCカメラのすすめ|株式会社アルゴ https://www.argocorp[...] 2023-04-08
[31] 웹인용 Ohloh Analysis Summary – GStreamer http://www.ohloh.net[...] Ohloh 2010-07-22
[32] 웹인용 보관된 사본 http://www.weboshelp[...] 2009-07-25



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com