Resurrecting RealPlayer
Technically RealNetworks and their premier product #RealPlayer still exist in this year of our dragon lord 2026, but in a very different form from their heyday in the late 1990s. Something I was playing with a week or so ago reminded me of it, and I decided bringing it back from the dead would be an interesting project.I first discovered RealPlayer sometime in 1997 when I found an early version of it included with Windows 95, hidden in the SYSTEM directory. Microsoft shipped it along with Internet Explorer to provide media playback until they replaced it with their own Windows Media Player (which Real later sued them for). Even though this was the dial-up era, streaming audio channels even for just a few minutes at a time seemed fun. The player began to succumb to bloat once it hit version 6 but before that it was a pretty decent experience. I decided that RealPlayer 5, and its associated infrastructure, would be the best target.
Well, actually I wanted to target RealAudio Player 3 but I couldn't find a compatible server so I settled for Basic Server Plus 5. That gave me the option of experimenting with video if I wanted to, so it was a decent second prize. I set up a Windows 2000 VM to run the server on. I'd have preferred WinNT 4.0 but that will not run under the current version of QEMU. I was also able to find the UNIX versions (including Linux and FreeBSD) but I decided to go with Windows for this.
The server was easy enough to get going (although I wasn't able to get it to work as an NT service) so the encoder came next. I wanted to do live streaming rather than static files, and that led to another challenge. The Real encoder is hardcoded to take input from your sound card's mic or line input; it won't stream your desktop audio even if you set that as your recording source in Volume Control. An old version of Virtual Audio Cable let me work around that. The next wrinkle was that the encoder doesn't let you choose an audio input device; it always uses whichever one you have set as your default in Windows. Because of that, it's only possible to run one stream per machine. If you want to offer more channels (or enable bandwidth auto-negotiation) you have to use separate machines.
Audio is fairly easy, the aforementioned caveats aside, but video is a greater challenge. Like audio, the encoder absolutely insists on taking input from a camera or video capture card. I wasn't able to find anything that would run on pre-Win7 versions of Windows that would allow capturing the desktop display through a virtual device so I was stuck putting together a bit of a Rube Goldberg contraption: a laptop running Windows XP feeding VGA output to a TV scan converter, itself feeding into a USB analog capture card connected to the laptop. This, together with Virtual Audio Cable, allowed me to capture the output from VLC and encode it to a live RealVideo stream. Strangely I had problems with RealEncoder 5, but RealEncoder 1.0 (part of the RealServer 4 suite) worked fine.
So, with server and encoders going, attention now shifts to playback. The streaming protocol works a bit like FTP: the client opens a control connection to the server on TCP port 7070, then the server opens a connection to the client on a random UDP port in the 6970-7170 range (or whatever's set in the client preferences). That was fine in the dial-up era, when no one used NAT and hardly anyone used firewalls, but that would not work on the modern Internet. Starting with RealServer 4, Real added a feature they called "Smart Networking" to the server, allowing it to stream content via HTTP on port 80 rather than opening a direct connection to the client. This made it difficult to run a web server on the same machine though; that's why I opted not to run the Real server on my OpenBSD VM.
It was because of this unusual-by-modern-standards protocol that I decided to connect my server to Compu-Global-Hyper-Mega-Net (which I talked about in my previous blog post ) rather than running it directly over the modern 'Net. NAT is generally not used on #CGHMN and very few people run firewalls so the 'callback' connection method works fine, just as it did over dial-up. If you're on CGHMN and you want to give it a try, visit my site at www.n8fq.retro/real.
#RetroComputing #RealAudio









