首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >比较两个视频,然后缩小差异

比较两个视频,然后缩小差异
EN

Stack Overflow用户
提问于 2020-09-05 11:47:50
回答 1查看 566关注 0票数 0

我有2个视频文件与相同的内容,但来自不同的来源。他们在“剪辑”和语言配音方面略有不同,这意味着一个人可能会比另一个人错过一个镜头。

我有另一种配音的语言,它对一个文件(称为A)进行了正确的计时,并且由于不同的剪切,对另一个文件(称为B)略有偏离。

问题是,“A”的质量也很低,而“B”的质量更好,原创语言被配音。

我基本上需要修改配音的时间来匹配B。

为了做到这一点,我需要找到两个视频之间的缺失/附加镜头,这样我就知道在哪里剪切它。

如果我只有一对文件,这是现实的,但是我有20对文件!我想自动化这个搜索,基本上比较两个文件在不同的时间点,并找到他们的分歧。

我该怎么做呢?我在windows上使用什么软件?

由于文件A有其他配音语言,因此比较方法应该足够精确,以检测内容差异。

EN

回答 1

Stack Overflow用户

发布于 2020-09-16 23:56:41

假设各个帧具有相同的质量、大小等,您可以使用如下方法:

  1. 从两个视频的第一帧开始
  2. 从两个视频中读取帧并比较
  3. 如果相同则返回上一步并读入下一帧
  4. 如果不同,则存储视频A的下一x帧之前读取的帧号,直到找到与视频B中的当前帧相匹配的帧(视频A具有额外帧的情况)

<代码>H19如果到达x但在上面的步骤中找不到匹配,接着阅读视频B的下一x帧,直到找到与视频A中的当前fame匹配的帧为止(如果视频B具有您在上面找到的匹配的额外frames)

  1. Assuming,则返回步骤2并继续处理这两个视频文件

X的值将控制您准备在多大程度上提前搜索找到相同的帧。

Python和OpenCV将是实现这一点的一种常见的语言/工具选择--一个框架示例来展示打开视频文件和比较(没有经过测试或破坏,它只是给出一个示例方向):

代码语言:javascript
复制
import cv2
import numpy as np
from skimage.measure import compare_ssim as ssim

capture = cv2.VideoCapture("videoA.mp4")
capture2 = cv2.VideoCapture("videoB.mp4")
simlarityIndexThreshold =  // the value you want as your threshold

while True:
    f, frameA = capture.read()
    f2, frameB = capture2.read()

    if (frameA.empty() || frameB.emnpty()
        break
    
    simlarityIndex = ssim(farmeA, frameB)
    if(simlarityIndex < simlarityIndexThreshold):
        //Frames are differnt so do your work to skip ahead here

在OpenCV中,有多种方法可以比较图像之间的相似性,因此值得您进行一些搜索,以决定要使用哪一种-上面的方法记录在这里:https://scikit-image.org/docs/stable/api/skimage.measure.html#compare-ssim

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63750251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档