Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

GStreamer

From Wikipedia, the free encyclopedia
Multimedia framework
GStreamer
A simple pipeline withgst-launch
DeveloperGStreamer Team
Initial release11 January 2001; 25 years ago (2001-01-11)[1]
Stable release
1.28.0[2] Edit this on Wikidata / 28 January 2026
Written inC[3]
Operating systemBSDs,OpenSolaris,Linux,Android,macOS,iOS,Windows,OS/400
TypeMultimedia framework
LicenseLGPL-2.1-or-later[4]
Websitegstreamer.freedesktop.org
Repository

GStreamer is apipeline-basedmultimedia framework that links together a wide variety of media processing systems to complete complex workflows. For instance, GStreamer can be used to build a system that reads files in one format, processes them, and exports them in another. The formats and processes can be changed in a plug and play fashion.

GStreamer supports a wide variety of media-handling components, including simpleaudio playback, audio and video playback,recording,streaming and editing. The pipeline design serves as a base to create many types ofmultimedia applications such asvideo editors,transcoders, streaming media broadcasters andmedia players.

It is designed to work on a variety of operating systems, e.g. theBSDs,OpenSolaris,Linux,Android,macOS,iOS,Windows,OS/400.

GStreamer isfree and open-source software subject to the terms of theLGPL-2.1-or-later[4] and is being hosted atfreedesktop.org.

Distribution and adoption

[edit]

TheGNOME desktop environment, a heavy user of GStreamer, has included GStreamer since GNOME version 2.2 and encourages GNOME andGTK applications to use it. Other projects also use or support it, such as thePhonon media framework and theSongbird media player. It is also used in theWebKitbrowser engine.[5]

GStreamer also operates in embedded devices like theJolla Phone, thePalm Pre,[6]Tizen and theNokia 770,N800,N810,N900 andN9 Internet Tablets running theMaemo operating system.

In addition to source code releases, the GStreamer project provides binary builds for Android, iOS, OSX and Windows.[7]

TheLIGO Laboratory make use of GStreamer to simulate and analyze gravitational wave data. The GStreamer interface is called GstLAL.[8]

Software architecture

[edit]
Overview
GStreamer core with three different types of plugins
GStreamer is aPipeline.

GStreamer is written in theC programming language with thetype system based onGObject and the GLib 2.0 object model.

Language bindings

[edit]

A library written in one programming language may be used in another language ifbindings are written; GStreamer has a range of bindings for various languages such asGo,Python,Rust,Vala,C++,Perl,GNU Guile,C# andRuby.

Overview

[edit]

GStreamer processes media by connecting a number of processingelements into apipeline. Each element is provided by aplug-in. Elements can be grouped intobins, which can be further aggregated, thus forming a hierarchical graph. This is an example of afilter graph.

Elements communicate by means ofpads. Asource pad on one element can be connected to asink pad on another. When the pipeline is in theplaying state, databuffers flow from the source pad to the sink pad. Pads negotiate the kind of data that will be sent usingcapabilities.

The diagram to the right could exemplify playing anMP3 file using GStreamer. The file source reads an MP3 file from a computer's hard-drive and sends it to the MP3 decoder. The decoder decodes the file data and converts it intoPCM samples which then pass to the sound-driver. The sound-driver sends the PCM sound samples to the computer's speakers.

Plug-ins

[edit]

GStreamer uses aplug-in architecture which makes the most of GStreamer's functionality implemented asshared libraries.[9] GStreamer's base functionality contains functions for registering and loading plug-ins and for providing the fundamentals of all classes in the form ofbase classes. Plug-in libraries get dynamically loaded to support a wide spectrum ofcodecs,container formats,input/output drivers and effects.

Plug-ins can be installed semi-automatically when they are first needed. For that purpose distributions can register a backend that resolves feature-descriptions to package-names.

Since version 0.9, the plug-ins come grouped into three sets (named after the filmThe Good, the Bad and the Ugly).[10]

Plug-in set nameDescription
GoodThis package contains the GStreamer plug-ins from the "good" set, a set of high quality plug-ins under the LGPL license.[11]
BadGStreamer Bad Plug-ins comprises a set of plug-ins not up-to-par compared to the rest. They might closely approach good-quality plug-ins, but they lack something: perhaps a goodcode review, some documentation, a set of tests, a real live maintainer, or some actual wide use.[12]
UglyThis package contains plug-ins from the "ugly" set, a set of good-quality plug-ins that might pose distribution problems.[13]

Individual distributions may further sub-classify these plug-ins: for exampleUbuntu groups the "bad" and "ugly" sets into the "Universe" or the"Multiverse" components.

In addition, there is aGStreamer FFmpeg plug-in (calledgst-libav for historic reasons[14]) that extends the number of supported media formats.

Video acceleration

[edit]
Through special plugins provided by Texas Instruments, GStreamer makes use of hardware acceleration provided by e.g.Texas Instruments DaVinci.

There are variousSIP blocks that can do the computations to decode certain video codecs, such asPureVideo,UVD,QuickSync Video,TI Ducati and more. Such needs to be supported by thedevice driver, which in turn provides one or multipleinterfaces, likeVDPAU,VAAPI,Distributed Codec Engine orDXVA to end-user software like MPlayer to access this hardware and offload computation to it.

Media formats

[edit]

The Good, Bad and Ugly GStreamer plugins mentioned earlier provide, alongside processing elements/filters of all kinds, support for a wide variety of file formats, protocols and multimedia codecs. In addition to those, support for more than a hundred compression formats (includingMPEG-1,MPEG-2,MPEG-4,H.261,H.263,H.264,RealVideo,MP3,WMV, etc.[20]) is transparently provided through thegst-libav plug-in.

History and development

[edit]

Early days

[edit]

Erik Walthinsen founded the GStreamer project in 1999. Many of its core design ideas came from a research project at theOregon Graduate Institute.[21]Wim Taymans joined the project soon thereafter and greatly expanded on many aspects of the system. Many other software developers have contributed since then.

The first major release was 0.1.0 which was announced on 11 January 2001.[1] Not long after, GStreamer picked up its first commercial backer. Towards the end of January 2001, they hired Erik Walthinsen to develop methods for embedding GStreamer in smaller (cell phone-class) devices. Another RidgeRun employee, Brock A. Frazier, designed the GStreamer logo. RidgeRun later struggled financially and had to lay off its staff, including Erik Walthinsen. GStreamer progress was mostly unaffected.

The project released a series of major releases with 0.2.0 coming out in July 2001, 0.4.0 in September 2002, and 0.8.0 in March 2004. During that period the project also changed its versioning strategy and while the first releases were simply new versions, later on the middle number started signifying release series. This meant the project did release a string of 0.6.x and 0.8.x releases which was meant to staybinary compatible within those release series. Erik Walthinsen more or less left GStreamer development behind during this time, focusing on other ventures.

All release series, the project face difficulties. Every series is not very popular in the Linux community mostly because of stability issues and a serious lack of features compared to competing projects likeXine,MPlayer, andVLC. The project also suffers a lack of leadership as Wim Taymans, the project lead since Erik Walthinsen had left, had largely stopped participating.

The 0.10 series

[edit]

In 2004, a new company was founded,Fluendo, which wanted to use GStreamer to write a streaming serverFlumotion and also provide multimedia solutions for GStreamer. During this time, Fluendo hired most of the core developers including Wim Taymans and attracted the support of companies such asNokia andIntel to bring GStreamer to a professional level and drive community adoption.

With Wim Taymans back at the helm, the core of GStreamer was redesigned and became what is the current 0.10.x series, which had its first release (0.10.0) in December 2005.[22] It has maintainedAPI andABI compatibility since.

With a new stable core in place, GStreamer gained in popularity in 2006, being used by media players includingTotem,Rhythmbox andBanshee with many more to follow. It was also adopted by corporations such asNokia,Motorola,Texas Instruments,Freescale,Tandberg, andIntel.

In 2007, most of the core GStreamer developers left Fluendo, including GStreamer maintainer Wim Taymans who went on to co-foundCollabora Multimedia together with other GStreamer veterans, while others joinedSun Microsystems,Oblong Industries, andSongbird.

Between June 2012 and August 2014, GStreamer 0.10 was also distributed byCollabora andFluendo as a multiplatformSDK,[23] on the third-partygstreamer.com website (rather thangstreamer.freedesktop.org for the upstream community project). The goal was to provide application developers with a SDK that would be functionally identical on Windows,Mac OS X, iOS, and Android. The SDK initiative aimed to facilitate the commercial adoption of the GStreamer project, as it provided a standardized entry point to developing multimedia applications with GStreamer, without needing to build the entire platform by oneself. Users of the SDK also benefited fromdocumentationArchived 2012-06-16 at theWayback Machine, tutorials and instructions specific to that SDK.

The 1.x series

[edit]

GStreamer 1.0 was released on September 24, 2012.[24] The 1.x series is parallel installable to GStreamer 0.10 to ease the transition, and provides many architectural advantages over the 0.10 series.[25] Generally speaking, GStreamer 1.0 brought significant improvements for:

  • Embedded processors support, lower power consumption, offloading work to specialized hardware units (such asDSPs)
  • Hardware accelerated video decoding/encoding usingGPUs
  • Zero-copy memory management (avoiding unnecessary roundtrips between the CPU and GPU) for better performance and lower power consumption
  • Dynamic pipelines
  • API and code cleanups

Beyond the technical improvements, the 1.x series is also defined by a new release versioning scheme. As the GStreamer roadmap explains,[26] all 1.x.y versions carry a -1.0 API version suffix and have a stable API/ABI. The API/ABI can only be broken by a new major release series (i.e.: 2.x); however, there are currently no plans for a 2.0 release series. Until then, the new version numbering scheme can be used to predict the intended use of each release. The roadmap cites some examples:

  • 1.0.0, 1.0.1, 1.0.2, 1.0.3... stable release and follow-up bug-fix releases
  • 1.1.0, 1.1.1, 1.1.2, 1.1.3... pre-releases, development version leading up to 1.2.0
  • 1.2.0, 1.2.1, 1.2.2, 1.2.3... stable release and follow-up bug-fix releases
  • 1.3.0...
  • 1.4.0...
  • etc.

In March 2013, the GStreamer project maintainers issued a statement[27] to clarify that the 0.10 series is no longer maintained. The statement reasserted the GStreamer project's willingness to help application and plugin developers migrate to the new technology, and hinted that those for whom switching to the 1.x series was still considered impossible could seek assistance from various consulting companies.

1.2 added support forDASH adaptive streaming,JPEG 2000 images,VP9 andDaala video, and decoding-only support forWebP.

Version 1.14 was released on March 19, 2018,[28] adding support forWebRTC,AV1,Nvidia NVDEC, andSecure Reliable Transport, among other changes.

Version 1.22 was released on January 23, 2023,[29] adding improved support forAV1, in addition to support forHLS,DASH andMicrosoft Smooth Streaming for adaptive bitrate streaming.

See also

[edit]

References

[edit]
  1. ^ab"GStreamer "Slipstream" 0.1.0 released". 11 January 2001.Archived from the original on 11 November 2012. Retrieved3 November 2010.
  2. ^"GStreamer 1.28.0 new major feature release". 28 January 2026. Retrieved28 January 2026.
  3. ^"GStreamer",Ohloh Analysis Summary,Ohloh,archived from the original on 2014-06-26, retrieved2016-11-06
  4. ^ab"What are the exact licensing terms for GStreamer and its plugins?".freedesktop.org.Archived from the original on 2021-06-07. Retrieved2021-06-07.
  5. ^"Igalia Multimedia".Archived from the original on 2021-09-01. Retrieved2021-09-01.
  6. ^"webOS and GStreamer". webOShelp. Archived fromthe original on 22 March 2009. Retrieved25 July 2009.
  7. ^"GStreamer: Download".gstreamer.freedesktop.org.Archived from the original on 2015-05-10. Retrieved15 May 2015.
  8. ^"GstLAL Project Page".Wiki.ligo.org.Archived from the original on 23 April 2020. Retrieved6 May 2019.
  9. ^Overview of the modules, Gstreamer.freedesktop.org,archived from the original on 25 January 2012, retrieved8 February 2012
  10. ^GStreamer 0.9 development series - Hung by a Thread, Gstreamer.freedesktop.org,archived from the original on 27 January 2013, retrieved24 February 2013
  11. ^"GStreamer Good Plug-ins".Archived from the original on 2019-02-07. Retrieved2019-02-05.
  12. ^"GStreamer Bad Plug-ins".Archived from the original on 2019-02-07. Retrieved2019-02-05.
  13. ^"GStreamer Ugly Plug-ins".Archived from the original on 2019-02-07. Retrieved2019-02-05.
  14. ^"subprojects/gst-libav/README.md · 47ac79d7b8cc078f4890d0ce21f47e1c1af2c736 · GStreamer / gstreamer · GitLab".GitLab. 24 September 2021. Retrieved2022-07-12.
  15. ^"GStreamer OpenMAX IL wrapper plugin".gstreamer.freedesktop.org.Archived from the original on 2017-07-10. Retrieved2017-07-21.
  16. ^"Gstreamer 1.0 for raspbian".GRaspberrypi.org.Archived from the original on 2017-07-10. Retrieved2017-07-21.
  17. ^"GStreamer Plug-ins for TI hardware".Processors.wiki.ti.com.Archived from the original on 2017-06-28. Retrieved2017-07-21.
  18. ^"Fluendo Codec Pack Release 11 bring VDPAU and VAAPI support". 2010-03-25. Archived fromthe original on 2014-06-24.
  19. ^Debian Webmaster."Debian - Details of package gstreamer0.10-crystalhd in wheezy".Packages.debian.org.Archived from the original on 2017-06-29. Retrieved2017-07-21.
  20. ^"subprojects/gst-libav/ext/libav/gstavcodecmap.c · 47ac79d7b8cc078f4890d0ce21f47e1c1af2c736 · GStreamer / gstreamer · GitLab".GitLab. 16 January 2022. Retrieved2022-07-12.
  21. ^Edge, Jake (26 October 2010)."GStreamer: Past, present, and future".LWN.net. Retrieved15 May 2022.
  22. ^"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. Retrieved2017-07-21.
  23. ^"GStreamer documentation".Docs.gstreamer.com.Archived from the original on 2016-10-28. Retrieved2017-07-21.
  24. ^"GStreamer 1.0 released".gstreamer.freedesktop.org.Archived from the original on 2017-07-07. Retrieved2017-07-21.
  25. ^"GStreamer 1.0 and 0.10".Lwn.net.Archived from the original on 2017-06-13. Retrieved2017-07-21.
  26. ^"ReleasePlanning2013 - gstreamer Wiki". Archived fromthe original on 2013-08-15. Retrieved2013-09-16.
  27. ^"GStreamer 0.10 no longer maintained".Lists.freedesktop.org. 11 March 2013.Archived from the original on 2017-07-10. Retrieved2017-07-21.
  28. ^"GStreamer 1.14 release notes".Archived from the original on 2018-03-20. Retrieved2018-09-08.
  29. ^"GStreamer 1.22 release notes".gstreamer.freedesktop.org. Retrieved2023-05-18.

External links

[edit]
Wikimedia Commons has media related toGStreamer.
OS components
Sound
Graphics
Other
Libraries
Frameworks
Meetings
Core
Applications
Extras
Development
Office
Graphics
Internet
Media
Games
Utilities
Components
User interface
GNOME 3
GNOME 2
GNOME Base
freedesktop.org
Community
People
Retrieved from "https://en.wikipedia.org/w/index.php?title=GStreamer&oldid=1315781381"
Categories:
Hidden categories:

[8]ページ先頭

©2009-2026 Movatter.jp