mirror of
https://gitlab.xiph.org/xiph/ezstream.git
synced 2024-12-04 14:46:31 -05:00
e48b3b61aa
fixed reencoding bug on win32 bump to version 0.2.0 git-svn-id: https://svn.xiph.org/trunk/ezstream@8612 0101bb08-14d6-0310-b084-bc0e0c8e3800
139 lines
5.6 KiB
Plaintext
139 lines
5.6 KiB
Plaintext
ezstream README
|
|
------------------------------
|
|
|
|
WHAT IS IT ?
|
|
::::::::::::
|
|
|
|
ezstream is a command line utility which is a improved version of the old
|
|
"shout" utility. It enables you to stream mp3 or vorbis files to an icecast
|
|
server without reencoding and thus requires very little CPU. ezstream is
|
|
controlled via a XML config file (a few examples are provided in the conf
|
|
directory).
|
|
|
|
ezstream can stream mp3, ogg vorbis, and ogg theora files as well as reading from stdin.
|
|
ID3v1 tags are supported in mp3 files and all ogg vorbis tags are propagated
|
|
as metadata as well.
|
|
|
|
CONFIG FILE
|
|
:::::::::::
|
|
|
|
The following is an example config file :
|
|
|
|
<ezstream>
|
|
<url>http://localhost:8000/testmount.ogg</url>
|
|
<sourcepassword>hackme</sourcepassword>
|
|
<format>VORBIS</format>
|
|
<filename>sunking.ogg</filename>
|
|
<svrinfoname>My Stream</svrinfoname>
|
|
<svrinfourl>http://www.oddsock.org</svrinfourl>
|
|
<svrinfogenre>RockNRoll</svrinfogenre>
|
|
<svrinfodescription>This is a stream description</svrinfodescription>
|
|
<svrinfobitrate>192</svrinfobitrate>
|
|
<svrinfoquality>4.0</svrinfoquality>
|
|
<svrinfochannels>2</svrinfochannels>
|
|
<svrinfosamplerate>44100</svrinfosamplerate>
|
|
<svrinfopublic>1</svrinfopublic>
|
|
<reencode>
|
|
<enable>0</enable>
|
|
</reencode>
|
|
</ezstream>
|
|
|
|
URL - this URL specified the location and mountpoint of the icecast server
|
|
to which the stream will be sent.
|
|
SOURCEPASSWORD - the source password for the icecast server
|
|
FORMAT - either MP3, VORBIS or THEORA, This is the output format of your stream.
|
|
If you are not reencoding, then this also must be the same format as your
|
|
input files.
|
|
FILENAME - This can be a single file (in which ezstream will stream that
|
|
file over and over continuously) or can be a .m3u file which
|
|
is a playlist of files. currently, ezstream will go through
|
|
the files sequentially. If you specify "stdin" as the filename
|
|
then ezstream will read the input from stdin.
|
|
SVRINFONAME - Broadcast name (informational only)
|
|
SVRINFOURL - Website associated with the broadcast (informational only)
|
|
SVRINFOGENRE - Genre of broadcast (informational only) (used for YP)
|
|
SVRINFODESCRIPTION - Description of broadcast (informational only) (used for YP)
|
|
SVRINFOBITRATE - Bitrate of broadcast (informational only) (used for YP)
|
|
It is YOUR responsibility to ensure that the bitrate specified
|
|
here matches up with your input. Note that this info is not
|
|
for anything OTHER than YP listing info.
|
|
SVRINFOQUALITY - Used only for OggVorbis streams, similar to the bitrate
|
|
in that it is used only for informational and YP purposes.
|
|
SVRINFOCHANNELS - 1 = MONO, 2 = STEREO (informational only) (used for YP)
|
|
SVRINFOSAMPLERATE - (informational only) (used for YP)
|
|
SVRINFOPUBLIC - Indicates wether to list this stream in a public YP.
|
|
|
|
|
|
REENCODING
|
|
:::::::::::::::
|
|
ezstream now support reencoding. This means that your output stream need not
|
|
be the same bitrate/samplerate or even format as your input files.
|
|
|
|
Reencoding is supported via the use of external programs. When you enable reencoding
|
|
you need to make sure of a few things :
|
|
|
|
1. You define a "decoder" for each type of input file.
|
|
2. You define a "encoder" for each possible type of output stream.
|
|
|
|
So if you had a mixture of mp3 and vorbis files in your playlist, you will need to make
|
|
sure that a decoder is provided for each type. Ezstream will take the output of the
|
|
decoder and send it directly to the specific encoder. All output of the decoder should
|
|
be written to stdout and should be in raw form. Most decoder support this mode. Encoders
|
|
should all be configured also with raw input and should read it from stdin.
|
|
|
|
The following decoder/encoders can be used :
|
|
|
|
For MP3 :
|
|
decoder : madplay
|
|
encoder : lame
|
|
|
|
For Vorbis :
|
|
decoder : oggdec
|
|
encoder : oggenc
|
|
|
|
For FLAC :
|
|
decoder : FLAC
|
|
encoder : not yet supported by libshout, and thus not by ezstream.
|
|
|
|
Additional decoders and encoders may be used, as long as they follow the rules defined above.
|
|
|
|
The following config file section defines the reencoding parameters :
|
|
|
|
<reencode>
|
|
<enable>1</enable>
|
|
<encdec>
|
|
<!-- Support for FLAC decoding (input files) -->
|
|
<format>FLAC</format> <!-- format = output stream format -->
|
|
<match>.flac</match> <!-- match = input file format -->
|
|
<decode>flac -s -d --force-raw-format --sign=signed --endian=little @T@ -o -</decode>
|
|
<encode>Not supported Yet</encode>
|
|
</encdec>
|
|
<encdec>
|
|
<!-- Support for MP3 decoding via madplay, and encoding via LAME -->
|
|
<format>MP3</format>
|
|
<match>.mp3</match>
|
|
<decode>madplay -o raw:- @T@ 2>/dev/null</decode>
|
|
<encode>lame -r -x -b 56 -s 44.1 --resample 22.05 -a - - 2>/dev/null</encode>
|
|
</encdec>
|
|
<encdec>
|
|
<!-- Support for Vorbis decoding via oggdec, and encoding via oggenc -->
|
|
<format>VORBIS</format>
|
|
<match>.ogg</match>
|
|
<decode>oggdec --raw=1 @T@ -o - 2>/dev/null</decode>
|
|
<encode>oggenc -Q -r -q 0 --resample=44100 --downmix -t "@M@" -c STREAMER=ezstream -</encode>
|
|
</encdec>
|
|
</reencode>
|
|
|
|
|
|
Note that the following keywords can be used :
|
|
|
|
@T@ = The fully qualified name of the track being played in the playlist
|
|
@M@ = The metadata for the current track
|
|
|
|
All encoding options (bitrate/samplerate/channels/quality) are set as command line options of
|
|
each of the encoders. Each encoder has slightly different options that control these values.
|
|
The examples here can be used as a guide, but please make sure you check the manual for each
|
|
encoder for the correct encoding options. In all cases, the encoder should be configured to
|
|
read RAW audio data from stdin.
|
|
|