Capturing The Video Output Of A Nexus 7 Tablet

DoorBot-in-Nexus5There are times when it would be handy to capture the video output of an Android device. This is typically what I need when writing something about an app that does something dynamic. For example, AudioTool by J.J. Bunn. As a tool for simple audio test & measurement capturing its output in real-time is the ideal way to communicate the measurement being taken. A static screen shot is fast & easy to accomplish, but video can be much more illuminating.

Both my Nexus 4 and Nexus 7 (2013) support the use of a Slimport USB-to-HDMI adapter to connect to a monitor. The output of that adapter is 1080p60. The BlackMagic Design Intensity Pro HDMI capture card that I’ve used for the past couple of years can capture streams up to 1080i60, but not 1080p60.

Quite recently I swapped out the Intensity Pro for an AVerMedia Game Broadcaster HD. This card has the ability to capture a 1080p60 stream. In so doing it drops every second frame to actually save a 1080p30 stream to disk.

My first use of the AVerMedia card was to record VUC482 with the Jitsi team. Since we were making use of the Jitsi Video Bridge which did not yet have call recording capability, the ability to make a high-quality local recording was important. I captured the output of my laptop with Chrome in full-screen mode. In that case the recorded video stream was 720p30 since JVB wasn’t sending us very high-resolution streams from each user.

This week I’ve been trying to wrap up describing my experience with DoorBot. I hope to include some sample video in the close of that series. Thus I’ve been experimenting with capturing the output of my iPad and Nexus 7, both of which run the DoorBot client application.

ipad-screen-capture

The iPad can be captured using an inexpensive 30-pin-to-HDMI adapter cable. However, it’s output resolution and shape leaves me unsatisfied. Since it doesn’t match any standard HDTV frame size it never completely fills the frame. Black bars are always presented on each side of the stream.

Thinking I could do better than this I turned to my Nexus 7 tablet. When using the Slimport adapter it sends a standard 1920 x 1080 pixel stream. However, you can’t simply capture that stream. Both the Nexus 4 & 7 set the HDCP flag to prohibit recording of their output by default. Oh, bother!

HDCP-Message

A little research online suggested that the HDCP handshake between the device and the display might be satisfied even if an active splitter was in use. That would allow the Slimport output to be sent both to a monitor and the capture card. Given this potential I ordered an Etekcity® 1080P HDMI 2 port 1×2 Amplified Splitter from Amazon. It cost a whopping $20.

Etekcity hdmi splitter

When It arrived I was happy to find that what I had read online was true. If the splitter is used to send the Slimport output to a monitor and the AVerMedia card I can record the Nexus 7 video output into Wirecast. The following is a short example video to prove the point.

There are a couple of notable, but not necessarily obvious things about this recording;

  • The scene is composed in Wirecast with my Logitech C920 camera composited over the capture card
  • It’s 1080p30. In fact, it’s the first 1080p30 recording that I’ve ever uploaded to YouTube.
  • The Logitech C920 is also configured to deliver 1080p30, although it may be hard to tell given how it’s used in this case. Getting 1080p from a USB 2.0 webcam is a topic that I hope to address another time when I return to my ongoing series on webcams.

There is one caveat to this arrangement, it doesn’t capture audio from the Android device. When I capture the output of my laptop into the capture card they are connected directly using a mini Displayport to HDMI cable. In that circumstance the capture card appears as an audio device to the laptop. The system sound can be recorded into the capture file, which is most convenient.

When I add the HDMI splitter into the mix it seems that the audio path is severed. The laptop never shows the capture card as being attached, so it uses the default audio devices for playback.

As a practical matter this an be overcome by connect the audio via a separate, explicit path to the capture card. A 3.5mm TRS cable seems appropriate. Then the capture card can be setup to record the audio from its analog input instead of the HDMI connection.

So, to quote a former American president, mission accomplished! I can now record the output of my Android devices as easily as any other video source in my arsenal. Time to turn my attention back to that devilish DoorBot.

  • mjgraves

    Subsequent to writing this post I’ve found that I can capture audio over the HDMI input when using the splitter. At least, the YouTube app on my Nexus 4 is able to send audio vie the SlimPort/Splitter combo when the other leg of the splitter is connected to an HDTV.