From 8b06f2f834036b71e49b2805c25b9d81562ea674 Mon Sep 17 00:00:00 2001 From: Matthew Clark Date: Wed, 20 Jul 2022 21:23:04 +0100 Subject: [PATCH] Fix broken links, add install comments --- README.md | 19 +++++++++++-------- basics.md | 10 +++------- installing.md | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 64 insertions(+), 15 deletions(-) create mode 100644 installing.md diff --git a/README.md b/README.md index 652a791..2df2258 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,15 @@ # GStreamer command-line cheat sheet -This series of docs provides a cheat sheet for GStreamer on the command-line. +[GStreamer](https://gstreamer.freedesktop.org/) is a powerful library for manipulating audio and video - including live streams. This repo provides: -A few Python examples are also [included](python_examples/) for when you need GStreamer to be dynamic (i.e. react to user or some other action). +* a cheat sheet for GStreamer on the command-line, and +* a few [Python examples](python_examples/). + +Whilst the command line is great, programmatic usage (in Python or another language) allows you to dynamically manipulate the A/V streams. ## Contents +* [Installing](installing.md) * [Basics](basics.md) * [Test streams](test_streams.md) * [RTMP](rtmp.md) @@ -21,16 +25,15 @@ A few Python examples are also [included](python_examples/) for when you need GS ## Sources and references -* [Basic command line reference](http://docs.gstreamer.com/display/GstSDK/Basic+tutorial+10%3A+GStreamer+tools) +* [Basic command line reference](https://gstreamer.freedesktop.org/documentation/tutorials/basic/gstreamer-tools.html?gi-language=c) * [Pipeline examples](https://gstreamer.freedesktop.org/documentation/tools/gst-launch.html#pipeline-examples) -* [List of all Gstreamer plugins](https://gstreamer.freedesktop.org/documentation/plugins.html) +* [List of all Gstreamer plugins](https://gstreamer.freedesktop.org/documentation/plugins_doc.html?gi-language=c) * [Handy elements](https://gstreamer.freedesktop.org/documentation/tutorials/basic/handy-elements.html#uridecodebin) ## Other cheat-sheets -* http://wiki.oz9aec.net/index.php/Gstreamer_cheat_sheet -* https://github.com/xmementoit/gstreamerCheatsheet/blob/master/README.md -* https://gist.github.com/nebgnahz/26a60cd28f671a8b7f522e80e75a9aa5 +* +* ## Interacting with the GStreamer pipeline @@ -64,4 +67,4 @@ If you spot anything incorrect or incomplete, reports are welcome, either using # My GStreamer project -Creating this guide gave me enough GStreamer understanding to make [Brave](https://github.com/bbc/brave), a live video editor for the cloud. \ No newline at end of file +Creating this guide gave me enough GStreamer understanding to make a prototype [Brave](https://github.com/bbc/brave), a live video editor for the cloud. (Regrettably this prototype has not been updated in a few years.) \ No newline at end of file diff --git a/basics.md b/basics.md index a339eb8..53421ba 100644 --- a/basics.md +++ b/basics.md @@ -1,6 +1,5 @@ # Basics (GStreamer command-line cheat sheet) - ## Playing content These examples assume that bash variable `SRC` to be set to a video file (e.g. an mp4 file). You can do this by, e.g. @@ -9,7 +8,6 @@ These examples assume that bash variable `SRC` to be set to a video file (e.g. a export SRC=/home/me/videos/test.mp4 ``` - ### Play a video (with audio) The magical element `playbin` can play anything: @@ -30,7 +28,6 @@ gst-launch-1.0 filesrc location=$SRC ! \ decodebin ! videoconvert ! videoscale ! autovideosink ``` - ### Play a video (no audio) ``` @@ -43,7 +40,6 @@ which could also have been done as: gst-launch-1.0 -v filesrc location="$SRC" ! decodebin ! autovideosink ``` - ### Play just the audio from a video ``` @@ -66,7 +62,7 @@ gst-launch-1.0 filesrc location=$SRC ! decodebin ! tee name=t ! queue ! audiocon ### Add filters -Go slightly mad: +Here's the 'vertigo' filter: ``` gst-launch-1.0 -v filesrc location="$SRC" ! decodebin ! videoconvert ! vertigotv ! autovideosink @@ -74,7 +70,7 @@ gst-launch-1.0 -v filesrc location="$SRC" ! decodebin ! videoconvert ! vertigotv Try also ‘rippletv’, ‘streaktv’, ‘radioactv’, ‘optv’, ‘quarktv’, ‘revtv’, ‘shagadelictv’, ‘warptv’ (I like), ‘dicetv’, ‘agingtv’ (great), ‘edgetv’ (could be great on real stuff) -### Add A clock +### Add a clock ``` gst-launch-1.0 -v filesrc location="$SRC" ! decodebin ! clockoverlay font-desc="Sans, 48" ! videoconvert ! autovideosink @@ -88,7 +84,7 @@ gst-launch-1.0 -v filesrc location="$SRC" ! decodebin ! videoconvert ! videoscal ### Change framerate -Changing framerate is quiet common, as the world does not have a consistent standard. Facebook Live wants 30fps, YouTube wants 30 or 60fps. There's a nice summary on the [Apple FCP site](https://documentation.apple.com/en/finalcutpro/usermanual/index.html#chapter=D%26section=4%26tasks=true). +Changing framerate is quiet common, as the world does not have a consistent standard. Facebook Live wants 30fps, for example. Change framerate: diff --git a/installing.md b/installing.md new file mode 100644 index 0000000..1cf2d34 --- /dev/null +++ b/installing.md @@ -0,0 +1,50 @@ +# Installing (GStreamer command-line cheat sheet) + +## Packages + +Installing GStreamer is not enough. GStreamer is built on a large number of plugins, which are split into four packages: + +* *Base*: Reliable, commonly used, high-quality plug-ins +* *Good*: Additional plug-ins that are also reliable and high-quality +* *Bad*: Plugins that are potentially unreliable +* *Ugly*: Plugins that may bring concerns, often around licensing + +(Full definition of these packages [in this readme](https://gitlab.freedesktop.org/gstreamer/gstreamer/-/blob/main/subprojects/gst-plugins-bad/README.md).) + +You can choose which you install - you'll almost certainly need base, and potentially the others. + +You can see which package a plugin belongs in the [Plugins API reference](https://gstreamer.freedesktop.org/documentation/plugins_doc.html?gi-language=c). + +You can get a list of all installed plugins with: + +``` +gst-inspect-1.0 +``` + +## Installing on MacOS + +The easiest way to install on MacOS is using Homebrew. There is a [GStreamer](https://formulae.brew.sh/formula/gstreamer) package, and additional packages for the base/good/bad/ugly plugins. + +Example: + +``` +brew install gstreamer gst-plugins-base gst-plugins-good +``` + +There are many dependencies so this can take time to run! + +You can also compile and install yourself - see (https://gstreamer.freedesktop.org/documentation/installing/on-mac-osx.html). + + +## Installing on Ubuntu Linux + +The GStreamer APT packages are excellent. + +For a good install command, see `https://gstreamer.freedesktop.org/documentation/installing/on-linux.html?gi-language=c`. + + + +## Installing on other platfoms + +See (https://gstreamer.freedesktop.org/documentation/installing/index.html?gi-language=c) +