From d048447e6bee06400acd3854f999e4c264172ac0 Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Thu, 2 Oct 2014 23:25:28 +0200 Subject: renamed the sydra utility to sydra-rtp --- doc/sydra-rtp.8 | 389 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 389 insertions(+) create mode 100644 doc/sydra-rtp.8 (limited to 'doc/sydra-rtp.8') diff --git a/doc/sydra-rtp.8 b/doc/sydra-rtp.8 new file mode 100644 index 0000000..48a739f --- /dev/null +++ b/doc/sydra-rtp.8 @@ -0,0 +1,389 @@ +'\" t +.\" Title: sydra-rtp +.\" Author: [see the "AUTHORS" section] +.\" Generator: DocBook XSL Stylesheets v1.78.1 +.\" Date: 10/02/2014 +.\" Manual: \ \& +.\" Source: \ \& +.\" Language: English +.\" +.TH "SYDRA\-RTP" "8" "10/02/2014" "\ \&" "\ \&" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +sydra-rtp \- tool for RTP based streams +.SH "SYNOPSIS" +.sp +.nf +sydra\-rtp + [ \fB\-h|\-\-help\fR ] + [ \fB\-D|\-\-nodaemonize\fR ] + [ \fB\-u|\-\-username\fR ] + [ \fB\-g|\-\-groupname\fR ] + [ \fB\-C|\-\-chroot\fR ] + [ \fB\-P|\-\-write\-pid\fR ] + [ \fB\-L|\-\-log\fR :[,[,[\&.\&.]]] ] + [ \fB\-U|\-\-debug\fR ] + [ \fB\-n|\-\-appname\fR ] + [ \fB\-m|\-\-mode\fR (sender|reciever) ] + [ \fB\-\-source\fR ] + [ \fB\-\-video\-encoder\fR ] + [ \fB\-\-video\-payloader\fR ] + [ \fB\-\-previewsink\fR ] + [ \fB\-\-audio\-encoder\fR ] + [ \fB\-\-audio\-payloader\fR ] + [ \fB\-\-video\-caps\fR ] + [ \fB\-\-video\-depayloader\fR ] + [ \fB\-\-video\-decoder\fR ] + [ \fB\-\-audio\-caps\fR ] + [ \fB\-\-audio\-depayloader\fR ] + [ \fB\-\-audio\-decoder\fR ] + [ \fB\-\-sink\fR ] + [ \fB\-a|\-\-rtp\-host\fR ] + [ \fB\-o|\-\-rtp\-port\-base\fR ] + [ \fB\-A|\-\-rtp\-addr\-local\fR
] + [ \fB\-O|\-\-rtp\-port\-base\-local\fR ] + [ \fB\-c|\-\-no\-auto\-client\fR ] + [ \fB\-t|\-\-timeout\fR ] + [ \fB\-k|\-\-keepalive\-interval\fR ] + [ \fB\-\-rec\-video\-encoder\fR ] + [ \fB\-\-rec\-audio\-encoder\fR ] + [ \fB\-\-rec\-mux\fR ] + [ \fB\-\-rec\-name\-format\fR ] +.fi +.SH "DESCRIPTION" +.sp +\fBsydra\fR is a toolbox which allows you to set up multiple bidirectional Video/Audio streams from external locations\&. \fBsydra\fR has been written to be used for the Elevate Festival in Graz Austria in order to involve external locations to present themselves at the festival\&. This manpage describes \fBsydra\-rtp\fR the basic utility for the task which is based on GStreamer and is written in C\&. The \fBsydra\-rtp\fR utility creates a gstreamer pipeline to send or receive RTP\-based Audio/Video streams\&. For a bidirectional connection 2 instances of \fBsydra\-rtp\fR are required on both sides of the communication\&. \fBsydra\-rtp\fR has automatic client detection capabilities in the form of keep alive messages\&. These message are sent out by receivers to request RTP packets from a sender\&. The sender will send RTP packets to one or more receivers which request the stream\&. It also uses the keep alive messages to remove stale client \fIconnections\fR\&. A receiver can also request to be removed from the list of receivers\&. This ensures a fast and clean shutdown\&. The keepalive messages are also a simple way to work around NAT and firewalls (UDP hole punching)\&. +.SH "OPTIONS" +.sp +The following options can be passed to the \fBsydra\-rtp\fR daemon: +.sp +\fBglobal options\fR +.PP +\fB\-D, \-\-nodaemonize\fR +.RS 4 +This option instructs +\fBsydra\-rtp\fR +to run in foreground instead of becoming a daemon which is the default\&. +.RE +.PP +\fB\-u, \-\-username \fR +.RS 4 +run as this user\&. If no group is specified (\fB\-g\fR) the default group of the user is used\&. The default is to not drop privileges\&. +.RE +.PP +\fB\-g, \-\-groupname \fR +.RS 4 +run as this group\&. If no username is specified (\fB\-u\fR) this gets ignored\&. The default is to not drop privileges\&. +.RE +.PP +\fB\-C, \-\-chroot \fR +.RS 4 +Instruct +\fBsydra\-rtp\fR +to run in a chroot jail\&. The default is to not run in chroot\&. +.RE +.PP +\fB\-P, \-\-write\-pid \fR +.RS 4 +Instruct +\fBsydra\-rtp\fR +to write it\(cqs pid to this file\&. The default is to not create a pid file\&. +.RE +.PP +\fB\-L, \-\-log :[,[,[\&.\&.]]]\fR +.RS 4 +add log target to logging system\&. This can be invoked several times in order to log to different targets at the same time\&. Every target has its own log level which is a number between 0 and 5\&. Where 0 means disabling log and 5 means debug messages are enabled\&. + +The file target can be used more than once with different levels\&. If no target is provided at the command line a single target with the config +\fBsyslog:3,sydra\-rtp,daemon\fR +is added\&. + +The following targets are supported: +.PP +\fBsyslog\fR +.RS 4 +log to syslog daemon, parameters [,[,]] +.RE +.PP +\fBfile\fR +.RS 4 +log to file, parameters [,] +.RE +.PP +\fBstdout\fR +.RS 4 +log to standard output, parameters +.RE +.PP +\fBstderr\fR +.RS 4 +log to standard error, parameters +.RE +.RE +.PP +\fB\-U, \-\-debug\fR +.RS 4 +This option instructs +\fBsydra\-rtp\fR +to run in debug mode\&. It implicits +\fB\-D\fR +(don\(cqt daemonize) and adds a log target with the configuration +\fBstdout:5\fR +(logging with maximum level)\&. In future releases there might be additional output when this option is supplied\&. +.RE +.PP +\fB\-n, \-\-appname \fR +.RS 4 +This set the application name using +\fIg_set_prgname()\fR\&. It will be used for example by xvimagesink for window title\&. +.RE +.PP +\fB\-m, \-\-mode (sender|reciever)\fR +.RS 4 +This sets the main mode of +\fBsydra\-rtp\fR\&. The sender will read raw video and audio from the source bin and send it via RTP to one or more receivers\&. +.RE +.sp +\fBsender\-mode only options\fR +.PP +\fB\-\-source \fR +.RS 4 +A gst\-launch\-style description for the raw video and audio bin\&. This bin must contain an element called +\fIvideosrc\fR +and an element called +\fIaudiosrc\fR +which should each contain a pad called +\fIsrc\fR\&. Theses pads will get connected to the encoder bins\&. Example: +\fIv4l2src ! videoconvert ! videoscale ! video/x\-raw,format=I420,width=864,height=480 ! identity name="videosrc" autoaudiosrc ! audio/x\-raw,format=S16LE,channels=1,rate=48000 ! identity name="audiosrc"\fR +.RE +.PP +\fB\-\-video\-encoder \fR +.RS 4 +Bin description for the video encoder\&. Example: +\fIvideoconvert ! vp8enc\fR +.RE +.PP +\fB\-\-video\-payloader \fR +.RS 4 +A RTP payloader element for the video codec in use\&. Example: +\fIrtpvp8pay\fR +.RE +.PP +\fB\-\-previewsink \fR +.RS 4 +A video sink element for local preview\&. Example: +\fIvideoconvert ! textoverlay test="preview" ! xvimagesink\fR +.RE +.PP +\fB\-\-audio\-encoder \fR +.RS 4 +Bin description for the audio encoder\&. Example: +\fIaudioconveert ! opusenc\fR +.RE +.PP +\fB\-\-audio\-payloader \fR +.RS 4 +A RTP payloader element for the audio codec in use\&. Example: +\fIrtpopuspay\fR +.RE +.sp +\fBreceiver\-mode only options\fR +.PP +\fB\-\-video\-caps \fR +.RS 4 +These caps will get assigned to incoming RTP packets for video\&. Example: +\fIapplication/x\-rtp,media=video,clock\-rate=90000,encoding\-name=VP8\-DRAFT\-IETF\-01,caps="video/x\-vp8"\fR +.RE +.PP +\fB\-\-video\-depayloader \fR +.RS 4 +A RTP depayloader element for the video codec in use\&. Example: +\fIrtpvp8depay\fR +.RE +.PP +\fB\-\-video\-decoder \fR +.RS 4 +Bin description for the video decoder\&. Example: +\fIvp8dec\fR +.RE +.PP +\fB\-\-audio\-caps \fR +.RS 4 +These caps will get assigned to incoming RTP packets for audio\&. Example: +\fIapplication/x\-rtp,media=audio,clock\-rate=48000,payload=96,encoding\-name=X\-GST\-OPUS\-DRAFT\-SPITTKA\-00,caps="audio/x\-opus"\fR +.RE +.PP +\fB\-\-audio\-depayloader \fR +.RS 4 +A RTP depayloader element for the audio codec in use\&. Example: +\fIrtpopusdepay\fR +.RE +.PP +\fB\-\-audio\-decoder \fR +.RS 4 +Bin description for the audio decoder\&. Example: +\fIopusdec\fR +.RE +.PP +\fB\-\-sink \fR +.RS 4 +A gst\-launch\-style description for the raw video and audio bin\&. This bin must contain an element called +\fIvideosink\fR +and an element called +\fIaudiosink\fR +which should each contain a pad called +\fIsink\fR\&. Theses pads will get connected to the decoder bins\&. Example: +\fIvideoconvert name="videosink" ! videoscale add\-borders=true ! xvimagesink audioconvert name="audiosink" ! autoaudiosink\fR +.RE +.sp +\fBoptions for RTP\fR +.PP +\fB\-a, \-\-rtp\-host \fR +.RS 4 +In +\fIsender\fR +mode this sets the address or hostname of the remote RTP receiver\&. Please mind that the remote RTP host is always added as a receiver and it shouldn\(cqt be configured to send keepalives\&. This would re\-add the receiver to the list of clients and as a result duplicate packages will be sent\&. Also the remote RTP host is excluded from client timeout handling and remove requests from it will get ignored\&. When you omit this in sender mode the automatic client detection will be used to add receivers\&. In +\fIreceiver\fR +mode keepalive messages will be sent to this host\&. Leave empty to disable keepalive messages\&. +.RE +.PP +\fB\-o, \-\-rtp\-port\-base \fR +.RS 4 +The base number for remote ports\&. +\fBsydra\-rtp\fR +will send the RTP/RTCP packets using the following mapping: +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +rtp\-port\-base + 0: RTP Video +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +rtp\-port\-base + 1: RTCP Video +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +rtp\-port\-base + 2: RTP Audio +.RE +.sp +.RS 4 +.ie n \{\ +\h'-04'\(bu\h'+03'\c +.\} +.el \{\ +.sp -1 +.IP \(bu 2.3 +.\} +rtp\-port\-base + 3: RTCP Audio +.RE +.RE +.PP +\fB\-A, \-\-rtp\-addr\-local
\fR +.RS 4 +The local address to wait for incoming UDP messages\&. Leave empty to listen on any address\&. +.RE +.PP +\fB\-O, \-\-rtp\-port\-base\-local \fR +.RS 4 +The base number for local ports to bind to\&. The same mapping as for the remote port\-base is used to map incoming RTP packets to the RTP bin\&. +.RE +.PP +\fB\-c, \-\-no\-auto\-client\fR +.RS 4 +This disables auto\-detection for clients in +\fIsender\fR +mode\&. Mind that if you disable the automatic client detection and also omit the rtp\-host option +\fBsydra\-rtp\fR +won\(cqt send any RTP messages\&. If configured recording will work but this is most probably not what you want\&. +.RE +.PP +\fB\-t, \-\-timeout \fR +.RS 4 +This sets the client timeout in seconds in +\fIsender\fR +mode\&. A value of 0 disables client timeouts\&. This is not recommended\&. +.RE +.PP +\fB\-k, \-\-keepalive\-interval \fR +.RS 4 +This sets the interval in seconds for sending out keepalive messages in +\fIreceiver\fR +mode\&. A value of 0 disables keepalive messages and therefor the client auto detection won\(cqt work for this client\&. +.RE +.sp +\fBoptions for recording\fR +.PP +\fB\-\-rec\-video\-encoder \fR +.RS 4 +A bin description for the video encoder used for recording\&. If you leave this empty the output from the RTP video encoder is used\&. Example: +\fIvideoconvert ! jpegenc\fR +.RE +.PP +\fB\-\-rec\-audio\-encoder \fR +.RS 4 +A bin description for the audio encoder used for recording\&. If you leave this empty the output from the RTP audio encoder is used\&. Example: +\fIaudioconvert ! vorbisenc\fR +.RE +.PP +\fB\-\-rec\-mux \fR +.RS 4 +A gstreamer muxer element used for recording\&. If you leave this empty recording will be disabled\&. Example: +\fImatroskamux\fR +.RE +.PP +\fB\-\-rec\-name\-format \fR +.RS 4 +A +\fIstrftime\fR +based format string which will be used to create the name for the recorded file\&. Example: \&./recordings/%Y\-%m\-%d_%H\-%M\-%S\&.mkv +.RE +.SH "BUGS" +.sp +Most likely there are some bugs in \fBsydra\-rtp\fR\&. If you find a bug, please let the developers know at equinox@spreadspace\&.org\&. Of course, patches are preferred\&. +.SH "SEE ALSO" +.sp +\fBstrftime\fR(3), \fBgst\-launch\fR(1) +.SH "AUTHORS" +.sp +Christian Pointner +.SH "COPYING" +.sp +Copyright (C) 2014 Christian Pointner\&. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version\&. -- cgit v1.2.3