0
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 Desired Output For Similar to it

and the output that i am getting is the following The output that i get

Nommiiee
  • 17
  • 4

1 Answers1

2

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.

kesh
  • 4,515
  • 2
  • 12
  • 20
  • I got the right positioning to work properly, thank you very much, but another problem arise from it, and that is, when creating the overlay, it removes the audio from the webcam video file. – Nommiiee Mar 28 '22 at 10:55
  • You should raise another question regarding your new issue. Make sure to post the ffmpeg log so we have a chance to diagnose the problem. – kesh Mar 28 '22 at 14:53