【问题标题】:How to do timecode calculation?如何进行时间码计算?
【发布时间】:2011-12-13 11:15:57
【问题描述】:

我有一个关于计算时间码增量的问题。
我从包含格式为 HH:MM:SS:FF 的时间码的电影文件中读取元数据

(例如FF = 帧,00->23。所以就像00framerate-1

所以我得到了一些像15:41:08:02 这样的数据,从另一个参考文件中我得到了15:41:07:00
现在我必须计算时间偏移量(如 timedelta,但仅使用帧)。
我该怎么做呢?

【问题讨论】:

    标签: python video timecodes


    【解决方案1】:
    framerate = 24
    
    def timecode_to_frames(timecode):
        return sum(f * int(t) for f,t in zip((3600*framerate, 60*framerate, framerate, 1), timecode.split(':')))
    
    print timecode_to_frames('15:41:08:02') - timecode_to_frames('15:41:07:00')
    # returns 26
    
    def frames_to_timecode(frames):
        return '{0:02d}:{1:02d}:{2:02d}:{3:02d}'.format(frames / (3600*framerate),
                                                        frames / (60*framerate) % 60,
                                                        frames / framerate % 60,
                                                        frames % framerate)
    
    print frames_to_timecode(26)
    # returns "00:00:01:02"
    

    【讨论】:

    • 非常感谢大家的快速解答!很惊讶这里的人是多么善良和快速。
    【解决方案2】:

    我只使用全局帧数进行所有计算,转换回时间码仅用于显示

    def tc_to_frame(hh, mm, ss, ff):
        return ff + (ss + mm*60 + hh*3600) * frame_rate
    
    def frame_to_tc(fn):
        ff = fn % frame_rate
        s = fn // frame_rate
        return (s // 3600, s // 60 % 60, s % 60, ff)
    

    对于负帧数,我会在绝对值的表示之前加上一个减号

    【讨论】:

      【解决方案3】:

      如果时间码是SMPTE timecode,您可能需要考虑丢帧。丢帧时间码在每分钟的第一秒丢帧编号 0 和 1,除非分钟数可以被 10 整除。

      This page 提供了一些历史背景以及用于在时间码和帧数之间转换的公式。

      【讨论】:

      • 对于丢帧时间码,01:08:59:29 和 01:09:00:02 之间的时间偏移应该是 1,不是吗?
      【解决方案4】:

      使用timecode 模块非常简单:

      import timecode as tc
      tc1 = tc.Timecode(24, "15:41:08:02")
      tc2 = tc.Timecode(24, "15:41:07:00")
      delta = tc1 - tc2
      print(delta.frames)
      

      给你26

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-14
        • 1970-01-01
        • 2019-10-11
        • 2014-07-13
        相关资源
        最近更新 更多