rodchyn/subtitles

此包的最新版本(v0.3.11)没有可用的许可信息。

PHP字幕转换器和生成器

v0.3.11 2021-05-07 09:25 UTC

README

Build Status

PHP字幕和字幕转换器

转换和编辑字幕和字幕

支持格式

安装

composer require mantas-done/subtitles

用法

将.srt文件转换为.vtt

// add namespace
use \Done\Subtitles\Subtitles;

Subtitles::convert('subtitles.srt', 'subtitles.vtt');

手动创建文件

$subtitles = new Subtitles();
$subtitles->add(0, 5, 'This text is shown in the beggining of video for 5 seconds');
$subtitles->save('subtitles.vtt');

从现有文件加载字幕

$subtitles = Subtitles::load('subtitles.srt');

从字符串加载字幕

$string = "
1
00:02:17,440 --> 00:02:20,375
Senator, we're making our final approach
";  

$subtitles = Subtitles::load($string, 'srt');

保存字幕到文件

$subtitles->save('subtitler.vtt');

获取文件内容(不保存到文件)

echo $subtitles->content('vtt');

添加字幕

$subtitles->add(0, 5, 'some text'); // from 0, till 5 seconds  

// Add multiline text
$subtitles->add(0, 5, [
    'first line',
    'second line',
]);

删除字幕

$subtitles->remove(0, 5); // from 0, till 5 seconds

将所有字幕增加1秒

$subtitles->shiftTime(1);

减去0.5秒

$subtitles->shiftTime(-0.5);

从1分钟开始到2分钟将字幕增加5秒

$subtitles->shiftTime(5, 60, 120);

示例:在1小时的视频中逐渐将时间移动2秒。视频开始时不改变时间,中间移动1秒。视频结束时,移动2秒。

$subtitles->shiftTimeGradually(2, 0, 3600);

如何添加新的字幕格式?

您需要实现ConverterContract.php接口。它有两个方法。

fileContentToInternalFormat($file_content)  
  
internalFormatToFileContent($internal_format)

基本上,您的实现应该能够将字幕文件转换为“内部库的格式”,并将内部库的格式再转换回字幕文件。

“内部库的”格式用作中间格式,以便在不同的格式之间进行转换。

最好的例子是看看SrtConverter.php是如何实现的。
这是.srt文件的示例。

“内部格式”

“内部格式”只是一个PHP数组。它在库内部使用,以便在不同的格式之间进行转换。

Array
(
    [0] => Array
        (
            [start] => 137.44
            [end] => 140.375
            [lines] => Array
                (
                    [0] => Senator, we're making
                    [1] => our final approach into Coruscant.
                )
        )
    [1] => Array
        (
            [start] => 140.476
            [end] => 142.501
            [lines] => Array
                (
                    [0] => Very good, Lieutenant.
                )
        )
)
[start] - when to start showing text (float - seconds)
[end] - when to stop showing text (float -seconds)
[lines] - one or more text lines (array)

运行测试

最简单的方法是下载并将phpunit.phar文件放入项目的根目录。然后运行以下命令:

php phpunit.phar

贡献

您可以用任何方式做出贡献。如果您需要一些指导,请从以下表格中选择。

目前,库应该只支持基本功能(几行文本)。不需要支持不同的文本样式或文本位置。

报告错误

如果某个文件与库不兼容,请创建一个issue并附加文件。