---
name: "tanidvr"
section: "1"
platform: "linux"
package: "tanidvr"
version: "1.4.1-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/tanidvr"
---

# tanidvr(1)

tool for DVRs and IP cameras based on DVR-IP protocol used by Dahua

## NAME

**tanidvr** - tool for DVRs and IP cameras based on DVR-IP protocol used by Dahua

## SYNOPSIS

```
tanidvr -m <mode> -t <address> -u <user> -w <password> [OPTION]
```

## DESCRIPTION

**TaniDVR is a CLI tool for accessing DVRs and IP cameras used** **for CCTV surveillance systems based on the proprietary DVR-IP** **protocol (port 37777/TCP).**

**The main use of TaniDVR is to dump video from a device. With** **this, it can record to a Matroska (MKV) file or dump the video** **in realtime to play in an external player.**

## OPTIONS

- **-m, --operation-mode**

  **0 - display DVR information.** **1 - dump video.**

- **-t, --dvr-target**

  **IP/hostname.**

- **-p, --dvr-port**

  **Network port (default 37777).**

- **-u, --dvr-user**

  **DVR user (may not work if not admin!).**

- **-w, --dvr-password**

  **DVR password.**

- **-c, --dvr-channel**

  **0-255 (default 0).**

- **-s, --dvr-sub-channel**

  **0 - main (default).** **1 - secondary.**

- **-a, --net-protocol-dialect**

  **0 - common dialect (default).** **1 - common dialect, while emulating OEM client behavior.**

- **-n, --media-container**

  **0 - DVR native: DHAV (.dav\|.dhav) or RAW H.264 (depends on the DVR itself).** **1 - Matroska (.mkv) (default).**

- **-f, --out-file**

  **\<filename\> (default: empty -- console stdout).**

- **-k, --keep-alive**

  **\<mili\_seconds\> (default: 100ms).** **Send innocuous packets to the DVR in order to avoid the** **connection to be dropped gratuitously.** **To disable (not recommended), set to 0.**

- **-e, --timeout**

  **\<mili\_seconds\> (default 5000ms).** **Inactivity timeout for DVR connection to be considered dead.** **A new DVR connection is started after this.** **To disable (not recommended), set to 0.**

- **-x, --sixty-hertz-ntsc**

  **(default: not enabled).** **If defined, assumes NTSC field frequency to be 60Hz,** **instead of the typical 59.94Hz.** **Some cameras do generate exact 60Hz video.** **This switch does NOT affect PAL video.**

- **-r, --ts-proc**

  **0 - No correction will be performed to** **the buggy DHAV stream timestamps.** **1 - Perform timestamp correction (default).**

- **-h, --help**

  **Prints help message and exit.**

## EXAMPLES

- •

  **Show some information about the DVR.**

```
              tanidvr -m 0 -t 192.168.0.12 -u admin -w secret1234
```

- •

  **Record a video to a file.**

```
              tanidvr -m 1 -t 192.168.0.12 -u admin -w secret1234 -c 2 -f camera2.mkv
```

- •

  **Play the video in realtime with an external player.**

```
              tanidvr -m 1 -t 192.168.0.12 -u admin -w secret1234 -c 2 | mplayer -cache 32 - 2>/dev/null
```

- •

  **Simple media server and some clients.** **NOTE: INSECURE. NOT to be implemented as-is.** **It is shown only for didactic purposes.**

```
              (server at 192.168.20.1)
              tanidvr -n 0 -m 1 -t 192.168.0.12 -u admin -w secret1234 -c 5 | ncat --broker -l 192.168.20.1 2000
              (clients ; same/other host)
              ncat --recv-only 192.168.20.1 2000 | dhav2mkv | mplayer -cache 32 -
              ncat --recv-only 192.168.20.1 2000 | dhav2mkv > channel_5_realtime_backup.mkv
              ncat --recv-only 192.168.20.1 2000 > channel_5_realtime_backup.dhav
```

## AUTHOR

**tanidvr was written by Daniel Mealha Cabrita \<dancab@gmx.net\>.**

**This manual page was written by Marcos Talau \<marcos@talau.info\>** **for the Debian project (but may be used by others).**
