2016-10-25 9 views
3

У меня есть вход, как например:Преобразование секунд и продолжительность СТО (субтитры) формат времени (PHP)

start: 10 | duration: 1 | text: Subtitle Text 1 
start: 15 | duration: 2 | text: Subtitle Text 2 
start: 20 | duration: 3 | text: Subtitle Text 3 

Это подзаголовок набор команд, который говорит следующее:

At 10 second of the video, show "Subtitle Text 1" for 1 seconds 
At 15 second of the video, show "Subtitle Text 2" for 2 seconds 
At 20 second of the video, show "Subtitle Text 3" for 3 seconds 

Этот вход должен быть преобразован в формат SRT, поэтому он становится чем-то вроде этого:

1 
00:00:10,000 --> 00:00:11,000 
Subtitle Text 1 

2 
00:00:15,000 --> 00:00:17,000 
Subtitle Text 2 

3 
00:00:20,000 --> 00:00:23,000 
Subtitle Text 3 

будет ли возможно для кого-то покажите мне, как бы вы могли конвертировать любое заданное значение секунд в формат SRT (00: 00: 00 000) с помощью PHP?

Это все, что мне действительно нужно, остальное я могу выяснить сам.

Спасибо, очень ценится.

ответ

1

я в конце концов понял это с помощью от https://stackoverflow.com/a/4763921/998415

Это моя собственная функция, основанная на вышеприведенного сценария:

function seconds2SRT($seconds) 
{ 
    $hours = 0; 
    $milliseconds = str_replace("0.", '', $seconds - floor($seconds)); 

    if ($seconds > 3600) 
    { 
    $hours = floor($seconds/3600); 
    } 
    $seconds = $seconds % 3600; 


    return str_pad($hours, 2, '0', STR_PAD_LEFT) 
     . gmdate(':i:s', $seconds) 
     . ($milliseconds ? ",$milliseconds" : '') 
    ; 
} 

Смотрите он работает в этой демонстрации: https://eval.in/665896

0

You могут создавать такие субтитры:

$subtitles = new Subtitles(); 
$subtitles->add(10, 11, 'Subtitle Text 1'); 
$subtitles->add(15, 17, 'Subtitle Text 2'); 
$subtitles->add(20, 23, 'Subtitle Text 3'); 
echo $subtitles->content('srt'); 

// or if you need file 
$subtitles->save('subtitle-file.srt'); 

Вам необходимо скачать эту библиотеку: https://github.com/mantas-done/subtitles