【问题标题】:How to determine start time and end time (seconds since epoch) of video in python?如何在python中确定视频的开始时间和结束时间(自纪元以来的秒数)?
【发布时间】:2016-11-28 05:34:49
【问题描述】:

我有一个项目需要能够知道视频文件(例如.mp4.mov.mxf 等)的启动时间(例如按下记录的时间)以及视频的启动时间文件自纪元以来以秒为单位结束。

到目前为止,我一直在做的是找到File Modified 时间并将其用作端点,然后减去持续时间以找到开始。这在某些情况下效果很好,但似乎有些摄像机不能以线性可预测的方式完全写入/修改文件,所以有时视频文件的开始/结束时间会重叠,而显然你不能在同一时间。

我是否可以在 python 中使用ffprobe(或替代方法)访问其他方法或元数据,以准确确定视频何时开始以及何时结束?

【问题讨论】:

  • 根据:QuickTime File Format Specification,看来“文件创建”时间没有明确定义。
  • 您能提供更多上下文吗?就像在哪个系统中运行?或者你使用什么工具?目前我唯一能想到的是,也许您可​​以查看系统日志或摄像头日志(如果可以访问的话)。
  • 这目前在 Windows 上运行,但也需要能够在 macOS 上运行。系统/相机日志不可用。我们只有视频文件和其中存储的任何元数据可供使用。
  • 就目前而言,这太宽泛了。每种文件类型以及文件系统中可用的元数据的行为都取决于:文件系统类型、它的安装方式、进行录制的程序、保存的格式等。解决这个问题的单一组合recorder-filesystem-format 可能是一个更好的开始。
  • 也就是说,我认为用于记录的软件可能是这个难题中最重要的一块。你无法获得它一开始就没有保存的信息。 不过,或许你可以使用python来控制录制的工作方式,并自己保存信息。

标签: python python-3.x video timestamp metadata


【解决方案1】:

使用时间库应该可以解决您的问题。试试这个:

import time
timer = time.time()
print(timer)

否则,pygame 在时间和格式方面可能非常有用。它旨在用于开发游戏,但也具有精确和有效的时间功能。

import pygame, sys
pygame.init()
timer = pygame.time.Clock() " Call after video has begun playback "
timer.tick() " Call onced playback has ended "
video_time = timer.get_time() " Returns previous time amount in milleseconds. "

【讨论】:

    【解决方案2】:

    如果您在同一系统上运行代码,则可以使用 time 库来确定视频的开始时间和结束时间。

    如果您想要从纪元开始的秒数差异,您可以使用time.time() 函数。

    import time
    
    starttime = time.time()
    

    您可以使用 Tkinter 将其与 onclick 事件绑定

    【讨论】:

      【解决方案3】:

      你最好的工具是:

      ffprobe
      mediainfo
      exiftool
      

      您可以在其中找到许多类型的日期戳,但我从未测试过它们的准确性。如果在这些工具和文件系统标记之间找不到正确的元数据,那么您需要在拍摄时进行更好的跟踪。我既是电影制作人又是程序员,我不太明白为什么需要纪元时间,但我知道在制作过程中需要更好的跟踪。

      尝试使用带时钟的数字隔板,或使用某种数字记录器,您可以在记录期间控制时间戳的创建。

      另外,正如其他人所提到的,这个问题缺乏重点。你想解决什么问题?我只能想到媒体源之间的同步,在这种情况下使用一些软件,例如复数眼睛。

      【讨论】:

        【解决方案4】:

        快速提示是使用 python 中的system() 命令。

        选项#1:

           $ ffmpeg -i file.flv 2>&1 | grep "Duration"
        

        选项#2:

           $ mediainfo --Inform="General;%Duration%" [inputfile]
        

        【讨论】:

          猜你喜欢
          • 2014-12-29
          • 2015-11-20
          • 1970-01-01
          • 2013-11-02
          • 2019-12-04
          • 1970-01-01
          • 2011-10-23
          • 1970-01-01
          相关资源
          最近更新 更多