function overlayMaker(){
ffmpeg()
.on('end', onEnd )
.on('progress', onProgress)
.on('error', onError)
.input(`${QuizicorderDir}/screen.webm`)
.input( `${QuizicorderDir}/webcam.webm`)
.complexFilter([
"[0:V]scale=1920:-4,pad=0:1080:0:(oh-ih)/2[vid];[vid][1:V]overlay"
])
.outputFps(30)
.output('./output-video.mp4')
.run();
}
I am using this function to create an overlay of the webcam video on top of the screen recorder video. I have defined the input file path to be the temp folder in windows as i am saving the recording there temperory. The following image is the desired output
The overlay
filter only specifies where to place the overlaid video and not its size. So, if it is not in the desired dimension, you need to pre-scale it explicitly. Try
"[0:v]scale=1920:-4,pad=0:1080:0:(oh-ih)/2[vid];
[1:v]scale=w:h[ovly];
[vid][ovly]overlay=x:y"
Substitute w
,h
,x
, & y
with desired width, height, and (x,y) upper-left placement of the overlay video.