descriptionShow synchronised video on multiple projectors
homepage URL
last changeTue, 21 Jan 2014 02:50:07 +0000 (21 15:50 +1300)
content tags

Opo: a small video whale

Opo is designed to show synchronised full screen video on projectors connected to multiple video cards. It can also do other things, like split video across a number of non-full-screen windows, but that is sort of incidental.


You need the dev packages.

To run across multiple screens you need multiple video outputs; for more than 2 screens this means having more than one video card, which in turn means having a motherboard capable of handling multiple cards. Not all combinations of video cards will work.


Try make.


#show a test picture split over 3 windows
./opo -F 2 -s 3

#split a picture full-screen across 4 monitors connected to 2 cards
./opo -c picture.avi -w 1024 -h 768 -x 2 -f -s 4

#see what else you can try
./opo --help

Importing video

Opo-launcher provides a means to stitch together several single-window video sequences windows into an opo-ready multi-window video.

The examples directory has scripts showing how this process can be controlled in greater detail.

Name and history

In 2002 or before, Zeeshan Ali Khattak and others made a video wall using Gstreamer and Xinerama. They called it Video Whale (more details). To run the 4x4 array of monitors, they had 4 computers with 4 video cards in each, and a fifth computer that fed video to the others over the network. Opo was inspired by that project.

Ngā Hau E Whā is an artwork developed by Leilani Kake for the 2011 Auckland Arts Festival, to be shown at Fresh Gallery Otara. It requires four perfectly synchronised video projections.

Opo was a famous New Zealand dolphin.

This software was written for Leilani Kake's work, and Opo is a conveniently short and available name for a small New Zealand Video Whale.

Copyright and License

Copyright © 2011 Douglas Bagnall

Portions of opo.c were originally derived from examples provided by the Gstreamer developers.

Provided under the terms of the Gnu General Public License Version 3 (see the file COPYING or

2014-01-21 Douglas BagnallConvert README to restructured text for the benefit... master
2012-04-26 Douglas Bagnallfixing C void function signatures ignorantly left blank
2011-03-15 Douglas Bagnallmake README todo section a bit clearer
2011-03-10 Douglas Bagnalladd notes about undone stuff to README
2011-03-10 Douglas BagnallMore to read in README
2011-03-10 Douglas Bagnallmove stitching scripts into new examples directory
2011-03-10 Douglas BagnallAdd GPL3 headers to main files
2011-03-10 Douglas Bagnallgitignore opo.rc and video, log directories,
2011-03-10 Douglas BagnallRemove old nhew example files
2011-03-03 Douglas Bagnalldon't crash if opo.rc has bad filename
2011-03-03 Douglas Bagnallimprove video quality slightly
2011-03-02 Douglas Bagnallspell os.environ correctly, and always run with debug...
2011-03-02 Douglas Bagnallin case of zoomed display, put opo-launcher window...
2011-03-02 Douglas Bagnallhack to make julia picture higher
2011-03-02 Douglas Bagnallmake top_clip work, and tuning stitching scripts
2011-03-02 Douglas Bagnallremove pipeline cycling stub
4 years ago master