glavweb / kurento-client-php
A PHP Kurento Client
Requires
- php: >=8.4
- ext-json: *
- evenement/evenement: ^3.0
- psr/log: ^3.0
- ratchet/pawl: ^0.4.3
- react/promise: ^3.0
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-08-30 15:48:06 UTC
README
Kurento Client PHP library for Kurento WebRTC media server which implements client side of Kurento Protocol
Installation
The easiest way to install this library is using composer:
composer require glavweb/kurento-client-php:^0.3
and run
composer install
For actual Kurento WebRTC media server installation please check http://www.kurento.org/docs/current/installation_guide.html
Usage
This is the hello world example. Read more at official tutorials' page.
<?php //composer autoload included require_once("vendor/autoload.php"); class DemoApp{ protected $offer = null; protected $loop; protected $logger; protected $wsUrl; protected $client; function __construct($offer, $wsUrl) { $this->offer = $offer; $this->wsUrl = $wsUrl; //required react even loop $this->loop = \React\EventLoop\Factory::create(); $this->logger = new \Zend\Log\Logger(); $writer = new \Zend\Log\Writer\Null(); $this->logger->addWriter($writer); } public function run(){ $this->client = \MgKurentoClient\KurentoClient::create($this->wsUrl, $this->loop, $this->logger, function($client){ $this->client->createMediaPipeline(function($pipeline, $success, $data){ $webRtcEndpoint = new \MgKurentoClient\WebRtcEndpoint($pipeline); $webRtcEndpoint->build(function($webRtcEndpoint, $success, $data){ $webRtcEndpoint->connect($webRtcEndpoint, function($success, $data) use ($webRtcEndpoint){ /* @var $webRtcEndpoint \MgKurentoClient\WebRtcEndpoint */ $webRtcEndpoint->processOffer($this->offer, function($success, $data){ echo $data['value']; //we don't need the loop anymore , we're exiting now $this->loop->stop(); }); }); }); }); }); $this->loop->run(); } } /* * Starting here */ //get raw post body $offer = file_get_contents('php://input'); //init the app $demoApp = new DemoApp($offer, 'ws://127.0.0.1:8888/kurento'); //start the app $demoApp->run();
Generic elements
If some remove object are not directly implemented as php classes you can still create and use them via generic MediaObject class.
It provides generic method:
public function remoteCreate($remoteType, callable $callback, array $params = array()); public function remoteInvoke($operation, $operationParams, callable $callback); public function remoteRelease(callable $callback); protected function remoteSubscribe($type, $onEvent, callable $callback); public function remoteUnsubscribe($subscription, callable $callback);
The same hello world example could be implemented using generic class/methods as
$this->client = \MgKurentoClient\KurentoClient::create($this->wsUrl, $this->loop, $this->logger, function($client){ $this->client->createMediaPipeline(function($pipeline, $success, $data){ $webRtcEndpoint = new \MgKurentoClient\MediaObject($pipeline); $webRtcEndpoint->remoteCreate('WebRtcEndpoint', function($webRtcEndpoint, $success, $data){ $webRtcEndpoint->connect($webRtcEndpoint, function($success, $data) use ($webRtcEndpoint){ $webRtcEndpoint->remoteInvoke('processOffer', array('offer' => $this->offer), function($success, $data){ echo $data['value']; //we don't need the loop anymore , we're exiting now $this->loop->stop(); }); }); }); }); }); $this->loop->run();
Examples installation
Don't forget to install Kurento server first http://www.kurento.org/docs/current/installation_guide.html
then
git clone https://github.com/glavweb/kurento-client-php.git
composer install
Then check README file in each particular example folder.
Read more at official tutorials' page.
Requirements
- PHP 8.4 or above
psr/log^3- ratchet/pawl (WebSocket client)
Author
Milan Rukavina
License
Kurento Client PHP is licensed under the MIT License - see the LICENSE file for details
Acknowledgements
This library is heavily inspired by official java and javascript clients by Kurento