Add [CHANNEL+1] placeholder support for Hikvision-style channel numbering

- Added [CHANNEL+1], [channel+1], {CHANNEL+1}, {channel+1} placeholders to builder.go
- Updated 14 camera brands with universal channel patterns
- Hikvision: replaced 10 hardcoded patterns with 6 universal patterns
- Hiwatch: replaced 4 hardcoded patterns with 8 universal patterns (including ISAPI)
- Other brands: Annke, Swann, Abus, 7links, LevelOne, AlienDVR, Oswoo, AV102IP-40, Acvil, TBKVision, Deltaco, Night Owl
- Universal patterns placed first for faster discovery, hardcoded patterns kept as fallback
- Supports both 0-based (channel=0 -> 101) and 1-based (channel=1 -> 101) numbering
- Added 6 high-priority patterns to popular_stream_patterns.json
This commit is contained in:
eduard256
2025-11-23 22:39:20 +03:00
parent d569a76700
commit 4c03ad8d3c
16 changed files with 1916 additions and 1422 deletions
+64 -28
View File
@@ -4,6 +4,42 @@
"last_updated": "2025-10-17", "last_updated": "2025-10-17",
"source": "ispyconnect.com", "source": "ispyconnect.com",
"entries": [ "entries": [
{
"models": [
"ALL"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 8554,
"url": "/Streaming/Channels/[CHANNEL+1]01"
},
{
"models": [
"ALL"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 8554,
"url": "/Streaming/Channels/[CHANNEL]01"
},
{
"models": [
"ALL"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 8554,
"url": "/Streaming/Channels/[CHANNEL+1]02"
},
{
"models": [
"ALL"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 8554,
"url": "/Streaming/Channels/[CHANNEL]02"
},
{ {
"models": [ "models": [
"3628-675", "3628-675",
@@ -313,15 +349,6 @@
"port": 0, "port": 0,
"url": "" "url": ""
}, },
{
"models": [
"IPC-300"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 8554,
"url": "/Streaming/Channels/101"
},
{ {
"models": [ "models": [
"IPC-340HD", "IPC-340HD",
@@ -465,15 +492,6 @@
"port": 0, "port": 0,
"url": "snapshot.jpg" "url": "snapshot.jpg"
}, },
{
"models": [
"IPC-740"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 8554,
"url": "/Streaming/Channels/102"
},
{ {
"models": [ "models": [
"IP-CAM", "IP-CAM",
@@ -631,16 +649,6 @@
"port": 80, "port": 80,
"url": "/videostream.asf?user=[USERNAME]&pwd=[PASSWORD]&resolution=320x240" "url": "/videostream.asf?user=[USERNAME]&pwd=[PASSWORD]&resolution=320x240"
}, },
{
"models": [
"PX3615",
"SK7008-T1F1"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/Streaming/channels/401"
},
{ {
"models": [ "models": [
"PX-3615-675" "PX-3615-675"
@@ -722,6 +730,34 @@
"protocol": "http", "protocol": "http",
"port": 82, "port": 82,
"url": "/cgi/mjpg/mjpg.cgi" "url": "/cgi/mjpg/mjpg.cgi"
},
{
"models": [
"IPC-300"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 8554,
"url": "/Streaming/Channels/101"
},
{
"models": [
"IPC-740"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 8554,
"url": "/Streaming/Channels/102"
},
{
"models": [
"PX3615",
"SK7008-T1F1"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/Streaming/channels/401"
} }
] ]
} }
+61 -25
View File
@@ -4,6 +4,42 @@
"last_updated": "2025-10-17", "last_updated": "2025-10-17",
"source": "ispyconnect.com", "source": "ispyconnect.com",
"entries": [ "entries": [
{
"models": [
"ALL"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/Streaming/Channels/[CHANNEL+1]01"
},
{
"models": [
"ALL"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/Streaming/Channels/[CHANNEL]01"
},
{
"models": [
"ALL"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/Streaming/Channels/[CHANNEL+1]02"
},
{
"models": [
"ALL"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/Streaming/Channels/[CHANNEL]02"
},
{ {
"models": [ "models": [
"10550", "10550",
@@ -320,31 +356,6 @@
"port": 554, "port": 554,
"url": "/s2" "url": "/s2"
}, },
{
"models": [
"IPCA53000",
"IPCB42510B",
"IPCB44510A",
"IPCB64515B"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/Streaming/Channels/102"
},
{
"models": [
"IPCB42550",
"IPCB78520",
"NVR10030",
"TVIP41500",
"TVIP52500"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/Streaming/Channels/101"
},
{ {
"models": [ "models": [
"IPCB54611B", "IPCB54611B",
@@ -635,6 +646,31 @@
"protocol": "rtsp", "protocol": "rtsp",
"port": 554, "port": 554,
"url": "/mpeg4/media.amp?resolution=640x480" "url": "/mpeg4/media.amp?resolution=640x480"
},
{
"models": [
"IPCA53000",
"IPCB42510B",
"IPCB44510A",
"IPCB64515B"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/Streaming/Channels/102"
},
{
"models": [
"IPCB42550",
"IPCB78520",
"NVR10030",
"TVIP41500",
"TVIP52500"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/Streaming/Channels/101"
} }
] ]
} }
+18
View File
@@ -4,6 +4,24 @@
"last_updated": "2025-10-17", "last_updated": "2025-10-17",
"source": "ispyconnect.com", "source": "ispyconnect.com",
"entries": [ "entries": [
{
"models": [
"ALL"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/Streaming/Channels/[CHANNEL+1]02"
},
{
"models": [
"ALL"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/Streaming/Channels/[CHANNEL]02"
},
{ {
"models": [ "models": [
"WIFI-5MP-30" "WIFI-5MP-30"
+18
View File
@@ -4,6 +4,24 @@
"last_updated": "2025-10-17", "last_updated": "2025-10-17",
"source": "ispyconnect.com", "source": "ispyconnect.com",
"entries": [ "entries": [
{
"models": [
"ALL"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/Streaming/Channels/[CHANNEL+1]01"
},
{
"models": [
"ALL"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/Streaming/Channels/[CHANNEL]01"
},
{ {
"models": [ "models": [
"mega216" "mega216"
+127 -91
View File
@@ -4,6 +4,42 @@
"last_updated": "2025-10-17", "last_updated": "2025-10-17",
"source": "ispyconnect.com", "source": "ispyconnect.com",
"entries": [ "entries": [
{
"models": [
"ALL"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/Streaming/Channels/[CHANNEL+1]01"
},
{
"models": [
"ALL"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/Streaming/Channels/[CHANNEL]01"
},
{
"models": [
"ALL"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/Streaming/Channels/[CHANNEL+1]02"
},
{
"models": [
"ALL"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/Streaming/Channels/[CHANNEL]02"
},
{ {
"models": [ "models": [
"NVR", "NVR",
@@ -220,55 +256,6 @@
"port": 0, "port": 0,
"url": "snapshot.jpg?user=[USERNAME]&pwd=[PASSWORD]&strm=[CHANNEL]" "url": "snapshot.jpg?user=[USERNAME]&pwd=[PASSWORD]&strm=[CHANNEL]"
}, },
{
"models": [
"141CS",
"151DB",
"151de",
"151dj",
"151DM",
"191BS",
"2MP",
"4MP Bullet",
"4MP DOME",
"720P",
"AC500",
"AK-N48PIA0-68DT",
"c500",
"C800",
"DE81GB",
"DN41R",
"DN81R",
"DVR",
"DW81KD",
"i15dx",
"i51dm",
"I51DS",
"I51DX",
"I61BK",
"I61DR",
"I61FC",
"I61G",
"I91BD",
"I91BF",
"I91BM",
"I91F",
"l51DM",
"N481Y",
"N48PI",
"NC400",
"NC800",
"NCPT500",
"Other",
"P01",
"POE",
"VIEW"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/Streaming/Channels/101"
},
{ {
"models": [ "models": [
"141CS", "141CS",
@@ -498,39 +485,6 @@
"port": 554, "port": 554,
"url": "/onvif2" "url": "/onvif2"
}, },
{
"models": [
"191BS",
"AC500",
"c800",
"C800-4k",
"I51DX",
"I91BF",
"NC800"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/Streaming/Channels/102"
},
{
"models": [
"191df"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/Streaming/channels/102"
},
{
"models": [
"191df"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/Streaming/channels/101"
},
{ {
"models": [ "models": [
"2MP", "2MP",
@@ -659,15 +613,6 @@
"port": 80, "port": 80,
"url": "/cgi-bin/snapshot.cgi?chn=4&u=[USERNAME]&p=[PASSWORD]" "url": "/cgi-bin/snapshot.cgi?chn=4&u=[USERNAME]&p=[PASSWORD]"
}, },
{
"models": [
"DVR"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/Streaming/Channels/201"
},
{ {
"models": [ "models": [
"h264", "h264",
@@ -851,6 +796,97 @@
"protocol": "rtsp", "protocol": "rtsp",
"port": 0, "port": 0,
"url": "/h264/ch1/main/av_stream" "url": "/h264/ch1/main/av_stream"
},
{
"models": [
"141CS",
"151DB",
"151de",
"151dj",
"151DM",
"191BS",
"2MP",
"4MP Bullet",
"4MP DOME",
"720P",
"AC500",
"AK-N48PIA0-68DT",
"c500",
"C800",
"DE81GB",
"DN41R",
"DN81R",
"DVR",
"DW81KD",
"i15dx",
"i51dm",
"I51DS",
"I51DX",
"I61BK",
"I61DR",
"I61FC",
"I61G",
"I91BD",
"I91BF",
"I91BM",
"I91F",
"l51DM",
"N481Y",
"N48PI",
"NC400",
"NC800",
"NCPT500",
"Other",
"P01",
"POE",
"VIEW"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/Streaming/Channels/101"
},
{
"models": [
"191BS",
"AC500",
"c800",
"C800-4k",
"I51DX",
"I91BF",
"NC800"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/Streaming/Channels/102"
},
{
"models": [
"191df"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/Streaming/channels/102"
},
{
"models": [
"191df"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/Streaming/channels/101"
},
{
"models": [
"DVR"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/Streaming/Channels/201"
} }
] ]
} }
+18
View File
@@ -4,6 +4,24 @@
"last_updated": "2025-10-17", "last_updated": "2025-10-17",
"source": "ispyconnect.com", "source": "ispyconnect.com",
"entries": [ "entries": [
{
"models": [
"ALL"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/Streaming/Channels/[CHANNEL+1]01"
},
{
"models": [
"ALL"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/Streaming/Channels/[CHANNEL]01"
},
{ {
"models": [ "models": [
"Other" "Other"
+36
View File
@@ -4,6 +4,42 @@
"last_updated": "2025-10-17", "last_updated": "2025-10-17",
"source": "ispyconnect.com", "source": "ispyconnect.com",
"entries": [ "entries": [
{
"models": [
"ALL"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 8554,
"url": "/Streaming/Channels/[CHANNEL+1]01"
},
{
"models": [
"ALL"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 8554,
"url": "/Streaming/Channels/[CHANNEL]01"
},
{
"models": [
"ALL"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 8554,
"url": "/Streaming/Channels/[CHANNEL+1]02"
},
{
"models": [
"ALL"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 8554,
"url": "/Streaming/Channels/[CHANNEL]02"
},
{ {
"models": [ "models": [
"Outdoor Smart Home Camera", "Outdoor Smart Home Camera",
+1097 -1043
View File
File diff suppressed because it is too large Load Diff
+170 -88
View File
@@ -5,35 +5,117 @@
"source": "ispyconnect.com", "source": "ispyconnect.com",
"entries": [ "entries": [
{ {
"models": ["ALL"], "models": [
"ALL"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/Streaming/Channels/[CHANNEL+1]01"
},
{
"models": [
"ALL"
],
"type": "FFMPEG", "type": "FFMPEG",
"protocol": "rtsp", "protocol": "rtsp",
"port": 554, "port": 554,
"url": "/Streaming/Channels/[CHANNEL]01" "url": "/Streaming/Channels/[CHANNEL]01"
}, },
{ {
"models": ["ALL"], "models": [
"ALL"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/Streaming/Channels/[CHANNEL+1]02"
},
{
"models": [
"ALL"
],
"type": "FFMPEG", "type": "FFMPEG",
"protocol": "rtsp", "protocol": "rtsp",
"port": 554, "port": 554,
"url": "/Streaming/Channels/[CHANNEL]02" "url": "/Streaming/Channels/[CHANNEL]02"
}, },
{ {
"models": ["ALL"], "models": [
"ALL"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/ISAPI/Streaming/Channels/[CHANNEL+1]01"
},
{
"models": [
"ALL"
],
"type": "FFMPEG", "type": "FFMPEG",
"protocol": "rtsp", "protocol": "rtsp",
"port": 554, "port": 554,
"url": "/ISAPI/Streaming/Channels/[CHANNEL]01" "url": "/ISAPI/Streaming/Channels/[CHANNEL]01"
}, },
{ {
"models": ["ALL"], "models": [
"ALL"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/ISAPI/Streaming/Channels/[CHANNEL+1]02"
},
{
"models": [
"ALL"
],
"type": "FFMPEG", "type": "FFMPEG",
"protocol": "rtsp", "protocol": "rtsp",
"port": 554, "port": 554,
"url": "/ISAPI/Streaming/Channels/[CHANNEL]02" "url": "/ISAPI/Streaming/Channels/[CHANNEL]02"
}, },
{ {
"models": ["ALL"], "models": [
"ALL"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/Streaming/Channels/[CHANNEL]01"
},
{
"models": [
"ALL"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/Streaming/Channels/[CHANNEL]02"
},
{
"models": [
"ALL"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/ISAPI/Streaming/Channels/[CHANNEL]01"
},
{
"models": [
"ALL"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/ISAPI/Streaming/Channels/[CHANNEL]02"
},
{
"models": [
"ALL"
],
"type": "FFMPEG", "type": "FFMPEG",
"protocol": "rtsp", "protocol": "rtsp",
"port": 554, "port": 554,
@@ -82,69 +164,6 @@
"port": 554, "port": 554,
"url": "/Streaming/Channels/1" "url": "/Streaming/Channels/1"
}, },
{
"models": [
"ALL",
"B220",
"C6T",
"D110",
"DS-H216Q",
"DS-I102",
"DS-I113",
"DS-I114",
"DS-I114W",
"DS-i126",
"ds-i200",
"DS-I200(D)",
"ds-i203",
"DS-I213",
"ds-i214",
"DS-I214(B)",
"ds-i214w(b)",
"ds-i223",
"DS-I400(C)",
"ds-l122",
"ds-n241w",
"i100",
"i110",
"I114",
"i114w",
"I120",
"IPC-B120-I",
"IPC-B140",
"IPC-B622-G2/ZS",
"IPC-D082-G2/S",
"IPC-D120",
"IPC-T640-Z",
"l110",
"Other",
"VDP-D2201",
"VDP-D2211W(B)",
"watch"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/Streaming/Channels/101"
},
{
"models": [
"ALL",
"DS-I102",
"ds-i200",
"Ds-i203",
"DS-I214(B)",
"DS-I214W(B)",
"DS-I253",
"ds-i458",
"HiWatch DS-N208(C)",
"i450s"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/ISAPI/Streaming/Channels/101"
},
{ {
"models": [ "models": [
"DC-I200", "DC-I200",
@@ -256,16 +275,6 @@
"port": 554, "port": 554,
"url": "/h264_stream" "url": "/h264_stream"
}, },
{
"models": [
"ds-i200",
"VDP-D2201"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 555,
"url": "/Streaming/Channels/102"
},
{ {
"models": [ "models": [
"Ds-i203" "Ds-i203"
@@ -275,16 +284,6 @@
"port": 8000, "port": 8000,
"url": "/" "url": "/"
}, },
{
"models": [
"DS-I214(B)",
"DS-I405"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/ISAPI/Streaming/Channels/102"
},
{ {
"models": [ "models": [
"DS-I220", "DS-I220",
@@ -345,6 +344,89 @@
"protocol": "rtsp", "protocol": "rtsp",
"port": 554, "port": 554,
"url": "/onvif1" "url": "/onvif1"
},
{
"models": [
"ALL",
"B220",
"C6T",
"D110",
"DS-H216Q",
"DS-I102",
"DS-I113",
"DS-I114",
"DS-I114W",
"DS-i126",
"ds-i200",
"DS-I200(D)",
"ds-i203",
"DS-I213",
"ds-i214",
"DS-I214(B)",
"ds-i214w(b)",
"ds-i223",
"DS-I400(C)",
"ds-l122",
"ds-n241w",
"i100",
"i110",
"I114",
"i114w",
"I120",
"IPC-B120-I",
"IPC-B140",
"IPC-B622-G2/ZS",
"IPC-D082-G2/S",
"IPC-D120",
"IPC-T640-Z",
"l110",
"Other",
"VDP-D2201",
"VDP-D2211W(B)",
"watch"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/Streaming/Channels/101"
},
{
"models": [
"ALL",
"DS-I102",
"ds-i200",
"Ds-i203",
"DS-I214(B)",
"DS-I214W(B)",
"DS-I253",
"ds-i458",
"HiWatch DS-N208(C)",
"i450s"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/ISAPI/Streaming/Channels/101"
},
{
"models": [
"ds-i200",
"VDP-D2201"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 555,
"url": "/Streaming/Channels/102"
},
{
"models": [
"DS-I214(B)",
"DS-I405"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/ISAPI/Streaming/Channels/102"
} }
] ]
} }
+27 -9
View File
@@ -4,6 +4,24 @@
"last_updated": "2025-10-17", "last_updated": "2025-10-17",
"source": "ispyconnect.com", "source": "ispyconnect.com",
"entries": [ "entries": [
{
"models": [
"ALL"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/Streaming/Channels/[CHANNEL+1]02"
},
{
"models": [
"ALL"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/Streaming/Channels/[CHANNEL]02"
},
{ {
"models": [ "models": [
"0010/0020", "0010/0020",
@@ -647,15 +665,6 @@
"port": 0, "port": 0,
"url": "cam[CHANNEL]/h264" "url": "cam[CHANNEL]/h264"
}, },
{
"models": [
"FCS-3084"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/Streaming/Channels/102"
},
{ {
"models": [ "models": [
"FCS-4051", "FCS-4051",
@@ -770,6 +779,15 @@
"protocol": "http", "protocol": "http",
"port": 80, "port": 80,
"url": "/cgi-bin/video.jpg" "url": "/cgi-bin/video.jpg"
},
{
"models": [
"FCS-3084"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/Streaming/Channels/102"
} }
] ]
} }
+36 -18
View File
@@ -4,6 +4,24 @@
"last_updated": "2025-10-17", "last_updated": "2025-10-17",
"source": "ispyconnect.com", "source": "ispyconnect.com",
"entries": [ "entries": [
{
"models": [
"ALL"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/Streaming/Channels/[CHANNEL+1]01"
},
{
"models": [
"ALL"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/Streaming/Channels/[CHANNEL]01"
},
{ {
"models": [ "models": [
"0v600-365-kd", "0v600-365-kd",
@@ -153,24 +171,6 @@
"port": 0, "port": 0,
"url": "snapshot.jpg?account=[USERNAME]&password=[PASSWORD]" "url": "snapshot.jpg?account=[USERNAME]&password=[PASSWORD]"
}, },
{
"models": [
"BTD2",
"CAM2",
"DVR-FTD4-8",
"DVR-THD30B",
"FTD4",
"Other",
"WM-CAM-WAWNP2L",
"wmvr-wnip2",
"WNIP2-CM",
"WNIP-2lta-bs"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/Streaming/channels/301"
},
{ {
"models": [ "models": [
"CAM-1", "CAM-1",
@@ -375,6 +375,24 @@
"protocol": "http", "protocol": "http",
"port": 80, "port": 80,
"url": "/cgi-bin/snapshot.cgi?chn=0&u=[USERNAME]&p=[PASSWORD]" "url": "/cgi-bin/snapshot.cgi?chn=0&u=[USERNAME]&p=[PASSWORD]"
},
{
"models": [
"BTD2",
"CAM2",
"DVR-FTD4-8",
"DVR-THD30B",
"FTD4",
"Other",
"WM-CAM-WAWNP2L",
"wmvr-wnip2",
"WNIP2-CM",
"WNIP-2lta-bs"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/Streaming/channels/301"
} }
] ]
} }
+18
View File
@@ -4,6 +4,24 @@
"last_updated": "2025-10-17", "last_updated": "2025-10-17",
"source": "ispyconnect.com", "source": "ispyconnect.com",
"entries": [ "entries": [
{
"models": [
"ALL"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 10554,
"url": "/Streaming/Channels/[CHANNEL+1]01"
},
{
"models": [
"ALL"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 10554,
"url": "/Streaming/Channels/[CHANNEL]01"
},
{ {
"models": [ "models": [
"801", "801",
+128 -92
View File
@@ -4,6 +4,42 @@
"last_updated": "2025-10-17", "last_updated": "2025-10-17",
"source": "ispyconnect.com", "source": "ispyconnect.com",
"entries": [ "entries": [
{
"models": [
"ALL"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/Streaming/Channels/[CHANNEL+1]01"
},
{
"models": [
"ALL"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/Streaming/Channels/[CHANNEL]01"
},
{
"models": [
"ALL"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/Streaming/Channels/[CHANNEL+1]02"
},
{
"models": [
"ALL"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/Streaming/Channels/[CHANNEL]02"
},
{ {
"models": [ "models": [
"005FTCD", "005FTCD",
@@ -588,58 +624,6 @@
"port": 554, "port": 554,
"url": "/ch05/1" "url": "/ch05/1"
}, },
{
"models": [
"7-12",
"8ch 3MP NVR",
"dv8-3425",
"DVR w/ Web Port",
"DVR W/ WEB PORT",
"DVR4 4350",
"DVR8",
"DVR8-4900",
"DVR8-8050",
"DVR8-8075",
"HDR8050",
"lv-9808",
"NHD-850CAM",
"NHH-880CAM",
"nvr16-7090",
"NVR-7200",
"Other",
"SWIFI-FLOCAM2",
"swifi-spotcam",
"SWIFI-XTRCAM",
"SWWHD-OUTCAM",
"T855"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/Streaming/Channels/101"
},
{
"models": [
"880",
"DVR4 4350",
"DVR8-1500",
"DVR8-1525",
"DVR8-4500",
"DVR8-4900",
"HDR8050",
"lv-9808",
"NHD-850CAM",
"nvr16-7090",
"NVR-7200",
"Other",
"SPOTCAM",
"WIFI-PT"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/Streaming/Channels/102"
},
{ {
"models": [ "models": [
"887" "887"
@@ -874,37 +858,6 @@
"port": 0, "port": 0,
"url": "/Streaming/Unicast/channels/401" "url": "/Streaming/Unicast/channels/401"
}, },
{
"models": [
"DVR W/ WEB PORT",
"DVR4 4350",
"DVR8-8075",
"lv-9808",
"Other"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/Streaming/channels/101"
},
{
"models": [
"DVR-1500"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/Streaming/Channels/701"
},
{
"models": [
"DVR-1500"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/Streaming/Channels/601"
},
{ {
"models": [ "models": [
"DVR4", "DVR4",
@@ -942,15 +895,6 @@
"port": 80, "port": 80,
"url": "/?action=stream" "url": "/?action=stream"
}, },
{
"models": [
"DVR8-4500"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/Streaming/Channels/301"
},
{ {
"models": [ "models": [
"DVR8-4500", "DVR8-4500",
@@ -1314,6 +1258,98 @@
"protocol": "rtsp", "protocol": "rtsp",
"port": 0, "port": 0,
"url": "/Streaming/Channels/2" "url": "/Streaming/Channels/2"
},
{
"models": [
"7-12",
"8ch 3MP NVR",
"dv8-3425",
"DVR w/ Web Port",
"DVR W/ WEB PORT",
"DVR4 4350",
"DVR8",
"DVR8-4900",
"DVR8-8050",
"DVR8-8075",
"HDR8050",
"lv-9808",
"NHD-850CAM",
"NHH-880CAM",
"nvr16-7090",
"NVR-7200",
"Other",
"SWIFI-FLOCAM2",
"swifi-spotcam",
"SWIFI-XTRCAM",
"SWWHD-OUTCAM",
"T855"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/Streaming/Channels/101"
},
{
"models": [
"880",
"DVR4 4350",
"DVR8-1500",
"DVR8-1525",
"DVR8-4500",
"DVR8-4900",
"HDR8050",
"lv-9808",
"NHD-850CAM",
"nvr16-7090",
"NVR-7200",
"Other",
"SPOTCAM",
"WIFI-PT"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/Streaming/Channels/102"
},
{
"models": [
"DVR W/ WEB PORT",
"DVR4 4350",
"DVR8-8075",
"lv-9808",
"Other"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/Streaming/channels/101"
},
{
"models": [
"DVR-1500"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/Streaming/Channels/701"
},
{
"models": [
"DVR-1500"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/Streaming/Channels/601"
},
{
"models": [
"DVR8-4500"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/Streaming/Channels/301"
} }
] ]
} }
+18
View File
@@ -4,6 +4,24 @@
"last_updated": "2025-10-17", "last_updated": "2025-10-17",
"source": "ispyconnect.com", "source": "ispyconnect.com",
"entries": [ "entries": [
{
"models": [
"ALL"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/Streaming/Channels/[CHANNEL+1]01"
},
{
"models": [
"ALL"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/Streaming/Channels/[CHANNEL]01"
},
{ {
"models": [ "models": [
"TBK-BUL8841Z" "TBK-BUL8841Z"
+48
View File
@@ -31,6 +31,54 @@
"notes": "Common RTSP sub stream for ONVIF cameras", "notes": "Common RTSP sub stream for ONVIF cameras",
"model_count": 9998 "model_count": 9998
}, },
{
"url": "/Streaming/Channels/[CHANNEL+1]01",
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"notes": "Hikvision main stream - 0-based channel input (channel 0 -> 101, 1 -> 201)",
"model_count": 9500
},
{
"url": "/Streaming/Channels/[CHANNEL]01",
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"notes": "Hikvision main stream - 1-based channel input (channel 1 -> 101, 2 -> 201)",
"model_count": 9490
},
{
"url": "/Streaming/Channels/[CHANNEL+1]02",
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"notes": "Hikvision sub stream - 0-based channel input (channel 0 -> 102, 1 -> 202)",
"model_count": 9480
},
{
"url": "/Streaming/Channels/[CHANNEL]02",
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"notes": "Hikvision sub stream - 1-based channel input (channel 1 -> 102, 2 -> 202)",
"model_count": 9470
},
{
"url": "/Streaming/Channels/[CHANNEL+1]03",
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"notes": "Hikvision third stream - 0-based channel input (channel 0 -> 103, 1 -> 203)",
"model_count": 9460
},
{
"url": "/Streaming/Channels/[CHANNEL]03",
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"notes": "Hikvision third stream - 1-based channel input (channel 1 -> 103, 2 -> 203)",
"model_count": 9450
},
{ {
"url": "/ch2", "url": "/ch2",
"type": "FFMPEG", "type": "FFMPEG",
+32 -28
View File
@@ -174,34 +174,38 @@ func (b *Builder) replacePlaceholders(urlPath string, ctx BuildContext) string {
// Common placeholders // Common placeholders
replacements := map[string]string{ replacements := map[string]string{
"[CHANNEL]": strconv.Itoa(ctx.Channel), "[CHANNEL]": strconv.Itoa(ctx.Channel),
"[channel]": strconv.Itoa(ctx.Channel), "[channel]": strconv.Itoa(ctx.Channel),
"{channel}": strconv.Itoa(ctx.Channel), // BUBBLE protocol uses {channel} "[CHANNEL+1]": strconv.Itoa(ctx.Channel + 1), // For Hikvision-style channels (101, 201, 301...)
"{CHANNEL}": strconv.Itoa(ctx.Channel), "[channel+1]": strconv.Itoa(ctx.Channel + 1),
"[WIDTH]": strconv.Itoa(ctx.Width), "{CHANNEL}": strconv.Itoa(ctx.Channel), // BUBBLE protocol uses {channel}
"[width]": strconv.Itoa(ctx.Width), "{channel}": strconv.Itoa(ctx.Channel),
"[HEIGHT]": strconv.Itoa(ctx.Height), "{CHANNEL+1}": strconv.Itoa(ctx.Channel + 1),
"[height]": strconv.Itoa(ctx.Height), "{channel+1}": strconv.Itoa(ctx.Channel + 1),
"[USERNAME]": ctx.Username, "[WIDTH]": strconv.Itoa(ctx.Width),
"[username]": ctx.Username, "[width]": strconv.Itoa(ctx.Width),
"[PASSWORD]": ctx.Password, "[HEIGHT]": strconv.Itoa(ctx.Height),
"[password]": ctx.Password, "[height]": strconv.Itoa(ctx.Height),
"[PASWORD]": ctx.Password, // Handle typo in database "[USERNAME]": ctx.Username,
"[pasword]": ctx.Password, "[username]": ctx.Username,
"[USER]": ctx.Username, "[PASSWORD]": ctx.Password,
"[user]": ctx.Username, "[password]": ctx.Password,
"[PASS]": ctx.Password, "[PASWORD]": ctx.Password, // Handle typo in database
"[pass]": ctx.Password, "[pasword]": ctx.Password,
"[PWD]": ctx.Password, "[USER]": ctx.Username,
"[pwd]": ctx.Password, "[user]": ctx.Username,
"[IP]": ctx.IP, "[PASS]": ctx.Password,
"[ip]": ctx.IP, "[pass]": ctx.Password,
"[PORT]": strconv.Itoa(ctx.Port), "[PWD]": ctx.Password,
"[port]": strconv.Itoa(ctx.Port), "[pwd]": ctx.Password,
"[AUTH]": auth, // base64(username:password) for basic auth "[IP]": ctx.IP,
"[auth]": auth, "[ip]": ctx.IP,
"[TOKEN]": "", // Empty for now "[PORT]": strconv.Itoa(ctx.Port),
"[token]": "", "[port]": strconv.Itoa(ctx.Port),
"[AUTH]": auth, // base64(username:password) for basic auth
"[auth]": auth,
"[TOKEN]": "", // Empty for now
"[token]": "",
} }
// Replace all placeholders // Replace all placeholders