PHP code example of squareetlabs / laravel-openvidu
1. Go to this page and download the library: Download squareetlabs/laravel-openvidu library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
return [
...
'openvidu' => [
'app' => env('OPENVIDU_APP'), //At the moment, always "OPENVIDUAPP"
'domain' => env('OPENVIDU_DOMAIN'), //Your OpenVidu Server machine public IP
'port' => env('OPENVIDU_PORT'), //Listening port of your OpenVidu server, default 4443
'secret' => env('OPENVIDU_SECRET'), //The password used to secure your OpenVidu Server
'debug' => env('OPENVIDU_DEBUG'), // true or false
'use_routes' => env('OPENVIDU_USE_ROUTES') // true or false
]
...
use SquareetLabs\LaravelOpenVidu\Facades\OpenVidu;
use SquareetLabs\LaravelOpenVidu\SessionProperties;
use SquareetLabs\LaravelOpenVidu\Enums\MediaMode;
use SquareetLabs\LaravelOpenVidu\Enums\RecordingMode;
use SquareetLabs\LaravelOpenVidu\Enums\OutputMode;
use SquareetLabs\LaravelOpenVidu\Enums\RecordingLayout;
use Illuminate\Support\Str;
...
/** var string */
$customSessionId = Str::random(20);
$sessionProperties = new SessionProperties(MediaMode::ROUTED, RecordingMode::MANUAL, OutputMode::COMPOSED, RecordingLayout::BEST_FIT, $customSessionId);
$session = OpenVidu::createSession($sessionProperties);
$tokenOptions = new TokenOptions(OpenViduRole::PUBLISHER);
$token = $session->generateToken($tokenOptions);
use SquareetLabs\LaravelOpenVidu\Facades\OpenVidu;
...
$session = OpenVidu::getActiveSessions();
use SquareetLabs\LaravelOpenVidu\Facades\OpenVidu;
...
$session = OpenVidu::getSession($customSessionId);
use SquareetLabs\LaravelOpenVidu\Facades\OpenVidu;
...
$session = OpenVidu::getSession($customSessionId);
$unpublished = $session->forceUnpublish($streamId);
use SquareetLabs\LaravelOpenVidu\Facades\OpenVidu;
...
$session = OpenVidu::getSession($customSessionId);
$disconnect = $session->forceDisconnect($connectionId);
use SquareetLabs\LaravelOpenVidu\Facades\OpenVidu;
...
$session = OpenVidu::getSession($customSessionId);
$isBeingRecording = $session->isBeingRecording($connectionId);
use SquareetLabs\LaravelOpenVidu\Facades\OpenVidu;
use SquareetLabs\LaravelOpenVidu\Enums\OutputMode;
use SquareetLabs\LaravelOpenVidu\RecordingProperties;
...
/** @var string */
$recordingName = "Recording of my session";
$recordingProperties = new RecordingProperties($customSessionId, $recordingName, OutputMode::INDIVIDUAL, RecordingLayout::BEST_FIT, '1920x1080', true, true, $customLayout)
$recording = OpenVidu::startRecording($recordingProperties);
use SquareetLabs\LaravelOpenVidu\Facades\OpenVidu;
use SquareetLabs\LaravelOpenVidu\Enums\OutputMode;
...
$recording = OpenVidu::stopRecording($recordingId);
use SquareetLabs\LaravelOpenVidu\Facades\OpenVidu;
use SquareetLabs\LaravelOpenVidu\Enums\OutputMode;
...
$recording = OpenVidu::getRecording($recordingId);
use SquareetLabs\LaravelOpenVidu\Facades\OpenVidu;
use SquareetLabs\LaravelOpenVidu\Enums\OutputMode;
...
OpenVidu::deleteRecording($recordingId);
use SquareetLabs\LaravelOpenVidu\Facades\OpenVidu;
use SquareetLabs\LaravelOpenVidu\SignalProperties;
...
/** @var string */
$session = "SESSION_ID";
/** @var array */
$to = ["connectionId1", "connectionId2"];
/** @var string */
$type = "Test type";
/** @var string */
$data = "This is my signal test data";
$signalProperties = new SignalProperties($session, $data, $type, $to);
$sent = OpenVidu::sendSignal($signalProperties);
use SquareetLabs\LaravelOpenVidu\Events\ParticipantJoined;
class ParticipantJoinedListener
{
/**
* Handle the event.
*
* @param ParticipantJoined $event
* @return void
*/
public function handle(ParticipantJoined $event)
{
$event->sessionId; // Session for which the event was triggered, a string with the session unique identifier
$event->timestamp; // Time when the event was triggered, UTC milliseconds
$event->participantId; // Identifier of the participant, a string with the participant unique identifier
$event->platform; // Complete description of the platform used by the participant to connect to the session
$event->clientData; // Additional data added client side while connecting to Session
$event->serverData; // Additional data added server side while generating Token
}
}
use SquareetLabs\LaravelOpenVidu\Events\ParticipantLeft;
class ParticipantLeftListener
{
/**
* Handle the event.
*
* @param ParticipantLeft $event
* @return void
*/
public function handle(ParticipantLeft $event)
{
$event->sessionId; // Session for which the event was triggered
$event->timestamp; // Time when the event was triggered
$event->participantId; // Identifier of the participant
$event->platform; // Complete description of the platform used by the participant to connect to the session
$event->clientData; // Additional data added client side while connecting to Session
$event->serverData; // Additional data added server side while generating Token
$event->startTime; // Time when the participant joined the session
$event->duration; // Total duration of the participant's connection to the session
$event->reason; // How the participant left the session.
}
}
use SquareetLabs\LaravelOpenVidu\Events\RecordingStatusChanged;
class RecordingStatusChangedListener
{
/**
* Handle the event.
*
* @param RecordingStatusChanged $event
* @return void
*/
public function handle(RecordingStatusChanged $event)
{
$event->sessionId; // Session for which the event was triggered
$event->timestamp; // Time when the event was triggered
$event->startTime; // Time when the recording started
$event->id; // Unique identifier of the recording
$event->name; // Name given to the recording file
$event->outputMode; // Output mode of the recording
$event->hasAudio; // Wheter the recording file has audio or not
$event->hasVideo; // Wheter the recording file has video or not
$event->recordingLayout; // The type of layout used in the recording. Only defined if outputMode is COMPOSED and hasVideo is true
$event->resolution; // Resolution of the recorded file. Only defined if outputMode is COMPOSED and hasVideo is true
$event->size; // The size of the video file. 0 until status is stopped
$event->duration; // Duration of the video file. 0 until status is stopped
$event->status; // Status of the recording
$event->reason; // Why the recording stopped. Only defined when status is stopped or ready
}
}
use SquareetLabs\LaravelOpenVidu\Events\SessionCreated;
class SessionCreatedListener
{
/**
* Handle the event.
*
* @param SessionCreated $event
* @return void
*/
public function handle(SessionCreated $event)
{
$event->sessionId; // Session for which the event was triggered
$event->timestamp; // Time when the event was triggered
}
}
use SquareetLabs\LaravelOpenVidu\Events\SessionDestroyed;
class SessionDestroyedListener
{
/**
* Handle the event.
*
* @param SessionCreated $event
* @return void
*/
public function handle(SessionDestroyed $event)
{
$event->sessionId; // Session for which the event was triggered
$event->timestamp; // Time when the event was triggered
$event->startTime; // Time when the session started
$event->duration; // Total duration of the session
$event->reason; // Why the session was destroyed
}
}
use SquareetLabs\LaravelOpenVidu\Events\WebRTCConnectionCreated;
class WebRTCConnectionCreatedListener
{
/**
* Handle the event.
*
* @param WebRTCConnectionCreated $event
* @return void
*/
public function handle(WebRTCConnectionCreated $event)
{
$event->sessionId; // Session for which the event was triggered
$event->timestamp; // Time when the event was triggered UTC milliseconds
$event->participantId; // Identifier of the participant
$event->connection; // Whether the media connection is an inbound connection (the participant is receiving media from OpenVidu) or an outbound connection (the participant is sending media to OpenVidu) ["INBOUND","OUTBOUND"]
$event->receivingFrom; // If connection is "INBOUND", the participant from whom the media stream is being received
$event->audioEnabled; // Whether the media connection has negotiated audio or not
$event->videoEnabled; // Whether the media connection has negotiated video or not
$event->videoSource; // If videoEnabled is true, the type of video that is being transmitted
$event->videoFramerate; // If videoEnabled is true, the framerate of the transmitted video
$event->videoDimensions; // If videoEnabled is true, the dimensions transmitted video
}
}
use SquareetLabs\LaravelOpenVidu\Events\WebRTCConnectionDestroyed;
class WebRTCConnectionDestroyedListener
{
/**
* Handle the event.
*
* @param WebRTCConnectionDestroyed $event
* @return void
*/
public function handle(WebRTCConnectionDestroyed $event)
{
$event->sessionId; // Session for which the event was triggered
$event->timestamp; // Time when the event was triggered UTC milliseconds
$event->participantId; // Identifier of the participant
$event->connection; // Whether the media connection is an inbound connection (the participant is receiving media from OpenVidu) or an outbound connection (the participant is sending media to OpenVidu) ["INBOUND","OUTBOUND"]
$event->receivingFrom; // If connection is "INBOUND", the participant from whom the media stream is being received
$event->audioEnabled; // Whether the media connection has negotiated audio or not
$event->videoEnabled; // Whether the media connection has negotiated video or not
$event->videoSource; // If videoEnabled is true, the type of video that is being transmitted
$event->videoFramerate; // If videoEnabled is true, the framerate of the transmitted video
$event->videoDimensions; // If videoEnabled is true, the dimensions transmitted video
$event->startTime; // Time when the media connection was established UTC milliseconds
$event->duration; // Total duration of the media connection Seconds
$event->reason; // How the WebRTC connection was destroyed
}
}
use SquareetLabs\LaravelOpenVidu\Events\FilterEventDispatched;
class FilterEventDispatchedListener
{
/**
* Handle the event.
*
* @param FilterEventDispatched $event
* @return void
*/
public function handle(FilterEventDispatched $event)
{
$event->sessionId; // Session for which the event was triggered
$event->timestamp; // Time when the event was triggered
$event->participantId; // Identifier of the participant
$event->streamId; // Identifier of the stream for which the filter is applied
$event->filterType; // Type of the filter applied to the stream
$event->data; // Data of the filter event
}
}