JaaS meetings with H264 codec

Hey folks!

I’ve used the React SDK to embed a JaaS Meeting (iframe) into my application. Now I’m trying to make it use the H264 video codec (the rationale being that screen-sharing text looks slightly better than with VP8).

I’ve only managed to achieve this for 1-on-1 meetings (which seem to use p2p connections) with the following configuration:

<JaaSMeeting
   ...
   configOverwrite={{
      p2p: {
         enabled: true,
         disabledCodec: 'VP9',
         preferredCodec: 'h264',
      }
   }}
/>

Now I’m trying to do the same for more than 2 people with the general video configuration:

<JaaSMeeting
   ...
   configOverwrite={{
      videoQuality: {
         disabledCodec: 'VP9',
         preferredCodec: 'h264',
         enforcePreferredCodec: true
      }
   }}
/>

This configuration, however, is not respected and VP8 is used instead.

Does JaaS (with multiple participants) support the H264 codec (what about simulcast?) and if so, what would be the way to configure it?

Simulcast won’t work with H.264. Not sure we actively block the codec though. @jallamsetty ?

Can you please remove disabledCodec setting and try with only the preferredCodec set to H264. If both disabledCodec and preferredCodec settings are available, only disabledCodec setting was being respected. This has been fixed in the master but hasn’t made it to the production yet.

2 Likes

Should h.264 be written as H264 ? I think I ran into a capitalization issue myself some time ago.

It doesn’t help, unfortunately. I tried many combinations and here are some results (I’m testing using multiple tabs in latest Google Chrome) :

  1. The config below results in H264 being used when there are 2 people in the meeting and VP8 when there are 3+ people. Basically, only the p2p setting is respected.
videoQuality: {
    preferredCodec: 'H264',
    enforcePreferredCodec: true
},
p2p: {
    enabled: true,
    disabledCodec: 'VP9',
    preferredCodec: 'H264',
}
  1. The config below results in VP8 being used for both 2 people and 3+ people meetings. So in this case both settings are not respected.
videoQuality: {
    disabledCodec: 'VP9',
    preferredCodec: 'H264',
    enforcePreferredCodec: true
},
p2p: {
    enabled: true,
    disabledCodec: 'VP9',
    preferredCodec: 'H264',
}
  1. Omitting the p2p setting with the following config, results in VP9 used for meetings with 2 people and VP8 used for meetings with 3+ people:
videoQuality: {
    preferredCodec: 'H264',
    enforcePreferredCodec: true
}

The capitalization of the string “H264” doesn’t seem to matter.

@Plamen_Dimitrov Looks like currently H264 is not offered as one of the supported codecs on JaaS infrastructure for multi-party conferences. The JVB doesn’t support scalability routing for H264 and therefore simulcast cannot be enabled. Please note that this would mean that the end user will have a very poor experience as the bridge will not be able to adjust the video streams based on the clients available downlink. Therefore, this is something we do not recommend. Have you tried screensharing with VP9?

Also note that the codec that gets selected for the call depends on the endpoints in the call. Firefox/Safari/React-native endpoints do not support VP9 properly, i.e., they have encoding/rendering issues on browsers and performance implications on mobile and that is why they are hardcoded not to do VP9. Therefore, with all Chromium endpoints in the call, VP9 will be selected. However, when any of the above 3 endpoint joins the call, all others switch to VP8 automatically.

1 Like

@Plamen_Dimitrov H.264 support on JVB calls has been enabled on master and will make it to production in the next JaaS release. Please keep in mind the limitations with H.264 when it comes to video quality and let us know if you run into any issues.

2 Likes

@jallamsetty Awesome, we’ll give it a try!

1 Like