Set up
Video and windows
Add the aircraft's camera by its address and it opens in a floating window over the map, or in a window of its own on a second screen. The same kind of window holds SSH terminals.
Adding a camera
On the Video page, each camera is an address with an optional user and password. A camera is one of two types:
- RTSP
- Also
udp://,srt://andhttp://streams. Decoded by Corvus with ffmpeg, which has to be installed on the computer (see below). TCP is the default transport because it survives a lossy link; UDP is there for cameras that only do that. - WebRTC
- The WHEP address of a stream on a media server such as MediaMTX (
http://host:8889/<stream>/whep), go2rtc or Janus. The video goes straight from there to the window, with the lowest delay, and needs no ffmpeg.
The page lists the codecs the window can play over WebRTC, because the desktop app's browser engine may lack H.264. An H.264 camera then comes in over RTSP instead.
A user and password written into the address are moved into their own fields, and the password is never shown again.
Installing ffmpeg
A browser cannot play RTSP, so Corvus decodes it with ffmpeg, which is not
bundled. Install it with Homebrew (brew install ffmpeg), your
distribution's package manager (sudo apt install ffmpeg), or
from ffmpeg.org, or give its path on the page. The environment variable
CORVUS_FFMPEG works as well. ffmpeg runs only while a camera
window is open, and stops a few seconds after the last one closes.
Opening a camera
Open on the Video page puts the camera in a floating window. A camera button also appears on the map once a camera is set up: with one camera it opens and closes it, with several it opens a list to pick from, or to open and close them all.
The window's title bar says what the picture is:
| Title bar | Meaning |
|---|---|
| LIVE | Frames are arriving. |
| CONNECTING | Opening the stream. |
| NO PICTURE | Connected, but no frames. |
| OFFLINE | The camera cannot be reached. |
When the picture stops, the last frame stays up greyed out with the reason over it, so a frozen picture can never pass for a live one. Cameras reconnect by themselves.
Floating windows
Camera windows and terminal windows (from the SSH tab and the launcher plugins) all work the same way. Drag them, resize them, maximise them, and keep several side by side.
- In the desktop app
- Each opens as a window of its own, free to go anywhere, including a second screen, and back where you left it the next time it opens. The pin in its title bar keeps it above the Corvus window; other programs can still cover it when they are in front.
- Inside the Corvus window
- With Settings, Camera and terminal windows, Open inside the Corvus window on, windows open inside the app instead. Drag one past the edge by its title bar and it carries on outside; let go of it over the app and it is back in.
- In a browser
- A page cannot make windows of its own, so they always open inside, and the title bar has a button that opens one in a pop-up.
Title bar
A window of its own has the title bar of the operating system, with its own buttons to close, minimise and maximise it. The name, the status, the pin and the power button stay in the Corvus bar. On macOS the traffic lights sit at its left, with the name beside them. On Windows and Linux the system bar carries the name, and the Corvus bar is the strip below it.
Corvus title bar, in the same Settings card (off by default), makes the Corvus bar the whole title bar instead: the same frame, bar, buttons and grip as inside the app, with nothing of the operating system around it. Open windows change as soon as the switch does.
Frosted and solid terminals
Terminal windows are frosted glass, with what is behind them blurred: the map inside the app, and on macOS the desktop behind a window of its own. Linux and Windows offer no blur behind a program's window, so there a terminal in a window of its own is solid; inside the app it is frosted everywhere. Solid terminals, in the same Settings card, makes them all solid.
Camera passwords
Camera passwords stay on this computer:
- They never reach the browser. A WebRTC connection is opened through Corvus, and the window only ever holds a session token.
- They never appear on ffmpeg's command line, where other accounts on the computer could read them. This needs ffmpeg 5 or later; the page warns when an older one would expose them.
- A camera moved to another host does not take its password along.
ffmpeg may only open the protocols the camera's address needs, never a local file, and every network wait has a timeout, so a camera that stops answering is reconnected instead of hanging.