diff --git a/plugins/prebuffer-mixin/package-lock.json b/plugins/prebuffer-mixin/package-lock.json index c8290a1c3..b04a9706b 100644 --- a/plugins/prebuffer-mixin/package-lock.json +++ b/plugins/prebuffer-mixin/package-lock.json @@ -1,12 +1,12 @@ { "name": "@scrypted/prebuffer-mixin", - "version": "0.9.17", + "version": "0.9.18", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@scrypted/prebuffer-mixin", - "version": "0.9.17", + "version": "0.9.18", "license": "Apache-2.0", "dependencies": { "@scrypted/common": "file:../../common", diff --git a/plugins/prebuffer-mixin/package.json b/plugins/prebuffer-mixin/package.json index b08f87edd..6a0142261 100644 --- a/plugins/prebuffer-mixin/package.json +++ b/plugins/prebuffer-mixin/package.json @@ -1,6 +1,6 @@ { "name": "@scrypted/prebuffer-mixin", - "version": "0.9.17", + "version": "0.9.18", "description": "Video Stream Rebroadcast, Prebuffer, and Management Plugin for Scrypted.", "author": "Scrypted", "license": "Apache-2.0", diff --git a/plugins/prebuffer-mixin/src/main.ts b/plugins/prebuffer-mixin/src/main.ts index f8a76c2ed..56d118102 100644 --- a/plugins/prebuffer-mixin/src/main.ts +++ b/plugins/prebuffer-mixin/src/main.ts @@ -994,7 +994,7 @@ class PrebufferSession { let availablePrebuffers = parser.findSyncFrame(filtered); if (!availablePrebuffers) { this.console.warn('Unable to find sync frame in rtsp prebuffer.'); - availablePrebuffers = filtered; + availablePrebuffers = []; } else { this.console.log('Found sync frame in rtsp prebuffer.'); @@ -1018,9 +1018,11 @@ class PrebufferSession { const session = await this.parserSessionPromise; let requestedPrebuffer = options?.prebuffer; - if (requestedPrebuffer == null && options?.destination !== 'remote') { - // try to gaurantee a sync frame, but don't send too much prebuffer. - requestedPrebuffer = Math.max(4000, this.getDetectedIdrInterval() || 4000);; + if (requestedPrebuffer == null) { + // prebuffer search for remote streaming should be even more conservative than local network. + const defaultPrebuffer = options?.destination === 'remote' ? 2000 : 4000; + // try to gaurantee a sync frame, but don't search too much prebuffer to make it happen. + requestedPrebuffer = Math.min(defaultPrebuffer, this.getDetectedIdrInterval() || defaultPrebuffer);; } const { rtspMode, muxingMp4 } = this.getRebroadcastContainer(); @@ -1453,6 +1455,7 @@ class PrebufferMixin extends SettingsMixinDeviceBase