Simple video wall for viewing IP cameras.
X11 and mpv is used to display multiple low latency RTSP streams.
Each stream is a X11 window with a mpv player embedded through the --wid mpv option.
There are three views, fullscreen, grid, and layout. The layout view requires passing a layout file which allows manual placement of streams.
The preferred method is to use the Ansible Role which sets up a headless installation.
Not required if using the Ansible Role.
sudo apt install xserver-xorg-core xinit libmpv2
Configuration file is at camviewport.ini.
| Variables | Description | Example |
|---|---|---|
layout |
Layout file path | |
key-* |
Key binding where * is a X11 key without XK_ prefix, see Actions for values |
|
mpv-* |
mpv option where * is the mpv option |
|
main-mpv-* |
mpv property where * is the mpv property when main stream is playing |
|
sub-mpv-* |
mpv property where * is the mpv property when sub stream is playing |
| Variables | Description | Example |
|---|---|---|
main |
RTSP stream only used when the view is fullscreen or grid with a single stream | |
sub |
RTSP stream | |
mpv-* |
See Global Variables | |
main-mpv-* |
See Global Variables | |
sub-mpv-* |
See Global Variables |
| Action | Default Key | Description |
|---|---|---|
quit |
q |
Close the program |
reload |
r |
Reload the layout file |
home |
space |
Toggle fullscreen |
next |
l |
Go to next pane |
previous |
h |
Go to previous pane |
; Key map
key-q = quit
; Global mpv option
mpv-hwdec = vaapi
[CAM-01]
; Main stream
main = rtsp://admin:[email protected]:554/cam/realmonitor?channel=1&subtype=0
; Sub stream
sub = rtsp://admin:[email protected]:554/cam/realmonitor?channel=1&subtype=1
; Stream mpv option
mpv-video-rotate = 90
; Main stream mpv property
main-mpv-keepaspect = yes
; Sub stream mpv property
sub-mpv-keepaspect = nosudo apt install build-essential libmpv-dev
