caiyun / live
Caiyun multi-driver live streaming package for Laravel (Tencent / Aliyun / Huawei / Volcengine / Agora)
v1.0.0
2026-09-03 08:12 UTC
Requires
- php: ^8.3
- ext-json: *
- ext-openssl: *
- illuminate/contracts: ^12.0|^13.0
- illuminate/support: ^12.0|^13.0
- nesbot/carbon: ^3.0
- rybakit/msgpack: ^0.9
Requires (Dev)
- laravel/pint: ^1.0
- mockery/mockery: ^1.6
- orchestra/testbench: ^10.0|^11.0
- phpunit/phpunit: ^12.0
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
面向 Laravel 12/13 的多驱动直播地址与回调校验包,支持:
- 腾讯云直播(Tencent)
- 阿里云视频直播(Aliyun)
- 华为云直播(Huawei)
- 火山引擎视频直播(Volcengine)
- 声网 Agora(Media Gateway 推流 + RTC Token 播放)
安装
composer require caiyun/live
发布配置:
php artisan vendor:publish --tag=caiyun-live-config
配置
.env 示例(腾讯云):
LIVE_DRIVER=tencent TENCENT_LIVE_APP_NAME=live TENCENT_LIVE_PUSH_DOMAIN=push.example.com TENCENT_LIVE_PLAY_DOMAIN=play.example.com TENCENT_LIVE_PUSH_KEY=your-push-key TENCENT_LIVE_PLAY_KEY=your-play-key TENCENT_LIVE_CALLBACK_KEY=your-callback-key
其他驱动对应配置见 config/live.php。
用法
use Caiyun\Live\Facades\Live; // 默认驱动 $push = Live::pushUrls('course_live_001'); $play = Live::playUrls('course_live_001'); // 指定驱动 $push = Live::driver('aliyun')->pushUrls('course_live_001'); $play = Live::driver('volcengine')->playUrls('course_live_001'); $push->toArray(); // ['server' => 'rtmp://...', 'stream_key' => '...', 'url' => '...', 'expires_at' => '...'] $play->toArray(); // ['webrtc' => '...', 'flv' => '...', 'hls' => '...', 'rtmp' => '...', 'artc' => '...', 'expires_at' => '...']
回调校验与解析
use Caiyun\Live\Facades\Live; $payload = $request->all(); if (! Live::driver('tencent')->verifyCallback($payload)) { abort(403); } $event = Live::driver('tencent')->parseCallback($payload); // $event->type: push_start / push_end / record_done / unknown // $event->streamName // $event->recordMediaId / recordUrl
腾讯云事件映射与课堂项目一致:
| event_type | 含义 |
|---|---|
| 1 | 推流开始 push_start |
| 0 | 断流 push_end |
| 100 | 录制完成 record_done |
华为云鉴权类型
HUAWEI_LIVE_AUTH_TYPE:
b(默认):txSecret/txTime(与腾讯云同规则)a:auth_key(与阿里云同规则)d:hwSecret/hwTime(HMAC-SHA256)
Agora 说明
- 推流:生成 Media Gateway 本地 Stream Key,供 OBS 使用
- 播放:返回 RTC Token(
play.extra.token),由 Agora SDK 进房观看;不返回 CDN FLV/HLS
从课堂项目迁移
原 App\Services\TencentLiveService:
$live->pushUrls($session); $live->playUrls($session); $live->verifyCallback($t, $sign);
迁移后:
use Caiyun\Live\Facades\Live; Live::driver('tencent')->pushUrls($session->stream_name)->toArray(); Live::driver('tencent')->playUrls($session->stream_name)->toArray(); Live::driver('tencent')->verifyCallback(['t' => $t, 'sign' => $sign]);
扩展自定义驱动
use Caiyun\Live\Facades\Live; Live::extend('custom', function ($app) { return new \App\Live\CustomDriver(config('live.drivers.custom', [])); });
自定义驱动需实现 Caiyun\Live\Contracts\LiveDriver。
开发
composer install
composer test
composer lint