Overview
========

tvoe (TV over Ethernet streaming server) is a lightweight DVB-S/S2 network
streaming software. It can serve many transponders on multiple tuners
simultaneously and provides dynamic tuner allocation to the clients, giving you
the possibility to add more stations to the channel list than the tuner
configuration would be able to stream simultaneously.

tvoe is designed for a homogenous tuner configuration, i.e., if you are
including DVB-S2-channels in your channel list, all configured tuners should
be able to be S2-capable. Also, tvoe only supports S2API for tuner
configuration. Some legacy systems and DVB-S1-only-drivers might not support
S2API and thus cannot be used with tvoe.

Dependencies
============

 * libbitstream (http://www.videolan.org/developers/bitstream.html) version >= 1.0,
   used for MPEG structure parsing
 * libevent 2.0 (http://libevent.org/)
 * a sufficiently recent glib (https://developer.gnome.org/glib/2.40/)

Additional build time dependencies: yacc, lex for the config file parser and
linux headers.

Building
========
... is easy:

 $ cmake .
 $ make

Quickstart
==========

First, you have to generate a list of channels to serve. tvoe uses the modern
dvb-v5 file format that is generated by the dvbv5-tools frequency scanning
utilities. (https://www.linuxtv.org/wiki/index.php/DVBv5_Tools)

To generate a channels list to be used with tvoe, use the dvbv5-scan tool.

dvbv5-scan -l EXTENDED astra-inital -o channels.conf

All channels listed in the channels.conf will be served by tvoe. If
necessary, remove unused channels from the list before using it.

Next, adjust the example config file to match your tuner configuration. Make
sure to set the correct path to the channel list. You can then start tvoe
using
tvoe -f CONFIGFILE

The streams can then be accessed via http://IP:CONFIGURED_PORT/by-sid/SID,
where SID is the DVB service ID of the requested station. Additional URLs
might be added in the future.

tvoe only does minor modifications to the original satellite transport
stream (e.g. remuxing to include only the requested service from a
given transponder). Special data like teletext and EPG (for the whole
transponder) is passed through untouched and can be interpreted by some
clients.
