Main menu

We were recently presented with an interesting problem by a long time local customer and friend to many of us here at High Speed Web. WRHI is a local media center running some 6 radio stations. They stream these stations over the internet with us currently via RTMP, Adobe’s proprietary streaming protocol. This works great when streaming to flash enabled browsers, but when their customer base increasingly demanded mobile device compatibility, WRHI had a problem. With Adobe and Apple, the maker of the famous iPhone, iTouch, and iPad, in a pissing match over the future of streaming mobile technology, WRHI needed to be compatible with both. After some research, Wirecast was chosen as the streaming encoder and Wowza as the streaming server. These were chosen based on their flexibility and inter-compatibility. The bigger issue was streaming 6 streams from the same box. Their original solution had them running 6 separate streaming servers.

So here’s what we did…
First, we needed to get around the sound card input limitation. Most standard sound cards only have one input. You can sometimes tweak windows to use the mic AND line-in, but it’s flaky at best. Plus, 2 inputs is hardly 6.

These cards run about $200 and are generally considered “worth the money” since it was cheaper than building multiple boxes and buying multiple Wirecast licenses. The ‘1010’ part in the card’s name tells us it has 10 inputs and 10 outputs.

It lies.

Kind of.

It has 10 mono lines in and 10 mono lines out. But Windows hates mono and sees them as 5 pairs of stereo inputs and outputs. Plus one of each is digital audio, which we aren’t dealing with, so we are down to 4 stereo inputs and 4 stereo outputs. Outputs are meaningless to us in this project since the output will be encoded streams leaving through the Ethernet cable, not the outputs on the card. So we have 4 stereo inputs. Not enough. We could use the mic and line in, but that is asking for issues.

Time for another M-Audio Delta 1010LT!

You can just skim over this one, it's the same.

So we put these into a box with the following specs:

AMD Phenom 9150e Quad-Core Processor 1.80 Ghz

4 Gb DDR3

Windows 7 Pro – 64 bit

500 Gb SATA Hard Drive

10/100/1000 Ethernet card

Not the greatest in the world, but should definitely be able to do the work needed. So we set it all up, install Wirecast, install the drivers (We had to use the 5.10.0.574 driver in order for Windows 7 to see both cards), and all that jazz. Everything worked. So we moved to the next step, setting up Wirecast.

First, we need to turn on a few things that are off by default so we can even see what is going on.
The top one shows us the master audio levels of the chosen stream, the second shows us the details below for the “Shot”.
We click on the Audio layer to view the available audio input sources. Just click the one you want and you will see its input manifest in the audio levels. That was easy, now we can setup the broadcast settings. It’s pretty straight forward and the only thing we did different was turn off the video portions of the streams. No need sending excess fluff over the wire when we don’t want it anyway.

Once we got that done, we fired up all 6 streams.

And hit the wall of fail.

Wirecast said everything was connected and streaming. And as we fired them up one at a time, they were. But at about stream 4, Wirecast started dragging to a halt and all streams stopped. So, we checked stats on the box.

CPU was at 30%. Nothing.

RAM usage was about 64Mb for Wirecast, about a Gb total. Also nothing.

Network usage was so small it didn’t even hit 1%.

So we called Wirecast. After a few minutes of bouncing in menus, I got a support rep on the phone. He said what we were trying was, frankly, impossible. We would have to go with the multi-server solution.

Obviously he had no idea what he was talking about.

So we called their sales people and asked who the Best and Brightest Wirecast Specialist there was.

Andy.

Andy knew Wirecast better than Einstein knew the Theory of Relativity. And he was free.

And best of all: he would call us back shortly.

Andy said what we were doing was not only possible, it was ideal. Our problem was the one thing we didn’t check: the graphics card GPU. Turns out Wirecast relies heavily on the graphics card GPU’s ability to process media extremely fast for encoding streams. He said to use a video card that was DirectX9 compatible and had at least 1Gb onboard RAM. He also said to go with nVidia if we had a choice. Not sure why, but ok!

For this, we found the nVidia GeForce GT 240. It fit the specs given to us by Andy and it was only about $100.

It’s not really 6 audio streams from one Wirecast document, it’s 6 Wirecast documents opened with one Wirecast license and streaming two streams per document. In Wirecast, if you goto File -> New, it will open a new document, while leaving the original open too. I saved each of these 6 documents then placed a shortcut to each in the Startup folder. I hope that made sense, if not, let me know.