3

MySQL データベースに字幕付きのビデオ (および対応するタイムスタンプ) があります。ビデオと字幕のタイムスタンプが同期する場合と同期しない場合があります。

問題は、ビデオ内でオフセットが一貫していないことです (つまり、ビデオ全体で差が大きくなっているため、単純な UPDATE を使用してもうまくいきませんでした: "UPDATE subtitles SET Timestamp=Timestamp+$time WHERE title=$video";') 。

オフセットの「加速度」を計算し、そのビデオの数百の MySQL エントリを更新する PHP スクリプトを作成するにはどうすればよいですか?

4

2 に答える 2

1

字幕テーブルには、個別に調整する必要があるタイムスタンプ値を持つ行がたくさんあるようです。これは推測ですが、タイムスタンプの値を次のように変更する必要があるようです。

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

繰り返しますが、この例には当て推量がありますが、この種のことはうまくいくはずです。

私たちはまだ楽しんでいますか?私たちは?私たちは?

于 2012-06-25T00:11:40.880 に答える