DVRip two-way video support for ICSee camera
I notice that the README only mentions two-way audio but not two-way video. I have this ICSee camera that can receive video+audio or solely audio from the ICSee app. I've long forgotten the model name, but it looks just like this one. I've verified that it uses the DVRIP port for this, and it isn't something proprietary outside of DVRIP. Two-way audio works fine under the OPTalk command, but there appears to be a newer one called AVTalk which I'm not finding any hits via a search through this repo. Heck, you can't even google "avtalk" "dvrip".
The TCP packet looks like this. The user sends:
{"Name":"AVTalk","AVTalk":{"Action":"Claim","Channel":0,"ProType":0,"Video":{"Enc":"H265","W":240,"H":320,"FPS":10},"Audio":{"Enc":"g711a","SB":16,"SR":8000}},"SessionID":"0x0000000002"}
The camera responds with:
{ "Name" : "AVTalk", "Ret" : 100, "SessionID" : "0x00000002" }
Afterwards, the user sends video and audio packets all in the same stream. The camera doesn't send back video data, so it technically can't be called two-way like OPTalk is, but the app basically opens a TCP stream for receiving video and a separate stream for sending video. Another thing I should note is that it classifies data into 3 magic bytes: 00 00 01 FA (audio), 00 00 01 FC (i-frames), and 00 00 01 FD (p-frames)
If you guys need the packet capture, do let me know, although I'm not sure if that also means my account credentials get shared along with it. It does appear to be encrypted I think.
Extras
Here's my config
streams:
LivingRoom:
- dvrip://{user}:{pass}@192.168.101.3:34567
- dvrip://{user}:{pass}@192.168.101.3:34567?backchannel=1
Probe looks like this
"producers": [
{
"id": 37,
"format_name": "dvrip",
"protocol": "tcp",
"remote_addr": "192.168.101.3:34567",
"medias": [
"video, recvonly, H265",
"audio, recvonly, PCMA/8000"
],
"receivers": [
{
"id": 38,
"codec": {
"codec_name": "hevc",
"codec_type": "video"
},
"childs": [
40
]
},
{
"id": 39,
"codec": {
"codec_name": "pcm_alaw",
"codec_type": "audio",
"sample_rate": 8000
},
"childs": [
42
]
}
]
},
{
"id": 41,
"format_name": "dvrip",
"protocol": "tcp",
"remote_addr": "192.168.101.3:34567",
"medias": [
"audio, sendonly, PCMA/8000"
],
"senders": [
{
"id": 44,
"codec": {
"codec_name": "ANY",
"codec_type": ""
},
"parent": 43
}
]
},
{
"url": "internal"
}
],
Your link doesn't work. I don't see the point in supporting two-way video right now.
That shop link might be region-specific, I guess. Hopefully this gets picked up in the future. I get that it's way more niche and not exactly useful, but it does appear to essentially be the reverse of pkg/dvrip/producer.go, although I couldn't get the camera to play back anything through a bare-bones Python implementation.
For convenience, I've found that the CMD IDs are 1417 for the claim, and 1419 for the data.