diff --git a/client/app/composables/use-devices.ts b/client/app/composables/use-devices.ts index 41470a9..838102b 100644 --- a/client/app/composables/use-devices.ts +++ b/client/app/composables/use-devices.ts @@ -13,8 +13,9 @@ export const useDevices = createGlobalState(() => { return navigator.mediaDevices.getDisplayMedia({ audio: false, video: { + height: { max: 1440 }, displaySurface: 'monitor', - frameRate: { max: fps }, + frameRate: { ideal: fps, max: fps }, }, }) } diff --git a/client/app/composables/use-mediasoup.ts b/client/app/composables/use-mediasoup.ts index c727e2a..75da061 100644 --- a/client/app/composables/use-mediasoup.ts +++ b/client/app/composables/use-mediasoup.ts @@ -452,14 +452,26 @@ export const useMediasoup = createSharedComposable(() => { if (!track) return + console.log('codec', device.value.sendRtpCapabilities.codecs) + await createProducer({ track, streamId: 'share', - codec: device.value.rtpCapabilities.codecs?.find( - c => c.mimeType.toLowerCase() === 'video/AV1', + codec: device.value.sendRtpCapabilities.codecs?.find( + c => c.mimeType.toLowerCase() === 'video/vp9' && c.parameters?.['profile-id'] === 0, ), + encodings: [ + { + maxBitrate: 12_000_000, // 8 Mbps — для 1080p60 достаточно + maxFramerate: 60, + scalabilityMode: 'L1T1', // Без SVC слоёв (стабильнее) + networkPriority: 'high', + }, + ], codecOptions: { - videoGoogleStartBitrate: 1000, + videoGoogleStartBitrate: 2000, // Стартуем с 2 Mbps сразу + videoGoogleMaxBitrate: 12000, + videoGoogleMinBitrate: 500, }, zeroRtpOnPause: true, appData: { diff --git a/client/src-tauri/tauri.conf.json b/client/src-tauri/tauri.conf.json index 61ef921..c357c0f 100644 --- a/client/src-tauri/tauri.conf.json +++ b/client/src-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "../node_modules/@tauri-apps/cli/config.schema.json", "productName": "Chad", - "version": "0.3.0-rc.2", + "version": "0.3.0-rc.3", "identifier": "xyz.koptilnya.chad", "build": { "frontendDist": "../.output/public",