One of the major challenges with Oryx 1.0 was providing a useful, high quality, video stream over a limited bandwidth network. Due to the low upload speed of Verizon 3G, coupled with the lack of video compression, Oryx 1.0 was only able to stream 240P video at a few frames per second. While the operators were still able to view the rover’s surroundings, the resulting video feed was not ideal.
This year, we are using an open-source video compression format, Theora, to significantly reduce the required bandwidth while still providing a high quality stream. Theora is able to significantly reduce the video bandwidth through spatial and temporal compression. The spatial compression aspect of Theora works in a manner similar to MJPEG compression, where it analyzes the images and reduces the quality of portions of it that the human eye is less sensitive to. To reduce it further, Theora temporally compresses the video by breaking each video frame into multiple subimages and comparing each of these subimages against the previous frame’s subimages. Theora only transmits subimages that are different from the previous frame, resulting in less data being sent across the network.
To test the network load of our video feed, we streamed high definition video at 10fps with no compression, MJPEG compression, and Theora compression, and monitored the bandwidth of each stream over 30 minutes. As seen in the graphs below, the bandwidth required by the raw stream was about 11MB/sec, far more than is available over a 3G or 4G network. Using MJPEG compression, we are able to reduce this to just 500KB/sec, which is pushing the network bandwidth to the limit. The bandwidth on the Theora stream, however, averages only 22KB/sec, well within our bandwidth requirements. The resulting video stream is still of high enough quality to drive and operate the rover without demanding a high-speed internet connection.