文档目录
搜索⌘K签名链接
由你的服务器决定谁可以观看,并签发带有效期的视频流链接。dodocast 只校验签名。
套餐
签名链接用于直接视频流链接,适用于 Pro 和 Business 套餐。
签名密钥
- 进入 Settings → Signing keys → Create key。
- 保存密钥:它只在创建时显示一次。请像对待数据库密码一样保管它,切勿发送到浏览器——只在服务器端签名。
- 密钥有一个 ID
sk_…,它会写入令牌头部。


被撤销的密钥会在一分钟内失效,用它签名的链接也随之失效。
令牌
使用 HS256 签名的标准 JWT:
json
header: { "alg": "HS256", "typ": "JWT", "kid": "sk_your_key_id" }
payload: { "code": "abc123XYZ0", "iat": 1791676800, "exp": 1791678600 }code是视频、播放列表、直播或频道的代码。为某一项内容签发的令牌无法打开其他内容。iat和exp为必填项;有效期最长 24 小时。- 你只能为自己的内容签名。
- 签名时将密钥作为字符串使用,与控制台提供给你的完全一致。
js
// Node.js,jsonwebtoken 库
import jwt from 'jsonwebtoken'
const token = jwt.sign({ code: 'abc123XYZ0' }, process.env.DODOCAST_SECRET, {
algorithm: 'HS256', keyid: 'sk_your_key_id', expiresIn: '30m',
})
const url = `https://stream.dodocast.com/s/${token}/hls/mp4/abc123XYZ0/master.m3u8`python
# Python,PyJWT 库
import time, jwt
now = int(time.time())
token = jwt.encode({"code": "abc123XYZ0", "iat": now, "exp": now + 1800},
SECRET, algorithm="HS256", headers={"kid": "sk_your_key_id"})
url = f"https://stream.dodocast.com/s/{token}/hls/mp4/abc123XYZ0/master.m3u8"Player SDK 已内置此功能:@dodocast/player/server 中的 signToken()、signedStreamUrl()、signedPlaylistItemUrl()。
令牌放在哪里
令牌放在链接路径中。播放器会自动使用相同前缀请求各码率版本、分片和加密密钥。
| 内容 | 路径 |
|---|---|
| 视频 | /s/{jwt}/hls/mp4/{code}/master.m3u8 |
| 直播 | /s/{jwt}/live/mp4/{code}/index.m3u8 |
| 频道 | /s/{jwt}/ch/mp4/{code}/index.m3u8 |
| 课程课时(令牌对应播放列表代码) | /public/pl/{code}/item/{itemCode}?t={jwt} |


链接返回 403 时
- 你为他人的内容签了名——密钥只对你自己的内容有效;
exp减去iat超过 24 小时;- 令牌中包含
purpose字段——不应包含; - 密钥已被撤销(或已重新创建——请检查
kid); - 你服务器的时钟快了 5 分钟以上。
更新于: