Fix broken links, add install comments

This commit is contained in:
Matthew Clark 2022-07-20 21:23:04 +01:00
parent 22b2e60977
commit 8b06f2f834
3 changed files with 64 additions and 15 deletions

View file

@ -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
* <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.
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.)

View file

@ -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:

50
installing.md Normal file
View file

@ -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)