Search by

caiyun / live

Caiyun multi-driver live streaming package for Laravel (Tencent / Aliyun / Huawei / Volcengine / Agora)

Maintainers

Package info

github.com/763606865/caiyun-live

pkg:composer/caiyun/live

Transparency log

Statistics

Installs: 1

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.0 2026-09-03 08:12 UTC

This package is auto-updated.

Last update: 2026-09-03 08:15:52 UTC


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(与腾讯云同规则)
  • aauth_key(与阿里云同规则)
  • dhwSecret / 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