Error Enforcing VP8 Codec on iOS/iPAD

This occurs on low network conditions; We were testing it on Browserstack on iPad.
Is this a known/expected issue ?
MicrosoftTeams-image (7)

VP8 support was recently added to Safari in iOS. Before that, only H264 was supported. Probably your iPad doesn’t support it.

Does enabling transcoding when starting a session going to help ? or I simply have to set the entire session on h264 ?
@pabloFuente

Hello @Harsh_wardhan, I would like to ask you: does this happens with the same IPad when is not in “low network conditions”?

Force coding in browsers decrease a lot CPU usage of Kurento Media Server. The reason we’ve decided to use VP8 by default is because its compatibility across browsers, but maybe it does not fit your use case in this specific scenario. You have different possibilities here, I will expose all the possible solutions so you can decide which one fits better for you:

  1. Allow transcoding
    This will fix the issue but it will lead to high CPU usage when codecs from different browsers don’t match because Kurento needs to encode the publisher video to all the subscriber.

    In your /opt/openvidu/.env file it will look like this. This will apply to all sessions:

OPENVIDU_FORCED_CODEC=VP8
OPENVIDU_ALLOW_TRANSCODING=true
  1. Force to H264 and don’t allow transcoding
    The unique problem you will have here are browsers which has not H264 available, which may fail:

    In your /opt/openvidu/.env file it will look like this. This will apply to all sessions:

OPENVIDU_FORCED_CODEC=H264
OPENVIDU_ALLOW_TRANSCODING=false
  1. Don’t force any codec and allow transcoding

    This is how OpenVidu behaves before force codecs was implemented in 2.17.0. This can lead also to some High CPU because transcoding being used when browser codecs don’t match, but it should be less CPU than option 1.

    In your /opt/openvidu/.env file it will look like this. This will apply to all sessions:

OPENVIDU_FORCED_CODEC=NONE
OPENVIDU_ALLOW_TRANSCODING=true

Note: If you want to configure these parameters at session level (different parameters for each session) you need to set them using OpenVidu API or Java/Node clients:

  • In Java you can add this properties in SessionProperties object: OpenVidu Docs
  • In Node you can add this properties in properties object: OpenVidu Docs
  • Using the Rest API is pretty self explanatory :slight_smile: but you need to modify the parameters forcedVideoCodec and allowTranscoding of the POST request: OpenVidu Docs

1 Like