voxeet / voxeet-uxkit-reactnative

https://www.npmjs.com/package/@voxeet/react-native-voxeet-conferencekit
MIT License
11 stars 12 forks source link

The video closes immediately when users pick up a call #56

Closed hungkoala closed 1 year ago

hungkoala commented 2 years ago

The error happens to one of my customers when she picks up a phone call, the application close immediately, and the system throw an event as below onConferenceStatusUpdated, nothing more without any error details

 {"status":"ERROR","conferenceAlias":"1640835312655","conferenceId":"616cb6a6-8d76-417a-aea5-45eeb7dcfdf3"}

Expected Behaviour Should do phone calls successfully

Specifications Android Version:9 Model:HUAWEIINE-LX2r, INE-LX2r Kernel Version: 4.9.148

codlab commented 2 years ago

the application close immediately

Is it the application or the overlay? You mention you receive the event

Do you catch and manage join() errors? as this status containing error can be sent in two various occasions :

*for instance, the participant is an embargoed country, in such case, the calls won't go through and be discarded with a rejection and this event

Alternatively, you can get some information from the dolby.io "Communications API" left menu options and then use the conferenceId to find the "events" from the conference, it will be a possibility to investigate what is happening as well

hungkoala commented 2 years ago

it's the video overlay. I will check "Communications API"

hungkoala commented 2 years ago

Beside the error status above, our system also recorded events below::

{"status":"JOINING","conferenceAlias":null,"conferenceId":"616cb6a6-8d76-417a-aea5-45eeb7dcfdf3"}

{"status":"JOINED","conferenceAlias":"1640835312655","conferenceId":"616cb6a6-8d76-417a-aea5-45eeb7dcfdf3"}

{"status":"LEFT","conferenceAlias":"1640835312655","conferenceId":"616cb6a6-8d76-417a-aea5-45eeb7dcfdf3"}

FabienLavocat commented 2 years ago

Hi @hungkoala, I looked at the logs for your conference, it was created from a Windows PC using the H264 codec. Once the Android device connected to the conference, it failed to process the video. When you create the conference, I would recommend to use the VP8 codec instead of H264, especially if you have a lot of devices like this one which are not supporting H264. To force VP8, you must set the videoCodec parameter to VP8 when creating the conference - https://docs.dolby.io/communications-apis/docs/js-client-sdk-model-conferenceparameters#videocodec

Also, I would recommend for you to turn on Dolby Voice, same thing, when creating the conference, set the dolbyVoice flag to true - https://docs.dolby.io/communications-apis/docs/js-client-sdk-model-conferenceparameters#dolbyvoice

codlab commented 2 years ago

Software codecs are not enabled out of the box. To support such environment, you will need a specific native snippet inside your rn's MainApplication class. I'll send this snippet a bit later

Edit: note that VMs like BlueStack, Android Virtual Devices and Windows 11 Android Runtime requires such thing as they have no (currently) hw codecs

codlab commented 2 years ago

Here is the snippet you will need in the java implementation :

CodecDescriptorHolder encoders = CodecDescriptorFactory.getEncoders(VideoCodecType.H264);
if (null != encoders) encoders.register(new CodecDescriptor("OMX.google", 16, true));

CodecDescriptorFactory.getDecoders().register(new CodecDescriptor("OMX.google", 16, false));

This will enable the fallback to the codecs for VMs 👍

codlab commented 2 years ago

My bad I thought @FabienLavocat mentionned the user was using Windows (with one of the available VMs !)

It doesn't invalidate the "fix". I will use this to update the list of supported codecs inside the SDK to support this device in parallel (!)

hungkoala commented 2 years ago

MainApplication

which method in MainApplication.java I should put these lines of code in ?

FabienLavocat commented 2 years ago

@hungkoala you can write it in the onCreate function.