cosmonova-rnd / caspar-cg
CasparCG PHP 库
v2.0.0
2021-08-31 11:13 UTC
Requires
- php: >=7.0
This package is not auto-updated.
Last update: 2024-09-25 00:57:28 UTC
README
是 CasparCG 2.0 AMCP 协议和 OSC 协议的实现
要求
- CasparCG v2.0.7|v2.3.0
- PHP 7.0
安装
使用 Composer 安装
php composer.phar require cosmonova-rnd/caspar-cg
使用方法
AMCP
使用 AMCP 协议的最简单方法是通过 Caspar CG 连接发送手写命令
$client = new \CosmonovaRnD\CasparCG\Client(); $response = $client->send('play 1-1 test'); if($response->success()) { echo 'OK'; } else { echo 'Failed'; }
但您也可以使用现有的命令构建器之一。
例如,我们想要在通道 1 和层 10 上循环播放内容 'test'
$client = new \CosmonovaRnD\CasparCG\Client(); $playCmdBuilder = new \CosmonovaRnD\CasparCG\Command\Basic\Builder\PlayBuilder(); $playCmdBuilder->channel(1); $playCmdBuilder->layer(10); $playCmdBuilder->clip('test'); $playCmdBuilder->loop(); $response = $client->send($playCmdBuilder->build()); if($response->success()) { echo 'OK'; } else { echo 'Failed'; }
OSC
OSC 通过 UDP 协议工作。
我将通过一个小示例来展示如何捕获消息
$server = new \CosmonovaRnD\CasparCG\Server('127.0.0.1', 6250); $server->start(); $parser = new \CosmonovaRnD\CasparCG\OSC\Parser(); // You can use simple built-in event manager to handle messages $eventManager = new \CosmonovaRnD\CasparCG\EventManager(); $listener = new MyTestFrameMsgListener(); // Must implement \CosmonovaRnD\CasparCG\ListenerInterface // Listen all \CosmonovaRnD\CasparCG\OSC\Message\Producer\FFmpeg\Frame messages $eventManager->listen(\CosmonovaRnD\CasparCG\OSC\Message\Producer\FFmpeg\Frame::class, $listener); while (false !== $msg = $server->read()) { $rawMsg = $parser->parse($msg); if ($rawMsg instanceof Bundle) { foreach ($rawMsg->getMessages() as $bundleMsg) { \CosmonovaRnD\CasparCG\OSC\Message\Producer\FFmpeg\Frame::create($bundleMsg, $eventManager); } } else { \CosmonovaRnD\CasparCG\OSC\Message\Producer\FFmpeg\Frame::create($rawMsg, $eventManager); } } $server->stop();