繁体   English   中英

将帧数转换为时间码的最佳代码/算法?

[英]Optimal code/algorithm to convert frame count to timecode?

我正在c中搜索最佳源代码/算法,以将帧数转换为给定fps中的时间代码hh:mm:ss:ff,例如。 25fps ...

这个代码是preety好- http://www.andrewduncan.ws/Timecodes/Timecodes.html (页面底部),但它是昂贵的-它包含4个MOD和6个DIV操作

我需要在每个帧上显示时间码,因此计算此算法可能需要一些时间。

我当然可以存储评估的时间码以避免计算。

但是了解更好的算法将非常有帮助...

预先感谢您。

一般经验法则:在包括视频播放器的图像处理系统中,您流血于每个像素运行一次的操作,然后流血于每个图像“修补”(通常一行像素)运行一次的操作,而且您不会流失每帧运行一次的内容。

原因是每像素素材的运行频率是每补丁素材的数百倍,甚至数千倍,而每补丁素材的运行频率是每帧素材的数百甚至数千倍。 。

这意味着每像素填充物的运行频率可能是每帧填充物的百万倍。 每像素一个指令可能每帧花费数百万条指令,并且相对于每像素指令计数而言,每帧数百或什至数千条指令在本底噪声中丢失。

换句话说,您可能可以负担得起mod和div。

话虽如此,运行自定义计数器而不是进行mod和divs可能是合理的。

首先,问题可能最好是在几秒钟到几小时,几分钟,几秒钟之间转换的最佳代码。 此时,如果帧顺序正确,则可以简单地使用加法来增加前一时间。

首先,我与其他所有人一样,除非您特别看到问题,否则您可能不需要优化它。 但是,由于尝试寻找方法很有趣,因此我会乍一看给您一些减少分隔数的方法。

seconds = framenumber div 30
minutes = seconds div 60
hours = minutes div 60
frames = frameNumber mod 30
seconds = seconds mod 60
minutes = minutes mod 60
hours = hours mod 24

它是更多的代码行,但是更少的划分。 基本上,由于秒,分钟和小时使用的是相同的数学运算,因此我将公式中的一个结果用于下一个。

Mod和div运算(较小的恒定值)可以通过乘以一些预先计算的倒数来有效地执行。 因此它们并不昂贵。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM