更新时间:2025-09-15 15:48:49
本指南将为您全面介绍如何将我们的低延迟 WebRTC 播放器集成到您的 Web 应用中。我们将以提供的演示包为起点,详细讲解其工作原理,助您自信地在您的项目中进行适配。
在开始之前,请先下载 Demo 包,该包包含所有必要文件,您可立即开始使用。
该安装包包含:
demo.html: 一个功能完善的示例页面,所有 HTML 和 JavaScript 集成在同一个文件中。wsrtcplayer.min.js: 核心软件开发工具包(SDK)。css/: 存放该示例页面样式表的文件夹。下面我们将详细解析 demo.html 文件,了解如何实现点击播放播放器。
您的HTML文件需要包含以下几个关键元素以便开始使用:
<video> 元素:这是用于显示视频流的区域。请为其设置唯一的 id。<script> 标签,用于编写JavaScript逻辑。以下是 demo.html 文件中结构的简化版本:
<!DOCTYPE html>
<html>
<head>
<title>WebRTC Player</title>
<link rel="stylesheet" href="css/main.css" />
</head>
<body>
<!-- 用于流播放的视频元素 -->
<video id="video-player" controls muted playsinline></video>
<!-- 我们建议包含 `controls`、`muted` 和 `playsinline` 属性。`muted` 和 `playsinline` 是确保大多数移动端浏览器实现自动播放的必要条件,而 `controls` 在需要时可为原生播放控件提供兜底方案。 -->
<!-- 播放器控制组件 -->
<input id="signal_url" type="text" value="http://webrtc-pull.test.cdnetworks.com/live/stream1.sdp">
<button id="playButton">播放</button>
<button id="stopButton">停止</button>
<!-- 核心SDK -->
<script src="wsrtcplayer.min.js"></script>
<!-- 用于控制播放器的自定义脚本 -->
<script>
// JavaScript 逻辑在此编写
</script>
</body>
</html>
在 <script> 标签中,您将添加用于控制播放器的逻辑。以下代码实现了与 demo.html 相同的功能。
<script>
document.addEventListener('DOMContentLoaded', function () {
const playBtn = document.getElementById('playButton');
const stopBtn = document.getElementById('stopButton');
const videoElement = document.getElementById('video-player');
let player = null; // 用于存储播放器实例
// 1. 定义回调函数以处理播放器事件
function onEvent(type, data) {
const timestamp = (window.performance.now() / 1000).toFixed(3);
console.log(`${timestamp}s: 收到事件 - 类型: ${type}, 数据: ${data || 'N/A'}`);
}
// 2. 设置“播放”按钮
playBtn.onclick = function() {
// 最佳实践:在新建播放器实例前务必销毁旧的播放器实例
if (player) {
player.destroy();
}
const playerOptions = {
element: videoElement,
customerID: "YOUR_UNIQUE_ACCOUNT_NAME", // 重要提示:请务必使用您真实的Account Name
listener: onEvent
};
player = window.wsrtcplayer.createWSRTCPlayer(playerOptions);
const signalUrl = document.getElementById('signal_url').value;
if (player && signalUrl) {
player.open(signalUrl);
}
};
// 3. 设置“停止”按钮
stopBtn.onclick = function() {
if (player) {
player.close();
}
};
});
</script>
要实现页面加载时自动播放视频,可以使用以下脚本。此版本无需用户交互即可开始播放。
<script>
document.addEventListener('DOMContentLoaded', function () {
function onEvent(type, data) {
const timestamp = (window.performance.now() / 1000).toFixed(3);
console.log(`${timestamp}s: 已接收到事件 - 类型: ${type}, 数据: ${data || 'N/A'}`);
}
const videoElement = document.getElementById('video-player');
const signalUrl = 'http://webrtc-pull.test.cdnetworks.com/live/stream1.sdp'; // 请替换为您的直播流地址
const playerOptions = {
element: videoElement,
customerID: "YOUR_UNIQUE_ACCOUNT_NAME", // 请使用您的真实主账号名称
listener: onEvent
};
const player = window.wsrtcplayer.createWSRTCPlayer(playerOptions);
if (player) {
player.open(signalUrl);
}
// 可选:添加用户离开页面时的清理逻辑
window.addEventListener('beforeunload', () => {
if (player) {
player.destroy();
}
});
});
</script>
您可以使用 onEvent 监听器为用户提供实时反馈。首先,在您的 HTML 中添加一个 <div>,用于显示状态消息:
<div id="status-display" style="padding: 10px; font-weight: bold;">正在连接...</div>
接下来,请修改您的 onEvent 函数,根据播放器状态更新此元素的文本。下方示例展示了如何将状态显示逻辑集成到完整的自动播放脚本中。
<script>
document.addEventListener('DOMContentLoaded', function () {
const statusDisplay = document.getElementById('status-display');
const videoElement = document.getElementById('video-player');
const signalUrl = 'http://webrtc-pull.test.cdnetworks.com/live/stream1.sdp'; // 请替换为您的流地址
// 此函数用于处理播放器的状态更新并更新界面。
function onEvent(type, data) {
switch (type) {
case 0:
statusDisplay.innerText = '状态:播放中';
statusDisplay.style.color = 'green';
break;
case 1:
statusDisplay.innerText = '状态:缓冲中...';
statusDisplay.style.color = 'orange';
break;
case 2:
statusDisplay.innerText = '状态:已连接';
break;
}
}
const playerOptions = {
element: videoElement,
customerID: "YOUR_UNIQUE_ACCOUNT_NAME", // 请使用您的真实主账号名称
listener: onEvent
};
const player = window.wsrtcplayer.createWSRTCPlayer(playerOptions);
if (player) {
player.open(signalUrl);
}
});
</script>
该演示使用了 rtc_main.css 和 main.css 进行样式设置。若需自定义界面外观,建议创建你自己的样式表,并在 HTML 文件中于默认样式表之后进行引入。这样可以确保你自定义的样式覆盖默认样式。
在你的 css 文件夹下新建一个名为 my-styles.css 的文件。
添加你自定义的 CSS 规则。例如:
/* /css/my-styles.css */
#video-player {
border: 3px solid #007bff;
border-radius: 5px;
box-shadow: 0 4px 8px rgba(0,0,0,0.2);
}
在您的HTML文件中引入新样式表:
<link rel="stylesheet" href="css/rtc_main.css" />
<link rel="stylesheet" href="css/main.css" />
<link rel="stylesheet" href="css/my-styles.css" />
| 方法 | 参数 | 描述 |
|---|---|---|
createWSRTCPlayer(options) |
options (Object):• element (HTMLVideoElement) [必填]:用于播放的 <video> 元素。• customerID (String) [选填]:您的唯一账号名称。• listener (Function) [选填]:用于接收播放器事件的回调函数。 |
创建一个播放器实例。 |
player.open(signal_url) |
signal_url (String):用于流播放信号的 URL。 |
连接信令服务器,建立 WebRTC 对等连接,并开始播放视频流。 |
player.close() |
(无) | 停止视频播放并断开流连接。 |
player.destroy() |
(无) | 停止播放,断开连接,并清理所有内部资源。使用完播放器后调用此方法以防内存泄漏。 |
listener)回调函数接收两个参数:function(type, data)。
| 参数 | 类型 | 描述 |
|---|---|---|
type |
Number |
表示事件类型的代码。请参见下方列表。 |
data |
String |
事件特定的数据,仅在某些事件类型下会赋值。 |
事件 type 代码:
0: 缓冲结束,播放已恢复。1: 已发生缓冲或卡顿。2: 已收到来自服务器的SDP应答。data 包含SDP字符串。3: 来自播放器的自定义事件。data 包含自定义事件字符串。信令URL的结构如下:http(s)://domain/appName/streamName.sdp
domain: 为低延迟流媒体配置的Domain。appName:用于配置隔离的发布点名称(如转码、录制)。streamName:直播流的唯一名称。| 操作系统 | 浏览器类型 | 最低版本 |
|---|---|---|
| macOS | 桌面版 Safari | 11 及以上 |
| macOS | 桌面版 Chrome | 47 及以上 |
| Windows | 桌面版 Chrome | 56 及以上 |
| Android | 移动端 Chrome | 88 及以上 |
| iOS | 移动端 Safari | 11 及以上 |
| iOS | 微信内置浏览器 | 12 及以上 |
注意:基于 Chromium 内核的浏览器应遵循对应的 Chrome 版本要求。Android 端各浏览器支持情况可能存在差异,部分设备可能不支持 H.264 的硬件解码。