From d06c015d360dd4905d010ba7483495ddc5707c14 Mon Sep 17 00:00:00 2001 From: Matthew Clark Date: Mon, 5 Mar 2018 20:22:50 +0000 Subject: [PATCH] Updates to memory transfer, RTMP, and images --- README.md | 9 +- images.md | 31 +++++++ images/imagefreeze_single.png | Bin 0 -> 84695 bytes memory_transfer.md | 2 +- network_transfer.md | 163 ++++++++++++++++++++++++++++++++++ rtmp.md | 26 +++++- writing_to_files.md | 0 7 files changed, 226 insertions(+), 5 deletions(-) create mode 100644 images.md create mode 100644 images/imagefreeze_single.png create mode 100644 network_transfer.md create mode 100644 writing_to_files.md diff --git a/README.md b/README.md index 3505535..1c754d4 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # GStreamer command-line cheat sheet -This series of docs provides a cheat sheet for Gstreamer on the command-line. +This series of docs provides a cheat sheet for GStreamer on the command-line. ## Contents @@ -8,8 +8,10 @@ This series of docs provides a cheat sheet for Gstreamer on the command-line. * [Basics](basics.md) * [RTMP](rtmp.md) * [Mixing video](mixing.md) +* [Images](images.md) * [Capturing images](capturing_images.md) * [Sending/receiving video from shared memory](memory_transfer.md) +* [Network transfer](network_transfer.md) (including how to send so that VLC can preview) ## Sources and references @@ -18,10 +20,11 @@ This series of docs provides a cheat sheet for Gstreamer on the command-line. * [List of all Gstreamer plugins](https://gstreamer.freedesktop.org/documentation/plugins.html) * [Handy elements](https://gstreamer.freedesktop.org/documentation/tutorials/basic/handy-elements.html#uridecodebin) -## Other cheat sheets +## 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 ## Interaction @@ -34,10 +37,10 @@ If you want to interact with GStreamer after it's started (e.g. respond to an ev Good GStreamer Python resources include: +* [Getting started with GStreamer with Python](https://www.jonobacon.com/2006/08/28/getting-started-with-gstreamer-with-python/) * [Python GStreamer Tutorial](http://brettviren.github.io/pygst-tutorial-org/pygst-tutorial.html) * [Function reference](http://lazka.github.io/pgi-docs/#GstApp-1.0) # Problems or suggestions with this guide? If you spot anything incorrect or incomplete, reports are welcome, either using [issues](issues) or [pull requests](pulls) - diff --git a/images.md b/images.md new file mode 100644 index 0000000..1d11aa3 --- /dev/null +++ b/images.md @@ -0,0 +1,31 @@ +# Images (GStreamer command-line cheat sheet) + +Gstreamer can show images on video using the `imagefreeze` element. + +### Create a video from an image + +![Example imagefreeze single image](images/imagefreeze_single.png "Example imagefreeze single image") + + +``` +export PIC="https://upload.wikimedia.org/wikipedia/en/thumb/8/80/Wikipedia-logo-v2.svg/263px-Wikipedia-logo-v2.svg.png" + +gst-launch-1.0 \ + uridecodebin uri=$PIC ! \ + imagefreeze ! \ + autovideosink +``` + +### Create a video from multiple images + +Here's the same image four times, done with the help of `compsitor` (a mixer): + +``` +gst-launch-1.0 \ + compositor name=m sink_1::xpos=263 sink_2::ypos=240 sink_3::xpos=263 sink_3::ypos=240 ! autovideosink \ + uridecodebin uri=$PIC ! videoscale ! video/x-raw, width=263, height=240 ! imagefreeze ! m. \ + uridecodebin uri=$PIC ! videoscale ! video/x-raw, width=263, height=240 ! imagefreeze ! m. \ + uridecodebin uri=$PIC ! videoscale ! video/x-raw, width=263, height=240 ! imagefreeze ! m. \ + uridecodebin uri=$PIC ! videoscale ! video/x-raw, width=263, height=240 ! imagefreeze ! m. +``` + diff --git a/images/imagefreeze_single.png b/images/imagefreeze_single.png new file mode 100644 index 0000000000000000000000000000000000000000..6eccd6f59d8c0dde9fd4c262239c919a912b0fdc GIT binary patch literal 84695 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

$%mf)r7*Us(mwx8 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 literal 0 HcmV?d00001 diff --git a/memory_transfer.md b/memory_transfer.md index a61d1be..938a3ef 100644 --- a/memory_transfer.md +++ b/memory_transfer.md @@ -2,7 +2,7 @@ The [`shmsink`](https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad/html/gst-plugins-bad-plugins-shmsink.html) element allows you to write video into shared memory, from which another gstreamer application can read it with [`shmsrc`](https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad/html/gst-plugins-bad-plugins-shmsrc.html). -### Puttingn a stream into memory +### Putting a stream into memory ``` gst-launch-1.0 -v videotestsrc ! \ diff --git a/network_transfer.md b/network_transfer.md new file mode 100644 index 0000000..1b35798 --- /dev/null +++ b/network_transfer.md @@ -0,0 +1,163 @@ +# Transfer of audio/video via a network socket (GStreamer command-line cheat sheet) + +GStreamer can send and receive audio and video via a network socket, using either UDP or TCP. + +*UDP* is faster but lossy - there is no attempt to resend lost network packets to it will fail if the network is not perfect. *TCP* acknowledges every network packet so is slower, but more reliable. + +## UDP + +### Audio via UDP + +To send an audio test source: + +``` +gst-launch-1.0 audiotestsrc ! avenc_ac3 ! mpegtsmux ! rtpmp2tpay ! udpsink host=127.0.0.1 port=7001 +``` + +To send an audio file: + +``` +# Make sure $SRC is set to an audio file (e.g. an MP3 file) +gst-launch-1.0 -v filesrc location=$AUDIO_SRC ! mpegaudioparse ! udpsink port=7001 +``` + +And to receive audio: + +``` +gst-launch-1.0 udpsrc port=7001 ! decodebin ! autoaudiosink +``` + +### Video via UDP, as h264 + +To send a test stream: + +``` +gst-launch-1.0 videotestsrc ! decodebin ! x264enc ! rtph264pay ! udpsink port=7001 +``` + +Or to send a file (video or audio only, not both): + +``` +# Make sure $SRC is set to an video file (e.g. an MP4 file) +gst-launch-1.0 filesrc location=$SRC ! decodebin ! x264enc ! rtph264pay ! udpsink port=7001 +``` + +To receive: + +``` +gst-launch-1.0 \ + udpsrc port=7001 caps = "application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, payload=(int)96" ! \ + rtph264depay ! decodebin ! videoconvert ! autovideosink +``` + +### Video via UDP, as MPEG-2 + +To send a video test source: + +``` +gst-launch-1.0 videotestsrc ! x264enc ! mpegtsmux ! rtpmp2tpay ! udpsink host=127.0.0.1 port=7001 +``` + +To receive: + +``` +gst-launch-1.0 udpsrc port=7001 ! decodebin ! autovideosink +``` + +### Both video and audio + +To send both a video and audio test source (mixed together): + +``` +gst-launch-1.0 \ + videotestsrc ! x264enc ! muxer. audiotestsrc ! avenc_ac3 ! \ + muxer. mpegtsmux name=muxer ! rtpmp2tpay ! udpsink host=127.0.0.1 port=7001 +``` + +And to receive both video and audio together: + +``` +gst-launch-1.0 \ + udpsrc port=7001 caps="application/x-rtp" ! \ + rtpmp2tdepay ! decodebin name=decoder ! autoaudiosink decoder. ! autovideosink +``` + +## TCP + +### Send and receive audio via TCP + +To send a file: + +``` +# Make sure $SRC is set to an audio file (e.g. an MP3 file) +gst-launch-1.0 -v filesrc location=$AUDIO_SRC ! \ + mpegaudioparse ! tcpserversink port=7001 host=0.0.0.0 +``` + +And to receive: + +``` +gst-launch-1.0 tcpclientsrc port=7001 host=0.0.0.0 ! decodebin ! autoaudiosink +``` + +### Send and receive video via TCP + +Test video stream: + +``` +gst-launch-1.0 videotestsrc ! \ + decodebin ! x264enc ! mpegtsmux ! queue ! \ + tcpserversink port=7001 host=127.0.0.1 recover-policy=keyframe sync-method=latest-keyframe sync=false +``` + +MP4 file (video only): + +``` +gst-launch-1.0 \ + filesrc location=$SRC ! decodebin ! x264enc ! mpegtsmux ! queue ! \ + tcpserversink host=127.0.0.1 port=7001 recover-policy=keyframe sync-method=latest-keyframe sync=false +``` + +To receive, either use VLC (`tcp://localhost:7001`) or this command: + +``` +gst-launch-1.0 \ + tcpclientsrc host=127.0.0.1 port=7001 ! \ + decodebin ! videoconvert ! autovideosink sync=false +``` + +### Stream and receive video via TCP, using Matroska + +Should you wish to use the Matroska container rather than MPEG, here are some examples. +(The [Matroska FAQ](https://www.matroska.org/technical/guides/faq/index.html) nicely describes what it is, if you're interested.) + +To send a test stream: + +``` +gst-launch-1.0 \ + videotestsrc is-live=true ! \ + queue ! videoconvert ! x264enc byte-stream=true ! \ + h264parse config-interval=1 ! queue ! matroskamux ! queue leaky=2 ! \ + tcpserversink port=7001 host=0.0.0.0 recover-policy=keyframe sync-method=latest-keyframe sync=false +``` + +To send a file (video only): + +``` +# Make sure $SRC is set to an video file (e.g. an MP4 file) +gst-launch-1.0 \ + filesrc location=$SRC ! decodebin ! \ + queue ! videoconvert ! x264enc byte-stream=true ! \ + h264parse config-interval=1 ! queue ! matroskamux ! queue leaky=2 ! \ + tcpserversink port=7001 host=0.0.0.0 recover-policy=keyframe sync-method=latest-keyframe sync=false +``` + +To receive: + +``` +gst-launch-1.0 \ + tcpclientsrc host=0.0.0.0 port=7001 typefind=true do-timestamp=false ! \ + matroskademux ! typefind ! avdec_h264 ! autovideosink +``` + +I struggle to get VLC to play this (through `tcp://localhost:7001`). diff --git a/rtmp.md b/rtmp.md index 6b38ae7..ef078ac 100644 --- a/rtmp.md +++ b/rtmp.md @@ -96,6 +96,7 @@ gst-launch-1.0 \ This overlays an RTMP source as a picture-in-picture on top of a local filesource (set as `$SRC`) ``` +export QUEUE="queue max-size-time=0 max-size-bytes=0 max-size-buffers=0" gst-launch-1.0 \ filesrc location="$SRC" ! \ decodebin ! videoconvert ! \ @@ -111,7 +112,6 @@ gst-launch-1.0 \ mix. ``` - ## Sending to an RTMP server ### Sending a test stream to an RTMP server @@ -147,3 +147,27 @@ gst-launch-1.0 filesrc location=$SRC ! \ audio/x-raw,rate=48000 ! \ voaacenc bitrate=96000 ! audio/mpeg ! aacparse ! audio/mpeg, mpegversion=4 ! mux. ``` + +--- + +Can we work out why a bad RTMP brings down the other mix? + +``` +export QUEUE="queue max-size-time=0 max-size-bytes=0 max-size-buffers=0" +gst-launch-1.0 \ + filesrc location="$SRC2" ! \ + decodebin ! videoconvert ! \ + videoscale ! video/x-raw,width=640,height=360 ! \ + compositor name=mix sink_0::alpha=1 sink_1::alpha=1 sink_1::xpos=50 sink_1::ypos=50 ! \ + videoconvert ! autovideosink \ + rtmpsrc location="$RTMP_DEST" ! \ + flvdemux name=demux \ + demux.audio ! $QUEUE ! decodebin ! fakesink \ + demux.video ! $QUEUE ! decodebin ! \ + videoconvert ! \ + videoscale ! video/x-raw,width=320,height=180! \ + mix. +``` + + + diff --git a/writing_to_files.md b/writing_to_files.md new file mode 100644 index 0000000..e69de29