ACTLab TV Guide V1.0
Table Of Contents
Introduction
How ACTLab TV Works
Technology
Publication Process
Audio/Video Capture
Analog Capture
Digital Capture
Transcoding
Transcoding for Archival Quality
Transcoding for the Internet
Publishing
How To Setup Your Server: Server Basics, Web Server Setup
How To
Serve Your Content: Serving Your Content And How To Create Playlists
Server-side Integration
Web server Configuration
Media Management
Playlist Management
Alluvium broadcaster
Generating Playlists
Playlist Format
Client Integration
Alluvium Media Handler
Invoking almh
Alluvium Media Player
ACTLab TV Technology Guide V1.0
This guide shows you how to take your audio/video content and make it streamable on an ACTLab TV station. The goal of this guide is to create a resource for people who are starting from scratch. The guide will cover all three steps of publishing your works: digitalization, transcoding and web publishing. If you do not know what these terms mean, don’t worry we will go over all of these steps in this guide.
NOTE: As with any technology movement, trends will change and ACTLab TV will do it’s best to keep its user guide up to date, please be on the look out for updates.
ACTLab TV is based on three open source technologies developed by the Foundation for Decentralization Research. Below is a brief explanation of each part.
ACTLab TV is powered by a peer-to-peer media streaming software called Alluvium. The Alluvium Core leverages the power of Swarmcast's distributed download acceleration to provide high-resolution video and audio streams, while reducing the bandwidth needed to host a stream. Alluvium can be thought of as BitTorrent for streams. Unlike other peer-to-peer download software, Alluvium is streaming. There's no waiting for the file to download. Click an Alluvium link and the video starts playing immediately. Additionally, Alluvium requires less bandwidth and scales to more simultaneous users than any other streaming technology.
The Alluvium media player has been built from the ground up to provide flawless playback of all video and audio files commonly found on the Internet. It uses native plug-ins on each platform so as to be easily extensible to future formats. Unlike most open source video players, it provides gapless playback between files, smooth resizing of the video window, flawless hardware, accelerated full screen playback, and native widgets on all major platforms.
Alluvium streams media files from any standard web server. The only additional requirement is an Alluvium playlist file, which contains a schedule of when each file should be played. Alluvium playlists are in an open format based on RSS. Unlike other RSS playlist formats, Alluvium playlists automatically synchronize all clients to the same file; creating optimal bandwidth efficiency through swarming downloads.
This section covers what software and hardware you will need to create an ACTLab TV station. There are essentially 3 steps to producing content for your stream: capturing, transcoding and archiving, and publishing. There is also a parallel step to transcoding and archiving, which we will cover as well. Each section will begin with a detailed explanation of the hardware and software you will need for the process and then explore how one might go about implementing the process.
There are essentially three ways of capturing video, analog, DV and DVD. We will cover all three types and layout the specific hardware/software required for each.
Analog Video Capture - There are many types of devices that you can use to capture analog video, however; our current top choice is the ATI TV Wonder. The ATI TV Wonder can be had both as an internal (PCI) and external (USB) device. The internal offers MPEG 2 encoding at DVD quality. The external offers similar performance, however; the specifications may differ. Other products we have found to offer a reasonable solution have been the Happauge PVR and the Pinnacle Studio.
DV Capture - The only hardware required for DV capture is an IEEE1394 (firewire, DV) interface. Most new computers are being shipped with this feature included (all Apple computers come with this feature). Make sure your computer does have a firewire card, if it does not; your local computer store (or online retail shop) should have one for a reasonable price.
DVD - There are many DVD ripping applications on the Internet, which will allow you to convert your DVD directly into a MPEG 2 format. DVD Shrink is currently one that we recommend.
If you are looking for a “prosumer” type solution, Pinnacle Systems offers solutions
as well as
Whichever solution you choose, make sure it comes with a software suite that can encode in MPEG 2, or at the very least are able to convert DV into MPEG 2. Here is a list of software that can currently handle MPEG 2:
Moonlight On Touch
Capture Software
Sorenson Squeeze
Once you have the hardware and software, you are now at the point where you may begin capturing footage.
We recommend capturing your files to the MPEG 2 format. MPEG 2 offers a great quality and a decent file size when archiving your video. It is also a standard, which is recognized by almost all media producers. Our rough guidelines for encoding MPEG 2 are as follow:
Format |
Resolution |
Bit rate |
VHS |
320X240 |
4-6 Mbps |
DV |
720X480 |
5-7 Mbps |
DVD |
720X480 |
5-7 Mbps |
Transcoding is the process of taking your captured footage and converting it to a streamable file. There are many transcoders available to use. Several players that we recommend are:
VLC Media Player
FFMPEG Encoder
Sorenson Squeeze
Moonlight One Touch
Each of these players has their pros and cons. We currently recommend using VLC for single file conversions on the cheap. Sorenson Squeeze is great, however it does cost money, although it offers several desirable features such as watch folders, which allows you to drop your files into a folder and have them be automatically converted.
Below is a chart listing the resolutions and bit rates you should use for different servers.
Server Connection Type |
Connection
Upload Capabilities |
Resolution |
Bit Rate |
|
20mbps |
720X480 |
768Mbps Video 256kbps Audio |
High Speed |
1.5mbps |
720X480 |
512Mbps Video 128kbps Audio |
Broadband |
384kbps |
320X240 |
256 Mbps Video 128kbps Audio |
If you are tech savvy, there is also a free command line batch conversion tool called FFMpeg that works well. Please remember, there many other transcoding software packages out there, so if you find one that works better than those mentioned here, use it!
Once you have finished encoding all your files you are ready to Publish!
Once you have decided on your capture settings, it is time to start to think about how you will archive all of your content. A couple of questions you might want to ask yourself are:
“Where Do I archive my content?”
You should archive your content in a safe area or remote location. For example, all of our content is backed in at least two locations. This prevents loss from power outages, fires and other technological mishaps.
“Should I Archive both my MPEG 2 and Streaming files?”
The answer to this question depends on how much hard drive space you can afford. You will have to take into account that you will want to back up all of your content. For example if you have 200gigs of MPEG 2 videos, you will need 200 more gigs to make a back copy. Some people suggest making DVD back ups. We suggest keeping a local copy on the computers you use and then creating a backup on an external drive that can be stored off the premises.
Publishing your content may seem like a daunting task. One of the main reasons publishing is so confusing is, there are so many ways to go about doing it. For the sake of trying to cover every aspect of publishing this guide will assume you are starting from scratch, if you are not, just try to jump in where ever you can. The first concept you will need to understand are networking basics.
How Alluvium Is Different From Other Servers
The Internet basically works through the communication of servers and clients. For example, when you check your email, no matter what type of email you use, your computer (the client) makes a connection to a server to check and see what new messages you have. Also when you go to a website, the web pages you view on your computer (the client) are actually hosted on a computer some where on the Internet on a web server (the server).
One of the unique things about ACTLab TV is that unlike normal server-client relationships, ACTLab TV’s server-client relationship allows bandwidth sharing, thus giving both the client (the user) and the server (content provider) a more efficient distribution system than previously available.
Figure 1
Figure 2 - Swarmcast Client Server Relationship
What this means for the you, the content producer, is that unlike older streaming technology, you can sustain a greater number of users on connections that used to only be able to handle a few.
What Type Of Server Do You Need?
There are several methods of web publishing as stated earlier. Which route you choose will depend on your financial/hardware resources. Here are several scenarios.
Resources |
Bandwidth
Speed |
Bandwidth |
Home
Server |
384Kbps-768Kbps |
Unlimited |
Web
Hosting |
1.0Mbps-3.0Mbps |
Metered –
amount per month varies |
Web
Server |
1.0Mbps-10Mbps+++ |
Metered –
usually more bandwidth than Web hosting |
Resources |
Space |
Cost |
Home
Server |
Hard
drive dependent |
Broadband
monthly cost and computer cost (currently about $30 - $50 a month for
broadband and about $500 for a suitable PC), telephone and cable television
companies are usually the only providers of broadband |
Web
Hosting |
Usually
several gigabytes |
Monthly/Yearly
cost of web hosting (plans currently start as low as $5 a month and up to
about $50 a month, after which most people move to a dedicated web server). Hosting
is also available from a slew of companies such as “1and1.com”. |
Web
Server |
Usually
60-100 gigabytes |
Monthly/Yearly
costs of web servers currently start at around $50. Like web hosting
there are many options for web server hosting, such as 1and1.com, server
beach.com, rackspace.com and many others. They offer a slew of
different grade servers |
As you can see from the charts there are a many ways for you to obtain the proper connection in order for you to run an Alluvium server. Once you have selected the type of web space you are going to use, you will need to figure out how you will connect to your server. Note: If you decide to use your desktop PC as your server please make sure you have taken the proper steps to securing your Internet connection, such as setting up a firewall.
The only requirement for running Alluvium is a HTTP server (port 80). We are currently working on an automated play list generator and will release documentation soon.
Server-side Integration
Unlike most streaming media solutions, Alluvium does not require a special server. All that is required to run an Alluvium stream is a standard HTTP web server such as Apache. A web server is embedded in the Alluvium broadcaster application, for those running a station directly on their desktop computer. For those who are going to host their station on a dedicated server machine, we provide instructions on how to properly configure Apache to work with Alluvium streams. Similar configurations will work with other web servers.
Web server Configuration
Configuring a web server to work with Alluvium is very simple. No special modules or even CGI scripts are necessary. The web server is only needed to serve static files: your media files and your playlist files. Put your media and playlist files in a directory where they will be accessible from your website. On many installations this is in the public_html directory of your website. On other systems it will be in /var/www or something similar. Make sure that the files have the proper permissions set so that they will be accessible to the Internet. You can check this by attempting to access a URL for an individual media file. If your web browser finds the file and attempts to download it, then you know that it is accessible to the Internet.
The only other configuration that is needed is to set up the proper MIME type for Alluvium playlist files. This is how you tell the web browser application playlist files. It’s important that you properly configure your web server to use the correct MIME type for Alluvium playlist files. Otherwise, your viewer’s web browsers will fail to load the playlist in the Alluvium player and they will be unable to view your stream. In Apache, you can configure the Alluvium playlist MIME type by editing the Apache config file and adding the line:
AddType application/x-alluvium .rss
On most Unix systems you can also set up the proper MIME type for all applications, including many web servers by adding the following line to the /etc/mime.types file:
application/x-alluvium rss
If you are writing your own HTTP server for use with Alluvium, just make sure that when it serves the Alluvium playlist files, it supplies the following HTTP header:
Content-Type: application/x-alluvium
Media Management
It’s a good idea to keep your media files well organized. The method we prefer to use is to create a media directory within the main website directory. Within that, create subdirectories for audio files, video files, and playlists. Then create subdirectories for various subtypes of audio, video, and playlist files. Keeping all of the files in subdirectories is convenient. For instance, you can point the broadcaster tool to the main media directory and it will scan through all subdirectories and select all applicable media files. This is also convenient for making backups of your media collection.
Playlist Management
An Alluvium stream is created by taking your media files and organizing them into a playlist. The playlist determines when each media file should play. Using this information, the Alluvium client is able to download the media files from your HTTP server and stitch them together into a stream.
Alluvium broadcaster
One way to generate playlist files is to use the Alluvium broadcaster tool. It is a cross-platform application written in C and using the wxWindows toolkit to provide a natural look and feel for each native platform. The broadcaster includes a graphical interface for playlist management. It also supports a headless mode where it can be used on the command line or in scripts. More documentation on how to use the broadcaster tool will be available when it is released.
Generating Playlists
Another way to generate playlists is to write your own custom playlist generation code. This has proven to be a very popular choice among potential station managers. The broadcaster only works with directories containing media files. It scans the metadata in the media files to generate a playlist. However, many people already have their media metadata in a custom database of some sort, use MySQL or something similar. If this is the case for you, then you should consider writing your own playlist generation code.
Alluvium playlists can logically be thought of as being of three basic types. The first type is a static playlist. It contains a number of entries to media files, for instance 24 hours of programming. The playlist is played to the end and then refreshed, hopefully yielding a new playlist with another 24 hours of content. The second type is dynamic playlists. Since the playlist refreshes when it gets to the end, an extremely short playlist (say 2 items) allows for flexibility in programming which is useful for live request shows. Static and dynamic playlists are actually technically the same. They are just two different styles of playlist generation: generating a long playlist with all programming included or generating a short playlist with only the files, which are going to be played in the near future. The third type is a live playlist. These playlists do not include any individual items. They include a base URL for items and then automatically calculate file names based on the current time. This type of playlist is used in conjunction with our live broadcasting software, which splits up a live recording into a number of small sequentially numbered files.
Playlist Format
The Alluvium playlist format is based on the RSS vocabulary for XML files. It uses standard RSS 1.0 tags.
Constraints on Playlist
Generation
There are a number of considerations to make when generating Alluvium playlists. First, every playlist must have a start time or else the stream will not play. Second, every media file must have a duration or else it will be skipped. Finally, if you are generating a playlist dynamically, the smallest allowed size is two items. This means that, for instance, you have a dynamic playlist management system where users can queue up media files to be played live, they can’t edit the first two items in the queue. Once a playlist is generated with those two items, they are locked in and cannot be changed because clients will have already fetched the playlist and there is no way to inform them that it has changed. Clients cannot be updated on the new playlist until the old playlist expires and can reconnect to the server to fetch a new one.
Integrating the Alluvium player with your application is very simple. The Alluvium player is a command line application. Web browser integration is provided through the browser’s ability to launch command line applications for special MIME types. If the station’s web server is properly configured then the browser should automatically launch Alluvium whenever a playlist link is clicked. Integrating Alluvium into your application should be just as easy, because we provide a useful utility that does all the hard work for you called, the Alluvium Media Handler.
Alluvium Media Handler
The Alluvium Media Handler (almh) is a very useful utility, which handles all of the hard work of launching and managing an instance of Alluvium. It takes care of launching a Java instance and loading the Alluvium core and the Swarmcast download accelerator. It will also check to make sure that multiple instances are never launched, as one Alluvium and Swarmcast instance are sufficient to handle all streams. It will also take care of launching a media player once the core is ready. When Alluvium is installed, it configures the web browser to launch almh whenever an Alluvium playlist link is clicked. In this configuration, it will tell almh to use the Alluvium Media Player to play the stream. However, when you are invoking almh on the command line you can specify any media player you wish. We have also tried it with VLC and Mplayer. The Alluvium Media Player was developed to give superior playback quality and performance, but don’t take our word for it. Compare it to your favorite player yourself.
Invoking almh
The almh program is simple to invoke. The syntax is:
almh playlist
player player-args
For instance, here’s how to watch ACTLab TV with Media
player and tell Mplayer to us XV output and to loop
forever:
almh http://actlab.tv/media/rss/video.rss Mplayer -vo xv -loop 0
The almh instance will then check to see if there is
already another almh instance running. If there is
not already another instance, it will initialize the core by running Java,
invoking the core, invoking Swarmcast, waiting until
they are both running, and then moving on. If there is another instance, it
will skip initialization. After initialization, almh
will tell the core to load the stream specified by the given playlist file. It will then launch the media player with
the given arguments, pointing it to the stream generated by the core. The Mplayer invocation, in this case, will look something like
this:
mplayer –vo
xv –loop 0 http://localhost:9090/filestreams/SomethiingRandomHere
As this invocation demonstrates, there are some constraints on your media
player. It must be able to be invoked from the command line and you must be
able to specify items to be played on the command line. Also, you must be able
to specify on the command line that the player should loop on the same input
file forever. The URL supplied to the player is generated by the Alluvium core
and will contain a different media file each time it is invoked.
Alluvium Media Player
The Alluvium Media Player was developed by Greg Hazel of the Alluvium team in response to a number of playback issues in VLC and Mplayer, which made the playback of Alluvium streams look less than perfect. The main problem that plagues open source video players is flicker in between files. Most players are constructed to close and reinitialize the video device in between files. This causes the desktop background to appear briefly in between files, causing an unpleasant flicker, which breaks the feel of a continuous stream. Another common problem is that many players will resize the video window to the native size of the video. When watching a stream containing videos of different sizes, this will also disrupt the fluidity of the stream. Alluvium Media Player, however, was designed from the beginning to give flawless playback without any flicker or resizing between files, both in windowed and full screen modes. Additionally, many players have broken or incomplete implementations of some video codecs. The Alluvium Media Player avoids this problem by not implementing any of its own codecs. It uses native plugins on all platforms. This allows the best available implementations to be chosen for each codec and for new codecs to be added dynamically at any time. More information about the Alluvium Media Player will be available after its release.