Hi all,
Coming out of the lurker mode to ask a question here :) I am kicking around an idea for a work that would require four camera inputs. The video streams would be remixed in realtime and output via a single projector. Was wondering if anyone has played with the scenario and has some advice to offer?
OS-wise I could go with ether OsX or LInux. I am looking for the max resolution from each input. Hopefully at least 320X240. Ideally higher. Camera-wise I was looking at two solutions 1. four cameras go into a multiplexer and then I grab the four different quadrants from the video stream or 2. four firewire cards (might be too much of a brute force solution:) + might run into some interesting driver issues). Also, is there an advantage to having two boxes processing inputs and then sharing them over a network i.e. using more then one computer for this work?
Any advice would be very much appreciated. Thank you.
dima
Dmitry "Dima" Strakovsky Assistant Professor of Intermedia University of Kentucky http://www.shiftingplanes.org
Dima Strakovsky wrote:
Hi all,
Coming out of the lurker mode to ask a question here :) I am kicking around an idea for a work that would require four camera inputs. The video streams would be remixed in realtime and output via a single projector. Was wondering if anyone has played with the scenario and has some advice to offer?
OS-wise I could go with ether OsX or LInux. I am looking for the max resolution from each input. Hopefully at least 320X240. Ideally higher. Camera-wise I was looking at two solutions 1. four cameras go into a multiplexer and then I grab the four different quadrants from the video stream or 2. four firewire cards (might be too much of a brute force solution:) + might run into some interesting driver issues). Also, is there an advantage to having two boxes processing inputs and then sharing them over a network i.e. using more then one computer for this work?
Any advice would be very much appreciated. Thank you.
Hi!
I built an installation together with an Artist last summer, using up to 6 USB 2.0 web cams running at 640x480, 30fps each, using a single computer. We used "driverless" cameras (UVC standard) which worked out of the box on OSX (logitech vision pro for mac), but you also could use any usb 2.0 camera with uncompressed output too. There are independent driver projects for some of them, so have a look.
I used GEM to mix / arrange all camera images together and pix_blob and some more pix_ objects for motion detection on osx. this took 50% cpu on a macbook pro on both cores ( a 2x2.2 GHz model).
Initially I also tried different debian distributions and the same usb cameras (worked out of the box too). When I tested them they all caused too high cpu usage, not only in pd/gem - approximately 50% to 60% on a single core @ 1.7GHz. This was approximately 1 year ago, so maybe there are some improvements now. Maybe I was unable to deactivate jpg compression or so - I never had time to find the exact reason for this - so if someone can tell more...
At least I could use one of these cameras in 'guvcview' later which only used 15% cpu of a 1.8GHz core.
So from my experience - if you are no experienced linux user, you'll be less annoyed using osx and many usb cams. I have no experience with many firewire cameras, I never had a chance to use more than one, and this was only a DV cam, causing latency and high cpu usage for decoding.
One annoying thing about USB cameras are the cable lengths which should be considered first (you can chain many usb hubs or repeater cables though).
Martin
On 08/08/10 20:12, Dima Strakovsky wrote:
Hi all,
Coming out of the lurker mode to ask a question here :) I am kicking around an idea for a work that would require four camera inputs. The video streams would be remixed in realtime and output via a single projector. Was wondering if anyone has played with the scenario and has some advice to offer?
My solution for this was using a PCI framegrabber card with 4 video chips, allowing for 16 video inputs into 4 buses, each 640x480. This was what prompted me to switch to Linux as there were no such cards with OSX drivers available. Using GEM I was able to use the 4 video chips simultaneously, and could use alpha blending with at least 12 layers of video if I also played back video files. More than 4 cameras simultaneously was also possible if I only wanted quite low framerates, but mainly the extra inputs allowed switching between several cameras and video inputs from within GEM.
This was six years ago and there are more choices available now. Note that generally if using composite video very little, if anything, is gained by using a resolution better than 320x240, since that is about as much information as is available in most composite systems and GEM, or rather the graphics card, scales up very smoothly if set correctly, so you can mix with higher resolution video files very well.
My prototype was on OSX with a single firewire video input, using DV, but I abandoned this approach because firewire [at least when using DV] has a substantial latency built in [about 8 frames]. It is not optimised for live use but rather for reliably transferring video from tapes. With the framegrabber the cameras were not synced so latency varied between about 0.5 and 1.5 frames [in a serious digital video mixer the cameras are synced together and the latency is fixed at 1 frame].
Using multiple input machines could work with some kind of streaming, but there would be latency and compression issues to consider, while if you get an appropriate framegrabber then the frames can be passed on to GEM quite efficiently so not much CPU is used, and all the moving around of pix data is over fast internal buses and the alpha blending is done in the graphics card GPU.
I added a second graphics card later, so eventually I had 4 DVI outputs and 4x4 video inputs, this worked smoothly and it would have been very hard move all that data between different machines if I had used streaming instead.
The framegrabbers were from Euresys, the graphics cards were Nvidia, but the choices would probably be quite different now, six years later!
Simon
Dmitry "Dima" Strakovsky Assistant Professor of Intermedia University of Kentucky http://www.shiftingplanes.org
PS I lived in Lexington when I was little, while my dad was working at that University for 3 years, but that was a very long time ago.
On 2010-08-08 14:12, Dima Strakovsky wrote:
Hi all,
Coming out of the lurker mode to ask a question here :) I am kicking around an idea for a work that would require four camera inputs. The video streams would be remixed in realtime and output via a single projector. Was wondering if anyone has played with the scenario and has some advice to offer?
OS-wise I could go with ether OsX or LInux. I am looking for the max resolution from each input. Hopefully at least 320X240. Ideally higher. Camera-wise I was looking at two solutions 1. four cameras go into a multiplexer and then I grab the four different quadrants from the video stream or 2. four firewire cards (might be too much of a brute force solution:) + might run into some interesting driver issues). Also, is there an advantage to having two boxes processing inputs and then sharing them over a network i.e. using more then one computer for this work?
i've been using up to 4 usb-cams (PS3 eye) in parallel with Gem at a resolution of 640x480.
latest Gem (currently SVN-trunk, no release yet; on linux! i think on OSX this has been covered with the QT API for ages), can also grab streams from IIDC cameras (raw video over firewire), which might give you a lot of streams in parallel, but i haven't tested using more than 1 camera (due to lack of hardware)
fgmasdr IOhannes