Hi there,
it's been a while since I posted here. Sorry for the long silence -
I've been occupied with a lot of stuff, and it's been difficult to
find time for CyTV.
I just wanted to let you know that I'm now in the process of rewriting
CyTV from the ground up. The old architecture (a mix of Objective-C,
Python, and AppleScript) turned out to be too fragile (cf. the latest
breakage on Leopard) and too complicated to extend.
The good news is that the new architecture offers many advantages, and
new features can be added much faster than before. The bad news is
that all features of the old version have to be re-implemented.
However, I believe this is the only way to go (if you disagree, feel
free to download the source of the old version and create a fork :-)).
The new architecture looks like this:
- The server is written in pure Objective-C.
- For live streaming, an EyeTV plugin is used. This means that the
delay seen on the client is minimal.
- There's no standalone client anymore. Instead, the server contains
an HTML interface based on the VLC Mozilla plugin. Support for the VLC
ActiveX control (and therefore Internet Explorer) will follow.
What does that mean? Regarding the server part, it means that less
resources (especially CPU) are used and that adding features is much
simpler than before. But the biggest change is on the client side. By
using an HTML/Ajax GUI, the same client is available on all platforms.
It also means that any web developer can create a customized GUI (or
write one completely from scratch) with little effort. All the files
are available in "CyTV.app/Contents/Resources/<Locale>.lproj/Client
GUI" and can be changed and replaced easily.
For client/server communication, there's a very simple (though still
incomplete) Ajax/JSON interface. It can not only be used in web
applications, but also in stand alone clients if desired. Compared to
the old home grown interface, it's easier to parse (there are JSON
parsers for almost any language) and extend.
An early alpha version of the new CyTV is available here:
http://www.lucid-cake.net/cytv/cytv_0_7_alpha_3.dmg Feel free to
download it and try it out, but note that it's far from complete and
may contain lots of bugs :-) (Mandatory disclaimer: This software may
eat your dog and burn your house, so use it at your own risk! It's
especially discouraged to use this version over the Internet as it
_does_ contain denial-of-service problems and it _possibly_ contains
buffer overflow and similar bugs.)
To get started, follow these steps:
- On the server machine, copy the CyTV application from the disk image
to your hard drive.
- Start CyTV.
- For live streaming support, choose "EyeTV/Install CyTV plugin". This
will install the necessary EyeTV plugin for grabbing live data as it
comes in. You also have to manually open a TV window in EyeTV (and
pause it if you want to save CPU resources) before you can start a
live stream. Please note that it's no longer necessary to have the TV
buffer on the hard drive (as was the case with previous CyTV
versions). There may be problems with plugin installation if you're
not an admin user.
- On the client, install the VLC Mozilla plugin from here:
http://www.videolan.org/vlc/download-macosx.html (scroll down to "Web
browser plugins").
- Point your browser to "http://<server>:8001" to start up the GUI. If
your browser supports Bonjour (e.g. Camino or Safari), you can also
choose the CyTV server from the Bonjour category in the bookmarks.
- Choose the desired stream in the client GUI. To switch to fullscreen
view, double click on the small video window. To switch back, double
click on the fullscreen video.
Of course, a _lot_ of features (even basic ones) are still missing.
Here's a list (probably incomplete) of what to expect in the next
releases.
Short-term: Transcoding support, EyeTV control (switching channels,
starting a recording, etc.), support for watching a recording while
it's being made, timeshift support for live streaming, adjustable
video size, deinterlacing support, support for the VLC ActiveX control.
Mid-term: Better client GUI (displaying more information/support for
sorting recordings/support for a paged list of recordings/keyboard
shortcuts etc.), support for authentication and encryption (using SSL
and HTTP digest authentication), support for several EyeTV units
connected at the same time.
Long-term: Support for other media sources (e.g. iTunes),
optimizations (memory, CPU use, HTTP caching etc.)
That's it for the moment. If you have any comments, suggestions, or
bug reports, please post them here.
Regards,
Andreas