GStreamer
GStreamer![]() | |
![]() 심플한 파이프라인으로 gst-launch | |
개발자 | GStreamer 팀 |
---|---|
초기 릴리즈 | 2001년 1월 [1] | , 전(
안정된 릴리스 | 1.20[2](2022년 2월 , 전 [±] |
저장소 | |
기입처 | C[3] |
운영 체제 | BSD, OpenSolaris, Android, macOS, iOS, Windows, OS/400 |
유형 | 멀티미디어 프레임워크 |
면허증. | LGPL-2.1 이후[4] |
웹 사이트 | gstreamer |
GStreamer는 다양한 미디어 처리 시스템을 연결하여 복잡한 워크플로우를 완성하는 파이프라인 기반 멀티미디어 프레임워크입니다.예를 들어 GStreamer를 사용하여 파일을 한 형식으로 읽고 처리한 후 다른 형식으로 내보내는 시스템을 구축할 수 있습니다.형식과 프로세스는 플러그 앤 플레이 방식으로 변경할 수 있습니다.
GStreamer는 간단한 오디오 재생, 오디오 및 비디오 재생, 녹음, 스트리밍 및 편집 등 다양한 미디어 처리 컴포넌트를 지원합니다.파이프라인 설계는 비디오 편집기, 트랜스코더, 스트리밍 미디어 방송사 및 미디어 플레이어 등 다양한 유형의 멀티미디어 애플리케이션을 만드는 기반 역할을 합니다.
BSD, OpenSolaris, Android, macOS, iOS, Windows, OS/400 등 다양한 운영 체제에서 작동하도록 설계되었습니다.
GStreamer는 LGPL-2.1 이후의[4] 조건을 따르는 무료 오픈 소스 소프트웨어이며 freedesktop.org에서 호스팅되고 있습니다.
배포 및 채택
GNOME 데스크톱 환경은 GNOME 버전 2.2부터 GStreamer를 포함하고 있으며 GNOME 및 GTK 응용 프로그램의 사용을 권장하고 있습니다.Phononon 미디어 프레임워크 및 Songbird 미디어 플레이어와 같은 다른 프로젝트에서도 이를 사용하거나 지원합니다.웹킷 브라우저 [5]엔진에서도 사용됩니다.
또한 GStreamer는 Jolla Phone, Palm Pre,[6] Tizen 및 Maemo 운영체제를 실행하는 Nokia 770, N800, N810, N900 및 N9 인터넷 태블릿과 같은 임베디드 기기에서도 작동합니다.
GStreamer 프로젝트는 소스 코드 릴리스 외에도 Android, iOS, OSX 및 [7]Windows용 바이너리 빌드를 제공합니다.
LIGO 연구소는 GStreamer를 사용하여 중력파 데이터를 시뮬레이션하고 분석합니다.GStreamer 인터페이스는 GstLAL이라고 불립니다.[8]
소프트웨어 아키텍처

GStreamer는 GObject 및 GLib 2.0 객체 모델에 기반한 유형 시스템을 사용하여 C 프로그래밍 언어로 작성됩니다.
언어 바인딩
바인딩이 작성되면 한 프로그래밍 언어로 작성된 라이브러리를 다른 언어로 사용할 수 있습니다. GStreamer는 Go, Python, Rust, Vala, C++, Perl, GNU Guile, C# 및 Ruby와 같은 다양한 언어에 대한 바인딩 범위가 있습니다.
개요
GStreamer는 여러 처리 요소를 파이프라인에 연결하여 미디어를 처리합니다.각 요소는 플러그인에 의해 제공됩니다.요소를 빈으로 그룹화할 수 있으며, 빈을 추가로 집계하여 계층 그래프를 형성할 수 있습니다.필터 그래프의 예를 다음에 나타냅니다.
요소는 패드를 통해 통신합니다.한 소자의 소스 패드는 다른 소자의 싱크 패드에 접속할 수 있다.파이프라인이 재생 상태일 때 데이터 버퍼는 소스 패드에서 싱크 패드로 흐릅니다.패드는 기능을 사용하여 전송되는 데이터의 종류를 협상합니다.
오른쪽 그림은 GStreamer를 사용하여 MP3 파일을 재생하는 예입니다.이 파일 소스는 컴퓨터의 하드 드라이브에서 MP3 파일을 읽어 MP3 디코더로 보냅니다.디코더는 파일 데이터를 디코딩하고 이를 PCM 샘플로 변환한 다음 사운드 드라이버로 전달합니다.사운드 드라이버는 PCM 사운드 샘플을 컴퓨터의 스피커로 전송합니다.
플러그인
GStreamer는 공유 [9]라이브러리로 구현된 GStreamer의 기능을 최대한 활용하는 플러그인 아키텍처를 사용합니다.GStreamer의 기본 기능에는 플러그인을 등록 및 로드하고 모든 클래스의 기본 기능을 기본 클래스의 형태로 제공하는 기능이 포함되어 있습니다.플러그인 라이브러리는 동적으로 로드되어 광범위한 코덱, 컨테이너 형식, 입출력 드라이버 및 효과를 지원합니다.
플러그인은 처음 필요할 때 반자동으로 설치할 수 있습니다.이를 위해 디스트리뷰션에서는 기능 설명을 패키지 이름으로 해결하는 백엔드를 등록할 수 있습니다.
버전 0.9 이후 플러그인은 세 가지 세트로 분류됩니다(영화 The Good, the Bad, and the [10]Ugly의 이름을 따서 명명).
플러그인 세트 이름 | 묘사 |
---|---|
좋아요. | 이 패키지에는 LGPL [11]라이선스의 고품질 플러그인 세트인 "양호" 세트의 GStreamer 플러그인이 포함되어 있습니다. |
나빠 | GStreamer Bad Plug-ins는 다른 플러그인에 비해 최신 버전이 아닙니다.고품질의 플러그인에 근접할 수 있지만, 좋은 코드 리뷰, 문서 작성, 테스트 세트, 실제 가동 중인 유지보수, 또는 실제 광범위한 사용 [12]등 부족한 점이 있습니다. |
못생겼어 | 이 패키지에는 배포 [13]문제를 일으킬 수 있는 고품질 플러그인 세트인 "추한" 세트의 플러그인이 포함되어 있습니다. |
Ubuntu는 이러한 플러그인을 더욱 세분화할 수 있습니다.예를 들어 Ubuntu는 "bad" 및 "ugly" 세트를 "Universe" 또는 "Multiverse" 컴포넌트로 그룹화합니다.
또한 지원되는 미디어 포맷의 수를 확장하는 GStreamer FFmpeg 플러그인(이력적인[14] 이유로 gst-libav)도 있습니다.
비디오 액셀러레이션
PureVideo, UVD, QuickSync Video, TI Ducati 등 특정 비디오 코덱을 디코딩하기 위한 계산을 수행할 수 있는 다양한 SIP 블록이 있습니다.이러한 기능은 디바이스 드라이버에 의해 지원되어야 하며, 디바이스 드라이버는 VDPAU, VAAPI, Distributed Codec Engine 또는 DXVA와 같은 1개 또는 여러 인터페이스를 MPlayer와 같은 최종 사용자 소프트웨어에 제공하여 이 하드웨어에 액세스하고 계산을 오프로드합니다.
- OpenMAX IL 래퍼 플러그인을 통해 GStreamer에서 Video Coding Engine을 사용할 수 있습니다.gst-omx.[15]이것은 예를 들어 라즈베리 [16]파이에서 가능합니다.
- 일부 Texas Instruments SoC에 있는 SIP 코어는 GStreamer(gst-dmai, gst-openmax, gst-dsp)[17]를 통해서도 액세스할 수 있습니다.
- VDPAU[18] 및 VAAPI는 2010년부터 GNOME 비디오 > = 2.28.0 및 GStreamer > = 0.10.26에서 지원됩니다.
- Broadcom Crystal HD 지원[19]
미디어 형식
앞서 언급한 Good, Bad 및 Ugly GStreamer 플러그인은 모든 종류의 프로세싱 요소/필터와 함께 다양한 파일 형식, 프로토콜 및 멀티미디어 코덱을 지원합니다.또한 100개 이상의 압축 형식(MPEG-1, MPEG-2, MPEG-4, H.261, H.263, H.264, RealVideo, MP3, WMV 등)을 gst-libav 플러그인을 통해 투과적으로 지원합니다.[20]
역사와 발전
초창기
Erik Walthinsen은 1999년에 GStreamer 프로젝트를 설립했습니다.그것의 많은 핵심 디자인 아이디어는 오리건 [21]대학원의 연구 프로젝트에서 나왔다.Wim Taymans는 그 후 곧 프로젝트에 참여했고 시스템의 많은 측면에서 크게 확장했습니다.그 이후로 많은 다른 소프트웨어 개발자들이 기여해왔다.
첫 번째 메이저 릴리스는 [1]2001년 1월 11일에 발표된 0.1.0이었습니다.얼마 지나지 않아 GStreamer는 첫 광고 후원자를 영입했다.2001년 1월 말경에는 Erik Walthinsen을 고용하여 GStreamer를 소형(휴대전화급) 기기에 내장하는 방법을 개발했습니다.또 다른 RidgeRun 직원인 Brock A입니다.프레이저는 GStreamer 로고를 디자인했습니다.RidgeRun은 나중에 재정적으로 어려움을 겪었고 에릭 월신슨을 포함한 직원들을 해고해야 했다.GStreamer의 진척은 거의 영향을 받지 않았다.
이 프로젝트는 2001년 7월에 0.2.0, 2002년 9월에 0.4.0, 2004년 3월에 0.8.0으로 일련의 주요 릴리스를 출시했습니다.이 기간 동안 이 프로젝트의 버전 관리 전략도 바뀌었고, 첫 번째 릴리스는 단순히 새로운 버전이었지만, 중간 번호부터 릴리스 시리즈를 나타내기 시작했습니다.즉, 이 프로젝트는 0.6.x 및 0.8.x 릴리즈 스트링을 릴리스했습니다.이는 이들 릴리즈 시리즈 내에서 바이너리 호환성을 유지하기 위한 것입니다.Erik Walthinsen은 이 기간 동안 GStreamer 개발을 거의 미루고 다른 벤처에 주력했습니다.
모든 릴리즈 시리즈, 프로젝트는 난관에 봉착했습니다.Linux 커뮤니티에서는 Xine, MPlayer 및 VLC와 같은 경쟁 프로젝트에 비해 안정성 문제와 심각한 기능 부족 때문에 모든 시리즈가 그다지 인기가 있지는 않습니다.에릭 월틴슨이 떠난 이후 프로젝트 리더였던 윔 타이먼스가 참여를 거의 중단하면서 프로젝트 리더십도 부족해졌다.
0.10 시리즈
2004년에 새로운 회사 Fluendo가 설립되었습니다.Fluendo는 GStreamer를 사용하여 스트리밍 서버 Flumotion을 작성하고 GStreamer를 위한 멀티미디어 솔루션을 제공하고자 했습니다.이 기간 동안 Fluendo는 Wim Taymans를 포함한 대부분의 핵심 개발자를 고용하고 노키아와 인텔 등의 기업의 지원을 받아 GStreamer를 전문가 수준으로 끌어올려 커뮤니티의 채택을 촉진했습니다.
윔 타이만스가 다시 등장하면서 GStreamer의 핵심이 재설계돼 2005년 [22]12월 첫 출시(0.10.0)된 현재의 0.10.x 시리즈로 바뀌었다.이후 API와 ABI 호환성을 유지하고 있습니다.
새로운 안정적 핵심을 갖춘 GStreamer는 2006년에 인기를 얻었고, 토템, 리듬박스, 밴시와 같은 미디어 플레이어들에 의해 사용되었고, 그 외에도 더 많은 것들이 뒤따랐다.노키아, 모토로라, 텍사스 인스트루먼트, 프리스케일, 탠드버그, 인텔 등의 기업에서도 채택되었다.
2007년, GStreamer의 메인터넌스인 Wim Taymans를 포함한 대부분의 주요 GStreamer 개발자는 Fluendo를 떠났고, Wim Taymans는 다른 GStreamer 베테랑들과 함께 Collabora Multimedia를 공동 설립했으며, Sun Microsystems, Obong Industries, Songbird에 합류했습니다.
2012년 6월부터 2014년 8월까지 GStreamer 0.10은 Collabora와 Fluendo에 의해 (gstreamer가 아닌) 타사 gstreamer.com 웹사이트에서 멀티플랫폼 [23]SDK로 배포되었습니다.freedesktop.org)를 참조해 주세요.목표는 애플리케이션 개발자들에게 Windows, Mac OS X, iOS 및 Android에서 기능적으로 동일한 SDK를 제공하는 것이었습니다.SDK 이니셔티브는 전체 플랫폼을 직접 구축할 필요 없이 GStreamer를 사용하여 멀티미디어 애플리케이션을 개발할 수 있는 표준화된 시작점을 제공하므로 GStreamer 프로젝트를 상업적으로 쉽게 채택하는 것을 목표로 했습니다.SDK 사용자는 또한 Wayback Machine의 Archived 2012-06-16 문서, 해당 SDK에 고유한 튜토리얼 및 지침을 활용할 수 있습니다.
1.x 시리즈
GStreamer 1.0은 2012년 [24]9월 24일에 출시되었습니다.1.x 시리즈는 GStreamer 0.10에 병렬로 설치할 수 있어 이행을 쉽게 할 수 있으며 0.10 [25]시리즈보다 많은 아키텍처상의 이점을 제공합니다.일반적으로 GStreamer 1.0은 다음 사항을 대폭 개선했습니다.
- 임베디드 프로세서 지원, 전력 소비 절감, 특수 하드웨어 유닛(DSP 등)으로의 작업 오프로드
- GPU를 사용한 하드웨어 고속 비디오 디코딩/인코딩
- 제로 카피 메모리 관리(CPU와 GPU의 불필요한 라운드 트립 회피)로 퍼포먼스 향상과 소비전력 절감 실현
- 동적 파이프라인
- API 및 코드 청소
기술적인 개선 외에도 1.x 시리즈는 새로운 릴리스 버전 관리 방식에 의해 정의됩니다.GStreamer 로드맵에서 [26]설명한 바와 같이 모든 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 시리즈가 더 이상 유지보수가 되지 않음을 명확히 하는 성명을[27] 발표했습니다.이 성명은 애플리케이션 개발자와 플러그인 개발자가 새로운 테크놀로지로 이행할 수 있도록 지원하겠다는 GStreamer 프로젝트의 의지를 재확인하고 1.x 시리즈로의 이행이 여전히 불가능하다고 생각되는 사람들은 다양한 컨설팅 회사에 지원을 요청할 수 있음을 시사했습니다.
1.2에서는 DASH 적응 스트리밍, JPEG2000 이미지, VP9 및 Daala 비디오 및 WebP 디코딩 전용 지원이 추가되었습니다.
버전 1.14는 2018년 [28]3월 19일에 출시되었으며 WebRTC, AV1, Nvidia NVDEC 및 Secure Reliable Transport 지원이 추가되었습니다.
「 」를 참조해 주세요.
- GStreamer를 사용하는 소프트웨어 목록
- libisual
- OggConvert – 심플한 GUI 프론트 엔드
- Sound Converter – GStreamer 및 GTK 기반의 GUI 프런트 엔드 (디지털 오디오 파일 트랜스코딩용)
- Pitivi – GStreamer 기반의 비디오 에디터
레퍼런스
- ^ a b "GStreamer "Slipstream" 0.1.0 released". 11 January 2001. Archived from the original on 11 November 2012. Retrieved 3 November 2010.
- ^ "GStreamer 1.20 Release Notes". Retrieved 9 February 2022.
- ^ "GStreamer", Ohloh Analysis Summary, Ohloh, archived from the original on 2014-06-26, retrieved 2016-11-06
- ^ a b "What are the exact licensing terms for GStreamer and its plugins?". freedesktop.org. Archived from the original on 2021-06-07. Retrieved 2021-06-07.
- ^ "Igalia Multimedia". Archived from the original on 2021-09-01. Retrieved 2021-09-01.
- ^ "webOS and GStreamer". webOShelp. Archived from the original on 22 March 2009. Retrieved 25 July 2009.
- ^ "GStreamer: Download". gstreamer.freedesktop.org. Archived from the original on 2015-05-10. Retrieved 15 May 2015.
- ^ "GstLAL Project Page". Wiki.ligo.org. Archived from the original on 23 April 2020. Retrieved 6 May 2019.
- ^ Overview of the modules, Gstreamer.freedesktop.org, archived from the original on 25 January 2012, retrieved 8 February 2012
- ^ GStreamer 0.9 development series - Hung by a Thread, Gstreamer.freedesktop.org, archived from the original on 27 January 2013, retrieved 24 February 2013
- ^ "GStreamer Good Plug-ins". Archived from the original on 2019-02-07. Retrieved 2019-02-05.
- ^ "GStreamer Bad Plug-ins". Archived from the original on 2019-02-07. Retrieved 2019-02-05.
- ^ "GStreamer Ugly Plug-ins". Archived from the original on 2019-02-07. Retrieved 2019-02-05.
- ^ "subprojects/gst-libav/README.md · 47ac79d7b8cc078f4890d0ce21f47e1c1af2c736 · GStreamer / gstreamer · GitLab". GitLab. Retrieved 2022-07-12.
- ^ "GStreamer OpenMAX IL wrapper plugin". gstreamer.freedesktop.org. Archived from the original on 2017-07-10. Retrieved 2017-07-21.
- ^ "Gstreamer 1.0 for raspbian". GRaspberrypi.org. Archived from the original on 2017-07-10. Retrieved 2017-07-21.
- ^ "GStreamer Plug-ins for TI hardware". Processors.wiki.ti.com. Archived from the original on 2017-06-28. Retrieved 2017-07-21.
- ^ "Fluendo Codec Pack Release 11 bring VDPAU and VAAPI support". 2010-03-25. Archived from the original on 2014-06-24.
- ^ Debian Webmaster. "Debian - Details of package gstreamer0.10-crystalhd in wheezy". Packages.debian.org. Archived from the original on 2017-06-29. Retrieved 2017-07-21.
- ^ "subprojects/gst-libav/ext/libav/gstavcodecmap.c · 47ac79d7b8cc078f4890d0ce21f47e1c1af2c736 · GStreamer / gstreamer · GitLab". GitLab. Retrieved 2022-07-12.
- ^ Edge, Jake (26 October 2010). "GStreamer: Past, present, and future". LWN.net. Retrieved 15 May 2022.
- ^ "GStreamer 0.10.0 stable release - Announcement of the first release in 0.10 stable series". gstreamer.freedesktop.org. Archived from the original on 2017-07-07. Retrieved 2017-07-21.
- ^ "GStreamer documentation". Docs.gstreamer.com. Archived from the original on 2016-10-28. Retrieved 2017-07-21.
- ^ "GStreamer 1.0 released". gstreamer.freedesktop.org. Archived from the original on 2017-07-07. Retrieved 2017-07-21.
- ^ "GStreamer 1.0 and 0.10". Lwn.net. Archived from the original on 2017-06-13. Retrieved 2017-07-21.
- ^ "Archived copy". Archived from the original on 2013-08-15. Retrieved 2013-09-16.
{{cite web}}
: CS1 maint: 제목으로 아카이브된 복사(링크) - ^ "GStreamer 0.10 no longer maintained". Lists.freedesktop.org. Archived from the original on 2017-07-10. Retrieved 2017-07-21.
- ^ "Archived copy". Archived from the original on 2018-03-20. Retrieved 2018-09-08.
{{cite web}}
: CS1 maint: 제목으로 아카이브된 복사(링크)
외부 링크
