mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-24 09:10:36 +00:00
69 lines
2.7 KiB
Markdown
69 lines
2.7 KiB
Markdown
|
---
|
||
|
short-description: GStreamer Editing Services API reference.
|
||
|
...
|
||
|
|
||
|
# GStreamer Editing Services
|
||
|
|
||
|
The "GStreamer Editing Services" is a library to simplify the creation
|
||
|
of multimedia editing applications. Based on the GStreamer multimedia framework
|
||
|
and the GNonLin set of plugins, its goals are to suit all types of editing-related
|
||
|
applications.
|
||
|
|
||
|
The GStreamer Editing Services are cross-platform and work on most UNIX-like
|
||
|
platform as well as Windows. It is released under the GNU Library General Public License
|
||
|
(GNU LGPL).
|
||
|
|
||
|
## Goals of GStreamer Editing Services
|
||
|
|
||
|
The GStreamer multimedia framework and the accompanying GNonLin set of
|
||
|
plugins for non-linear editing offer all the building blocks for:
|
||
|
|
||
|
- Decoding and encoding to a wide variety of formats, through all the
|
||
|
available GStreamer plugins.
|
||
|
|
||
|
- Easily choosing segments of streams and arranging them through time
|
||
|
through the GNonLin set of plugins.
|
||
|
|
||
|
But all those building blocks only offer stream-level access, which
|
||
|
results in developers who want to write non-linear editors to write a
|
||
|
consequent amount of code to get to the level of *non-linear editing*
|
||
|
notions which are closer and more meaningful for the end-user (and
|
||
|
therefore the application).
|
||
|
|
||
|
The GStreamer Editing Services (hereafter GES) aims to fill the gap
|
||
|
between GStreamer/GNonLin and the application developer by offering a
|
||
|
series of classes to simplify the creation of many kind of
|
||
|
editing-related applications.
|
||
|
|
||
|
## Architecture
|
||
|
|
||
|
### Timeline and TimelinePipeline
|
||
|
|
||
|
The most top-level object encapsulating every other object is the
|
||
|
[GESTimeline](GESTimeline). It is the central object for any editing project.
|
||
|
|
||
|
The `GESTimeline` is a `GstElement`. It can therefore be used in any
|
||
|
GStreamer pipeline like any other object.
|
||
|
|
||
|
### Tracks and Layers
|
||
|
|
||
|
The GESTimeline can contain two types of objects (seen in
|
||
|
"Layers and Tracks"):
|
||
|
|
||
|
- Layers - Corresponds to the user-visible arrangement of clips, and
|
||
|
what you primarily interact with as an application developer. A
|
||
|
minimalistic timeline would only have one layer, but a more complex
|
||
|
editing application could use as many as needed.
|
||
|
|
||
|
- Tracks - Corresponds to the output streams in GStreamer. A typical
|
||
|
GESTimeline, aimed at a video editing application, would have an
|
||
|
audio track and a video track. A GESTimeline for an audio editing
|
||
|
application would only require an audio track. Multiple layers can
|
||
|
be related to each track.
|
||
|
|
||
|
![Layers and Tracks](images/layer_track_overview.png)
|
||
|
|
||
|
In order to reduce even more the amount of GStreamer interaction the
|
||
|
application developer has to deal with, a convenience GstPipeline has
|
||
|
been made available specifically for Timelines : [GESPipeline](GESPipeline).
|