You are currently browsing the category archive for the ‘Streaming’ category.

I received a Google CR-48 netbook from their Pilot Program yesterday.  One of the first things I wanted to do with it was get it to play music from my home library, which is hosted on my Windows Home Server.  I have used both Firefly Media Server and Squeezebox Server on there for a few years.  Firefly serves out iTunes-compatible DAAP, and Squeezebox Server can serve to Squeezebox-compatible clients like MainSqueeze on the Roku.  Since I knew Squeezebox had an HTTP interface, I thought it would be the way to integrate with ChromeOS.  But I’d forgotten that that was only a control interface; playback happened on a device, not the web page itself.

That reminded me of the Fireplay add-on for Firefly, which I had read about but never had a need to use.  While there is a packaged add-on of it available for WHS, installing that didn’t put the necessary files in the Firefly web interface directory.  Manually putting the files in the directory and restarting the Firefly service did the trick.  Fireplay is a flash-based player that communicates directly with the Firefly Media Server.

Fireplay on ChromeOS

Brief instructions:

  1. Obtain and install Firefly Media Server.  I have mine configured to use port 9999 for its web service.  It has an admin password, but not a music (streaming) password.
  2. Obtain Fireplay from here.
  3. Unzip the Fireplay files into your Firefly instance’s admin-root folder; mine’s at “C:\Program Files\Firefly Media Server\admin-root”.  Detailed directions are here.
  4. Restart the Firefly Media Server service.
  5. Browse to the Firefly server using a URL like “http://<servername&gt;:<port>/FirePlay.html”; mine is http://ghostrider:9999/FirePlay.html
  6. Login with a blank username and your admin (not music) password.
  7. Enjoy!

Ars Technica: Net radio “compromise” hinged on DRM adoption

The source also tells me that DRM is the only plausible “tool” at the disposal of webcasters to accomplish SoundExchange’s goal of working to stop music “streamripping.” It would appear that the more things change, the more they stay the same. The music industry is very worried about users recording Internet radio for the purposes of “disaggregating” music, and the message seems to be that if webcasters will scratch the industry’s back, then a better deal is possible. Too bad it’s a deal that could kill another potential avenue of fair use (recording radio), and limit users’ ability to enjoy radio by limiting playback to clients that support DRM.

Repeat after me, RIAA: “Streamripping librarians are not your customers.” DRM is way too high a barrier to prevent stream ripping. I disagree with the notion that stream ripping is commonly used to create libraries of music. More likely, it’s used to timeshift; that’s a fair use. The first hurdle to make it harder to stream rip would be to require HTTP authentication to connect to a stream.

The RIAA’s fight against internet radio will most likely succeed in driving the industry underground into the long tail, where it would be impossible to get station logs and collect royalties. Of course, at that point, they probably won’t care; they’ll refocus on traditional broadcasters.

I moved the main ICYG streamer over to FB2K 0.9.4/Oddcast 3.1.15 the other day. I’m shutting down the old website. The new player is populating both and foosic with playback info; they’re both neat services. Since the links on the old website weren’t generating sales, it seemed pointless to maintain the site. I’m generating unique-artist playlists every 4 hours now; I’ll probably increase the playlist duration as time goes on. This thing is pretty much vanity at this point, but I’ll continue to keep streaming. I like tuning in the mix and continuing to test the boundaries of the software.

Thanks to Oddsock for updating his excellent streaming DSP Oddcast to support foobar2000 0.9.x. I certainly wasn’t one of the ones bugging him about it, but now that it’s here I’m playing with it. This was a great time to do so, as FB2K 0.9.4 came out recently. And I’ve been thinking about changing around the ICYG back-end.

I’ve got a decent FB2K/Continuator/Oddcast chain going, with 44.1kHz Stereo Ogg Vorbis streams of Q0 and Q8 (in-home only) and a 32kHz Stereo 64kbps CBR MP3 stream. I’ve confirmed that FB2K 0.9.4 now supports FLAC streams; however, in my limited testing so far I’ve found that Icecast develops CPU usage problems when dealing out a FLAC stream. I’m eager to see if I can serve one out within the house stably, but for listening purposes the Q8 Vorbis stream is just fine.

I’ve got an instance of Winamp and Eric Milles’ Remote Speakers Output plugin that I’ve got going 24/7 listening to that Q8 stream and pumping it to the Airport Express attached to our stereo. Hi-def ICYG in the living room is a nice thing to have! And Ryan likes it when he hears the station IDs he recorded over 2 years ago come on…


My oddsock swag. The worthy will receive a bumper sticker. Thanks, Ed!

I’ve been using oddsock‘s Oddcast for years now to stream music around the house and to friends. He (Ed Zaleski) is also the guy who’s maintained the Win32 port of Icecast for a number of years (and I believe he helps with the core programming as well). Soon I will be able to proudly promote Oddsock’s site and wares in convenient t-shirt format; I won a mail-in contest that Ed held recently.

Thanks to Ed for maintaining free, quality streaming tools for us audio nerds for all these years.

I’ve played with Rogue Amoeba‘s Airfoil For Windows Beta on and off over the last few days and it’s just not reliable enough for me to consider purchasing a license for at this time. I’ve been able to get it to redirect my laptop’s WaveOut to the Airport Express, but moderate CPU/disk activity (such as firing up a browser to post this) causes stuttering and gaps in the playback that are definitely not caused by the source application or limitations in network bandwidth. Even in the absense of other active applications, the audio occasionally skips. iTunes streaming to the AE is rock solid on this system in all but the most stressful situations. Something about Airfoil’s hijacking technology isn’t fully baked, at least on this config (a Compaq Evo N610C 2.0GHz P4 running WinXP SP2 with a Wireless-G connection to the AE).

I’ve also found Eric Milles’ Remote Speakers plugin for Winamp to be highly stable, even though it’s certainly not as flexible as Airfoil. But I don’t want any arbitrary audio output to go to the AE, just the output from my media player of choice. Now if we can just get Eric or someone else to port his work to Foobar 2000…

Regarding my ogg123/Justeport recipe: it turns out that ogg123 starts introducing sharp bursts of attenuation after about an hour or so of use. Its status indicators don’t indicate anything’s wrong with the audio data it’s receiving from the stream. Since I know other clients can read the stream without these problems, I think ogg123 is introducing the artifacts. I’ll have to look around for another command-line Windows program that can tune into an MP3 or Vorbis HTTP stream and pipe to stdout.

I piqued Keith‘s interest when I proposed that we combine his programming knowledge with my audio geekery (and very limited C++/C# knowledge) to attempt to write an AirTunes-compatible DSP plugin for Foobar2000 using the Justeport source code as a reference. We may be able to get started in a week or so, once we’ve both had a chance to look over the FB2K SDK and the source code in question. I don’t know of anyone else doing this, so if you find a reference, please let me know.

After a bit of research and some experimentation, I think I’ve found a reliable iTunes-less way to send ICYG (or potentially other audio streams) to the Airport Express. I encountered two problems finding a solution that involved a Windows command-line utility: almost none would read an MP3 or Vorbis HTTP stream, and the few I found that did didn’t support writing to stdout so that I could pipe them into Justeport.

I’d heard of mpg123 and the corresponding Vorbis utility ogg123, but I’d never used either. I found that the Cygwin utility set includes ogg123, so I started experimenting with its options to pipe out raw audio for Justeport to use. I hatched a Q8 Vorbis stream on ICYG and quickly got ogg123 to tune in. My first attempts to pipe to Justeport failed, but since I knew ogg123 was producing data, I figured it was probably a buffer overflow.

As I type this, I’ve had a successful ogg123/Justeport/Airport Express connection for about 45 minutes. Here’s the command line I’m using:

ogg123 -q -b 256 -d raw -f - http://<username&gt;:<password>@<servername>:<port>/<streamname> | justeport - <AE IP address> 0

The ogg123 options:

  • -q = quiet mode (no status messages)
  • -b 256 = 256kB input buffer. Without this, Justeport would disconnect after a few seconds. I assume its buffer was overrun and it gave up.
  • -d raw = output raw audio
  • -f – = output to stdout
  • The URL of the stream is normal HTTP syntax.

The Justeport options mean to grab input from stdin and talk to the Airport Express at the specified IP address with the volume set to unity gain (0 dB).

Thanks to DVD Jon for Justeport and the Cygwin team for including Ogg Vorbis tools in their distribution!

Right now I usually tune iTunes in to the in-house 320kbps MP3 ICYG feed if I want to feed it to my Airport Express. That means the music has gone through three encoding cycles before it reaches my ears:

  1. Original encode to a file: MP3 or Ogg Vorbis (lossy), rarely FLAC (lossless)
  2. Transcoded by Oddcast for transmission to Icecast: MP3
  3. Transcoded by iTunes for transmission to Airport Express: ALAC (lossless)

I could mitigate the multiple-lossy-encoding problem by storing more of the source music losslessly, but I have a pretty large library of stuff that doesn’t sound that bad encoded the way it is. What I’d really like is a DSP plugin for Foobar2000 v0.9 that would shoot a copy of the audio out to a specified AIrport Express. I wonder if an enterprising FB2K plugin developer might be able to determine whether a plugin utilizing the Justeport code (or equivalent functionality) would be feasible. I’d probably pay $30 for a plugin that did that.

In the meantime, I was hoping to use Justeport or an equivalent (if there are any) to run a Windows command-line OGG or MP3 stream reader and pipe it to the AE. However, I haven’t found a command-line decoder for either format that can read the stream (most want to read just files) and pipe to stdout. If anyone reading this knows of one, could you please reply in a comment? I thought VLC might be a way, but I can’t figure out the options I’d need to use to get it to do this.