From f7d88273e48efbfa3dc4cdecff69599b8c9bed9a Mon Sep 17 00:00:00 2001 From: Koushik Dutta Date: Thu, 16 Nov 2023 21:17:01 -0800 Subject: [PATCH] webrtc: talkback fixes --- plugins/webrtc/package-lock.json | 4 ++-- plugins/webrtc/package.json | 2 +- plugins/webrtc/src/wrtc-to-rtsp.ts | 11 ++++++++--- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/plugins/webrtc/package-lock.json b/plugins/webrtc/package-lock.json index e3eabafdb..bad695772 100644 --- a/plugins/webrtc/package-lock.json +++ b/plugins/webrtc/package-lock.json @@ -1,12 +1,12 @@ { "name": "@scrypted/webrtc", - "version": "0.1.76", + "version": "0.1.79", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@scrypted/webrtc", - "version": "0.1.76", + "version": "0.1.79", "dependencies": { "@scrypted/common": "file:../../common", "@scrypted/sdk": "file:../../sdk", diff --git a/plugins/webrtc/package.json b/plugins/webrtc/package.json index 453cd7b5f..8288e65b5 100644 --- a/plugins/webrtc/package.json +++ b/plugins/webrtc/package.json @@ -1,6 +1,6 @@ { "name": "@scrypted/webrtc", - "version": "0.1.76", + "version": "0.1.79", "scripts": { "scrypted-setup-project": "scrypted-setup-project", "prescrypted-setup-project": "scrypted-package-json", diff --git a/plugins/webrtc/src/wrtc-to-rtsp.ts b/plugins/webrtc/src/wrtc-to-rtsp.ts index c66165bc5..2be780488 100644 --- a/plugins/webrtc/src/wrtc-to-rtsp.ts +++ b/plugins/webrtc/src/wrtc-to-rtsp.ts @@ -261,14 +261,14 @@ export async function createRTCPeerConnectionSource(options: { let destroyProcess: () => void; - const track = audioTransceiver.sender.sendRtp; + const audioCodec = audioTransceiver?.sender?.codec; const ic: Intercom = { async startIntercom(media: MediaObject) { if (!isPeerConnectionAlive(pc)) throw new Error('peer connection is closed'); - if (!track) + if (!audioTransceiver?.sender?.sendRtp || !audioCodec) throw new Error('peer connection does not support two way audio'); @@ -276,8 +276,13 @@ export async function createRTCPeerConnectionSource(options: { const { kill: destroy } = await startRtpForwarderProcess(console, ffmpegInput, { audio: { + codecCopy: audioCodec.name, encoderArguments: getFFmpegRtpAudioOutputArguments(ffmpegInput.mediaStreamOptions?.audio?.codec, audioTransceiver.sender.codec, maximumCompatibilityMode), - onRtp: (rtp) => audioTransceiver.sender.sendRtp(rtp), + onRtp: (rtp) => { + const packet = RtpPacket.deSerialize(rtp); + packet.header.payloadType = audioCodec.payloadType; + audioTransceiver.sender.sendRtp(packet.serialize()); + }, }, });