Discussion:
What's the difference between ffmpeg and gstreamer?
Aleve Sicofante
2013-12-27 15:02:23 UTC
Permalink
Hi everyone. I'm new to this list. I'd like to ask a very simple question:

What's the difference between ffmpeg and gstreamer?

On mpv's discussion list, I was told the following:

[ME] You say "it's all FFmpeg anyway". One of the things I don't quite get
yet about Linux video is what's the roll of gstreamer. Isn't it an
alternative to FFmpeg?

[REPLY FROM LIST MEMBER] No. For the most common codecs, gstreamer just
uses FFmpeg.

Is that correct? I'm having a hard time understanding how video works on
Linux. Can anyone point me to good sources to read about it? For a while, I
thought gstreamer was indeed an alternative to ffmpeg, but I'm very
confused now.

I understand ffmpeg decodes the video stream and the different players
based on it present the video (they "render" it to the screen). But since
gstreamer can use ffmpeg through a plugin, but can also not use that
plugin, I'm confused about gstreamer's role.

So what are the conceptual differences between these two projects?

Thanks for your replies.

A.S.
Dan Kegel
2013-12-27 15:17:10 UTC
Permalink
Ffmpeg is a set of codecs.
Gstreamer is plumbing that lets you hook codecs, sources, sinks, and
filters together.
Post by Aleve Sicofante
What's the difference between ffmpeg and gstreamer?
[ME] You say "it's all FFmpeg anyway". One of the things I don't quite get
yet about Linux video is what's the roll of gstreamer. Isn't it an
alternative to FFmpeg?
[REPLY FROM LIST MEMBER] No. For the most common codecs, gstreamer just
uses FFmpeg.
Is that correct? I'm having a hard time understanding how video works on
Linux. Can anyone point me to good sources to read about it? For a while, I
thought gstreamer was indeed an alternative to ffmpeg, but I'm very
confused now.
I understand ffmpeg decodes the video stream and the different players
based on it present the video (they "render" it to the screen). But since
gstreamer can use ffmpeg through a plugin, but can also not use that
plugin, I'm confused about gstreamer's role.
So what are the conceptual differences between these two projects?
Thanks for your replies.
A.S.
_______________________________________________
gstreamer-devel mailing list
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Aleve Sicofante
2013-12-27 15:19:59 UTC
Permalink
So ffmpeg is just one of those set of codecs that gstreamer can use, but
not the only one at all, right?

Is there any good book/website to learn all about gstreamer?
Post by Dan Kegel
Ffmpeg is a set of codecs.
Gstreamer is plumbing that lets you hook codecs, sources, sinks, and
filters together.
Post by Aleve Sicofante
What's the difference between ffmpeg and gstreamer?
[ME] You say "it's all FFmpeg anyway". One of the things I don't quite
get yet about Linux video is what's the roll of gstreamer. Isn't it an
alternative to FFmpeg?
[REPLY FROM LIST MEMBER] No. For the most common codecs, gstreamer just
uses FFmpeg.
Is that correct? I'm having a hard time understanding how video works on
Linux. Can anyone point me to good sources to read about it? For a while, I
thought gstreamer was indeed an alternative to ffmpeg, but I'm very
confused now.
I understand ffmpeg decodes the video stream and the different players
based on it present the video (they "render" it to the screen). But since
gstreamer can use ffmpeg through a plugin, but can also not use that
plugin, I'm confused about gstreamer's role.
So what are the conceptual differences between these two projects?
Thanks for your replies.
A.S.
_______________________________________________
gstreamer-devel mailing list
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
_______________________________________________
gstreamer-devel mailing list
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Dan Kegel
2013-12-27 15:43:18 UTC
Permalink
Roughly.

Have you tried googling for gstreamer tutorials?
http://docs.gstreamer.com/display/GstSDK/Tutorials might
be a good place to start.

I don't know bupkis about gstreamer aside from
building it and trying little pipelines to make sure it's basically working,
so other people might be able to give you a better answer.
- Dan
So ffmpeg is just one of those set of codecs that gstreamer can use, but not
the only one at all, right?
Is there any good book/website to learn all about gstreamer?
Post by Dan Kegel
Ffmpeg is a set of codecs.
Gstreamer is plumbing that lets you hook codecs, sources, sinks, and
filters together.
Post by Aleve Sicofante
What's the difference between ffmpeg and gstreamer?
[ME] You say "it's all FFmpeg anyway". One of the things I don't quite
get yet about Linux video is what's the roll of gstreamer. Isn't it an
alternative to FFmpeg?
[REPLY FROM LIST MEMBER] No. For the most common codecs, gstreamer just
uses FFmpeg.
Is that correct? I'm having a hard time understanding how video works on
Linux. Can anyone point me to good sources to read about it? For a while, I
thought gstreamer was indeed an alternative to ffmpeg, but I'm very confused
now.
I understand ffmpeg decodes the video stream and the different players
based on it present the video (they "render" it to the screen). But since
gstreamer can use ffmpeg through a plugin, but can also not use that plugin,
I'm confused about gstreamer's role.
So what are the conceptual differences between these two projects?
Thanks for your replies.
A.S.
_______________________________________________
gstreamer-devel mailing list
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
_______________________________________________
gstreamer-devel mailing list
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
_______________________________________________
gstreamer-devel mailing list
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Sebastian Dröge
2013-12-28 12:01:32 UTC
Permalink
Post by Aleve Sicofante
So ffmpeg is just one of those set of codecs that gstreamer can use, but
not the only one at all, right?
ffmpeg/libav is a library that contains all kinds of codecs, support for
various container formats, some filters, etc. It's a library providing
some API to use these things separately.

GStreamer is one level/layer above that and a generic multimedia
framework, based on pipeline graphs (check Wikipedia for the pipes and
filters software design pattern for example). It allows you to put
together arbitrary multimedia processing pipelines built from different
components (we call them elements) that all do different tasks.
GStreamer provides generic mechanisms to put together these pipelines,
control them, synchronize data flow, etc.

Some of these elements are for example decoders, that could for example
be implemented by using ffmpeg/libav. Others could be filters or
elements that read data from a network stream, or write data to a file,
or ...
Post by Aleve Sicofante
Is there any good book/website to learn all about gstreamer?
This should be a good start:
http://gstreamer.freedesktop.org/data/doc/gstreamer/head/manual/html/index.html

Or any of the many GStreamer introduction talks done at various
conferences, e.g. this one here by Stefan:
http://lac.linuxaudio.org/2010/download/GStreamerAudioApps.pdf

Note that everything on the gstreamer.com website linked by Dan Kegel is
nothing provided by the GStreamer project (it's something provided by
two companies) and is also using the very old 0.10 version of GStreamer.

The 1.x versions are the latest versions, and the ones supported by the
community, and have an improved API compared to 0.10.
--
Sebastian Dröge, Centricular Ltd - http://www.centricular.com
Expertise, Straight from the Source
Loading...