2016-10-25 6 views
3

J'ai une entrée comme comme celui-ci:Conversion secondes et durée de SRT (sous-titre) format de l'heure (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 

Il est un jeu d'instructions des sous-titres, qui dit ce qui suit:

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 

Cette entrée doit être converti en format SRT, il devient quelque chose comme ceci:

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 

serait-il possible que quelqu'un montrez-moi comment convertir une valeur de secondes donnée en format SRT (00: 00: 00,000) en utilisant PHP?

C'est tout ce dont j'ai vraiment besoin, le reste, je peux comprendre moi-même.

Merci beaucoup.

Répondre

1

J'ai finalement pensé à elle avec l'aide de https://stackoverflow.com/a/4763921/998415

Ceci est ma propre fonction basée sur le script ci-dessus:

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" : '') 
    ; 
} 

voir travailler dans cette démo: https://eval.in/665896

0

Vous peut créer des sous-titres comme ceci:

$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'); 

Vous devez télécharger cette bibliothèque: https://github.com/mantas-done/subtitles