Live Streaming from a Notebook
Live event streaming on a notebook can be the best of all worlds, with several programs available for free or relatively inexpensively, and generally easy to use. But how powerful of a notebook do you need to stream effectively, and how do the various live streaming software programs compare in terms of CPU requirements, data rate accuracy, data rate consistency and video quality? Finally, how does the video quality of these programs match that produced by hardware appliances like the Digital Rapids TouchStream or ViewCast's GoStream SURF? In this article, I'll attempt to answer all of these questions.
Specifically, I tested three notebooks: a 2.2 Core2Duo-based Hewlett Packard 8710w, a 3.06 Ghz Core2Duo-based MacBook Pro and a 2.0 four-core (8 with HTT) i7-based Hewlett Packard 8740w. I also tested four software programs: the Adobe Flash Media Live Encoder (free), Kulabyte XStream 2 (around $10,000), Microsoft Expression Encoder 4 ($199.95) and Telestream Wirecast ($495). I realize there are other programs that I could have tested, but these seem to have the most mindshare in the live streaming market space. If you disagree, let me know, as this won't be the last article we write on this subject.
How I Tested
I tested both SD and HD inputs, testing SD on all three computers and HD only on the HP 8740w. For SD, I tested using my standard 5:50 minute 4:3 SD test file, which I output to DV tape, and fed back into the various computers from my Canon XH A1 camcorder via FireWire.
I tested five SD scenarios. First I did standalone encodes at 640x480@700Kbps, 480x360@400Kbps. and 320x240@200Kbps, all at native frame rate, and all at 32Kbps mono audio. Then I simulated production for adaptive streaming by producing the two lowest resolution streams (480x360 & 320x240) simultaneously, and if it looked like it was possible, all three streams. Note that for these tests, I captured all files to disk, rather than streaming them to a server.
I used each program's default settings as much as possible, since these should represent the software developer's view of optimum settings. Interestingly, for H.264 encoding, which is all that I tested, Adobe defaults to the Baseline profile, Microsoft to the High profile, and Telestream to the Main profile. More on that in a moment.
For HD tests, I used several HD source tapes, including an interview with former Congressman Rick Boucher, and some rehearsal footage of Virginia bluegrass band No Speed Limit. For HD, I tested two scenarios; first, a four stream test (1280x720@2Mbps, email@example.comMbps, 640x360@800Kbps, and 480x270@500Kbps, all at 64Kbps audio and native frame rate) and a single stream firstname.lastname@example.orgMbps test, again with 64Kbps audio and native frame rate. For all HD tests on all programs, I captured using a BlackMagic Decklink card connected to the 8740w's Express Card slot, capturing component video and analog audio input.
I'll present the results as follows: First I'll look at the CPU efficiency of the various programs using both SD and HD scenarios, which will tell you which programs can actually produce the necessary streams on each platform. Then I'll look at data rate accuracy, data rate consistency, and the video file quality produced by the programs.
To test CPU utilization with SD, I queued up Performance Monitor, dialed in properties that extended the measurement time to about 20 minutes and captured three minutes of video in all tested scenarios. This yielded a chart like that shown in Figure 1 for each program. Obviously, these results will tell you if you can produce the desired stream configuration(s) on your notebook using the desired program.
Figure 1. This chart from Performance Monitor shows the CPU Utilization of Telestream Wirecast in all five tests.
On the Hewlett Packard 8710w, I tested Adobe FMLE, Expression Encoder 4 and Telestream Wirecast, leaving out Kulabyte because the company targets HD web events that require more powerful computers. Table 1 shows the results garnered from the individual CPU utilization graphs, which illustrate the percentage of CPU required for each task.
Some notes about the results. First, the pass/fail designation indicates the presence of significant dropped frames in the captured file. With FMLE and EE4, this was simple, since both programs provide drop frame counters that instantly let you know when you start dropping frames.
In contrast, Wirecast displays the effective capture rate, which varies by the second. To check the suitability of the files captured by Wirecast, I checked the frame rate after capture in MediaInfo, and all files were at least 26.98 frames per second or higher. I supply more on the effective frame rate captured by Wirecast below.
100% - Fail
65-75% - Pass
45-60% - Pass
100% - Fail
100% - Fail/ 85-95% - Pass
75-98% - Pass/ 85-90% - Pass
50-60% - Pass/70-80% - pass
100% - Fail
55-75% - Pass
40-55% - Pass
30-40% - Pass
40-75% - Pass
90-95% - Pass
Table 1. CPU utilization by the respective programs.
Second, I tested twice with Expression Encoder 4, with and without GPU encoding, because it made a substantial difference in quality and performance. Performance you can see in the table; in terms of quality, check out Figure 2. Though the difference in quality was slight in low motion footage, when the action ramped up, GPU-based encoding degraded rapidly. Unless you're producing purely talking heads, count on using CPU-only based encoding until Microsoft resolves the issue with a release from Main Concept scheduled sometime in 2011.
Figure 2. With moderate motion, GPU-based encoding in EE4 degrades rapidly.
By the way, I tested EE4 using the Baseline profile instead of High. Though CPU utilization stayed around 100%, EE4 was able to capture the 640x480 stream reasonably successfully, dropping 388 of 5882 for an effective frame rate of just over 25 fps. If you're producing with a slightly faster notebook, you might give this a try, but running at or close to 100% CPU utilization seems like a bad idea for a live broadcast.
I also tested the Adobe Flash Live Media Encoder in Main mode; which bumped CPU utilisation a hair, but made very little difference in quality. For the record, I tested Wirecast with GPU-acceleration enabled, but that made very little difference in either quality or CPU requirements.
To interpret the results, if you're looking for full quality 640x480 output on a Core2Duo based notebook, Wirecast is your best bet, though Expression Encoder 4 can get the job done in a talking head scenario where you can run with GPU-coprocessing, or with a faster notebook capturing in the Baseline profile. All programs can produce at 480x360, but Wirecast is your only option for producing multiple files for adaptive bitrate streaming.
Here we get to the bait and switch portion of the review; well, kinda anyway. What I mean is that I could only get one program running on the MacBook Pro, and that was Wirecast. I had a version 3.1 of the Adobe FLME loaded on the notebook, but uninstalled it to load version 3.2, which refused to install. I tried going back to version 3.1, but that wouldn't install either. I enlisted Adobe's help, but still couldn't get it running. I know that failing to test FMLE will disappoint many Mac producers, and rightfully so, but hopefully I can rectify the situation in a subsequent review.
Figure 3. Wirecast CPU utilization on the MacBook Pro.
Anyway, Figure 3 shows the CPU History window from the MacBook Pro for my Wirecast tests. As you can see, the Mac was quite handy with Telestream, seemingly slightly more efficient than the HP 8710w, which makes sense since the Mac has a 3.06 GHz CPU as compared to the HP's 2.2 GHz processor.
The MacBook Pro and Wirecast performed very well together, with all files produced in the single file tests rendered at 29 frames per second or higher. All files produced during the latter two tests had a frame rate of 28.2 fps or higher. Only the most discerning of eyes could tell that any frames were dropped at all.
On the 8740w I added Kulabyte XStream 2, capturing via a BlackMagic Decklink card. On this computer, I tested Expression Encoder 4 exclusively with GPU disabled. I present the results in Table 2.
Kulabyte XStream 2
Table 2. CPU utilization by the respective programs.
As you can see, throwing CPU horsepower at the problem definitely helps resolve it, as from a CPU utilization percentage, the i7-based HP definitely makes all streams and combination of streams accessible from all programs. No pass/fail here - all programs produced streams without dropping noticeable amounts of frames.