字幕テーブルには、個別に調整する必要があるタイムスタンプ値を持つ行がたくさんあるようです。これは推測ですが、タイムスタンプの値を次のように変更する必要があるようです。
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% 高速化します。
あなたの質問は、使用する正しい要素を決定するアルゴリズムを求めています。申し訳ありませんが、動画の保存方法について詳しく知らずに、その方法を提案することはできません。
次に、テーブルの行の Timestamp 値に係数を適用するアルゴリズムを要求します。あなたが持っていたものは非常に近いです。このようなものが動作するはずです:
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
繰り返しますが、この例には当て推量がありますが、この種のことはうまくいくはずです。
私たちはまだ楽しんでいますか?私たちは?私たちは?