|Epiphan VGADVI Recorder|
The device is far from cheap (list price is 1840 € + VAT) and can really do a lot. For example, it can create H.264 movies with a bitrate of up to 9 Mbit. It can also upload the videos to a CIFS share, but sadly that works only at a transfer speed of about 4 Mbit! So how could I transfer the videos at really high quality settings (9 Mbit) to the CIFS share? Waiting 2 hours to transfer the videos of a 1 hour talk is no option.
Linux and Open Source to the rescue!
My solution is a simple UDP stream recorder running on my desktop that receives a UDP stream of the video and saves it directly onto the CIFS share :-) UDP broadcasting of the video stream is a nice feature of the device and works at the full bitrate that it can encode. This is actually meant to be used for live broadcasts of the talk to the Internet, but it also can serve to beam the video from the device to another computer.
Since it took quite a while to cook up this simple solution (and I did not find any satisfactory search result), here it is:
Implementation DetailsThis implementation uses some tricks to make it so simple:
- socat connects between incoming UDP packets on port 6002 and a program that writes the data to a file
- Upstart keeps socat running and restarts it if it fails
- socat terminates itself if it did not receive anything for 5 seconds
- The Perl code
- uses perl -n as the read loop
- creates the destination file only if there is actually some data to write.
No data = no file
- uses the current date and time as filename - at the time it actually starts to receive something
- Logging (only errors) is done via syslog
As a result each time the recorder is used the videos (H.264 in a MPEG TS container) will appear instantly on the file share. Just connect the device and the UDP Stream Recorder automatically records everything.