将直播嵌入到您的产品中
使用具有托管后端的 WebLiveHub PHP SDK 来设置身份验证、生成流嵌入并在伺服器上保留长期凭证。
快速入门
最小可行整合 (MVI) 的 4 个步骤
创建整合端点
设置托管后端端点
在控制台中,「建立」→「整合端点」会自动产生后端端点和设置。请在此建立端点,并将产生的 URL 复制到伺服器端程式码中。
- 在控制台导览中,打开「建立」→ 「整合端点」。
- 点选「新增整合端点」
- 输入有意义的标签名称(例如 Production-api)
- 复制产生的后端端点
准备用户凭证(user_id / 密码)
使用控制台「建立」→「SDK 使用者」建立或选择帐户,并取得 WLSDK::setup() 的 user_id 和密码。
- 在控制台导览中,打开「建立」→ 「SDK 使用者」。
- 建立或选择帐户并在详细视图中记下其 user_id。
- 设置或确认帐户密码(仅内部储存)。
- 初始化 WLSDK::setup() 时使用此 user_id / 密码。
安装PHP SDK
透过 Composer 安装 WebLiveHub PHP SDK
composer require weblivehub/sdk
初始化 SDK 客户端 + 流令牌产生和嵌入
设置基本 SDK 设置和依赖项
使用设置的 SDK 整合播放器和动态身份验证。
整合流程概述
AUTH_USER_ID:用于与后端进行认证或取得Token的识别码。它可能是观众或串流媒体,具体取决于所选的主机标签。AUTH_PASSWORD:AUTH_USER_ID对应的密码或secret。安全性储存在伺服器上;切勿在前端或范例程式码中进行硬编码。STREAMER_USER_ID:主播标识符(user_id)。HOSTED_BACKEND_ENDPOINT:托管后端端点 URL(在范例中显示为占位符;实际上透过环境或伺服器设置进行设置)。
- 建立托管后端: 取得专用后端端点。
- Composer安装:
composer require weblivehub/sdk - WLSDK::setup() 设置:
- 放
hb_endpoint(步骤 1 中的后端 URL) - 提供
user_id和password(用户授权)
- 放
- 输出 iframe:single = iframe();多重/延迟=lazyIframe()。
- 完成:内部处理令牌和身份验证交换。
单一 Iframe 流嵌入
对单一流使用 WLSDK::iframe();支援自订属性。
<?php
// === Initialize SDK Client ===
// Include WebLiveHub SDK class
require_once __DIR__ . '/vendor/autoload.php';
use WebLiveHub\SDK\WLSDK;
// Initialize SDK configuration (must complete before first call)
WLSDK::setup([
'hb_endpoint' => getenv('WL_HOSTED_BACKEND_URL') ?: '<HOSTED_BACKEND_ENDPOINT>',
'user_id' => '<AUTH_USER_ID>',
'password' => '<AUTH_PASSWORD>'
]);
?><!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>WebLiveHub Single Stream Example</title>
<style>
/* Set stream container styles */
#stream-container {
width: 800px;
height: 450px;
border: 1px solid #ccc;
display: block;
}
</style>
<?php
// Load official JS SDK (contains frontend logic needed for iframe/lazyIframe)
echo WLSDK::script();
?>
</head>
<body>
<?php
echo WLSDK::iframe([
'hostLabel' => 'connect', // Hosted Backend label (connect/live/live-client etc)
'streamer' => '<STREAMER_USER_ID>', // Target streamer's user_id
'attrs' => [ 'id' => 'stream-container', 'class' => 'wlh-stream', 'style' => 'border-radius:6px;' ]
]);
?>
</body>
</html>
多个 Iframe 延迟加载
使用 WLSDK::lazyIframe() 进行具有延迟载入和响应式布局的多重串流显示。
<?php
// === Initialize SDK Client ===
// Include WebLiveHub SDK class
include_once __DIR__.'/vendor/autoload.php';
use WebLiveHub\SDK\WLSDK;
// Initialize SDK configuration
WLSDK::setup([
'hb_endpoint' => getenv('WL_HOSTED_BACKEND_URL') ?: '<HOSTED_BACKEND_ENDPOINT>',
'user_id' => '<AUTH_USER_ID>',
'password' => '<AUTH_PASSWORD>',
]);
?><!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>Multi Stream Showcase</title>
<style>body{font-family:system-ui,Arial,sans-serif;margin:24px;background:#fafafa;} .grid{display:grid;gap:20px;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));} .card{background:#fff;padding:12px;border:1px solid #ddd;border-radius:8px;box-shadow:0 2px 3px rgba(0,0,0,.05);} .card h2{font-size:15px;margin:0 0 8px;} </style>
<?php
// Load official JS SDK (contains frontend logic needed for iframe/lazyIframe)
echo WLSDK::script();
?>
</head>
<body>
<h1>Multiple Live Rooms</h1>
<!-- // === Stream token generation & embed === -->
<!-- // Generate multiple lazy-loaded stream players -->
<div class="grid">
<div class="card">
<h2>Streamer #1</h2>
<div>
<?php
// Lazy load (SDK auto-generates token & embeds)
echo WLSDK::lazyIframe([
'hostLabel' => 'connect', // Hosted Backend label
'streamer' => '<STREAMER_1_USER_ID>' // Streamer user_id
]);
?>
</div>
</div>
<div class="card">
<h2>Streamer #2</h2>
<div>
<?php
// Second stream (different streamer; SDK generates corresponding token)
echo WLSDK::lazyIframe([
'hostLabel' => 'connect', // Same hosted backend
'streamer' => '<STREAMER_2_USER_ID>' // Different streamer user_id
]);
?>
</div>
</div>
</div>
</body>
</html>
🌐 多语言整合(可选)
如果您的网站提供多种介面语言,您可以在呼叫WLSDK时传递lang参数,以保持播放器语言与页面一致。未指定时:WLSDK先读取执行环境语言(在Console中这是目前UI语言环境,默认zh-Hant);如果不可用,则会回退为英文 (en)。
- 播放器支援的语言代码:en、ja、zh-Hant、zh-Hans、vi(控制台 UI 目前支援:en、zh-Hant、es)。如果环境语言不在播放器清单中,它会自动回退为 en。
- 当呼叫 WLSDK::iframe() 或 WLSDK::lazyIframe() 时,加入 lang =>; '<LANG_CODE>'到参数阵列。
范例:将播放器语言设置为繁体中文
以下范例显示在单一 iframe 呼叫中指定 lang => 'zh-Hant';实际上,您可以使用动态变数。
<?php
// Example: specify the player language in the iframe call
echo WLSDK::iframe([
'hostLabel' => 'connect',
'streamer' => '<STREAMER_USER_ID>',
'lang' => 'zh-Hant',
'attrs' => [
'id' => 'stream-container',
'class' => 'wlh-stream',
'style' => 'border-radius:6px;'
]
]);
🔔 监听播放器事件
WLSDK产生的播放器不仅仅是一个静态的iframe;您可以注册就绪、结束和 page_unloading 的前端处理程序,以整合 UI 逻辑或日志记录。
- 建议:使用 WLSDK_attachIframeEventsById(<element id>, handlers) 在前端绑定事件。在 PHP 中输出一个命名的 id,然后在 JS 中使用相同的 id 进行绑定。
- 相同的绑定适用于 WLSDK::iframe() 和 WLSDK::lazyIframe() 所建立的播放器。
- 就绪:播放器已载入并就绪(内部握手开始时触发)。
- 结束:播放结束(直播结束或点播结束)。
- page_unloading:嵌入页面正在卸载(分页关闭、重新整理或导览离开)。
范例:监听ready/ended/page_unloading事件
此范例显示了常见的事件处理;也提供了通用讯息挂钩来接收其他讯息类型(处理程序签署函数(有效负载,类型))。
<?php
// Example: bind events by element id (recommended)
echo WLSDK::iframe([
'hostLabel' => 'connect',
'streamer' => '<STREAMER_USER_ID>',
'attrs' => [
'id' => 'stream-with-events',
'class' => 'wlh-stream',
],
]);
?>
<script>
(function(){
WLSDK_attachIframeEventsById('stream-with-events',{
'ready': function(){ console.log('player ready'); },
'ended': function(){ console.log('playback ended'); },
'page_unloading': function(){ console.log('iframe page unloading'); },
});
})();
</script>
处理程序以纯 JavaScript 执行;避免将未经过滤的用户输入注入字串中以降低 XSS 风险。
🏷️ 什么是主机标签?
live = 主持人(广播者)查看(发布/控制)。
live-client = 观看者侧视图(观看/互动)。
connect = 测试/通用连接和快速整合(默认范例)。
根据需要新增自订标签;程式码仅传递标签,而后端解析角色/行为。
- 前端仅提供标签;后端自动解析角色和节点。
| 标签 | 角色 | 在本指南中使用 |
|---|---|---|
| 观看 | 主持人 | 广播公司视图 |
| 连接 | 主持人 | 测试或一般连接 |
| 即时客户端 | 观众 | 查看者视图 |
⚡ 验证边界
-
在您的环境中验证
在规划生产使用之前,在您控制的环境中测试嵌入、选定的主机标签和查看者流程。
-
单独确认操作要求
本指南不建立生产能力、支援或商业承诺;在生产部署之前使用 WebLiveHub 检查这些内容。
🔐 安全说明
-
长期金钥保护
所有长期金钥保留在伺服器上;前端仅使用短暂的授权结果,避免在浏览器中储存原始机密。
-
HTTPS 和 CORS 控制
在生产中使用HTTPS并限制allow_origins;避免长时间*使用。
-
代币生命周期
生命周期和续订由平台后台自动管理;典型的整合不需要额外的手动重新整理流程。
WordPress 整合指南
WebLiveHub Stream(区块优先)文件
此页面重点介绍 PHP SDK 整合路径。如果您要与 WordPress 整合,请使用专用指南:
WordPress 插件整合指南提示:如果您有书签 #wordpress-plugin,将它们更新为 wordpress_integration_guide.html.