The times, they are a-changin…
With Covid-19 around and most of us at home, the usage of video-conferencing software has raised from a work utility to a mainstream solution for keeping up with family and friends in a daily basis.
As a demand of video products arose and stocks disappeared, the prices increased for the pending units in amazon and ebay, anyhow, and since weeks ago, the amount of high res webcams (1080p, 30 fps) at my location is nearly to none for the usual culprits: Logitech C920, Brio, even cheap DSLR cameras and GoPros.
Some of us, that did not care about having a decent webcam around, are at a point in which the options are: using the phone directly or any laptop you have around.
What can you do if you want to use your own computer instead that awful integrated webcam or keep carrying around the phone and having to pay attention to that small screen?
I have an Android mobile, a Windows 10 and a good wifi. After some tinkering I have been able to use my mobile as fully fledged webcam with synced video and audio that is usable in webpages or applications.
- IP Webcam installed in your Android phone.
- Voicemeeter and OBS and OBS Virtual Cam installed in your Windows machine.
- Launch IP Webcam
- Reconfigure the Video Preferences for changing the Main Camera from the Primary to the Frontal.
- Reconfigure Energy Options or allow the application for working in background and with the screen turned off.
- For the rest of the options, the default values should be ok.
- Launch server. Record the IP information that is shown in the screen.
- Open Voicemeeter and play a bit with it while following Streamlabs OBS’ guide for splitting audio (this guide refers to the Advanced version but the basic works the same way).
- Voicemeeter is a mixer that creates a virtual input and output in your computer, with it you can route audio to multiple sources or inputs.
- Open OBS, include two new VLC Video Sources with the information you just gathered
- Video: add http://IP:8080/video
- Reconfigure the sources for filling OBS’ screen, use the filters you want including layers, images or what you you feel it should bloat the screen.
- Audio: add http://IP:8080/audio.wav (.acc or .opus are also available).
- Enable the VirtualCam from the Tools menu, VirtualCam. Click Start or select the AutoStart checkbox.
- Video: add http://IP:8080/video
At this point you should see the Android’s camera in OBS’ window. Test it using the Start Recording option and review the final video, in my case, there was a clear audio delay. Let’s fix it:
- From the OBS’ Audio Mixer, reconfigure the Advanced Audio Properties for the audio source and tune it with the Sync Offset parameter. + will increase the delay, – will decrease it.
Test the behaviour with starting recordings and verifying if everything is synced as expected.
At this point you should have available a virtual camera named OBS-Camera that outputs the same image you see in OBS, this could be used in any webpage or video conferencing application, but you don’t have any usable audio.
If you try to use an external microphone you will find that it will sound delayed from the image, appearing some seconds before the image is shown. Let’s fix this using the audio from the mobile:
- In OBS, go to the Audio Mixer and reconfigure the Advanced Audio Properties, review the Audio Monitoring option, select Monitor only (mute output) for the audio source.
Monitoring but muting the output will allow you to not hearing yourself but pass the audio to the proper virtual input.
- Shift to the main OBS’ Settings, Audio, check the Advanced option, Monitoring Device, select the Voicemeeter input.
Now OBS’ audio is routed to the virtual input that Voicemeeter provides.
- Before this, I have been using for a while the Virtual Audio Cable solution that VB-cable also provides and, in my case, I use the VB-Output for being able to use Voicemeeter independently, without having to use the actual output from the computer as the input (the default behavior and what actually sounds in my headphones).
- PS: Maybe an easier solution would be to install VB-Cable and monitor OBS via the VB-Input for using it as microphone but it seems that it doesn’t work as expected.
Now, just open the application or web where you want to use the solution. In my case, meet.jit.si, select the proper virtual input and camera and enjoy using your Android phone as a webcam =D
DISCLAIMER: Be careful with your probably expensive mobile, remove any case for letting it breathe and connect it to the best USB you have for having enough juice during the calls.
PS: 200516 – If you still suffer latency while using your network modify the video input, include a Filter, Video Delay (async), and include a Delay that will delay the shown video until video and audio are synced.
In my testing during the week, recording works as expected without including the video delay but sometimes, the output for IM applications is delayed, for this situations I created multiple scenes, one for laggy days, another for normal ones.
Not exactly easy-peasy but a it was a nice noon of tinkering.