GStreamer is a pipeline -based multimedia 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.
39-404: GStreamer supports a wide variety of media-handling components, including simple audio playback, audio and video playback, recording , streaming and editing. The pipeline design serves as a base to create many types of multimedia applications such as video editors , transcoders , streaming media broadcasters and media players . It is designed to work on a variety of operating systems, e.g.
78-438: A .wav or .aiff file) has long been a standard across multiple platforms, but its transmission over networks is slow and expensive compared with more modern compressed formats, such as Opus and MP3. Many multimedia data streams contain both audio and video , and often some metadata that permits synchronization of audio and video. Each of these three streams may be handled by different programs, processes, or hardware; but for
117-561: A backend that resolves feature-descriptions to package-names. Since version 0.9, the plug-ins come grouped into three sets (named after the film The Good, the Bad and the Ugly ). Individual distributions may further sub-classify these plug-ins: for example Ubuntu groups the "bad" and "ugly" sets into the "Universe" or the "Multiverse" components. In addition, there is a GStreamer FFmpeg plug-in (called gst-libav for historic reasons) that extends
156-531: A lower bit rate. There are thousands of audio and video codecs, ranging in cost from free to hundreds of dollars or more. This variety of codecs can create compatibility and obsolescence issues. The impact is lessened for older formats, for which free or nearly-free codecs have existed for a long time. The older formats are often ill-suited to modern applications, however, such as playback on small portable devices. For example, raw uncompressed PCM audio (44.1 kHz, 16-bit stereo, as represented on an audio CD or in
195-531: 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: In March 2013, the GStreamer project maintainers issued a statement 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
234-612: A new stable core in place, GStreamer gained in popularity in 2006, being used by media players including Totem , Rhythmbox and Banshee with many more to follow. It was also adopted by corporations such as Nokia , Motorola , Texas Instruments , Freescale , Tandberg , and Intel . In 2007, most of the core GStreamer developers left Fluendo, including GStreamer maintainer Wim Taymans who went on to co-found Collabora Multimedia together with other GStreamer veterans, while others joined Sun Microsystems , Oblong Industries , and Songbird . Between June 2012 and August 2014, GStreamer 0.10
273-426: A number of processing elements into a pipeline . Each element is provided by a plug-in . Elements can be grouped into bins , which can be further aggregated, thus forming a hierarchical graph. This is an example of a filter graph . Elements communicate by means of pads . A source pad on one element can be connected to a sink pad on another. When the pipeline is in the playing state, data buffers flow from
312-450: A serious lack of features compared to competing projects like Xine , MPlayer , and VLC . The project also suffers a lack of leadership as Wim Taymans, the project lead since Erik Walthinsen had left, had largely stopped participating. In 2004, a new company was founded, Fluendo , which wanted to use GStreamer to write a streaming server Flumotion and also provide multimedia solutions for GStreamer. During this time, Fluendo hired most of
351-459: A sound determine its "color", its timbre . When speaking about the frequency (in singular) of a sound, it means the property that most determines its pitch . Higher pitches have higher frequency, and lower pitches are lower frequency. The frequencies an ear can hear are limited to a specific range of frequencies . The audible frequency range for humans is typically given as being between about 20 Hz and 20,000 Hz (20 kHz), though
390-560: A tendency to reduce the need for lossy codecs for some media. Many popular codecs are lossy. They reduce quality in order to maximize compression. Often, this type of compression is virtually indistinguishable from the original uncompressed sound or images, depending on the codec and the settings used. The most widely used lossy data compression technique in digital media is based on the discrete cosine transform (DCT), used in compression standards such as JPEG images, H.26x and MPEG video, and MP3 and AAC audio. Smaller data sets ease
429-417: A wide variety of file formats, protocols and multimedia codecs. In addition to those, support for more than a hundred compression formats (including MPEG-1 , MPEG-2 , MPEG-4 , H.261 , H.263 , H.264 , RealVideo , MP3 , WMV , etc.) is transparently provided through the gst-libav plug-in. Erik Walthinsen founded the GStreamer project in 1999. Many of its core design ideas came from a research project at
SECTION 10
#1732852686290468-498: Is 20 to 20,000 Hz. In air at atmospheric pressure, these represent sound waves with wavelengths of 17 metres (56 ft) to 1.7 centimetres (0.67 in). Frequencies below 20 Hz are generally felt rather than heard, assuming the amplitude of the vibration is great enough. Sound frequencies above 20 kHz are called ultrasonic . Sound propagates as mechanical vibration waves of pressure and displacement, in air or other substances. In general, frequency components of
507-464: Is a device or computer program that encodes or decodes a data stream or signal . Codec is a portmanteau of coder/decoder . In electronic communications, an endec is a device that acts as both an encoder and a decoder on a signal or data stream, and hence is a type of codec. Endec is a portmanteau of encoder/decoder . A coder or encoder encodes a data stream or a signal for transmission or storage, possibly in encrypted form, and
546-409: Is being compressed and uses it as a disguise. This disguise appears as a codec download through a pop-up alert or ad. When a user goes to click or download that codec, the malware is then installed on the computer. Once a fake codec is installed it is often used to access private data, corrupt an entire computer system or to keep spreading the malware. One of the previous most used ways to spread malware
585-482: Is called GstLAL. GStreamer is written in the C programming language with the type system based on GObject and the GLib 2.0 object model. A library written in one programming language may be used in another language if bindings are written; GStreamer has a range of bindings for various languages such as Go , Python , Rust , Vala , C++ , Perl , GNU Guile , C# and Ruby . GStreamer processes media by connecting
624-461: Is especially true if the data is to undergo further processing (for example, editing ) in which case the repeated application of processing (encoding and decoding) on lossy codecs will degrade the quality of the resulting data such that it is no longer identifiable (visually, audibly, or both). Using more than one codec or encoding scheme successively can also degrade quality significantly. The decreasing cost of storage capacity and network bandwidth has
663-441: Is not an ISO standard . There are also other well-known container formats, such as Ogg , ASF , QuickTime , RealMedia , Matroska , and DivX Media Format . MPEG transport stream , MPEG program stream , MP4 , and ISO base media file format are examples of container formats that are ISO standardized. Fake codecs are used when an online user takes a type of codec and installs viruses and other malware into whatever data
702-525: The BSDs , OpenSolaris , Linux , Android , macOS , iOS , Windows , OS/400 . GStreamer is free and open-source software subject to the terms of the LGPL-2.1-or-later and is being hosted at freedesktop.org . The GNOME desktop environment , a heavy user of GStreamer, has included GStreamer since GNOME version 2.2 and encourages GNOME and GTK applications to use it. Other projects also use or support it, such as
741-599: The Oregon Graduate Institute . 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. 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
780-892: The Phonon media framework and the Songbird media player. It is also used in the WebKit browser engine. GStreamer also operates in embedded devices like the Jolla Phone , the Palm Pre , Tizen and the Nokia 770 , N800 , N810 , N900 and N9 Internet Tablets running the Maemo operating system. In addition to source code releases, the GStreamer project provides binary builds for Android, iOS, OSX and Windows. The LIGO Laboratory make use of GStreamer to simulate and analyze gravitational wave data. The GStreamer interface
819-570: 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
SECTION 20
#1732852686290858-545: 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 from documentation Archived 2012-06-16 at the Wayback Machine , tutorials and instructions specific to that SDK. GStreamer 1.0 was released on September 24, 2012. The 1.x series is parallel installable to GStreamer 0.10 to ease
897-647: The PCM sound samples to the computer's speakers. GStreamer uses a plug-in architecture which makes the most of GStreamer's functionality implemented as shared libraries . GStreamer's base functionality contains functions for registering and loading plug-ins and for providing the fundamentals of all classes in the form of base classes . Plug-in libraries get dynamically loaded to support a wide spectrum of codecs , 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
936-469: The core developers including Wim Taymans and attracted the support of companies such as Nokia and Intel 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. It has maintained API and ABI compatibility since. With
975-440: The data to reduce transmission bandwidth or storage space. Compression codecs are classified primarily into lossy codecs and lossless codecs. Lossless codecs are often used for archiving data in compressed form while retaining all information present in the original stream. If preserving the original quality of the stream is more important than eliminating the correspondingly larger data sizes, lossless codecs are preferred. This
1014-560: The decoder function reverses the encoding for playback or editing. Codecs are used in videoconferencing , streaming media , and video editing applications. In the mid-20th century, a codec was a device that coded analog signals into digital form using pulse-code modulation (PCM). Later, the name was also applied to software for converting between digital signal formats, including companding functions. An audio codec converts analog audio signals into digital signals for transmission or encodes them for storage. A receiving device converts
1053-537: The digital signals back to analog form using an audio decoder for playback. An example of this is the codecs used in the sound cards of personal computers. A video codec accomplishes the same task for video signals. When implementing the Infrared Data Association (IrDA) protocol, an endec may be used between the UART and the optoelectronic systems. In addition to encoding a signal, a codec may also compress
1092-416: The high frequency limit usually reduces with age. Other species have different hearing ranges. For example, some dog breeds can perceive vibrations up to 60,000 Hz. In many media, such as air, the speed of sound is approximately independent of frequency, so the wavelength of the sound waves (distance between repetitions) is approximately inversely proportional to frequency. Codec A codec
1131-474: The media to be encoded. For example, a digital video (using a DV codec) of a sports event needs to encode motion well but not necessarily exact colors, while a video of an art exhibit needs to encode color and surface texture well. Audio codecs for cell phones need to have very low latency between source encoding and playback. In contrast, audio codecs for recording or broadcasting can use high-latency audio compression techniques to achieve higher fidelity at
1170-502: 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 stay binary 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
1209-408: The multimedia data streams to be useful in stored or transmitted form, they must be encapsulated together in a container format . Lower bitrate codecs allow more users, but they also have more distortion. Beyond the initial increase in distortion, lower bit rate codecs also achieve their lower bit rates by using more complex algorithms that make certain assumptions, such as those about the media and
GStreamer - Misplaced Pages Continue
1248-469: 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 for DASH adaptive streaming, JPEG 2000 images, VP9 and Daala video, and decoding-only support for WebP . Version 1.14 was released on March 19, 2018, adding support for WebRTC , AV1 , Nvidia NVDEC , and Secure Reliable Transport , among other changes. Version 1.22
1287-588: The number of supported media formats. There are various SIP blocks that can do the computations to decode certain video codecs, such as PureVideo , UVD , QuickSync Video , TI Ducati and more. Such needs to be supported by the device driver , which in turn provides one or multiple interfaces , like VDPAU , VAAPI , Distributed Codec Engine or DXVA to end-user software like MPlayer to access this hardware and offload computation to it. The Good, Bad and Ugly GStreamer plugins mentioned earlier provide, alongside processing elements/filters of all kinds, support for
1326-538: The packet loss rate. Other codecs may not make those same assumptions. When a user with a low bitrate codec talks to a user with another codec, additional distortion is introduced by each transcoding . Audio Video Interleave (AVI) is sometimes erroneously described as a codec, but AVI is actually a container format, while a codec is a software or hardware tool that encodes or decodes audio or video into or from some audio or video format. Audio and video encoded with many codecs might be put into an AVI container, although AVI
1365-457: The source pad to the sink pad. Pads negotiate the kind of data that will be sent using capabilities . The diagram to the right could exemplify playing an MP3 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 into PCM samples which then pass to the sound-driver. The sound-driver sends
1404-452: The strain on relatively expensive storage sub-systems such as non-volatile memory and hard disk , as well as write-once-read-many formats such as CD-ROM , DVD , and Blu-ray Disc . Lower data rates also reduce cost and improve performance when the data is transmitted, e.g., over the internet. Two principal techniques are used in codecs, pulse-code modulation and delta modulation . Codecs are often designed to emphasize certain aspects of
1443-403: The transition, and provides many architectural advantages over the 0.10 series. Generally speaking, GStreamer 1.0 brought significant improvements for: Beyond the technical improvements, the 1.x series is also defined by a new release versioning scheme. As the GStreamer roadmap explains, 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
1482-399: Was also distributed by Collabora and Fluendo as a multiplatform SDK , on the third-party gstreamer.com website (rather than gstreamer.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
1521-505: Was released on January 23, 2023, adding improved support for AV1 , in addition to support for HLS , DASH and Microsoft Smooth Streaming for adaptive bitrate streaming. Audio frequency An audio frequency or audible frequency ( AF ) is a periodic vibration whose frequency is audible to the average human . The SI unit of frequency is the hertz (Hz). It is the property of sound that most determines pitch . The generally accepted standard hearing range for humans
#289710