newman / laravel-tms-api-client
Laravel TMS Api客户端。
Requires
- php: ^8.1
- guzzlehttp/guzzle: ^7.5
- illuminate/contracts: ^9.0|^10.0|^11.0
- illuminate/http: ^9.0|^10.0|^11.0
- illuminate/support: ^9.0|^10.0|^11.0
- nesbot/carbon: ^2.13|^3.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- larastan/larastan: ^2.4
- orchestra/testbench: ^7.0|^8.0|^9.0
- phpunit/phpunit: ^9.0|^10.0
README
此包帮助您调用Backscreen(又名:Videosher、TET Media Services)API v5的API调用。
https://api.cloudycdn.services/api/v5/docs
需求
- Laravel 9.0+, 10.0+, 11.0+
- PHP 8.1+
安装
通过Composer要求此包
composer require newman/laravel-tms-api-client
将配置文件复制到您的config
目录。
php artisan vendor:publish --tag=tms-api-config
将环境变量添加到您的.env
文件。
TMS_DEFAULT_USERNAME="API Key" TMS_DEFAULT_PASSWORD="API Secret"
最后,您可以在tms-api.php
配置文件中添加额外的客户端,使用其他凭据或不同的默认设置。
📖 文档 & 使用
客户端
从配置访问客户端
use Newman\LaravelTmsApiClient\Support\Facades\TmsApi; TmsApi::client('default')->run(...);
动态创建客户端
我们建议您在AppServiceProvider
的boot
函数中执行此操作。
use Newman\LaravelTmsApiClient\Auth\BasicAuthMethod; use Newman\LaravelTmsApiClient\Support\Facades\TmsApi; $client = TmsApi::createClient('live', new BasicAuthMethod('api key', 'api secret')); // and from now on you can access using client() as well // TmsApi::client('live')->run(...);
通过Bearer令牌认证
有一些端点(例如/User/Login
)根本不需要任何认证。
use Newman\LaravelTmsApiClient\Auth\BearerAuthMethod; use Newman\LaravelTmsApiClient\Support\Facades\TmsApi; // 1) Retrieve Bearer token without any authentication. $response = TmsApi::nullClient()->run(new Login('my@email.com', 'mypassword')); $bearerToken = $response->json('data.auth_token'); // ... you may want to cache this token for some time // 2) Override default client dynamically with other auth method. TmsApi::createClient('default', new BearerAuthMethod($bearerToken)); // 3) now all calls on default client will use Bearer token as auth method. // TmsApi::client('default')->run(...);
配置客户端
注意:这将覆盖default
客户端的后续请求设置。
timeout
和connectTimeout
use Newman\LaravelTmsApiClient\Support\Facades\TmsApi; TmsApi::client('default')->timeout(30)->connectTimeout(45);
withMiddleware
将HTTP中间件追加到此客户端的后续请求。
https://laravel.net.cn/docs/9.x/http-client#guzzle-middleware
use Newman\LaravelTmsApiClient\Support\Facades\TmsApi; TmsApi::client('default')->withMiddleware(...);
响应
请求的响应是\Illuminate\Http\Client\Reponse
对象。
端点
我们只使用少量TMS端点实现了此包。欢迎通过PR添加更多实现。
对于每个端点参数(除了必需的参数外),您都会找到一个对应的setter函数。
以下是已实现的端点列表
/Token
端点:/Token/Generate
https://api.cloudycdn.services/api/v5/docs#/operations/Token/Generate
生成新的令牌。
支持的认证方法:Basic
、Bearer token
、API Key
use Newman\LaravelTmsApiClient\Endpoints\Token\Generate as TokenGenerate; use Newman\LaravelTmsApiClient\Support\Facades\TmsApi; $endpoint = new TokenGenerate(123456, TokenGenerate\ItemTypeEnum::MEDIA); // Optional $endpoint->allowedCountries(['lv', 'lt', 'ee']); $endpoint->allowedIp('85.110.62.99'); $endpoint->expireTime(1674074046); $endpoint->expireTime('2023-01-18 12:34:56'); $endpoint->expireTime(\Carbon\Carbon::now()->addHour()); $endpoint->subitemId(5); $endpoint->subitemType(TokenGenerate\SubitemTypeEnum::PLAYBACK_HLS); $response = TmsApi::client('default')->run($endpoint);
/Media
端点:/Media/List
https://api.cloudycdn.services/api/v5/docs#/operations/Media/List
检索媒体列表。
支持的认证方法:Basic
、Bearer token
、API Key
use Newman\LaravelTmsApiClient\Endpoints\Media\MediaList; use Newman\LaravelTmsApiClient\EndpointSupport\Enums\OrderDirectionEnum; use Newman\LaravelTmsApiClient\Support\Facades\TmsApi; $endpoint = new MediaList(); // Optional $endpoint->ids([123]); // media IDs $endpoint->assetIds(['asset_id']); $endpoint->categoryIds([5]); $endpoint->onlyAvailable(true); $endpoint->published(true); $endpoint->search('lorem ipsum'); $endpoint->tags(['archive']); $endpoint->return(['embed_player_codes', 'sources']); $endpoint->imagesFallback(false); $endpoint->publisherStatus(MediaList\PublisherStatusEnum::PUBLISHED); $endpoint->status(MediaList\StatusEnum::INGESTED); $endpoint->status([MediaList\StatusEnum::INGESTED, MediaList\StatusEnum::PLAYABLE]); $endpoint->createdFrom(1674074046); $endpoint->createdFrom('2023-01-18 12:34:56'); $endpoint->createdFrom(\Carbon\Carbon::now()->addHour()); $endpoint->createdTo(1674074046); $endpoint->createdTo('2023-01-18 12:34:56'); $endpoint->createdTo(\Carbon\Carbon::now()->addHour()); $endpoint->updatedFrom(1674074046); $endpoint->updatedFrom('2023-01-18 12:34:56'); $endpoint->updatedFrom(\Carbon\Carbon::now()->addHour()); $endpoint->updatedTo(1674074046); $endpoint->updatedTo('2023-01-18 12:34:56'); $endpoint->updatedTo(\Carbon\Carbon::now()->addHour()); $endpoint->limit(5); $endpoint->offset(10); $endpoint->orderBy(MediaList\OrderByEnum::CREATED_AT); $endpoint->orderDir(OrderDirectionEnum::ASC); $response = TmsApi::client('default')->run($endpoint);
端点:/Media/Create
https://api.cloudycdn.services/api/v5/docs#/operations/Media/Create
创建媒体。
支持的认证方法:Basic
、Bearer token
use Newman\LaravelTmsApiClient\Endpoints\Media\Create as MediaCreate; use Newman\LaravelTmsApiClient\EndpointSupport\Callback; use Newman\LaravelTmsApiClient\EndpointSupport\Enums\CallbackHttpMethodEnum; use Newman\LaravelTmsApiClient\Support\Facades\TmsApi; use Newman\LaravelTmsApiClient\Endpoints\Media\Create\Files; use Newman\LaravelTmsApiClient\Endpoints\Media\Create\Tags; $endpoint = new MediaCreate('123'); // Optional $endpoint->catId(542); $endpoint->name('Name of media'); $endpoint->description('Description of media'); $endpoint->pgRating('PG-13'); $endpoint->autoTranscode(1); $endpoint->embedPlayerId(123); $endpoint->embedAdId(234); $endpoint->embedProtectionId(345); $endpoint->metadata([ 'key' => 'value' ]); $endpoint->timezone('Europe/Riga'); $files = new MediaCreate\Files(); $files->url('https://mysite.com'); $files->username('username'); $files->password('secret'); $files->bitrate(3000); $files->lang('LV'); $endpoint->files($files); $tags = new MediaCreate\Tags(); $tags->set(['tag1', 'tag2']); $tags->add(['tag3']); $endpoint->callback(new Callback('https://mysite.com', CallbackHttpMethodEnum::POST)); $response = TmsApi::client('default')->run($endpoint);
端点:/Media/Update
https://api.cloudycdn.services/api/v5/docs#/operations/Media/Update
更新媒体。
支持的认证方法:Basic
、Bearer token
、API Key
use Newman\LaravelTmsApiClient\Endpoints\Media\Update as MediaUpdate; use Newman\LaravelTmsApiClient\EndpointSupport\Callback; use Newman\LaravelTmsApiClient\EndpointSupport\Enums\CallbackHttpMethodEnum; use Newman\LaravelTmsApiClient\Support\Facades\TmsApi; use Newman\LaravelTmsApiClient\Endpoints\Media\Update\ByMediaId; use Newman\LaravelTmsApiClient\Endpoints\Media\Update\ByAssetId; // Select by which identificator to update // by media ID $endpoint = new MediaUpdate(new ByMediaId(123)); // by asset ID $endpoint = new MediaUpdate(new ByAssetId('99_asset_id')); // Optional $endpoint->name('Name of media'); $endpoint->description('Description of media'); $images = new MediaUpdate\Images(); $images->thumbnail('thumbnail base64'); $images->placeholder('placeholder base64'); $images->playbutton('playbutton base64'); $images->logo('logo base64'); $endpoint->images($images); $endpoint->callback(new Callback('https://mysite.com', CallbackHttpMethodEnum::POST)); $response = TmsApi::client('default')->run($endpoint);
端点:/Media/Delete
https://api.cloudycdn.services/api/v5/docs#/operations/Media/Delete
通过ID/s删除媒体。
支持的认证方法:Basic
、Bearer token
use Newman\LaravelTmsApiClient\Endpoints\Media\Delete as MediaDelete; use Newman\LaravelTmsApiClient\Support\Facades\TmsApi; // Multiple IDs. $endpoint = new MediaDelete([1234, 5678]); $response = TmsApi::client('default')->run($endpoint); // Single ID. $endpoint = new MediaDelete(1234); $response = TmsApi::client('default')->run($endpoint);
端点:/Media/Clone
https://api.cloudycdn.services/api/v5/docs#/operations/Media/Clone
通过ID克隆媒体。
支持的认证方法:Basic
、Bearer token
use Newman\LaravelTmsApiClient\Endpoints\Media\CloneMedia; use Newman\LaravelTmsApiClient\Support\Facades\TmsApi; $endpoint = new CloneMedia(1234, 'asset_id_for_the_new_asset'); // Optional $endpoint->name('Name for the new asset'); $response = TmsApi::client('default')->run($endpoint);
端点:/Media/Trim
https://api.cloudycdn.services/api/v5/docs#/operations/Media/Trim
支持的认证方法:Bearer token
use Newman\LaravelTmsApiClient\Endpoints\Media\Trim; use Newman\LaravelTmsApiClient\Support\Facades\TmsApi; $endpoint = new Trim(1234, '00:00:10', '00:59:59', Trim\TypeEnum::NEW); // Optional $endpoint->name('Name'); $response = TmsApi::client('default')->run($endpoint);
端点:/Media/Generateimage
https://api.cloudycdn.services/api/v5/docs#/operations/Media/Generateimage
支持的认证方法:Basic
、Bearer token
use Newman\LaravelTmsApiClient\Endpoints\Media\GenerateImage; use Newman\LaravelTmsApiClient\Support\Facades\TmsApi; $endpoint = new GenerateImage(1234); // Optional $endpoint->mediaFileId(1902); $endpoint->thumbnail('01:20:39'); $endpoint->placeholder('00:05:30'); $response = TmsApi::client('default')->run($endpoint);
端点:/Media/Reset
https://api.cloudycdn.services/api/v5/docs#/operations/Media/Reset
支持的认证方法:Bearer token
use Newman\LaravelTmsApiClient\Endpoints\Media\Reset; use Newman\LaravelTmsApiClient\Support\Facades\TmsApi; $response = TmsApi::client('default')->run(new Reset(1234));
端点:/Media/Transcode
https://api.cloudycdn.services/api/v5/docs#/operations/Media/Transcode
支持的认证方法:Bearer token
use Newman\LaravelTmsApiClient\Endpoints\Media\Transcode; use Newman\LaravelTmsApiClient\Support\Facades\TmsApi; $response = TmsApi::client('default')->run(new Transcode(1234));
端点:/Media/Canceltranscode
https://api.cloudycdn.services/api/v5/docs#/operations/Media/Canceltranscode
支持的认证方法:Bearer token
use Newman\LaravelTmsApiClient\Endpoints\Media\CancelTranscode; use Newman\LaravelTmsApiClient\Support\Facades\TmsApi; $response = TmsApi::client('default')->run(new CancelTranscode(1234));
端点:/Media/Updatesubtitlesfromsource
https://api.cloudycdn.services/api/v5/docs#/operations/Media/Updatesubtitlesfromsource
支持的认证方法:Bearer token
use Newman\LaravelTmsApiClient\Endpoints\Media\UpdateSubtitlesFromSource; use Newman\LaravelTmsApiClient\Support\Facades\TmsApi; $response = TmsApi::client('default')->run(new UpdateSubtitlesFromSource(1234));
端点:/Media/Regeneratepackages
https://api.cloudycdn.services/api/v5/docs#/operations/Media/Regeneratepackages
支持的认证方法:Bearer token
use Newman\LaravelTmsApiClient\Endpoints\Media\RegeneratePackages; use Newman\LaravelTmsApiClient\Support\Facades\TmsApi; $endpoint = new RegeneratePackages(1234); // Optional $endpoint->packageId([10, 15]); $response = TmsApi::client('default')->run($endpoint);
/Media/Manifest
端点:/Media/Manifest/List
https://api.cloudycdn.services/api/v5/docs#/operations/Media/Manifest/List
检索清单列表。
支持的认证方法:Basic
、Bearer token
、API Key
use Newman\LaravelTmsApiClient\Endpoints\Media\Manifest\List\OrderByEnum; use Newman\LaravelTmsApiClient\Endpoints\Media\Manifest\ManifestList; use Newman\LaravelTmsApiClient\EndpointSupport\Enums\OrderDirectionEnum; use Newman\LaravelTmsApiClient\Support\Facades\TmsApi; $endpoint = new ManifestList(); // Optional $endpoint->ids([1, 2]); // manifest IDs $endpoint->limit(10); $endpoint->mediaIds([1234]); $endpoint->offset(10); $endpoint->orderBy(OrderByEnum::NAME); $endpoint->orderDir(OrderDirectionEnum::DESC); $response = TmsApi::client('default')->run($endpoint);
端点:/Media/Manifest/Create
https://api.cloudycdn.services/api/v5/docs#/operations/Media/Manifest/Create
创建新的媒体清单。
支持的认证方法:Basic
、Bearer token
use Newman\LaravelTmsApiClient\Endpoints\Media\Manifest\Create as MediaManifestCreate; use Newman\LaravelTmsApiClient\Support\Facades\TmsApi; $endpoint = new MediaManifestCreate(1234); // media ID // Optional $endpoint->name('Name of the manifest'); $endpoint->default(true); $endpoint->startAt(1000); $endpoint->endAt(60000); $endpoint->files([582, 583]); $endpoint->packageId(4020); $response = TmsApi::client('default')->run($endpoint);
端点:/Media/Manifest/Update
https://api.cloudycdn.services/api/v5/docs#/operations/Media/Manifest/Update
通过媒体清单ID更新媒体清单。
支持的认证方法:Basic
、Bearer token
use Newman\LaravelTmsApiClient\Endpoints\Media\Manifest\Update as MediaManifestUpdate; use Newman\LaravelTmsApiClient\Support\Facades\TmsApi; $endpoint = new MediaManifestUpdate(85291); // manifest ID // Same optional functions as "/Media/Manifest/Create" endpoint. $response = TmsApi::client('default')->run($endpoint);
端点: /Media/Manifest/Delete
https://api.cloudycdn.services/api/v5/docs#/operations/Media/Manifest/Delete
通过媒体清单ID删除媒体清单。
支持的认证方法:Basic
、Bearer token
use Newman\LaravelTmsApiClient\Endpoints\Media\Manifest\Delete as MediaManifestDelete; use Newman\LaravelTmsApiClient\Support\Facades\TmsApi; $response = TmsApi::client('default')->run(new MediaManifestDelete(85291)); // manifest ID
/User
端点: /User/Get
https://api.cloudycdn.services/api/v5/docs#/operations/User/Get
返回当前用户信息。返回与登录操作相同的值,但不包含auth_token。
支持的认证方法:Bearer token
use Newman\LaravelTmsApiClient\Endpoints\User\Get as UserGet; use Newman\LaravelTmsApiClient\Support\Facades\TmsApi; $endpoint = new UserGet(); // Optional $endpoint->return(['client.limits']); $response = TmsApi::client('default')->run($endpoint);
端点: /User/Login
https://api.cloudycdn.services/api/v5/docs#/operations/User/Login
通过电子邮件和密码登录用户以检索Bearer令牌。
支持的认证方法: Null
use Newman\LaravelTmsApiClient\Endpoints\User\Login as UserLogin; use Newman\LaravelTmsApiClient\Support\Facades\TmsApi; $endpoint = new UserLogin('my@email.com', 'password'); // Optional $endpoint->twoFaCode('123456'); $endpoint->return(['client.limits']); $response = TmsApi::nullClient()->run($endpoint);
端点: /User/Logout
https://api.cloudycdn.services/api/v5/docs#/operations/User/Logout
注销当前认证用户。
支持的认证方法:Bearer token
use Newman\LaravelTmsApiClient\Endpoints\User\Logout as UserLogout; use Newman\LaravelTmsApiClient\Support\Facades\TmsApi; $response = TmsApi::client('default')->run(new UserLogout());
/Live
端点: /Live/List
https://api.cloudycdn.services/api/v5/docs#/operations/Live/List
检索直播列表。
支持的认证方法:Basic
、Bearer token
、API Key
use Newman\LaravelTmsApiClient\Endpoints\Live\LiveList; use Newman\LaravelTmsApiClient\EndpointSupport\Enums\OrderDirectionEnum; use Newman\LaravelTmsApiClient\Support\Facades\TmsApi; $endpoint = new LiveList(); $endpoint->id(123); $endpoint->id([123, 456]); $endpoint->id('123'); $endpoint->idFrom(123); $endpoint->idTo(123); $endpoint->imagesFallback(true); $endpoint->limit(123); $endpoint->name('name'); $endpoint->offset(123); $endpoint->createdFrom(1674074046); $endpoint->createdFrom('2023-01-18 12:34:56'); $endpoint->createdFrom(\Carbon\Carbon::now()->addHour()); $endpoint->createdPeriod(LiveList\PeriodEnum::LAST_HOUR); $endpoint->createdTo(1674074046); $endpoint->createdTo('2023-01-18 12:34:56'); $endpoint->createdTo(\Carbon\Carbon::now()->addHour()); $endpoint->orderBy(LiveList\OrderByEnum::CREATED_AT); $endpoint->orderDir(OrderDirectionEnum::ASC); $endpoint->return(LiveList\ReturnEnum::CATEGORY); $endpoint->return([LiveList\ReturnEnum::CATEGORY, LiveList\ReturnEnum::PREVIEW]); $endpoint->updatedFrom(1674074046); $endpoint->updatedFrom('2023-01-18 12:34:56'); $endpoint->updatedFrom(\Carbon\Carbon::now()->addHour()); $endpoint->updatedPeriod(LiveList\PeriodEnum::LAST_HOUR); $endpoint->updatedTo(1674074046); $endpoint->updatedTo('2023-01-18 12:34:56'); $endpoint->updatedTo(\Carbon\Carbon::now()->addHour()); $response = TmsApi::client('default')->run($endpoint);
端点: /Live/Create
https://api.cloudycdn.services/api/v5/docs#/operations/Live/Create
创建直播。
支持的认证方法:Basic
、Bearer token
、API Key
use Newman\LaravelTmsApiClient\Endpoints\Live\Create; use Newman\LaravelTmsApiClient\EndpointSupport\Images; use Newman\LaravelTmsApiClient\Support\Facades\TmsApi; $endpoint = new Create('New Livestream'); $endpoint->name('Different Livestream'); $endpoint->catId(1); $endpoint->multiLanguages(true); $endpoint->customOrigin('https://example.com'); $publish = new Create\Publish(); $publish->prefix('prefix'); $endpoint->publish($publish); $endpoint->embedPlayerId(1); $endpoint->embedAdId(1); $endpoint->embedProtectionId(1); $embed = new Create\Embed(); $embed->enablePublic(true); $embed->publicPassword('password'); $embed->enablePreview(true); $endpoint->embed($embed); $security = new Create\Security(); $security->encryptionMethod(Create\Enums\EncryptionMethodEnum::AES); $security->useToken(true); $security->tokenDuration(Create\Enums\TokenDurationEnum::ONE_HOUR); $endpoint->security($security); $recording = new Create\Recording\Recording(); $recording->autoDelete(true); $recording->autoDeleteMedia(true); $recording->savePassed(true); $recording->deleteAfterHours(1); $recording->marginStartSeconds(1); $recording->marginEndSeconds(1); $recording->fileNamingPattern('pattern'); $nimbus = new Create\Recording\Nimbus(); $nimbus->syncInterval(1); $nimbus->channelId(1); $nimbus->manifestId(1); $recording->nimbus($nimbus); $epg = new Create\Recording\EPG(); $epg->hoursBefore(1); $epg->hoursAfter(1); $epg->round(0); $recording->epg($epg); $endpoint->recording($recording); $images = new Images(); $images->thumbnail(base64_encode('FILE_CONTENTS')); $images->placeholder(base64_encode('FILE_CONTENTS')); $images->playbutton(base64_encode('FILE_CONTENTS')); $images->logo(base64_encode('FILE_CONTENTS')); $endpoint->images($images); $availability = new Create\Availability(); $availability->scheduleStart(1674074046); $availability->scheduleStart('2023-01-18 12:34:56'); $availability->scheduleStart(\Carbon\Carbon::now()->addHour()); $availability->scheduleEnd(1674074046); $availability->scheduleEnd('2023-01-18 12:34:56'); $availability->scheduleEnd(\Carbon\Carbon::now()->addHour()); $endpoint->availability($availability); $input = new Create\Input\Input(); $input->transcode(true); $input->trancoderId(1); $input->protocol(Create\Enums\ProtocolEnum::SRT); $input->srtPassPhrase('passphrase'); $input->srtKeyLength(16); $input->serverPort(443); $input->serverApp('app'); $input->autoShutdown(1); $input->videoPid('videoPID123'); $latvianLanguage = new Create\Input\AudioLanguage(); $latvianLanguage->language('lat'); $latvianLanguage->pid('123'); $latvianLanguage->languageName('Latvian'); $input->audioLanguages([$latvianLanguage]); $endpoint->input($input); $endpoint->timezone('Europe/Riga'); $response = TmsApi::client('default')->run($endpoint);
端点: /Live/Update
https://api.cloudycdn.services/api/v5/docs#/operations/Live/Update
更新现有直播。
支持的认证方法:Basic
、Bearer token
、API Key
use Newman\LaravelTmsApiClient\Endpoints\Live\Update; use Newman\LaravelTmsApiClient\Endpoints\Live\Create; use Newman\LaravelTmsApiClient\EndpointSupport\Images; use Newman\LaravelTmsApiClient\Support\Facades\TmsApi; $endpoint = new Update(123); $endpoint->id(1234); $endpoint->name('Different Livestream'); $endpoint->catId(1); $endpoint->multiLanguages(true); $endpoint->customOrigin('https://example.com'); $publish = new Create\Publish(); $publish->prefix('prefix'); $endpoint->publish($publish); $endpoint->embedPlayerId(1); $endpoint->embedAdId(1); $endpoint->embedProtectionId(1); $embed = new Create\Embed(); $embed->enablePublic(true); $embed->publicPassword('password'); $embed->enablePreview(true); $endpoint->embed($embed); $security = new Create\Security(); $security->encryptionMethod(Create\Enums\EncryptionMethodEnum::AES); $security->useToken(true); $security->tokenDuration(Create\Enums\TokenDurationEnum::ONE_HOUR); $endpoint->security($security); $recording = new Create\Recording\Recording(); $recording->autoDelete(true); $recording->autoDeleteMedia(true); $recording->savePassed(true); $recording->deleteAfterHours(1); $recording->marginStartSeconds(1); $recording->marginEndSeconds(1); $recording->fileNamingPattern('pattern'); $nimbus = new Create\Recording\Nimbus(); $nimbus->syncInterval(1); $nimbus->channelId(1); $nimbus->manifestId(1); $recording->nimbus($nimbus); $epg = new Create\Recording\EPG(); $epg->hoursBefore(1); $epg->hoursAfter(1); $epg->round(0); $recording->epg($epg); $endpoint->recording($recording); $images = new Images(); $images->thumbnail(base64_encode('FILE_CONTENTS')); $images->placeholder(base64_encode('FILE_CONTENTS')); $images->playbutton(base64_encode('FILE_CONTENTS')); $images->logo(base64_encode('FILE_CONTENTS')); $endpoint->images($images); $availability = new Create\Availability(); $availability->scheduleStart(1674074046); $availability->scheduleStart('2023-01-18 12:34:56'); $availability->scheduleStart(\Carbon\Carbon::now()->addHour()); $availability->scheduleEnd(1674074046); $availability->scheduleEnd('2023-01-18 12:34:56'); $availability->scheduleEnd(\Carbon\Carbon::now()->addHour()); $endpoint->availability($availability); $input = new Create\Input\Input(); $input->transcode(true); $input->trancoderId(1); $input->protocol(Create\Enums\ProtocolEnum::SRT); $input->srtPassPhrase('passphrase'); $input->srtKeyLength(1); $input->serverPort(443); $input->serverApp('app'); $input->autoShutdown(1); $input->videoPid('videoPID123'); $latvianLanguage = new Create\Input\AudioLanguage(); $latvianLanguage->language('lat'); $latvianLanguage->pid('123'); $latvianLanguage->languageName('Latvian'); $input->audioLanguages([$latvianLanguage]); $endpoint->input($input); $endpoint->timezone('Europe/Riga'); $response = TmsApi::client('default')->run($endpoint);
端点: /Live/On
https://api.cloudycdn.services/api/v5/docs#/operations/Live/On
开启现有直播。
支持的认证方法:Basic
、Bearer token
、API Key
use Newman\LaravelTmsApiClient\Endpoints\Live\On; use Newman\LaravelTmsApiClient\Support\Facades\TmsApi; $endpoint = new On(123); $endpoint->id(1234); $response = TmsApi::client('default')->run($endpoint);
端点: /Live/Off
https://api.cloudycdn.services/api/v5/docs#/operations/Live/Off
关闭现有直播。
支持的认证方法:Basic
、Bearer token
、API Key
use Newman\LaravelTmsApiClient\Endpoints\Live\Off; use Newman\LaravelTmsApiClient\Support\Facades\TmsApi; $endpoint = new Off(123); $endpoint->id(1234); $response = TmsApi::client('default')->run($endpoint);
端点: /Live/Record
https://api.cloudycdn.services/api/v5/docs#/operations/Live/Record
开始录制现有直播。
支持的认证方法:Basic
、Bearer token
、API Key
use Newman\LaravelTmsApiClient\Endpoints\Live\Record; use Newman\LaravelTmsApiClient\Support\Facades\TmsApi; $endpoint = new Record(123); $endpoint->id(1234); $response = TmsApi::client('default')->run($endpoint);
🤝 贡献
我们将感激您对此包的合作。
在制作pull请求时,请确保
- 所有测试都通过:
composer test
- 测试覆盖率没有降低:
composer test-coverage
- 没有PHPStan错误:
composer phpstan
- 遵循编码标准:
composer lint
或composer fix-style
以自动修复。