Dahua cameras
A club camera does two separate jobs. It sends live video to SportyPlus as a match is played, and — on Dahua cameras registered with DoLynk Cloud — it keeps its own copy on an SD card inside the camera.
The second job is what saves you when the club's internet drops mid-match. Video sent live and lost is gone; video on the card can be fetched afterwards, and the match arrives complete, just a little later.
This page covers both, in the order you would do them.
What you need
- a supported Dahua camera, already initialised (using Dahua's ConfigTool or their mobile app) and reachable on the venue network
- an SD card fitted, sized for the retention you want — at the quality below a 128 GB card holds roughly a week at typical opening hours, or about three days if it records around the clock
- the camera added to your DoLynk Cloud account
- the camera's web interface password
- the camera's stream address, which SportyPlus gives you once the camera exists in Club Admin
The short version
If you know your way around a Dahua camera, this is the whole configuration:
| Where | Setting | Value |
|---|---|---|
| Camera → Encode | Compression | H.264 — never H.265 |
| Camera → Encode | Smart Codec | Off |
| Camera → Encode | Resolution | 1920×1080 |
| Camera → Encode | Frame Rate | 30 (25 in PAL installs), fixed |
| Camera → Encode | Bit Rate Type | CBR |
| Camera → Encode | Bit Rate | 4096 Kb/s (never above 6144) |
| Camera → Encode | I Frame Interval | 30 |
| Camera → Encode | SVC | 1 (off) |
| Camera → Audio | Compression | AAC — no other codec works |
| Network → RTMP | Stream Type | Main Stream |
| Network → RTMP | Address Type | Custom |
| Network → RTMP | Custom Address | the stream address from Club Admin |
| Record → Record control | Record Mode | Auto |
| Record → Record control | Max Duration | 30–60 minutes |
| Record → Storage | Storage Method | Local storage |
| Record → Storage | Disk Full | Overwrite |
| System → Date & Time | Time Zone | UTC, DST off |
Everything below explains why, and what goes wrong when one of them is missed.
Video quality
These live in Camera → Encode, on the Main Stream side. The main stream is the one that gets sent and recorded; the sub stream is only used for previews.
I Frame Interval — the one nobody expects to matter
Set it to 30. At 30fps that is one keyframe per second; at 25fps it is a little over a second, which is equally fine.
A camera only lets a viewer join at a keyframe, and live video is cut into chunks on keyframe boundaries. A camera sending a keyframe once every 25 seconds produces 25-second chunks, and live view ends up more than a minute behind the court — watchable, but useless to anyone standing beside it.
One second between keyframes brings that down to a few seconds, and costs a little bitrate and nothing else. Do not go above it: a 2-second interval means roughly 2-second chunks and about 6 seconds of delay, and it grows from there.
Compression — H.264, never H.265
Set Compression to H.264. Encode Mode H.264H (High) is the default and is right; H.264B (Baseline) is also fine and slightly faster to display.
Smart Codec — off
Smart Codec saves storage by holding back keyframes when nothing in the picture moves. On a court between points, that is most of the time.
It is the wrong trade here: it costs latency in live view, and it makes chunks long and irregular, which is exactly what gap recovery struggles with. Off.
Resolution, frame rate and bitrate
1920×1080 at 30fps, 4096 Kb/s, CBR is the baseline. It is a deliberate starting point rather than a maximum — it looks good on a phone, it is kind to a club uplink, and it is the profile the rest of the system is tuned around.
Higher is not automatically better. Nothing is re-encoded on the way to a viewer, so every person watching pulls the full bitrate the camera sends: doubling it doubles what the club's connection has to carry for each of them. Do not go above 6144 Kb/s at this resolution without asking us first.
Avoid 4K, and avoid 50 or 60fps. Neither breaks anything by itself, but they multiply what every viewer downloads, and the vendor profiles that ship with them tend to carry long keyframe intervals — which is how a camera ends up more than a minute behind without anybody changing a setting.
Use a fixed frame rate. Variable frame rate makes chunk lengths uneven, and uneven chunks slow live view down for everyone watching that court.
Audio
If the camera has a microphone, set Camera → Audio → Compression to AAC.
A camera with no microphone at all is fine. It streams and records normally, without an audio track.
Live streaming
The camera pushes its video to SportyPlus itself. Get the address from Club Admin → Commercial → Cameras, open the camera, and copy the stream address shown there. It looks like:
rtmp://stream1.sporty.plus/stream/<playback-id>?key=<stream-key>
Then in the camera, under Setting → Network → RTMP:
| Field | Value |
|---|---|
| Enable | checked |
| Stream Type | Main Stream |
| Address Type | Custom |
| Custom Address | the address from Club Admin, copied exactly |
Leave the reconnect settings alone. A camera that drops and comes back is handled for you, and an interrupted recording is stitched together afterwards.
?key= part is not optional. Without it, or with a single character
wrong, the stream is refused and the camera retries silently forever. The camera
shows no useful error, so a mistyped address looks like a network problem.Every camera has its own address and its own key. They cannot be shared or reused
between cameras — two cameras on one key cannot both stream.Local recording — the second copy
| Setting | Where | Set to |
|---|---|---|
| Storage Method | Record → Storage | Local storage |
| Record Mode | Record → Record control | Auto |
| Max Duration | Record → Record control | 30–60 minutes |
| Time Zone | System → Date & Time | UTC, DST off |
Storage Method — the one that catches people out
Some cameras arrive set to network storage (SFTP upload), which sends recordings to a server elsewhere instead of the card. The card then stays empty and there is nothing to recover from.
Set it to Local storage, and set Disk Full to Overwrite so a full card keeps recording over its oldest footage instead of stopping.
Record Mode
Auto makes the camera follow the recording schedule SportyPlus sends it.
- Manual records continuously and ignores the schedule
- Off records nothing, whatever the schedule says
Max Duration
The camera writes video in chunks, and a chunk can only be retrieved once it is finished. This setting decides how quickly a gap can be repaired.
At 120 minutes, footage from a 6pm match might not be recoverable until 8pm. SportyPlus keeps trying, so the recording still completes — it just takes longer. Shorter chunks recover faster but create more files. 30–60 minutes is a sensible balance.
Time Zone
Set the camera to UTC with daylight saving off.
Recordings are requested from the camera by time, so a camera whose clock is an hour out returns the wrong hour. SportyPlus checks the camera's clock against its own recordings and corrects for a mismatch, but putting every camera on UTC avoids the problem instead of correcting it.
Connecting it to SportyPlus
In Club Admin → Commercial → Cameras, create or edit the camera and set:
- Camera type — DoLynk (Dahua) device
- Device serial number — from the camera or DoLynk Cloud
- Channel —
0for a single-lens camera - Court — the court the camera actually points at
Save, then reopen the camera. A Camera device panel appears, reading live from the hardware.
In the Camera device panel
| Control | What it does |
|---|---|
| Recording status | Whether the card has anything recent on it — see below |
| SD card | How much of the card is in use |
| Record to SD card | Master switch. With this off, the schedule below does nothing |
| Local recording schedule | When the camera records to its own card |
| Flip image | For a camera mounted upside down |
| Illuminator brightness | Per lighting scene, where the camera supports it |
| On-screen text | Text burnt into the picture, so it appears in recordings too |
| Video quality | Resolution, frame rate, bitrate and keyframe interval per stream |
| Start / Stop streaming | Turns the live push on or off |
| Sync recordings | Re-checks the camera for recordings SportyPlus has not collected |
| Format SD card | Erases everything on the card |
| Open the camera's own settings | Opens the camera's interface from anywhere |
Set the schedule to cover your opening hours. Outside those hours the camera records nothing locally, so nothing can be recovered from that period.
Both the switch and the schedule must be right. If a schedule is set while the switch is off, the panel says so.
Recording status
The line above the settings answers a different question from the rest of the panel: not what is this camera configured to do, but is it doing it.
- Recording to the card — with the time of the newest footage found
- This camera is not recording to its card — the card has nothing recent on it, whatever the settings say
The second one means gap recovery cannot help this court right now. It usually points at Storage Method or Record Mode above.
Open the camera's own settings
This opens the camera's own interface through DoLynk, from anywhere — no need to be at the club. It is how you reach the settings SportyPlus cannot change: Smart Codec, storage method, record mode, chunk length and the clock.
It does not reach the camera's network configuration, so the RTMP stream address still has to be set on the venue network.
Checking it works
- Live view — open the camera in Club Admin. Set up as described, the picture runs about 3 seconds behind the court. At a 2-second keyframe interval it is about 6. If it is a minute or more behind, the I Frame Interval is far too long, or Smart Codec is on.
- The card is filling — leave the camera recording for a few minutes and reopen the panel. Recording status should say Recording to the card, and the SD card figure should be climbing.
- A real recording — play back a reservation recorded on that court.
When a recording has a gap
If the connection drops mid-match, the recording shows one of three things:
- Recovering missing footage — the missing part is being fetched from the camera and will appear shortly
- This recording has a gap — part of the match was not captured
- Some footage is missing for good — the connection dropped and the camera had no copy either, usually because it was not recording locally at the time
The first is normal and resolves on its own. The third means the settings on this page were not in place when the match was played.
If something is wrong
| What you see | Usually means |
|---|---|
| Live view is a minute or more behind | I Frame Interval too long, or Smart Codec on |
| Live view delay got worse on its own | The camera is dropping keyframes — see below |
| Live view never appears, stream looks connected | H.265 instead of H.264, or too low a keyframe interval — see below |
| Live view never appears at all | RTMP address wrong, or the camera cannot reach the internet |
| Video plays but there is no sound | Audio compression is not AAC |
| Quality settings appear to do nothing | RTMP Stream Type is Sub Stream, not Main Stream |
| Live view stutters or drops out | Bitrate too high for the club's upload |
| Not recording to its card, card healthy | Storage Method is not Local storage, or Record Mode is Off |
| Recordings have gaps that are never repaired | Camera was not recording locally when the match was played |
| Nothing can be recovered from this camera | No SD card fitted, or the card has failed |
The camera is connected but nothing plays
This one symptom has three causes, and none of them reports an error anywhere. The camera connects, the club's internet is fine, and no picture ever arrives — live or recorded.
- Compression is H.265. Set it to H.264.
- I Frame Interval is below 30. Set it back to the frame rate.
- The camera is not sending keyframes for some other reason — a reboot usually settles it.
Work through them in that order. All three look identical from the outside, and in all three the recording SportyPlus makes is as empty as the live view.
The camera's own copy on its card is unaffected — but it is only fetched to repair a gap, and a recording with no video in it does not look like a gap. So the card copy stays on the card.