Похоже, у вас есть группа строк в таблице субтитров со значениями отметки времени, которые необходимо настроить индивидуально. Это предположение, но это звучит, как вам нужно изменить значения Timestamp таким образом, как это:
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
Опять же, в этом примере есть некоторые догадки, но такая работа должна работать.
Мы еще веселились? Мы? Мы?
Какой тип поля Отметка, я, полагая, что это число секунд после начала видео? –
временная метка подсчитывает секунды или микросекунды? –
количество секунд с начала, в секундах. – Justin