Zeipis is a personal TV system which makes recordings and allows to watch them, as well as livetv with pause, of couse.

As video sources, it supports DVB, analog TV (via hard- and software encoder), IPTV (DVB-IPI and multicast) and streams from the web and BitTorrent, all united.

It differentiates itself from other projects by the focus on reliability (and security where applicable). For us, it is very important that recordings get made and that it "just works". To achieve this, we use the following approaches:
- Error handling
  In practice, most recordings fail because of full disks, accidental mis(re)configuration, and server crashes or problems outside the system, e.g. a network problem or dry program data source.
  When a problem appears, it is properly captured at the originating point, and passed up in the command chain until it can be worked around, or reported directly to the user at the point where it applies.
  For example, if a recording cannot be made because the TV card has no antenna connected, this fact is reported to the user immediately the next time he uses the system. If there are other TV cards in the system which can receive the same station, the recording is made using that card. Similarly, if a server crashed, it gets restarted.
  This helps both with setup, because errors are reported as *root problems*, not downstream symptoms, as well as during daily use, because they are reported *directly* e.g. when opening a failed recording and you don't have to crawl through logs just to see why this recording failed, and increases reliability, because errors don't go unnoticed for days, but are reported *immediately*.
- Client/server decoupled
  Not only is the software separated in client (player) and server (recorder and master) programs, but they interact only via a network protocol that is designed by Internet standards and best practices. Backwards- and forwards-compatibility and failure-tolerance are critically important. This means that server and player often still work together even if they have differing versions and even if the other part misbehaves or acts in unexpected ways.
- Secure data handling
  Data from external sources, esp. the TV reception and the Internet, is treated as untrusted and we take care to avoid buffer overflows, SQL injection and similar problems to protect your systems.
  This also helps reliability, because a bad TV reception should never crash the recorder.
  Caveat to this is that we use an external movie player. If that has bugs, we'll inherit it. Similar for the software MPEG encoder (only for analog TV cards).

One advantage of this is that server and player can be run by different parties. For example, it can be used by ISPs as replacement for MicrosoftTV or by apartment house owners to replace the TV cable with an ethernet cable.

Implementation
The server is written in Java, which shortened implementation time by factor 2 or 3 and helps with secure data handling. There is no speed problem, because the MPEG-handling parts (player, encoder where applicable, filters if configured) are external libraries written in C - for example, the recorder uses about 0.3% - 1% of CPU on current systems. Memory consumption for the server is roughly 80 MB, plus mysql (35MB). Java has been open-sourced by Sun.


Not (yet) supporting
- analog TV
- IPTV
- several inputs per card
