webrtc: increase ipv4 mtu, fix udp upstream

This commit is contained in:
Koushik Dutta
2022-12-14 10:22:15 -08:00
parent 70f198501f
commit a1c49ffb65
5 changed files with 14 additions and 6 deletions

View File

@@ -1,12 +1,12 @@
{
"name": "@scrypted/webrtc",
"version": "0.0.112",
"version": "0.0.113",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "@scrypted/webrtc",
"version": "0.0.112",
"version": "0.0.113",
"dependencies": {
"@koush/werift": "file:../../external/werift/packages/webrtc",
"@scrypted/common": "file:../../common",

View File

@@ -1,6 +1,6 @@
{
"name": "@scrypted/webrtc",
"version": "0.0.112",
"version": "0.0.113",
"scripts": {
"scrypted-setup-project": "scrypted-setup-project",
"prescrypted-setup-project": "scrypted-package-json",

View File

@@ -34,7 +34,7 @@ function getDebugModeH264EncoderArgs() {
export async function createTrackForwarder(options: {
timeStart: number,
isPrivate: boolean, destinationId: string,
isPrivate: boolean, destinationId: string, ipv4: boolean,
requestMediaStream: RequestMediaStream,
videoTransceiver: RTCRtpTransceiver, audioTransceiver: RTCRtpTransceiver,
sessionSupportsH264High: boolean, maximumCompatibilityMode: boolean, transcodeWidth: number,
@@ -187,7 +187,11 @@ export async function createTrackForwarder(options: {
},
};
const videoPacketSize = 1300;
// ipv4 mtu is 1500
// so max usable packet size is 1500 - rtp header - tcp header - ip header
// 1500 - 12 - 20 - 20 = 1448.
// but set to 1440 cause that's what cameras seem to use for some reason.
const videoPacketSize = options.ipv4 ? 1440 : 1300;
let h264Repacketizer: H264Repacketizer;
let spsPps: ReturnType<typeof getSpsPps>;

View File

@@ -69,6 +69,7 @@ async function setupRtspClient(console: Console, rtspClient: RtspClient, channel
onRtp: (rtspHeader, rtp) => deliver(rtp),
});
console.log('rtsp/udp', section.codec, result);
return false;
}
}
catch (e) {

View File

@@ -57,8 +57,11 @@ export function logIsPrivateIceTransport(console: Console, pc: RTCPeerConnection
console.warn('Turn server is in use. For optimal performance ensure that your router supports source NAT.');
}
console.log('Connection is local network:', isPrivate);
const destinationId = pc.iceTransports[0]?.connection?.remoteAddr?.[0];
const ipv4 = ip.isV4Format(destinationId);
return {
ipv4,
isPrivate,
destinationId: pc.iceTransports[0]?.connection?.remoteAddr?.[0],
destinationId,
};
}