字幕包类库 captioning/captioning
例子在 连接 用来 文字转字幕srt...看来要火了 composer require captioning/captioning
namespace Captioning; | |
use Captioning\Format\SubripFile; | |
use Captioning\Format\WebvttFile; | |
use Captioning\Format\SubstationalphaFile; | |
class ConverterTest extends \PHPUnit_Framework_TestCase | |
{ | |
public function testSubrip2WebvttConversion() | |
{ | |
// example file from W3C spec | |
$filename = __DIR__ . '/../Fixtures/Subrip/example-1.srt'; | |
$file = new SubripFile($filename); | |
$content = "WEBVTT | |
00:00:00.000 --> 00:00:20.000 | |
Hi, my name is Fred, | |
nice to meet you. | |
00:00:21.500 --> 00:00:22.500 | |
Hi, I'm Bill. | |
00:00:23.000 --> 00:00:25.000 | |
Would you like to get a coffee? | |
00:00:27.500 --> 00:00:37.500 | |
Sure! I've only had one today. | |
00:00:40.000 --> 00:00:41.000 | |
This is my fourth! | |
00:01:12.500 --> 00:01:32.500 | |
OK, let's go. | |
"; | |
$this->assertEquals($content, $file->convertTo('webvtt')->build()->getFileContent()); | |
} | |
public function testWebvtt2SubripConversion() | |
{ | |
// example file from W3C spec | |
$filename = __DIR__ . '/../Fixtures/Webvtt/example-1.vtt'; | |
$file = new WebvttFile($filename); | |
$content = "1 | |
00:00:00,000 --> 00:00:20,000 | |
<v Fred>Hi, my name is Fred, | |
nice to meet you. | |
2 | |
00:00:02,500 --> 00:00:22,500 | |
<v Bill>Hi, I'm Bill. | |
3 | |
00:00:05,000 --> 00:00:25,000 | |
<v Fred>Would you like to get a coffee? | |
4 | |
00:00:07,500 --> 00:00:27,500 | |
<v Bill>Sure! I've only had one today. | |
5 | |
00:00:10,000 --> 00:00:30,000 | |
<v Fred>This is my fourth! | |
6 | |
00:00:12,500 --> 00:00:32,500 | |
<v Fred>OK, let's go. | |
"; | |
$this->assertEquals($content, $file->convertTo('subrip')->build()->getFileContent()); | |
} | |
public function testSubrip2SubstationalphaConversion() | |
{ | |
// example file from W3C spec | |
$filename = __DIR__ . '/../Fixtures/Subrip/example-1.srt'; | |
$file = new SubripFile($filename); | |
$content = "[Script Info] | |
Title: <untitled> | |
Original Script: <unknown> | |
ScriptType: v4.00+ | |
Collisions: Normal | |
PlayResX: 384 | |
PlayResY: 288 | |
PlayDepth: 0 | |
Timer: 100.0 | |
WrapStyle: 0 | |
[v4+ Styles] | |
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding | |
Style: Default, Arial, 20, &H00FFFFFF, &H00000000, &H00000000, &H00000000, 0, 0, 0, 0, 100, 100, 0, 0, 1, 2, 0, 2, 15, 15, 15, 0 | |
[Events] | |
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text | |
Dialogue: 0,0:00:00.00,0:00:20.00,Default,,0000,0000,0000,,Hi, my name is Fred,\Nnice to meet you. | |
Dialogue: 0,0:00:21.50,0:00:22.50,Default,,0000,0000,0000,,Hi, I'm Bill. | |
Dialogue: 0,0:00:23.00,0:00:25.00,Default,,0000,0000,0000,,Would you like to get a coffee? | |
Dialogue: 0,0:00:27.50,0:00:37.50,Default,,0000,0000,0000,,Sure! I've only had one today. | |
Dialogue: 0,0:00:40.00,0:00:41.00,Default,,0000,0000,0000,,This is my fourth! | |
Dialogue: 0,0:01:12.50,0:01:32.50,Default,,0000,0000,0000,,OK, let's go. | |
"; | |
$this->assertEquals($content, $file->convertTo('substationalpha')->build()->getFileContent()); | |
} | |
/** | |
* @expectedException InvalidArgumentException | |
*/ | |
public function testInvalidConverterException() | |
{ | |
$file = new SubripFile(); | |
$file->convertTo('foor'); | |
} |