Remote video not displaying for a participant in group call
Description: In a group call, the remote video of user sa203 does not appear on one device (middle phone in screenshot), while it shows correctly on others.
Meanwhile, the web version (user "Noway") shows all 3 participants' videos correctly, including sa203.
Setup:
- Flutter: 3.29.3
- Plugin: jitsi_meet_flutter_sdk 11.2.0
- Devices:
- iPhone 13 (1st device) - iOS 17.4.1
- samsung galaxy A9 (2nd device) - android 10
- realme (3rd device) - android 12
Expected: All participants’ videos should display on all devices.
Screenshot:
Are you using your own server? What codecs are you using?
Are you using your own server? What codecs are you using?
Thanks for quick response
"Are you using your own server" -> no. i'm using meet.jit.si "What codecs are you using?" -> Where i can check the codecs?
I think it's quite similar to this issuse: https://github.com/jitsi/jitsi-meet/issues/16105
FYI: I’ve tested the issue further and found a consistent pattern
If User 1 joins the room first with the camera OFF, then User 2 joins, and User 1 enables the camera after that → User 2 can see the video normally.
However, if User 1 joins the room first with the camera ON, and then User 2 joins later, User 2 does not see User 1’s video at all — even if User 1 toggles the camera OFF and ON again afterward.
Also, I tested this on the mobile-sdk-11.2.0 tag from the jitsi/jitsi-meet repo directly, and the behavior is exactly the same.
@jallamsetty1 any leads on where to start looking?
Hi @saghul, I'm currently debugging a remote video issue and added the following log to inspect the VideoTrack state:
console.log("[🔄 TRACK_UPDATED FULL] 1", {
participantId: videoTrack?.participantId,
mediaType: videoTrack?.mediaType,
muted: videoTrack?.muted,
mirror: videoTrack?.mirror,
local: videoTrack?.local,
videoType: videoTrack?.videoType,
codec: videoTrack?.codec,
videoStarted: videoTrack?.videoStarted,
isReceivingData: videoTrack?.isReceivingData,
streamingStatus: videoTrack?.streamingStatus,
noDataFromSourceNotificationInfo: videoTrack?.noDataFromSourceNotificationInfo,
jitsiTrackId: videoTrack?.jitsiTrack?.getId?.(),
readyState: videoTrack?.jitsiTrack?.getTrack?.()?.readyState,
streamActive: videoTrack?.jitsiTrack?.getOriginalStream?.()?.getVideoTracks?.()?.[0]?.readyState,
trackMuted: videoTrack?.jitsiTrack?.isMuted?.(),
});
I noticed this behavior in the logs.
The last one of the VideoTrack objects has streamingStatus: "restoring"
[
{
"codec": undefined,
"isReceivingData": true,
"jitsiTrackId": "e5ded565-a0f3-47ef-d1d8-e24cae71851c",
"local": true,
"mediaType": "video",
"mirror": true,
"muted": false,
"noDataFromSourceNotificationInfo": undefined,
"participantId": "local",
"readyState": "live",
"streamActive": "live",
"streamingStatus": undefined,
"trackMuted": false,
"videoStarted": true,
"videoType": "camera"
},
{
"codec": undefined,
"isReceivingData": true,
"jitsiTrackId": "e5ded565-a0f3-47ef-d1d8-e24cae71851c",
"local": true,
"mediaType": "video",
"mirror": true,
"muted": false,
"noDataFromSourceNotificationInfo": undefined,
"participantId": "5cd195aa",
"readyState": "live",
"streamActive": "live",
"streamingStatus": undefined,
"trackMuted": false,
"videoStarted": true,
"videoType": "camera"
},
{
"codec": undefined,
"isReceivingData": true,
"jitsiTrackId": "e5ded565-a0f3-47ef-d1d8-e24cae71851c",
"local": true,
"mediaType": "video",
"mirror": true,
"muted": false,
"noDataFromSourceNotificationInfo": undefined,
"participantId": "local", // khác
"readyState": "live",
"streamActive": "live",
"streamingStatus": undefined,
"trackMuted": false,
"videoStarted": true,
"videoType": "camera"
},
{
"codec": undefined,
"isReceivingData": undefined,
"jitsiTrackId": undefined,
"local": undefined,
"mediaType": undefined,
"mirror": undefined,
"muted": undefined,
"noDataFromSourceNotificationInfo": undefined,
"participantId": undefined,
"readyState": undefined,
"streamActive": undefined,
"streamingStatus": undefined,
"trackMuted": undefined,
"videoStarted": undefined,
"videoType": undefined
},
{
"codec": undefined,
"isReceivingData": true,
"jitsiTrackId": "remote-video-1",
"local": false,
"mediaType": "video",
"mirror": false,
"muted": false,
"noDataFromSourceNotificationInfo": undefined,
"participantId": "5b795090",
"readyState": "live",
"streamActive": "live",
"streamingStatus": "active",
"trackMuted": false,
"videoStarted": false,
"videoType": "camera"
},
{
"codec": undefined,
"isReceivingData": true,
"jitsiTrackId": "remote-video-1",
"local": false,
"mediaType": "video",
"mirror": false,
"muted": false,
"noDataFromSourceNotificationInfo": undefined,
"participantId": "5b795090",
"readyState": "live",
"streamActive": "live",
"streamingStatus": "active",
"trackMuted": false,
"videoStarted": true,
"videoType": "camera"
},
{
"codec": undefined,
"isReceivingData": true,
"jitsiTrackId": "e5ded565-a0f3-47ef-d1d8-e24cae71851c",
"local": true,
"mediaType": "video",
"mirror": true,
"muted": false,
"noDataFromSourceNotificationInfo": undefined,
"participantId": "5cd195aa",
"readyState": "live",
"streamActive": "live",
"streamingStatus": undefined,
"trackMuted": false,
"videoStarted": true,
"videoType": "camera"
},
{
"codec": undefined,
"isReceivingData": true,
"jitsiTrackId": "remote-video-1",
"local": false,
"mediaType": "video",
"mirror": false,
"muted": false,
"noDataFromSourceNotificationInfo": undefined,
"participantId": "5b795090",
"readyState": "live",
"streamActive": "live",
"streamingStatus": "restoring",
"trackMuted": false,
"videoStarted": true,
"videoType": "camera"
}
]
Maybe this is helpful for you
If the streaming status is set to restoring, it means that the bridge is forwarding the stream but a mute event was fired on the MediaStreamTrack which implies decode issues on the receiver.
If the streaming status is set to
restoring, it means that the bridge is forwarding the stream but amuteevent was fired on the MediaStreamTrack which implies decode issues on the receiver.
So what should i do next?
If the streaming status is set to
restoring, it means that the bridge is forwarding the stream but amuteevent was fired on the MediaStreamTrack which implies decode issues on the receiver.So what should i do next?
Do you know what decoder is being used on the mobile device? Can you check if AV1 is in use here?
If that is the case, can you start the web client first that does not advertise support for AV1 and see if this issue goes away? You can disable AV1 by appending the following to the conference URL
#config.videoQuality.mobileCodecPreferenceOrder=[%22VP8%22]
Please note that this setting kicks in only when you have a JVB or 3 users call.
If the issue doesn't reproduce when using VP8, you can test again with this fix - https://github.com/jitsi/jitsi-meet/commit/8a79d200c8461710de09cb508ccec0198458b9b2 which disables hardware decoders for AV1 on mobile
If the streaming status is set to
restoring, it means that the bridge is forwarding the stream but amuteevent was fired on the MediaStreamTrack which implies decode issues on the receiver.So what should i do next?
Do you know what decoder is being used on the mobile device? Can you check if AV1 is in use here? If that is the case, can you start the web client first that does not advertise support for AV1 and see if this issue goes away? You can disable AV1 by appending the following to the conference URL
#config.videoQuality.mobileCodecPreferenceOrder=[%22VP8%22]Please note that this setting kicks in only when you have a JVB or 3 users call. If the issue doesn't reproduce when using VP8, you can test again with this fix - jitsi/jitsi-meet@8a79d20 which disables hardware decoders for AV1 on mobile
I followed your instructions, but the issue still persists.
Here’s what I tested:
Opened a room via web client using this URL: https://meet.jit.si/abc#config.videoQuality.mobileCodecPreferenceOrder=[%22VP8%22]
The first mobile device joined the room with both audio and video enabled.
Then, the second mobile device joined the same room, also with audio and video enabled.
However, the second mobile device was still unable to see the video from the first one.
I also checked out and tested this commit: https://github.com/jitsi/jitsi-meet/commit/8a79d200c8461710de09cb508ccec0198458b9b2 but unfortunately, the issue remains.
@nguyenxuankiet262 Hello, did you ever resolve this? I am facing same issue as you on Android SDK as you mentioned and have not been able to fix it