Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js (没有接受的答案)如何使用ffmpeg或opencv将两个重叠的视频合并成一个视频?_Node.js_Opencv_Ffmpeg - Fatal编程技术网

Node.js (没有接受的答案)如何使用ffmpeg或opencv将两个重叠的视频合并成一个视频?

Node.js (没有接受的答案)如何使用ffmpeg或opencv将两个重叠的视频合并成一个视频?,node.js,opencv,ffmpeg,Node.js,Opencv,Ffmpeg,合并两个视频很容易,已经回答了好几次了。我有多个重叠的视频。视频可能与之前的视频有重叠。这意味着,如果视频1覆盖1-5个时间线,那么视频2可能会覆盖1个时间线,覆盖3-8个时间线。按原样合并它们将得到1-5 | 3-8,而我只需要1-8 视频按字母顺序排列 我对解决方案的总体想法是 抓取视频的最后一帧 如果是第一个视频,请继续 如果不是第一个视频,即第二个视频,则逐帧搜索在前面步骤中保存的帧 如果到达当前视频的最后一帧,则没有重叠 如果找到一帧,则将第二个视频剪辑到该帧(包括该帧),然后转到下

合并两个视频很容易,已经回答了好几次了。我有多个重叠的视频。视频可能与之前的视频有重叠。这意味着,如果视频1覆盖1-5个时间线,那么视频2可能会覆盖1个时间线,覆盖3-8个时间线。按原样合并它们将得到1-5 | 3-8,而我只需要1-8

视频按字母顺序排列

我对解决方案的总体想法是

  • 抓取视频的最后一帧
  • 如果是第一个视频,请继续
  • 如果不是第一个视频,即第二个视频,则逐帧搜索在前面步骤中保存的帧
  • 如果到达当前视频的最后一帧,则没有重叠
  • 如果找到一帧,则将第二个视频剪辑到该帧(包括该帧),然后转到下一帧
  • 分析完所有视频后,将它们合并为一个视频
我需要将其转换为ffmpeg命令。或者opencv,如果这是一个更好的工具


如果有更好的方法,我也很感兴趣。

对于ffmepg,您可以使用下面的脚本。它测试了它。但就时间而言,您必须在视频中将此STARTPTS+5更改为+25。我在这里放了5个来测试合并是否发生

ffmpeg -i 2.mp4 -i 1.mp4 -filter_complex "[1]setpts=PTS-STARTPTS+5/TB[top];[0:0][top]overlay=enable='between(t\,10,15)'[out]" -shortest -map [out] -map 0:1        -pix_fmt yuv420p -c:a copy -c:v libx264 -crf 18 output1.mp4
限度 这一个需要源足够长,这意味着您需要视频画布,然后使用此脚本将每个视频添加到画布中

在ffmpeg中没有完全自主的使用方法

你说得对。Opencv无法处理音频。需要第三方库支持才能同时运行。在此之前,我必须使用ROS从网络摄像头获取机器人系统的声音和视觉。然后用自然语言用户界面的NLP处理声音,视觉分别用于定位和映射

有办法四处走动

首先,在本地窗口批处理中使用OpenCV模板匹配或图像差异。最小的错误位置将为您提供正确的插入位置。这应该是准确的米秒级。(如果错误总是很大,则表示没有重叠和返回异常)

其次,基于从opencv获得的正确位置。调用system.call调用上述脚本,并将参数作为输入进行自动合并


取决于您的应用程序,如果您需要经常这样做,请将opencv python脚本编写到automatic fuse。如果每个月只做一次,用ffmepg手动操作就足够了

对于ffmepg,您可以使用下面的脚本。它测试了它。但就时间而言,您必须在视频中将此STARTPTS+5更改为+25。我在这里放了5个来测试合并是否发生

ffmpeg -i 2.mp4 -i 1.mp4 -filter_complex "[1]setpts=PTS-STARTPTS+5/TB[top];[0:0][top]overlay=enable='between(t\,10,15)'[out]" -shortest -map [out] -map 0:1        -pix_fmt yuv420p -c:a copy -c:v libx264 -crf 18 output1.mp4
限度 这一个需要源足够长,这意味着您需要视频画布,然后使用此脚本将每个视频添加到画布中

在ffmpeg中没有完全自主的使用方法

你说得对。Opencv无法处理音频。需要第三方库支持才能同时运行。在此之前,我必须使用ROS从网络摄像头获取机器人系统的声音和视觉。然后用自然语言用户界面的NLP处理声音,视觉分别用于定位和映射

有办法四处走动

首先,在本地窗口批处理中使用OpenCV模板匹配或图像差异。最小的错误位置将为您提供正确的插入位置。这应该是准确的米秒级。(如果错误总是很大,则表示没有重叠和返回异常)

其次,基于从opencv获得的正确位置。调用system.call调用上述脚本,并将参数作为输入进行自动合并


取决于您的应用程序,如果您需要经常这样做,请将opencv python脚本编写到automatic fuse。如果每个月只做一次,用ffmepg手动完成就足够了

我认为ffmpeg无法轻松完成您想要的任务。应该从opencv开始。路由应该是final\u img\u mat=\sum alpha\u id*image\u id\u video\u id。不太确定你在做什么,或者有什么困难。我想合并两个视频。视频可以有重叠。我的问题是我没有使用opencv的经验。将视频发布到某个网站上。我将帮助您编写一个简单的代码来组合它们。顺便说一句,如果只有2个流,您可以使用FFMEPG。但如果更多,则有1-5 | 3-8种or操作。只需使用opencv。对于merge 2流,您可以使用以下内容:ffmpeg-i input.mov-i overlay.mov-filter_complex“[1:v]setpts=PTS-10/TB[a];[0:v][a]overlay=enable=gte(t\,5):shortest=1[out]”映射[out]-map 0:a-c:v libx264-crf 18-pix_fmt yuv420p-c:a copy output.movi非常接近使用opencv,但了解到opencv不处理音频,这使得opencv对我来说毫无用处。我认为ffmpeg无法轻松完成您想要的任务。应该从opencv开始。路由应该是final\u img\u mat=\sum alpha\u id*image\u id\u video\u id。不太确定你在做什么,或者有什么困难。我想合并两个视频。视频可以有重叠。我的问题是我没有使用opencv的经验。将视频发布到某个网站上。我将帮助您编写一个简单的代码来组合它们。顺便说一句,如果只有2个流,您可以使用FFMEPG。但如果更多,则有1-5 | 3-8种or操作。只需使用opencv。对于merge 2流,您可以使用以下内容:ffmpeg-i input.mov-i overlay.mov-filter_complex“[1:v]setpts=PTS-10/TB[a];[0:v][a]overlay=enable=gte(t\,5):shortest=1[out]”映射[out]-map 0:a-c:v libx264-crf 18-pix_fmt yuv420p-c:a copy output.movi非常接近使用opencv,但了解到opencv不处理音频,这使得opencv对我来说毫无用处。