In my previous post, I posted the raw footage recorded from the Nexø II onboard cameras. These videos give an excellent qualitative indication of how well the video downlink worked. I have now also processed the received telemetry data and have a more quantitative idea of the performance.
During the last year or two, you may have heard me talk about rocketcam or rocket-cameras, teasing with pictures but without providing too many technical details. Actually, it all started with a cryptic tweet I posted on October 23, 2016:
I have a plan. pic.twitter.com/pboLyN4oK6
— Alexandru Csete (@csete) October 23, 2016
Back in August 2010 I ran a brief experiment using GstInputSelector to switch between various video sources. You may have noticed that it was using Theora encoder while most of my other DVB experiments used H.264 encoder in MPEG-TS container. The reason for this was that I could not make x264enc work in the pipeline used for the video switcher.
Yesterday I have been testing the DVB setup using Theora encoded video in Ogg container instead of the H.264/MPEG-TS I have been using so far. Initial tests looked promising, but at the end the link was rather choppy and broken.
On this first screen shot I am running the simulator (i.e. no USRP) with a test pattern as video source. This setup was very stable and I was surprised to see that mplayer got synced much faster than when using H.264/MPEG-TS.
The second screen shot shows the setup running with the GMSK transceiver and again using a video test pattern as source. I have let it run for over 2 hours during which it was very stable. Of course, I was playing with the RF settings while it was running to make it loose the signal and force it to resync – no problems there.
Finally, I replaced the video test pattern with the Logitech Webcam Pro 9000 as video source and this is when things have started to become bad. The video came up all right but already after a few minutes, the playback becomes choppy and mplayer starts spitting “Ogg: bad packet in stream 0” messages out in the console. At the same time, the frame rate drops to about 1 fps. So this is not very useful.
For now, I will stick to H.264/MPEG-TS.
An email on the gst-devel mailing list last week pointed me to a rather interesting example in the gst-python repository: switch.py – shows how to use the GstInputSelector element in a Python script to select between different input streams. When I looked at the example I thought right away that it would be cool to use it to switch between different cameras in my simple DVB setup that uses Gstreamer and GNU Radio.
I have had this idea of using my webcam for digital video transmission for quite some time now. Capturing and processing video from UVC webcams has been a routine for a long time and I have had great success with Logitech webcams (the 9000 series) that have great UVC support. I still had a problem though with finding a good way to interface the GNU Radio transmitter and receiver to the video processing pipeline implemented in Gstreamer.
In my experiment with receiving packet radio from the ISS I used a named pipe to create a real time interface between the GNU Radio receiver and the packet decoder multimon. I decided to try this trick for sending video in to and out of GNU Radio and it works! The following experiments were implemented and executed on the 27th and 28th of July with some minimal preparation on the 26th.