首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何进行时间码计算?

如何进行时间码计算?
EN

Stack Overflow用户
提问于 2011-12-13 19:15:58
回答 4查看 11K关注 0票数 4

我有一个关于计算时间码增量的问题。

我从包含时间码格式的HH:MM:SS:FF的电影文件中读取元数据

(FF =帧,例如00->23。所以它就像framerate-100一样)

因此,我从另一个引用文件中获得了一些数据,如15:41:08:02,并获得了15:41:07:00

现在我必须计算时间偏移量(类似于时间增量,但仅限于帧)。

我该怎么做呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-12-13 19:58:59

代码语言:javascript
运行
复制
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"
票数 6
EN

Stack Overflow用户

发布于 2011-12-13 19:59:33

我只是使用gobal帧编号进行所有计算,转换回时间码仅用于显示

代码语言:javascript
运行
复制
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)

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

票数 2
EN

Stack Overflow用户

发布于 2013-04-11 03:36:08

如果时间码为SMPTE timecode,则可能需要考虑丢弃帧。Drop-frame时间码会在每分钟的第一秒丢弃帧编号0和1,但分钟数可被10整除时除外。

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

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

https://stackoverflow.com/questions/8488238

复制
相关文章

相似问题

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