gpt4 book ai didi

ruby-on-rails - Rails 中的时间码 - 时间还是数值?

转载 作者:行者123 更新时间:2023-12-04 05:45:46 25 4
gpt4 key购买 nike

我正在开展一个项目,该项目将数据存储在音轨上,并且需要使用时间码作为音频 rails 的起点和终点。我还需要计算并显示轨道的持续时间。例如。轨道从 0:01:30 开始,到 0:04:12 结束。所以它的持续时间总共是 2 分 42 秒。

诀窍在于所有内容都需要作为时间码显示和处理,因此在上面的示例中,持续时间需要显示为 0:02:42。

所以我的问题是您将如何存储这些值?最简单的选择是将开始和结束时间作为时间存储在数据库中。计算持续时间非常容易,您可以在表单中使用 Rails 时间助手。唯一痛苦的部分是将持续时间转回显示的时间值(因为如果我只向 strptime 提供秒数,它会继续使用当前时间来填充其他字段)

我考虑的另一个选项是将它们存储为数值(如秒数)。但是我必须编写大量代码来将它们与某种类型的时间码格式相互转换,而且我无法使用 Rails 时间助手。

还有什么我没有考虑过的想法吗?有没有一种简单的方法来计算持续时间并将其显示为时间码格式?

最佳答案

我会将它们存储为秒或毫秒。我一直在用 Ruby 开发音乐库管理器/音频播放器,实际上我必须编写您需要的两种方法。没有那么多代码:

  # Helper method to format a number of milliseconds as a string like
# "1:03:56.555". The only option is :include_milliseconds, true by default. If
# false, milliseconds won't be included in the formatted string.
def format_time(milliseconds, options = {})
ms = milliseconds % 1000
seconds = (milliseconds / 1000) % 60
minutes = (milliseconds / 60000) % 60
hours = milliseconds / 3600000

if ms.zero? || options[:include_milliseconds] == false
ms_string = ""
else
ms_string = ".%03d" % [ms]
end

if hours > 0
"%d:%02d:%02d%s" % [hours, minutes, seconds, ms_string]
else
"%d:%02d%s" % [minutes, seconds, ms_string]
end
end

# Helper method to parse a string like "1:03:56.555" and return the number of
# milliseconds that time length represents.
def parse_time(string)
parts = string.split(":").map(&:to_f)
parts = [0] + parts if parts.length == 2
hours, minutes, seconds = parts
seconds = hours * 3600 + minutes * 60 + seconds
milliseconds = seconds * 1000
milliseconds.to_i
end

它是以毫秒为单位编写的,如果将其更改为以秒为单位会简单得多。

关于ruby-on-rails - Rails 中的时间码 - 时间还是数值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13962726/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com