Search by

glavweb / kurento-client-php

nilov

A PHP Kurento Client

Package info

github.com/glavweb/kurento-client-php

pkg:composer/glavweb/kurento-client-php

Statistics

Installs: 453

Dependents: 0

Suggesters: 0

Stars: 1

0.3.0 2026-08-30 15:42 UTC

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