1. Go to this page and download the library: Download mryzys/agora-rtc-record 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/ */
mryzys / agora-rtc-record example snippets
use MrYzys\AgoraRtcRecord\CloudRecordingClient;
use MrYzys\AgoraRtcRecord\Requests\Acquire\AcquireClientRequest;
use MrYzys\AgoraRtcRecord\Requests\Acquire\AcquireRequest;
use MrYzys\AgoraRtcRecord\Requests\Acquire\RecordingConfig;
use MrYzys\AgoraRtcRecord\Requests\Acquire\StartParameter;
use MrYzys\AgoraRtcRecord\Requests\Acquire\StorageConfig;
use MrYzys\AgoraRtcRecord\Requests\Acquire\Transcoding\TranscodingConfig;
use MrYzys\AgoraRtcRecord\Requests\Query\QueryRequest;
use MrYzys\AgoraRtcRecord\Requests\Start\RecordingFileConfig;
use MrYzys\AgoraRtcRecord\Requests\Start\StartClientRequest;
use MrYzys\AgoraRtcRecord\Requests\Start\StartRequest;
use MrYzys\AgoraRtcRecord\Requests\Stop\StopClientRequest;
use MrYzys\AgoraRtcRecord\Requests\Stop\StopRequest;
use MrYzys\AgoraRtcRecord\Requests\Update\StreamSubscribe;
use MrYzys\AgoraRtcRecord\Requests\Update\UidList;
use MrYzys\AgoraRtcRecord\Requests\Update\UpdateClientRequest;
use MrYzys\AgoraRtcRecord\Requests\Update\UpdateRequest;
use MrYzys\AgoraRtcRecord\Requests\Update\WebRecordingConfig;
use MrYzys\AgoraRtcRecord\Requests\UpdateLayout\UpdateLayoutClientRequest;
use MrYzys\AgoraRtcRecord\Requests\UpdateLayout\UpdateLayoutRequest;
use MrYzys\AgoraRtcRecord\Requests\Acquire\Transcoding\BackgroundConfigEntry;
use MrYzys\AgoraRtcRecord\Requests\Layout\LayoutConfigEntry;
use MrYzys\AgoraRtcRecord\Requests\Layout\BackgroundConfigEntry;
$client = new CloudRecordingClient(
appId: 'your-agora-app-id',
customerId: 'your-customer-id',
customerCertificate: 'your-customer-certificate'
);
$storageConfig = (new StorageConfig(
vendor: 2,
region: 14,
bucket: 'bucket-name',
accessKey: 'ak',
secretKey: 'sk'
))->setFileNamePrefix(['recordings']);
$startParameter = (new StartParameter())
->setToken('channel-token')
->setStorageConfig($storageConfig);
$recordingConfig = (new RecordingConfig())
->setChannelType(1)
->setStreamTypes(2)
->setMaxIdleTime(60);
$clientRequest = (new AcquireClientRequest())
->setScene(0)
->setResourceExpiredHour(24)
->setRegionAffinity(1)
->setStartParameter($startParameter)
->setRecordingConfig($recordingConfig);
// 1. Acquire
$acquireResponse = $client->acquire(new AcquireRequest('demoChannel', '110', $clientRequest));
$resourceId = $acquireResponse['resourceId'];
// 2. Start
$transcodingConfig = (new TranscodingConfig())
->setWidth(1280)
->setHeight(720)
->setBitrate(2000)
->setMixedVideoLayout(1);
$recordingConfig = (new RecordingConfig())
->setChannelType(1)
->setStreamTypes(2)
->setMaxIdleTime(60)
->setTranscodingConfig($transcodingConfig);
$recordingFileConfig = (new RecordingFileConfig())->setAvFileTypes(['hls', 'mp4']);
$startClientRequest = (new StartClientRequest($storageConfig))
->setToken('channel-token')
->setRecordingConfig($recordingConfig)
->setRecordingFileConfig($recordingFileConfig);
$startResponse = $client->start(new StartRequest(
resourceId: $resourceId,
mode: 'mix',
channelName: 'demoChannel',
uid: '110',
clientRequest: $startClientRequest
));
$sid = $startResponse['sid'];
// 3. Query status
$queryResponse = $client->query(new QueryRequest(
resourceId: $resourceId,
sid: $sid,
mode: 'mix'
));
// 4. Update (e.g. adjust subscription list or pause/resume web recording)
$audioUidList = (new UidList('audio'))->setSubscribeUids(['#allstream#']);
$streamSubscribe = (new StreamSubscribe())->setAudioUidList($audioUidList);
$updateClientRequest = (new UpdateClientRequest())
->setStreamSubscribe($streamSubscribe)
->setWebRecordingConfig((new WebRecordingConfig())->setOnhold(false));
$client->update(new UpdateRequest(
resourceId: $resourceId,
sid: $sid,
mode: 'mix',
channelName: 'demoChannel',
uid: '110',
clientRequest: $updateClientRequest
));
// 5. Update mix layout (mix mode only)
$layoutClientRequest = (new UpdateLayoutClientRequest())
->setMixedVideoLayout(3)
->setBackgroundColor('#0055FF')
->addLayoutConfig(new LayoutConfigEntry('110', 0.0, 0.0, 0.5, 0.5))
->addBackgroundConfig(new BackgroundConfigEntry('111', 'https://example.com/bg.png'));
$client->updateLayout(new UpdateLayoutRequest(
resourceId: $resourceId,
sid: $sid,
mode: 'mix',
channelName: 'demoChannel',
uid: '110',
clientRequest: $layoutClientRequest
));
// 6. Stop
$stopClientRequest = (new StopClientRequest())->setAsyncStop(false);
$client->stop(new StopRequest(
resourceId: $resourceId,
sid: $sid,
mode: 'mix',
channelName: 'demoChannel',
uid: '110',
clientRequest: $stopClientRequest
));
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.