У меня есть такой вклад:
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?
Это все, что мне действительно нужно, остальное я могу понять сам.
Спасибо, высоко ценится.
Я в конце концов понял это с помощью 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
Вы можете создавать субтитры, как это:
$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