Is it possible to have an audio only Hair Check?

johnwils
johnwils Member
edited November 2022 in Q&A

We'd like to allow participants to join a call without a camera. We currently provide a custom hair check with options to choose a camera, mic and speaker. But what if the user has no camera? Will calling daily.startCamera cause an error? Or will this work by enumerating only the audio devices.

I have a MacBook Pro with built in camera so not sure how to easily emulate this scenario.

Answers

  • I should mention. We have a feature for 'listener only' participants joining a call where we know ahead of time they will be connecting with no cam/mic.

    In the post above we don't know ahead of time if a user will have a cam attached or not. But at minimum want to support them connecting with audio only so they can be heard. Testing with latest daily 0.34 we are handling all the nice new camera-error error messages. The not-found type fires in the case of no camera.

    We're now deciding if calling startCamera, then checking for this error is the best approach. Then maybe calling startCamera again with videoSource set false. Or if there is a better way to check for no camera without the need of using startCamera it the first place.

  • daily_joey
    daily_joey Moderator, Dailynista admin

    Hi John!

    As you pointed out, the Daily startCamera() method is useful when building a "hair check" screen, as it allows for building a video preview UI while still allowing Daily to do the media track and device error handling. A more appropriate name might be "startInputDevices", as it's not limited to only camera devices and also deals with initializing a user's microphone.

    Handling the camera-error messages is one approach that should work, though that may not fit all use cases.

    An alternative way to handle "users with both cam/mic" vs "users with mic only" would be to call enumerateDevices() to determine what input devices are available, then setting videoSource: false if a camera isn't detected when calling startCamera() .