Skip to content

live green screen solution with ffmpeg and v4l2 pseudo device

Notifications You must be signed in to change notification settings

steven-varga/chromakey

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 

Repository files navigation

chromakey

live green screen solution with ffmpeg and v4l2 pseudo device

In order to get this work you need to have a recent kernel with v4l2 loopback device enabled, and ffmpeg 3.4 or greater with chroma key support. Make sure to check which camera device to use: v4l2-ctl --list-devices

Then load

sudo apt install v4l2loopback-utils v4l2loopback-dkms ffmpeg
sudo modprobe v4l2loopback video_nr=2 exclusive_caps=1 card_label="green-screen"

The exclusive_caps=1 makes it work with chrome browser and google conference, shamelessly lifted from here Thanks figuring this out!

To check if mjpg is supported:

v4l2-ctl  --list-formats -d /dev/video3
ioctl: VIDIOC_ENUM_FMT
	Type: Video Capture

	[0]: 'YUYV' (YUYV 4:2:2)
	[1]: 'H264' (H.264, compressed)
	[2]: 'MJPG' (Motion-JPEG, compressed)

Download and copy this script into /usr/local/bin then execute with

when background image is specified, the behavior is same is before:

chromakey -i path_to_background_image.png  -c /dev/video3 -o /dev/video2

alternatively you can grab an area of the screen:

chromakey -c /dev/video3 -o /dev/video2 -x_pos=0 y_pos=800 
steven@io:~/projects/chromakey$ ./chromakey -h

chromakey replaces specified color key with background image of live video
when '--image' is not specified it grabs the screen at '--x_pos' and '--y_pos'
of area specified with '--size'
USAGE: chromakey [arguments] 
ARGS:
  -h, --help             # This help message
  -v, --verbose          # Enable verbose messages
  -k, --key              # specify color key (DEFAULT: green)
  -m, --similarity       # chromakey similarity (DEFAULT: 0.19)
  -b, --blend              # specify color key (DEFAULT: 0.07)
  -s, --size             # video stream size in pixels: 1280x720
  -i, --image            # specify image for background (DEFAULT: )
  -c, --camera           # the real input camera device path (DEFAULT: /dev/video0)
  -o, --output           # v4l2 pseudo device  (DEFAULT: /dev/video1)
  -r, --rate             # frame rate  (DEFAULT: 30)
  -x, --x_pos            # xgrab: x position   (DEFAULT: 0)
  -y, --y_pos            # xgrab: y position  (DEFAULT: 0)

Copyright (c) <Steven Varga 2010-2021> <steven@vargaconsulting.ca, Toronto, On>

The live chromakey-ed videostream will be available on specified output device, usually /dev/video1 and can be checked with ay v4l2 compatible device here is firefox: https://webrtc.github.io/samples/src/content/devices/input-output/ Skype also known to work.

About

live green screen solution with ffmpeg and v4l2 pseudo device

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published