Node.JS FFMPEG显示两个相邻的视频

Node.JS FFMPEG显示两个相邻的视频,node.js,ffmpeg,fluent-ffmpeg,Node.js,Ffmpeg,Fluent Ffmpeg,有人知道如何使用node.js包装器for ffmpeg(fluent ffmpeg)将两个视频合并为一个视频,一个在左侧,另一个在右侧,而不是串联 谢谢大家! 您可能会使用多个过滤器的组合来获得所需的内容。 首先将第一个视频重新缩放到左侧所需的大小: “比例=宽度:高度” 然后应用黑条定位左侧视频totalwidth和totalheight是输出视频的最终尺寸,x和y是重新缩放的左侧视频的位置: 最后,使用复合过滤器覆盖放置右侧视频;请注意,应首先对其进行重新缩放: 您的代码应该是这样的:(基

有人知道如何使用node.js包装器for ffmpeg(fluent ffmpeg)将两个视频合并为一个视频,一个在左侧,另一个在右侧,而不是串联


谢谢大家!

您可能会使用多个过滤器的组合来获得所需的内容。 首先将第一个视频重新缩放到左侧所需的大小:

“比例=宽度:高度”

然后应用黑条定位左侧视频
totalwidth
totalheight
是输出视频的最终尺寸,
x
y
是重新缩放的左侧视频的位置:

最后,使用复合过滤器
覆盖
放置右侧视频;请注意,应首先对其进行重新缩放:

您的代码应该是这样的:(基于快速文档:)


请注意,我还没有测试过它,但它应该可以工作

您可能会使用一组过滤器来获得您想要的。 首先将第一个视频重新缩放到左侧所需的大小:

“比例=宽度:高度”

然后应用黑条定位左侧视频
totalwidth
totalheight
是输出视频的最终尺寸,
x
y
是重新缩放的左侧视频的位置:

最后,使用复合过滤器
覆盖
放置右侧视频;请注意,应首先对其进行重新缩放:

您的代码应该是这样的:(基于快速文档:)


请注意,我还没有测试过它,但它应该可以工作

这是我用来并排显示两个视频的

ffmpeg()
.input("video1.mp4")
.input("video2.mp4")
.complexFilter([
  '[0:v]scale=300:300[0scaled]',
  '[1:v]scale=300:300[1scaled]',
  '[0scaled]pad=600:300[0padded]',
  '[0padded][1scaled]overlay=shortest=1:x=300[output]'
])
.outputOptions([
  '-map [output]'
])
.output("output.mp4")
.on("error",function(er){
  console.log("error occured: "+er.message);
})
.on("end",function(){
  console.log("success");
})
.run();

这是我用来并排显示两个视频的

ffmpeg()
.input("video1.mp4")
.input("video2.mp4")
.complexFilter([
  '[0:v]scale=300:300[0scaled]',
  '[1:v]scale=300:300[1scaled]',
  '[0scaled]pad=600:300[0padded]',
  '[0padded][1scaled]overlay=shortest=1:x=300[output]'
])
.outputOptions([
  '-map [output]'
])
.output("output.mp4")
.on("error",function(er){
  console.log("error occured: "+er.message);
})
.on("end",function(){
  console.log("success");
})
.run();

我需要同样的结果;在NodeJS中,在一个视频中一个接一个地显示两个视频。经过一些研究之后,我通过使用
exec
库(随节点提供)和
ffmpeg
bash命令完成了这项工作

我使用的解决方案(为我工作):


我需要同样的结果;在NodeJS中,在一个视频中一个接一个地显示两个视频。经过一些研究之后,我通过使用
exec
库(随节点提供)和
ffmpeg
bash命令完成了这项工作

我使用的解决方案(为我工作):

ffmpeg('left_video.avi')
.input('right_video.avi')
.complexFilter([
 // Rescale input video
 'scale=width:height',

 // Add black bars to position your left video at x, y position
 {
  filter: 'pad',
  options: 'totalwidth:totalheigth:x:y'
 }

 // Overlay the second input for right side video
 {
  filter: 'overlay', options: { x: 'x', y: 'y' },
 },
], 'output');
ffmpeg()
.input("video1.mp4")
.input("video2.mp4")
.complexFilter([
  '[0:v]scale=300:300[0scaled]',
  '[1:v]scale=300:300[1scaled]',
  '[0scaled]pad=600:300[0padded]',
  '[0padded][1scaled]overlay=shortest=1:x=300[output]'
])
.outputOptions([
  '-map [output]'
])
.output("output.mp4")
.on("error",function(er){
  console.log("error occured: "+er.message);
})
.on("end",function(){
  console.log("success");
})
.run();
let cmd = `ffmpeg -i ${pathToVid1} -i /home/shani/projects/open-app-p/files${pathToVid2} -filter_complex '[0:v]pad=iw*2:ih[int];[int][1:v]overlay=W/2:0[vid]' -map [vid] -c:v libx264 -crf 23 -preset veryfast ${outputFilePath}.mp4`; // one line

console.log("executing ffmpeg command... this might take a sec... ");
exec(cmd, (err, stdout, stderr) => {
  if (err) console.log("Error ", err)
  else console.log("Done!")
})