Provided by: ezstream_0.5.6~dfsg-1.1_amd64 bug

NAME

       ezstream — source client for Icecast with external de-/encoder support

SYNOPSIS

       ezstream [-hnqVv] -c configfile
       ezstream -s [playlist]

DESCRIPTION

       The  ezstream  utility  is  a source client for the Icecast media streaming server.  In its basic mode of
       operation, it streams media files and data from standard input "as-is" — such as Ogg Vorbis,  Ogg  Theora
       and  MP3  —  to  a  server.  It can also use various external decoders and encoders to re-encode from one
       format to another, and stream the result.  The only requirement is that  the  external  programs  support
       writing to or reading from standard input, and can be used from the command line.

   Command line parameters
       -c configfile
               Use the XML configuration in configfile.

       -h      Print a summary of available command line parameters with short descriptions and exit.

       -n      Normalize metadata strings by removing excess whitespaces.

       -q      Be more quiet.  Suppress the output that external programs send to standard error.

       -s [playlist]
               Run  ezstream  as  a  line-based  shuffling utility.  If no playlist argument is given, a list of
               media file names is read from standard input  instead  of  an  input  file.   After  successfully
               reading the entire list, it is shuffled and printed to standard output, and ezstream will exit.

       -V      Print the ezstream version number and exit.

       -v      Produce more verbose output from ezstream.  Use twice for even more verbose output.

       When  the  -q  and -v parameters are provided simultaneously, an additional line of information about the
       currently streamed file — playlist position, approximate playing time and bit rate — is displayed.

   Runtime control
       On POSIX systems, ezstream offers limited runtime control via  signals.   By  sending  a  signal  to  the
       ezstream process, e.g. with the kill(1) utility, a certain action will be triggered.

       SIGHUP
            Rereads  the playlist file after the track that is currently streamed.  If the playlist is not to be
            shuffled, ezstream attempts to find the previously streamed file and continue with the one following
            it, or restarts from the beginning of the list otherwise.

       SIGUSR1
            Skips the currently playing track and moves on to the next in playlist mode, or restarts the current
            track when streaming a single file.

       SIGUSR2
            Triggers rereading of metadata for the  stream  by  running  the  program  or  script  specified  in
            <metadata_progname/>  (see  below.)  This is the only meaningful signal when streaming from standard
            input.

CONFIGURATION FILE SYNTAX

       The ezstream utility uses a simple XML configuration file format.  It has a tree-like  structure  and  is
       made  up  of  XML elements.  Of all the possible XML features, only regular elements that contain text or
       other elements, and comments, appear in an ezstream configuration file.

       Each element in the configuration file consists of a start tag, its content and an end tag.  For example:

             <filename>playlist.m3u</filename>
             <!-- XML comments look like this. -->

XML CONFIGURATION

       In this section, each available element is listed and described.  Note that for  this  purpose,  elements
       are introduced in their short, i.e. empty form.  In the configuration file, they need to be used as start
       tag + content + end tag, like in the introductory example shown above.

   Root element
       <ezstream />
            (Mandatory.) The configuration file's root element.  It contains all other configuration elements.

   Global configuration elements
       Each of the global configuration elements have the <ezstream/> element as their parent.

       <url />
            (Mandatory.)  Specifies the location and mount point of the Icecast server, to which the stream will
            be sent.  The content must be of the form http://server:port/mountpoint For example:

                  <url>http://example.com:8000/stream.ogg</url>

       <sourceuser />
            (Optional.) Sets the source username for authentication with the Icecast server.  The  default  user
            (usually “source”) is used if this element is not provided.

       <sourcepassword />
            (Mandatory.) Sets the source password for authentication with the Icecast server.

       <format />
            (Mandatory.) This element has two different meanings, depending on whether re-encoding is enabled or
            not.   It  specifies  the  output  format  of  the  stream if re-encoding is enabled.  Otherwise, it
            specifies the input format of all input files.  Recognized and supported values  for  output  stream
            formats  are VORBIS, MP3 and THEORA.  Other values will be ignored and cause ezstream to simply pass
            through the data, which may or may not work.

       <filename />
            (Mandatory.) Set the path and name of a single media file, a  playlist,  the  name  of  an  external
            program  (see  below),  or  the  keyword  stdin  for  streaming  from standard input.  Playlists are
            recognized by their filename extension and end with either .m3u or .txt.

            A playlist consists of filenames, one entry per line.  Comments in playlists are introduced by a ‘#’
            sign at the beginning of a line and ignored by ezstream.

       <playlist_program />
            (Optional.) Set to 1 (one) to indicate that the  file  in  <filename/>  is  actually  an  executable
            program  or script.  If set to 0 (zero), <filename/> content is assumed to be a media file, playlist
            file or the keyword stdin (the default).

            See the SCRIPTING section for details on how the playlist program must behave.

       <shuffle />
            (Optional.) Set to 1 (one) to randomly shuffle the entries of the playlist specified in <filename/>.
            Files are played sequentially if set to 0 (zero) or when the <shuffle/>  element  is  absent.   This
            option will be ignored if <playlist_program/> is set to 1 (one.)

       <metadata_progname />
            (Optional.) Set the path and name of an executable program or script that should be used by ezstream
            to  set  the  metadata  of  the  stream.   The  program is automatically queried when a new track is
            streamed, or whenever the SIGUSR2 signal is received.

            If the <metadata_progname/> element is present in the configuration, no attempts  will  be  made  to
            read  metadata  from  files  that are being streamed.  If this behavior is not desired, it should be
            removed or commented out in the configuration file.

            See the SCRIPTING section for details on how the metadata program must behave.

       <metadata_format />
            (Optional.) Set the format of the string that should be used for the ‘@M@’ placeholder when  setting
            metadata with an external program or script via <metadata_progname/>.

            See the METADATA section for details on how metadata is handled by ezstream.

       <stream_once />
            Set  to  1  (one)  in  order  to  stream  the  content of <filename/> only once, and to 0 (zero) for
            continuous streaming (the default).

       <reconnect_tries />
            Set how many attempts should be made to reconnect to the Icecast server in case  the  connection  is
            interrupted.   The  default  is  to  try  indefinitely, which is equal to setting this configuration
            option to 0 (zero).

       <svrinfoname />
            (Optional.) Set the name of the broadcast.  Informational only.

       <svrinfourl />
            (Optional.) Set the URL of the web site associated with the broadcast.  Informational only.

       <svrinfogenre />
            (Optional.) Set the genre of the broadcast.  Informational only, used for YP.

       <svrinfodescription />
            (Optional.) Set the description of the broadcast.  Informational only, used for YP.

       <svrinfobitrate />
            (Optional.) Set the bit rate of the broadcast.  This setting is also purely informational  and  only
            used  for  YP.   The value is set by the user and not ezstream, and should match the bit rate of the
            stream.

       <svrinfoquality />
            (Optional.) Set the quality setting of an Ogg Vorbis broadcast.  Informational only and needs to  be
            set by the user, used for YP.

       <svrinfochannels />
            (Optional.)  Set  the  number  of  audio  channels in the broadcast, e.g.  1 (one) for mono or 2 for
            stereo.  Informational only and needs to be set by the user, used for YP.

       <svrinfosamplerate />
            (Optional.) Set the sample rate of the broadcast.  Informational only and needs to  be  set  by  the
            user, used for YP.

       <svrinfopublic />
            (Optional.)  Set  to  1  (one) if the broadcast may be listed in a public YP directory.  If set to 0
            (zero), the Icecast server will not submit this stream to a YP directory, which is also the  default
            if the <svrinfopublic/> element is absent.

       <reencode />
            (Optional.)  Element  that  contains  child elements, which specify if and how re-encoding should be
            done.

   Re-encoding settings
       Each of the re-encoding configuration elements have the <reencode/> element as their parent.

       <enable />
            Set to 1 (one) to enable re-encoding.  If set to 0 (zero), no re-encoding will  be  done,  which  is
            also the default if the <enable/> element is absent.

       <encdec />
            Element  that  contains  child elements, which specify how to decode and encode a certain media file
            format for streaming.  Each format is described by a separate <encdec/> element.

   Decoder/Encoder settings
       Each of the decoder/encoder configuration elements have the <encdec/> element as their parent.

       <format />
            This element is used by ezstream to find the  appropriate  encoder  for  the  output  stream  format
            specified  in the <format/> element inside the global configuration.  For consistency reasons, it is
            recommended that this element is always supplied, even for  currently  unsupported  output  formats,
            with content such as VORBIS, MP3, THEORA, FLAC, et cetera.

       <match />
            Set the filename extension used to identify a given media file format.  This allows ezstream to find
            the  appropriate  decoder for a given file.  Should be set to .mp3 for MP3, .flac for FLAC, .ogg for
            Ogg Vorbis, and so on.

       <decode />
            Set the command to decode the specified media file format to  raw  data  and  send  it  to  standard
            output.  During runtime, the placeholder ‘@T@’ is replaced with the name of the media file, as it is
            specified  in the <filename/> element or contained in a playlist file.  It should always be enclosed
            in quotes, to prevent problems with filenames that contain whitespaces.

            Metadata placeholders can be used in  the  <decode/>  element  as  well,  for  combined  de-/encoder
            programs  that  produce  data  that  can  be  streamed.  See the METADATA section for details on how
            metadata is handled by ezstream.

            For example, to decode Ogg Vorbis files using the oggdec utility:

                  <decode>oggdec -R -o - "@T@"</decode>

       <encode />
            Set the command to encode raw data, received from standard input, to the specified stream format.

            Metadata placeholders can be used in the <encode/> element.  For details  about  using  metadata  in
            ezstream, see below in the METADATA section.

            For example, to encode an Ogg Vorbis stream using the quality setting 1.5 with the oggenc utility:

                  <encode>oggenc -r -q 1.5 -t "@M@" -</encode>

SCRIPTING

       The  ezstream utility provides hooks for externally controlled playlist and metadata management.  This is
       done by running external programs or scripts that need to behave in ways explained here.

   Common Rules
       -   The program must be an executable file.
       -   The program must write one line to standard output and exit.
       -   The program must not require arbitrary command line options to function.  A wrapper  script  must  be
           used if there is no other way.

   Playlist Programs
       -   The program must return only filenames, with one filename per execution.
       -   The  program  should not return an empty line unless ezstream is supposed to know that the end of the
           playlist has been reached.  This is significant when the <stream_once/> option is enabled.

   Metadata Programs
       -   The program must not return anything (just a newline character is okay) if it is called  by  ezstream
           with a command line parameter that the program does not support.
       -   When  called without command line parameters, the program should return a complete string that should
           be used for metadata.
       -   When called with the command line parameter "artist", the  program  should  return  only  the  artist
           information of the metadata.  (Optional.)
       -   When  called  with  the  command  line  parameter  "title",  the program should return only the title
           information of the metadata.  (Optional.)
       -   The supplied metadata must be encoded in UTF-8.

METADATA

       The main tool for handling metadata with ezstream is placeholders in decoder and  encoder  commands  that
       are replaced with real content during runtime.  The tricky part is that one of the placeholders has to be
       handled differently, depending on where the metadata comes from.  This section will explain each possible
       scenario.

   Metadata Placeholders
       @T@  Replaced with the media file name.  Required in <decode/> and is available in <metadata_format/>.

       @M@  Replaced  with a metadata string.  See below for a detailed explanation.  Available in <decode/> and
            <encode/>.

       @a@  Replaced with the artist information.  Available in <decode/>, <encode/> and <metadata_format/>.

       @t@  Replaced with the title information.  Available in <decode/>, <encode/> and <metadata_format/>.

       @s@  Replaced with the string returned by <metadata_progname/>  when  called  without  any  command  line
            parameters.  Available only in <metadata_format/>.

   The @M@ Placeholder
       While  all  other  placeholders are simply replaced with whatever data they are associated with, ‘@M@’ is
       context-sensitive.  The logic used by ezstream is the following:

             If ('@M@ is present')
                 If ('<metadata_progname/>' AND '<metadata_format/>')
                     Replace with format string result.
                 Else
                     If (NOT '<metadata_progname/>' AND '@t@ is present')
                         Replace with empty string.
                     else
                         Replace with generated metadata string.
                     Endif
                 Endif
             Endif

       The generated metadata string for ‘@M@’ is of the format “Artist -  Title”,  if  both  artist  and  title
       information is available.  If one of the two is missing, the available one is displayed without a leading
       or  trailing  dash, e.g. just “Artist”.  If neither artist nor title are available, the name of the media
       file — without its file extension — is used.

   Metadata Caveats
       It is possible to generate strange results with  odd  combinations  of  placeholders,  external  metadata
       programs and updates during runtime via SIGUSR2.  If things start to become just confusing, simplify.

       Metadata  updates  during  runtime  are  done  with  a relatively broken feature of libshout.  Additional
       metadata information that is already present in the stream sent via ezstream  is  usually  destroyed  and
       replaced with the new data.  It is not possible to properly discern between artist and title information,
       which  means  that  anything set with the SIGUSR2 feature will continue to end up entirely in the "Title"
       field of a stream.

       Of all possible Ogg-based streams, only Ogg Vorbis can have its metadata  manipulated  by  Icecast.   Any
       attempt of ezstream to update other Ogg metadata is actually a no-op.

       While  ezstream  tries  to do its best with relaying metadata accurately to Icecast, and subsequently the
       listeners, different codesets and locales can pose a problem.  Especially when streaming  MP3  files,  it
       may  help  to  explicitly  set  a codeset to work with via the LC_CTYPE environment variable, as ezstream
       assumes ID3v1 tags to be in the user's current locale.  Note that,  even  though  support  for  different
       locales  is provided by ezstream, Icecast itself and the listening clients also have a say in the matter.
       The only way to ensure consistent results with metadata in non-Ogg  streams  is  to  use  the  characters
       available in the ISO-8859-1 codeset.

       External  encoders  may  put  additional,  and  possibly  artificial, restrictions on valid characters in
       metadata.

FILES

       /usr/share/doc/ezstream/examples  Directory containing example configuration files for  various  uses  of
                                         ezstream, as well as example playlist and metadata scripts.

SEE ALSO

       ezstream-file.sh(1)

AUTHORS

       ezstream was written by:

       Ed Zaleski <oddsock@oddsock.org>
       Moritz Grimm <mdgrimm@gmx.net>

       This manual was written by Moritz Grimm.

ezstream 0.5.6                                   April 26, 2016                                      EZSTREAM(1)