codificar / subtitles
此包的最新版本(v0.3.7)没有可用的许可证信息。
PHP的字幕转换器和生成器
v0.3.7
2019-02-09 17:25 UTC
Requires (Dev)
- phpunit/phpunit: ^6.0
This package is auto-updated.
Last update: 2024-09-21 20:41:15 UTC
README
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
贡献
您可以通过任何您想要的方式做出贡献。如果您需要一些指导,请从下表中选择
目前库应仅支持基本功能(几行文本)。无需支持不同的文本样式或文本位置。
报告错误
如果某些文件与库不兼容,请创建一个问题并附加文件。