Hi there!
I am using VP9 SVC.
On my production environment I have a problem when consumers get a completely frozen video. This problem repeats regularly.
I add debug logs and see the following:
RTC::TransportCongestionControlClient::MayEmitAvailableBitrateEvent() | high BWE value decrease detected, notifying listener [now:1076768, before:2025000].
RTC::SvcConsumer::UpdateTargetLayers() | target layers changed [spatial:-1, temporal:-1, consumerId:02e16c63-7125-4c06-bee4-f928866f9679].
After that I get a layerschange
event on the consumer with undefined layers.
According to the documentation, this event means that `consumer deactivated due to not enough bandwidth’.
But 1076768 bps is quite enough for S0T0 or even higher level.
Producer side client have score ‘10’.
Can you help me identify the source of the problem? I miss some configuration? Can network problems cause this behaviour? On local environment everything works fine.
P.S.
worker settings:
{
kind: MediaKind.Video,
mimeType: 'video/VP9',
clockRate: 90000,
parameters: {
'profile-id': 0,
'x-google-start-bitrate': 1000,
},
preferredPayloadType: 103,
},
...
initialAvailableOutgoingBitrate: 1000000,
maxSctpMessageSize: 262144,
// Additional options that are not part of WebRtcTransportOptions.
maxIncomingBitrate: 1500000,
producer settings:
mimeType: video/vp9
scalabilityMode: L3T3_KEY
dtx: false
P.P.S. when this problem occurs I can see high packet loss (12%) on client WebRtc stats. Could this be a cause or effect?
P.P.P.S. Tried to switch to VP8 with config:
mimeType: video/vp8
scaleResolutionDownBy: 1
scalabilityMode: 'L1T3'
And got same behavior:
RTC::SimulcastConsumer::UpdateTargetLayers() | target layers changed [spatial:-1, temporal:-1, consumerId:1361ecf5-1886-4798-8bc9-b88976a1b4c9]"
But no BWE warinings before, just:
RTC::RtpStream::UpdateScore() | [added score:10, previous computed score:9, new computed score:10] (calling listener)