A Better Understanding of the Microsoft LifeCam Studio Webcam

Microsoft LifeCam Studio 300pxOver the last couple of years I’ve been exploring the realm of webcams. Along the way I’ve encountered some confusing things involving the Microsoft LifeCam Studio. To be more specific, some have claimed that it’s capable of delivering 1080p video, while Microsoft’s own information suggests otherwise. My recent experiments using vMix have shed some light into the actual capabilities of this inexpensive little webcam. I thought them worth sharing.

“You cannot change the laws of physics, Captain.” – Montgomery Scott

Remember that a USB 2.0 connected webcam is bandwidth limited to delivering a maximum of 480 mbps (60 Mbytes/sec) to the host computer. Because of this fact, and given that the video frames from the webcam are uncompressed, the USB 2.0 link can only deliver 720p30.

Microsoft is a little confusing about the capabilities of the LifeCam Studio. For example, their stated specifications for the device are pictured below.

LifecamStudio Specs 600px

They clearly claim to have a 1080p sensor, but only purports to deliver a 720p stream in support of video chat.

Yet some people, including the team behind Category 5 Technology TV, have claimed that they were able to get real 1080p30 video from the LifeCam Studio. This claim I initially found questionable, since it wasn’t backed up by satisfactory technical specifics. Robbie Ferguson from Cat5 TV once stated, “…the user MUST use "professional" software!” without stating what that might be. That said, I have recently been able to both verify and explain that claim.

The LifeCam Studio is UVC 1.1 compliant. The UVC 1.1 standard, which hails from 2005, includes a way to instruct a webcam to send MJPEG encoded frames over the USB bus. MJPEG compression is capable of compression rates as high as 20:1.

In the case of uncompressed video, 1920 x 1080 x 30 f/s @ 24 bits/pixel requires 186 Mbytes/sec. That’s dramatically more than the 60 Mbytes/sec (480 megabits/sec) limit of USB 2.0. If MJPEG compression can achieve even just 10:1 compression, that video stream is reduced to a more manageable 18.6 Mbytes/sec (148.8 megabits/sec) well within the grasp of the USB 2.0 link.

If an application takes advantage of the MJPEG capability of the LifeCam Studio, it can reliably extract a 1080p30 stream from the camera.

That’s a BIG if! The trouble is that few consumer applications are that sophisticated about setting up a webcam, but things are improving as time goes on.

vMix and Wirecast can both get 1080p30 from the LifeCam Studio, but costing several hundred dollars each, those applications are hardly what most people consider accessible. On the other hand, the LifeCam Studio does seem to deliver 1080p30 when used with SparkoCam.

Incidentally, there is a problem using the combination of Windows 7 Pro 64 bit, Wirecast 6.x 64 bit and the LifeCam Studio. That particular combination just doesn’t work well together. The camera doesn’t get initialized correctly.

Of course, Skype is something of a special case. Skype has a long history of partnering with hardware makers to optimize the user experience. Since they are under the Microsoft banner it’s safe to assume that they make the most of the LifeCam Studio. Although, I can’t recall Skype making any claims to go beyond 720p video.

This little mystery has been on my plate a long while. Just over a year ago I bought a Microsoft LifeCam Studio specifically to look into the matter. It wasn’t until my recent trial of vMix that the answer became clear.

While the question has been answered, the LifeCam Studio has proven to be less than impressive in use. It’s major advantage is that, at around $60, it’s cheaper that it’s major rivals. It’s output simply can’t compare to the Logitech C920 or C930e, which remain my benchmarks for non-PTZ webcams.

  • Aaron Hope

    It is possible to use the generic UVC driver with a LifeCam and it is the way to get the best performance, but that is not the default behavior, at least not with Windows 7. A typical application pulling YUV frames goes through Microsoft’s hardware-specific driver which uses MJPEG behind the scenes and handles the decode itself. It also how that little notification area applet is able to offer the goofy morph and color distortions. Check out GraphEdit from the Windows SDK if you’re curious.

    • mjgraves

      Aaron,

      Thanks for the tip about GraphEdit. I’ll have a look. However, I think that it’s well beyond the scope of a typical user.

      Also, I really don’t see the MS LifeCam Studio as being worth the trouble. It’s just not that good a camera. Beyond being cheap, the only valid arguments for it’s use have centered around either it’s smaller form factor, or the ability to add it to a system that already has a couple of Logitech webcams attached.

      • Aaron Hope

        Oh, I agree that the LifeCams’ are no longer competitive for real time video. For that task, it’s going to be a poor choice compared to pretty much any decent UVC camera with solid hardware h264 compression. Of course, most of Logitech’s consumer webcams don’t clear that hurdle either. 🙂 I just wanted clarify that one italicized line in the middle of your post. With normal setups, the LifeCams send MJPEG down the USB cable, whether the video capture app sees it or not. In other words, In a typical setup (i.e. using the LifeCam driver), every application takes advantage of the MJPEG capability of the LifeCam Studio. Or Cinema. Those are the only two that I’ve actually used.

        Spot on, btw: we chose them for their size and shape. The next closest thing for us is a $500 covert surveillance camera.

        TL;DR Quite right, pardon me for being overly pedantic 🙂

        • mjgraves

          In my experience very few common, consumer apps init the LifeCam Studio to send MJPEG over the wire. This is why 1080p30 is not so easily or often achieved. I have seen the camera send 1080p sized images, but at a frame rate so slow as to not be usable.

          Of course, exactly which applications you’re using makes a big difference.

          • Aaron Hope

            I may not be communicating my point effectively. The consumer app doesn’t have to request an MJPEG stream. The LifeCam driver installs a kernel-mode USB driver that pulls MJPEG frames and proxies them through an out-of-process user-mode library. That library decodes the MJPEG frames and passes uncompressed YUV or RGB to the app. That setup is not nearly as efficient as a kernel driver passing the compressed stream directly to the app, for several reasons. The salient point is that bandwidth problem is much more nuanced. The rudimentary video codec and slight-of-hand are the main problems.

            I’ve experimented with GraphEdit, AMCap, VLC, Cisco Jabber, Jitsi, Google Hangouts, Skype, Microsoft Expression Encoder Pro, and the Windows 7 LifeCam app. Hmm. Maybe Adobe Premier too. For actual use, I evaluated both Milestone XProtect and BlueIris. We have been using BlueIris in production for a couple years now. We use them mostly for process inspection where Basler and JAI were overkill. Our bandwidth problem came from running six cameras simultaneously: easy with USB3 xHCI controllers, but tricky when you need an EHCI controller for every two cameras.

          • Michael Graves

            Somehow nothing that I’ve tried except vMix, Sparkocam and Wirecast for OSX are able to get 1080p30 from the LifeCam Studio. I’ve used the MS driver in all cases. There’s only one offered by MS.

            In tests with Wirecast for OSX I’ve found that the device settings within the app specifically indicate the encode method, which allows the app to get fluid 1080p30, even those the Windows version of Wirecast cannot.

            In contrast, using Logitech webcams (C920/C930/BCC950/CC3000e) I can select MJPEG encoding and reliably get a 1080p30 stream.

          • mjgraves

            Aaron,

            This is fascinating stuff. I’ve long wanted to peek behind the curtain to see what’s going on between webcam and the host.

            Thanks for going ot the trouble of adding the detail!

          • articicejuice

            I think the frame rate was slow in your case because the pathway of unpacking the stream into raw and feeding it into the app, resizing, encoding and sending over the network was not optimized, and it puts a strain on your CPU.

  • articicejuice

    In my country LifeCam Studio Ret is a bit more expensive than a Logitech c920, but a bit less expensive than a c930. The Logitech c920 can’t deliver packed h.264 video, as they say, but c930 can. Does LifeCam deliver h264 or only MJPEG? I think Linux UVC drivers can unpack MJPEG or whatever on the fly and feed it into your IM or video capture app, but I’m not sure. Unfortunately, video editing under Linux in anything else except Blender is pain.

    • mjgraves

      The C920 and C930 can both deliver H.264 streams. I’ve done this myself in vMix, which allows explicit control of the camera encoding. It allows me to pull MJPEG from the MS camera while using the generic UVC driver.