Your security cameras on the big screen
Every camera on your Reolink NVR, in one grid, on the TV you already have. Open any camera full screen, pan and tilt with the D-pad, and let follow motion put whatever is happening in front of you.
A one-time purchase · Local network only · No cloud account · Independent — not affiliated with Reolink
Camera imagery throughout is stand-in stock footage, not real cameras.
How live video actually works
Roku cannot play any of the live video formats Reolink produces
Reolink devices publish RTSP, RTMP and HTTP-FLV. Roku's video player supports HLS, DASH, Smooth Streaming and progressive MP4. There is no overlap — this is a fixed platform limitation, not something a channel can work around on the device.
1. Snapshot stream — the default, works immediately
Kestrel polls the camera's JPEG snapshot endpoint and swaps the image continuously. This needs no extra infrastructure at all: point the channel at your NVR and it works.
Full screen always asks for the best stream the camera offers; the wall polls more slowly and can use a lighter one. There is no audio, and it is a frame sequence rather than true video — the real ceiling is how fast the NVR produces a JPEG and the Roku decodes it, not the interval you configure.
For a camera wall, checking the driveway, or lining up a PTZ shot, this is genuinely fine. For watching motion in detail, it is not.
2. HLS via a restreamer — full-motion video
If you already run something that converts RTSP to HLS — go2rtc, MediaMTX or Frigate — Kestrel will play that instead, giving real video with audio.
Set HLS URL template in Settings to a URL containing {ch}
for the zero-based channel number, or {ch1} for the one-based one:
http://192.168.1.50:1984/api/stream.m3u8?src=cam{ch}
Then press OK in live view and choose Switch to HD video. If the stream fails, the channel falls back to snapshots and tells you why. Expect a few seconds of latency — that is inherent to HLS, not to Kestrel.
A matching go2rtc.yaml for a 4-channel NVR:
streams:
cam0: rtsp://viewer:[email protected]:554/h264Preview_01_main
cam1: rtsp://viewer:[email protected]:554/h264Preview_02_main
cam2: rtsp://viewer:[email protected]:554/h264Preview_03_main
cam3: rtsp://viewer:[email protected]:554/h264Preview_04_main
Reolink's RTSP paths are one-based and zero-padded, while the channel numbers in the API
are zero-based — hence {ch} mapping to cam0 above. Use
main for full resolution or sub for a lighter stream.
Designed for a remote control
Ten feet away, with eight buttons — so nothing hides behind a cursor.
A wall that gets out of the way
Every connected camera in one grid, refreshing continuously. Leave the remote alone for fifteen seconds and the header and footer hide, the cameras expand to fill the screen, and any key brings the chrome back.
Follow motion
Press ▶ on the wall and the screen shows every camera currently detecting something — up to four at once as a mini-grid, or full screen when only one is active.
Detection comes from the device's own AI state, which classifies people, vehicles, animals, faces and packages, with plain motion as the fallback for cameras without classification. Both are batched into a single request per poll, so watching fifteen cameras costs two round trips rather than thirty.
A camera keeps its place for a dwell period — twelve seconds by default — after it stops detecting, because detection flickers on and off constantly during a real event. When the last dwell expires the screen hands back to the wall, so the wall is the resting state and follow mode is what happens when something occurs.
PTZ, presets and lights
Pan and tilt with the D-pad, zoom with the transport keys, and jump to the presets saved on the camera. Infrared illuminators and spotlights toggle per camera from the same menu.
Controls only appear for cameras whose reported capabilities include them, so a fixed camera never offers a control that would only produce an error. Dual-lens cameras such as TrackMix expose their telephoto as a second logical channel rather than optical zoom, so the transport keys switch lens instead: ▶▶ for telephoto, ◀◀ back to wide.
Controls
Camera wall
| Key | Action |
|---|---|
| D-pad | Move between cameras |
| OK | Open live view |
| ▶ | Follow motion |
| ✱ | Settings |
Live view
| Key | Action |
|---|---|
| D-pad | Pan and tilt — hold to keep moving |
| ◀◀ / ▶▶ | Zoom out / in, or switch lens on dual-lens cameras |
| OK | Camera controls — presets, lights, lens, video mode |
| Back | Return to the wall |
A short form, then you are done
The channel opens on a Connect screen asking only for what cannot be guessed. Everything else starts on a sensible default.
| Setting | Notes |
|---|---|
| Host or IP address | Your NVR or camera on the LAN |
| Username / Password | A dedicated non-admin account is recommended |
| Allow self-signed certificate | On by default — correct for a local device using its factory certificate |
Choosing Connect checks the details against the device and only continues once it answers, so a wrong host or password is corrected in place rather than failing later. If your device is on a non-standard port or serves HTTPS, More settings… opens the full list — and the connection error points there too, so the short form is never a dead end.
Full settings
Reachable any time from ✱ on the camera wall, or OK → Settings… in live view. Settings persist across launches in the Roku registry, and Forget saved settings clears the stored host and credentials.
| Setting | Default | Notes |
|---|---|---|
| Port | 80 | Switching the HTTPS toggle moves this to 443 |
| Use HTTPS | Off | Only if your device serves its web UI over TLS |
| Live view refresh | 2 / sec | Up to 4 / sec |
| Camera wall quality | Sub stream | Usually plenty for grid tiles |
| Camera wall refresh | 1 every 2 s | Slower is easier on the NVR |
| PTZ speed | Normal | How fast the camera moves when you hold a direction |
| HLS URL template | None | See HLS setup |
Kestrel Screensaver
Your camera wall, while the TV rests — free alongside the app.
An idle TV fills with the cameras on your NVR — every connected camera at once, tiled edge to edge across the whole screen, refreshing continuously. There is no interface over the top of it: no header, no captions competing for attention, nothing to dismiss. Just the cameras.
Dimmed for a dark room
A screensaver comes on unattended, and often while the house is asleep. A wall of daylit camera feeds at full brightness would light the room, so the picture sits behind a soft wash — dark enough not to be a lamp, clear enough to read from across the room if something catches your eye.
Set up once, in the app
The screensaver has no settings of its own, because a screensaver cannot take remote input. It reads the NVR address and credentials you already entered in the Kestrel app. Install Kestrel first, connect it to your NVR, then choose Kestrel Screensaver under Settings → Screen saver.
Why it is a separate channel
Roku does not allow an app to carry its own screensaver, so this ships as a second entry built from the same source. It must be installed alongside the Kestrel app — signed with the same developer key, it reads the settings the app already wrote. Without the app installed and connected, it shows a message telling you to open Kestrel and set up your NVR, and nothing else.
Getting Kestrel on your Roku
Kestrel
Coming to the Roku Channel Store, at the price shown there. Once published, buy it from the channel store on your TV or from your Roku account on the web.
Coming soonKestrel Screensaver
Free, and a separate store entry installed alongside the app. Select it afterwards under Settings → Screen saver on the TV.
Coming soonWhat you pay, and what you get
Kestrel for Roku is bought once. There is no subscription, no recurring charge, no in-app purchase and no advertising. The purchase is tied to your Roku account, so it covers every Roku on that account and survives reinstalling the channel.
Kestrel Screensaver is free. It is useless without the app — it has no settings of its own and reads the app's — so charging for it twice would be charging twice for one product. Roku takes the payment and issues the receipt; refunds go through Roku, and the Terms set out how that works.
What you need
- A Reolink NVR or camera reachable on the same network as your Roku
- A user account on that device — a dedicated non-admin account is recommended
- Roku firmware 15.1 or later
Security notes
- Credentials are stored in the Roku registry in clear text. The registry is private to the channel and not readable by others, but it is not encrypted, and anyone with your Roku's developer password can read it.
- Snapshot URLs carry the session token as a query parameter, which is how the Reolink API is designed. Over plain HTTP on your LAN, that token is visible to anything sniffing the network.
- Keep this on your LAN. Do not port-forward your NVR to the internet to make it work.
These are stated here rather than discovered later. The privacy policy covers what is stored and where in full.
Known limitations
- Snapshot mode has no audio; HLS mode does, subject to your restreamer.
- Two-way talk is not implemented — a Roku has no microphone input.
- Standalone cameras that do not report a channel list appear as a single channel.
- Battery-powered cameras that sleep show as offline until they wake.
- Reolink's capability reporting varies by model and firmware; if a control you expect is missing, the device did not report it.