媒体设备设置colorTemperature后如何重置whiteBalanceMode为continuous
问题根因
你手动设置colorTemperature后,该手动约束会被持续保留,而continuous白平衡模式的运行逻辑是系统自动调节色温,不允许存在手动指定的色温值,两个约束存在冲突,因此你单独设置whiteBalanceMode的操作无法生效。
解决方案
切换回连续白平衡模式时,需要同时将之前设置的colorTemperature约束清除(设为null即可),调整后的代码如下:
async function changeEnv(tracks,compen) { console.log(tracks,performance.now()); for (const track of tracks) { console.log('curr',track.getSettings()); console.log('capab',track.getCapabilities()); if (compen === 3600) { await track.applyConstraints({advanced:[{colorTemperature: compen}]}); } else { // 先清除手动色温约束,再切换白平衡模式,避免冲突 await track.applyConstraints({ advanced: [ {colorTemperature: null}, {whiteBalanceMode: 'continuous'} ] }); } console.log('curr',track.getSettings()); } }
如果上述写法仍不生效,可以尝试将约束放在顶层而非advanced数组中,部分浏览器对顶层约束的优先级处理更符合预期:
await track.applyConstraints({ colorTemperature: null, whiteBalanceMode: 'continuous' });
修改后调用track.getSettings()可以看到colorTemperature会回到初始值0,whiteBalanceMode成功切换为continuous。
内容的提问来源于stack exchange,提问作者Marcus.Aurelianus
相关产品推荐
相关产品推荐

