2

コンテンツにタイムスタンプが含まれているファイルがいくつかありますが、それらは十分に正確ではありません。

だから、PHP は固定されていない量のタイムスタンプを正確なタイムスタンプに変換でき、他のコンテンツには触れないのではないかと考えていました。

たとえば、これを変換します

1 00:00:00,232 --> 00:00:05,665 テキスト 1

2 00:00:05,966 --> 00:00:08,909 テキスト 2

3 00:00:10,948 --> 00:00:14,550 テキスト 3

4 00:00:23,086 --> 00:00:25,817 テキスト 4

5 00:00:34,033 --> 00:00:35,847 テキスト 5

6 00:01:06,237 --> 00:01:07,716 テキスト 6

これに

1 00:00:00,732 --> 00:00:06,165 テキスト 1

2 00:00:06,466 --> 00:00:09,409 テキスト 2

3 00:00:11,448 --> 00:00:15,050 テキスト 3

4 00:00:23,586 --> 00:00:26,317 テキスト 4

5 00:00:34,533 --> 00:00:36,347 テキスト 5

6 00:01:06,737 --> 00:01:08,216 テキスト 6

したがって、この場合、すべてのタイムスタンプに 0.5 秒を追加します。可能であることはわかっていますが、どうすればよいでしょうか。

$amount = $_POST['amount'];
$content = $_POST['text'];
$timestamp = ?
$newtime = $timestamp.$amount
$replacetime = str_replace($timestamp,$newtime,$content);
foreach(what to put here){
$replacetime;
}
4

1 に答える 1

0

字幕に時間をずらしたいようです。ビデオ プレーヤーでも実行できますが、PHP でも実行できます。

最初にファイルを読み取ります。

$c = file_get_contents("...file.srt");

内容を抽出する

preg_match_all("|(\d+)[\r\n]+([\d,:]+) --> ([\d,:]+)[\r\n]+(.*)|", $c, $m);

0.5次に、各時間に秒を追加します

$len = count($m[1]);
for($i=0;$i<$len; $i++){
    list($st, $sm)=explode(",", $m[2][$i]); // start time and milisecond
    // add 0.5 sec
    $sm+=500;
    if($sm>1000){
        $di = new DateInterval("P0000-00-00T$st");
        $di->add("P1S");
        $sm = $sm%1000;
        $st = $di->format("%H:%i:%s");
    }
    // store it back
    $m[2][$i] = "$st,$sm";
}

終了時間についても同じ方法で行う必要があります。同じループでも実行できます。

その後、元のファイルに戻します。最初にテストするために他のファイルを試してください

for($i=0;$i<$len; $i++){
    fprintf($fh, "$m[1][$i]\n");
    fprintf($fh, "$m[2][$i] --> $m[3][$i]\n");
    fprintf($fh, "$m[3][$i]\n\n");
}
于 2012-12-26T19:06:02.893 に答える