Live Audio (and Video)

The other way that audio shows are distributed online, other than in podcast form, is live streams.  Live streams are where the audio is broadcast to listeners at the same time as it happens.  When the show host says something, everyone listening to it hears it at the same time.  This makes shows where listeners interact with the show possible.  Since this is only an introduction to multimedia, we're not going to do any examples on this topic, we're just going to go through some of the basics here.  In addition, the concepts behind live video are very similar to live audio (except it takes A LOT more bandwidth) so we'll throw that in here as well, even though we haven't covered the section on video yet.

Live Streams

The first thing you need when setting up a live audio/video show is a way to transmit your show out to the user.  There are many different formats that support this, for each of these formats there are companies that will give (usually with ads) or sell usage of their servers allowing you to broadcast in this format.  Here are some of the most popular options:

Shoutcast/Icecast - This is the most popular audio streaming (Icecast can support video, but usually does not), there are literally thousands of audio streams from individuals as well as organizations such as radio stations that use this.  The format (also called shoutcast) was originally developed by the company Nullsoft (now owned by AOL) who popularized it with their shoutcast server (http://shoutcast.com).  Icecast (http://icecast.org) was created as a full-featured, open source replacement for the shoutcast software, which is easy to setup and free to use.  Now Icecast and Shoutcast are used in about even numbers.  Icecast is the recommended solution if you only want to stream audio.
Real Time Messaging Protocol (RTMP) / Flash Streaming - Currently Flash audio/video streaming is very popular on the internet.  The biggest reason that it has become so popular is that almost all web browsers have the flash player built into them, so no additional software was needed to start watching the streams.  There are several services that provide this for free the most popular of which are Ustream (http://ustream.tv) and Justin.tv (http://justin.tv).  These allow you to connect a microphone/camera or complete audio/video feed to their streaming application and broadcast, for free with ads on the internet, without having to setup any hardware or software yourself.  For a begenning experiment with streaming on the web, this is a quick and easy way to get started.  There are also more professional products that allow for streaming of RTMP which allow you to run your own server.  Adobe, being the maker of the Flash software and RTMP protocol has the most popular server, in its Adobe Flash Streaming server.  However, there is an open source competitor that is completely free to use and easy to setup called Red5 (http://red5.org).
Windows Media Server - This is the server software that is used to stream Windows Media audio and video to Windows Media Player clients.  Unfortunately this really only works well if all the users have Microsoft Windows, as it isn't directly supported on Mac or Linux.
Helix/Real Media - Real Media was the number one streaming media solution before any of the other solutions on this list, however it has fallen behind the other options.  Today it is used mostly in corporate settings.
Quicktime / Darwin Media Server (Apple QuickTime) - Both these options are products of Apple, built to work with the QuickTime media player.  However, the Darwin Media Server has been released as open source, and is freely available.  In addition to working with QuickTime video, it can work with some of the bigger Audio/Video standards (H.264, MPEG-4 Part 2, 3gp). 

Talking to Guests

So now you have the audio and video from your show being pumped out over the internet, however it is still just you and whoever is sitting with you where you are recording.  Wouldn't it be nice if you could have guests or even other hosts join you on the show, live from all around the world?  Thanks to the great ability of computers to send audio and video to each other that is possible!  (This is also all possible even if you aren't doing a live stream, you can still use all this for recording a non-live podcast/videocast.)

The most basic way to have someone join in is to use one of several Voice over IP (VoIP) options.  Voice over IP is basically a computer-based replacement for phone calls.  Instead of sending your voice as a voltage over a copper wire to your telephone company, the computer sends your voice as a stream of bits to the recipient over the internet.  The most popular version of VoIP that can be use for making audio (or video) shows is Skype.  Skype allows you to join one or more people into a call.  From there you can record the output of the call onto your computer or send it directly out on your stream.   Unfortunately skype has some limitations that keep it from interacting with other software besides the official skype client.  If you want an option that allows you to have the freedom to use many different types of VoIP software, there is a standard that most of the other ones (besides Skype) follow.  That is called Sesssion Initiation Protocol (SIP).  SIP is a very full-featured protocol that has all sorts of great features like call-forwarding and voicemail built into it.  The Empathy (Instant Messaging) client that comes with Ubuntu can have the telepathy-sofiasip plugin installed to be a very good SIP client.  Also in Empathy is the ability to use Video/Voice chat across GoogleTalk/Jabber servers.  This is a good alternative to skype as well.

The Skype/SIP/Instant Messenger have some support for multiple users talking to each other, but it is not their specialty, and they are generally limited to only a few users at a time.  Sometimes you might want to have a large group of people in the show where anyone (or limited groups thereof) can talk to each other.  Mumble is a group voice chat application that was designed for use by groups of people playing computer games, but will work very well for any kind of group chat.  To get this setup, you need to install the mumble-server (called murmur) somewhere on the network that all the users can get to, then have each user run the mumble client application.  It is possible to create multiple channels on the server, so you can have multiple different groups chatting. 
Mumble-Record.png

There isn't anything similar that works with large group conversations over video.  This is because it is easy to hear multiple different people at the same time (or at least close to the same time), but you can't easily watch several different video displays at once.  The closest application that allows for this is Big Blue Button (http://bigbluebutton.org).  Big Blue Button was built for use in virtual classrooms, where all the students have a web-cam (or at least microphone) and there is a teacher that can control who is talking at any given time.  This same setup can work well for a show, the host (or possibly a technician) would replace the teacher as the one who controls what video stream is being sent out to everyone, and the students would be replaced with guests on the show.  This uses flash streaming video for the client that each user needs, so it is very easy for everyone to setup.

Tying it all together with JACK

So now that you have a bunch of different streams of audio coming into your computer, and a stream to send it out on, you need a way to link up that input with the output.  JACK is a set of software that allows you to do just that.  The easiest way to think of JACK is as a set of virtual patch cables, where you can take the audio output of one program and feed it to a different program.  Then you can take that output and feed it to a third program.  JACK is somewhat complicated to setup, and a bit beyond the scope of things here, but it is an amazing resource if you need something to tie all your audio together.

Interacting with the Audience

Now that you have the media for your live stream all setup, the only other thing to think about is the other stuff that is supporting it.  Generally it is important to have a web page that has information about your stream, such as what is on right now, and what the future schedule is. 

Another part that is nice to have is a way to use text for the audience to talk to the hosts and guests, as well as each other.  This is generally done by creating an Internet Relay Chant (IRC) chat room.  (http://en.wikipedia.org/wiki/Internet_Relay_Chat http://es.wikipedia.org/wiki/Internet_Relay_Chat) This could be on an IRC server that is specific to the show (with the option to have more than one chat room) or on another public IRC server, where there is a room specifically set aside for this show.  Since not all users have an IRC client on their computer, it is highly recommended that you make one available embedded in the website as well.  There are several out there that allow users to login to the IRC chat by just going to a web-page, without having to download anything to their computer.

The other option for interacting with the audience is to use Twitter (or the open-source alternative Identica).  On these sites you could tell users to use a specific hashtag (#CoolShow) in their posts, this way anyone can quickly see all the comments going back and fourth about the show. 

Either IRC or Twitter/Identica is a great way to interact with the audience.  A common way to do this is to ask a question on the live stream, and then request that the audience write their responses back.  Another method is to tell the audience to post questions they have for a guest using one of these methods, then the host can read the question aloud to the guest.


That should be enough good tips to get you started on your live stream... good luck!