Stream Concepts
Audio and video streams are a sometimes complicated mix of codecs, containers, protocols, and playlists. A thorough treatment of the technical background is beyond the scope of this document, but there are plenty of fantastic resources on the web, including Wikipedia.
The concepts that are most relevant to our API are codecs, protocols, and playlists.
Codecs
A codec is the algorithm used to encode and decode audio/video data. Below is a simplified chart of the ones we see most often.
| Codec | Description | RadioTime Stream Type | Prevalence |
|---|---|---|---|
| WMA | Windows Media Audio | Windows | Very common |
| WMVoice | Windows Media Voice | WMVoice | Rare, but some notable stations like Bloomberg |
| MP3 | Mpeg Layer 3 | MP3 | Very common |
| AAC+ | Advanced Audio Codec Plus | AAC | Uncommon but growing |
| Real | Real Media | Real | Uncommon and declining |
| MP3/FLV | Flash embedded audio | HTML | Uncommon but some important stations |
There are many, many others, some of which we model and support in our guide.
Protocols
A protocol is the “layer 5″ network/transport technology that governs communication between client and server.
| Protocol | Typical Stream Formats | Prevalence |
|---|---|---|
| HTTP | MP3, AAC, Windows | Very common |
| RTSP | Windows | Very common |
| ICY | MP3, AAC | Common |
| MMS | Windows | Uncommon |
| RTP | Flash | Uncommon |
ICY is basically the same as HTTP, but the server responds with ICY rather than HTTP in its status line:
GET http://streamserver.com/stream.pls HTTP/1.0
ICY 200 OK
Playlists
Playlists are simply groups of stream URLs. They are often nested and can reference arbitrary stream formats.
| Playlist | Typical Stream Formats | Prevalence |
|---|---|---|
| M3U | MP3, AAC | Very common |
| PLS | MP3, AAC | Very common |
| ASX | Windows | Very common |
| RAM | Real | Uncommon |
| SMIL | Real | Rare |
It is common for playlists to be malformed – bad formatting, invalid XML, etc.
Filtering and Player Support
The alphabet soup of protocols, codecs, and playlists can create serious headaches for stream players. Our services offer filtering so that players do not receive streams they cannot play.
In OPML, this is controlled by the global formats parameter. In OpenMedia, it is the formats customization. Alternatively, we can configure your partner profile with a set of media types.
See the respective API references for details.