gpt4 book ai didi

php - 从字幕文件中删除 "acceleration"

转载 作者:可可西里 更新时间:2023-11-01 08:52:28 27 4
gpt4 key购买 nike

我在 MySQL 数据库中有一个带字幕(和相应时间戳)的视频。有时视频和字幕上的时间戳同步,有时不同步。

问题是视频中的偏移量不一致(即差异在整个视频中都在增加,因此使用简单的 UPDATE 不起作用:"UPDATE subtitles SET Timestamp=Timestamp+$time WHERE title=$视频";')

我如何编写 PHP 脚本来计算偏移的“加速度”,然后为该视频更新数百个 MySQL 条目?

最佳答案

听起来您在字幕表中有一堆行,其中包含需要单独调整的时间戳值。这是一个猜测,但听起来您需要以如下方式更改时间戳值:

0.0   -->  0.0
1.0 --> 1.1
2.0 --> 2.2

对于这个例子,公式是

newTimestamp[row n] = Timestamp[row 0] + 
(Timestamp[row n] - Timestamp[row 0]) * factor)

此示例中的系数为 1.1,这将使您的字幕速度提高 10%。

您的问题要求一种算法来确定要使用的正确因子。很抱歉,如果我不了解更多有关您如何存储视频的信息,我无法建议这样做的方法。

然后您要求一种算法将该因子应用于表格行中的时间戳值。你所拥有的非常接近。这样的事情应该有效:

UPDATE `subtitles` 
SET `Timestamp`=
MIN(`Timestamp`) + ( $factor * (`Timestamp` - MIN(`Timestamp`) )
WHERE title=$video

问题是,DATETIME 值并不真正适用于算术。所以我们需要做更多的工作才能让它继续下去。我们需要将时差作为数字输入,就像这样。

          ROUND (
(( HOUR(TIMEDIFF(`Timestamp`,MIN(`Timestamp`))) * 3600.0) +
( MINUTE(TIMEDIFF(`Timestamp`,MIN(`Timestamp`))) * 60.0 ) +
( SECOND(TIMEDIFF(`Timestamp`,MIN(`Timestamp`))) )
) * 1000000.0 +
(MICROSECOND(TIMEDIFF(`Timestamp`,MIN(`Timestamp`))) )
)

这个毛茸茸的表达式将当前时间和第一次时间之间的差异转换为整数微秒。

然后我们需要应用该因子并使用有效的时间算术将其添加回开始时间:timeval = othertimeval + INTERVAL ROUND(xx * factor) MICROSECOND .

UPDATE `subtitles` 
SET `Timestamp`=
MIN(`Timestamp`) + INTERVAL
ROUND ((
(( HOUR(TIMEDIFF(`Timestamp`,MIN(`Timestamp`))) * 3600.0) +
( MINUTE(TIMEDIFF(`Timestamp`,MIN(`Timestamp`))) * 60.0 ) +
( SECOND(TIMEDIFF(`Timestamp`,MIN(`Timestamp`))) )
) * 1000000.0 +
(MICROSECOND(TIMEDIFF(`Timestamp`,MIN(`Timestamp`))) )
) * $factor) MICROSECOND
WHERE title=$video

同样,这个例子中有一些猜测,但这种事情应该有效。

我们玩得开心吗?我们是吗?我们是吗?

关于php - 从字幕文件中删除 "acceleration",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11181946/

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