javascriptffmpegelectronfluent-ffmpeg

how to define overlay video position and size ffmpeg electronJS?


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


Solution

  • 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.