Thursday, April 5, 2018

Open Sourcery

I recently encountered a nice looking video encoder/decoder device by a Canadian company called Haivision, which seemed to be able to do exactly what we needed.  These devices use OpenEmbedded Linux to do video streaming, so that one can take an SDI camera and stream the video over ethernet with MPEG-2 TS and decode it again on the other end.

Multicast Route Bug

Unfortunately, we found a multicast configuration bug:  The unit lacks a multicast route.

The multicast route is explained in the route man page: 

route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0
This is an obscure one documented so people know how to do it. This sets all of the class D (multicast) IP routes to go via "eth0". This is the correct normal configuration line with a multicasting kernel.
It can be fixed easily if I could log in with SSH and add the route setup in /etc/rc.d/rc.local.  

Chain Gang Software

However, after some backing and forthing with their customer support, it transpired that Haivision used a Chinese company to build the devices and that Haivision does not have the source code or the root passwords for the devices.  Consequently, one can only use it for unicast streaming and multicast streaming won't work as intended.

The devices are probably good enough for the majority of users, but it is useless for our specialized application, so the devices are now in a junk box and we'll make our own solutions with general purpose embedded computers and gstreamer.

Free Software

The General Public License was intended to prevent this problem, but if people are uninformed about it, then they cannot exercise their rights.

Oh, well, what the hell!
-- The Bomber, Catch 22, by Joseph Heller

Porcupine Pi

One solution is to buy a $400 SDI to USB adaptor, plug it into a $30 Raspberry Pi computer and install Raspbian Linux operating system.  A few hours of tinkering with gstreamer and we have vanilla soup.


La voila!

Herman

No comments:

Post a Comment

On topic comments are welcome. Junk will be deleted.