4

I have a laptop with Ubuntu 17.10 and skypeforlinux 8.16.76. The laptop has a built-in webcam and I have connected a Logitech QuickCam IM To a USB Port (I need to use an external cam for flexibility reasons).

With the old skype 4.3, the external webcam was working very well. Now, with the skypeforlinux version 5.4 onward, the external webcam shows black frame. To be clear, the "Audio and Video Settings" shows both the cams, but when I select the external webcam, it shows black frame. The internal webcam works perfectly fine. On Windows, both the cams work fine. Also, in Cheese, both the cams work fine.

libv4l details:

mahesh@mahesh-Dell:~$ dpkg --list | grep libv4l
ii  libv4l-0:amd64                                                   1.12.5-1                                     amd64        Collection of video4linux support libraries
ii  libv4l-0:i386                                                    1.12.5-1                                     i386         Collection of video4linux support libraries
ii  libv4l-dev:amd64                                                 1.12.5-1                                     amd64        Collection of video4linux support libraries (development files)
ii  libv4l2rds0:amd64                                                1.12.5-1                                     amd64        Video4Linux Radio Data System (RDS) decoding library
ii  libv4lconvert0:amd64                                             1.12.5-1                                     amd64        Video4linux frame format conversion library
ii  libv4lconvert0:i386                                              1.12.5-1                                     i386         Video4linux frame format conversion library

What do I need to do to get skypeforlinux working with the external cam?

3
  • Have you asked the Skype people that question? Seems like they might know the answer to that question. answers.microsoft.com/en-us/skype/forum/…
    – jpezz
    Feb 11, 2018 at 22:52
  • @jpezz I have asked there, and there was no solution. I have gone through all the previous questions too. Nobody seems to have my situtation. For me the webcam is detected but I get black frames, whereas all the questions are about not-detected webcams or crashes during video calls. I have neither. Also, since the external camera works in windows, I thought it could be that I have soem wrong libraries installed or something...
    – mahesh
    Mar 6, 2018 at 18:41
  • Hi, I can improve the answer I have just posted if you tell me where your external and internal webcams are in /dev/ (for example /dev/video0 , /dev/video1 , etc.) May 29, 2018 at 11:39

1 Answer 1

7

I had exactly the same problem and I have found a good workaround for it.

Suppose your webcam is in /dev/video0.

Please execute the following steps.

  1. Install v4l2loopback by running

    sudo apt-get install v4l2loopback-dkms
    
  2. Enable the v4l2loopback module by running

    sudo modprobe v4l2loopback
    

    This will install a virtual webcam, for example in /dev/video1

  3. Finally, when you need your webcam on Skype, just run this command.

    ffmpeg -i /dev/video0 -vcodec rawvideo -pix_fmt yuv420p -vsync 2 -threads 0 -f v4l2 /dev/video1
    

This command redirects the real webcam in /dev/video0 to the virtual webcam /dev/video1 which should be recognized by Skype (it worked for me).

If you don't want to write the long ffmpeg command each time, you can save it into a script, say launch_skype_cam.sh defined below.

#!/bin/bash
ffmpeg -i /dev/video0 -vcodec rawvideo -pix_fmt yuv420p -vsync 2 -threads 0 -f v4l2 /dev/video1

Or you can set an alias, for example in your .bashrc file.

alias launch_skype_cam='ffmpeg -i /dev/video0 -vcodec rawvideo -pix_fmt yuv420p -vsync 2 -threads 0 -f v4l2 /dev/video1'   
6
  • 2
    answer is correct. I had to add -vsync 2 to the ffmpeg command line. (this should be a comment, but my reputation is below 50) Apr 10, 2020 at 18:15
  • Hi @EmanueleCipolla, you mean it should be an edit ? Just to understand better, why do you think this extra option would be useful/necessary? In my case it worked without that option, but if you think it is necessary please let me know and I can reason about whether I should add it to the answer... Apr 24, 2020 at 11:21
  • 1
    My answer was deleted and converted to a comment by a moderator. I had written "(this should be a comment, but my reputation is below 50)" and was reported verbatim. I only wished to add that '-vsync 2' as I got an error without. Apr 25, 2020 at 13:20
  • 1
    It is working for me if I use -vsync 2. If not, then it uses 100% CPU, it is not working correctly and I receive the message "[v4l2 @ 0x5586affb80e0] Frame rate very high for a muxer not efficiently supporting it. Please consider specifying a lower framerate, a different muxer or -vsync 2" Apr 25, 2020 at 15:53
  • 2
    Also this method works also with microsoft teams Apr 25, 2020 at 16:03

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .