From ab0464a3841f25b0c66ea8d24607d5a2cbeee31b Mon Sep 17 00:00:00 2001 From: Koushik Dutta Date: Fri, 21 Oct 2022 22:11:51 -0700 Subject: [PATCH] onvif: fix missing ssrc for tcp --- plugins/onvif/src/onvif-intercom.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/plugins/onvif/src/onvif-intercom.ts b/plugins/onvif/src/onvif-intercom.ts index 422fd9c83..cf56bf14b 100644 --- a/plugins/onvif/src/onvif-intercom.ts +++ b/plugins/onvif/src/onvif-intercom.ts @@ -5,6 +5,7 @@ import { parseSdp } from "@scrypted/common/src/sdp-utils"; import { ffmpegLogInitialOutput, safePrintFFmpegArguments } from "@scrypted/common/src/media-helpers"; import child_process from 'child_process'; import { createBindZero } from "@scrypted/common/src/listen-cluster"; +import crypto from 'crypto'; const { mediaManager } = sdk; @@ -152,7 +153,13 @@ export class OnvifIntercom implements Intercom { if (!match) throw new Error('no supported codec was found for back channel'); - const ssrcBuffer = Buffer.from(transportDict.ssrc, 'hex'); + let ssrcBuffer: Buffer; + if (transportDict.ssrc) { + ssrcBuffer = Buffer.from(transportDict.ssrc, 'hex'); + } + else { + ssrcBuffer = crypto.randomBytes(4); + } // ffmpeg expects ssrc as signed int32. const ssrc = ssrcBuffer.readInt32BE(0);