📡 快手 · 抖音官方直播观看
经典秦腔剧目现场直播 · 惠民演出线上同步 · 海内外戏迷共赏
① 请点击微信右上角【⋯】图标 → 选择【在浏览器打开】即可正常访问;
② 微信分享、预约表单、企业资质、剧目中心等其余功能在微信内可正常使用;
③ 如您是剧团管理员,请在公众平台完成「业务域名 / JS接口安全域名 / 网页授权域名」配置(详见项目根目录
MP_verify_PLACEHOLDER.txt)。
📺 网页内嵌播放器(本站直接观看)
正式直播时可将以下 iframe 播放器的 src 替换为快手/抖音官方开放平台提供的网页推流地址,用户无需跳转即可在本站直接观看直播。
接口概览
开放合作 · 文旅融合 · 共建数字秦腔新生态
🎬 标准开放接口体系
秦安县秦剧团云端预约系统提供完整的标准化开放 API 接口体系,涵盖直播推流管理、节目单查询、开播提醒订阅、直播弹幕回调、观看统计数据、直播回放下载等六大核心能力,诚挚欢迎省内外文旅平台、智慧景区大屏系统、合作媒体平台、互联网视频平台、政务新媒体矩阵等合作伙伴对接接入,共同推动秦腔艺术数字化、网络化、智能化传播。
本页面为 EdgeOne Pages 静态部署版本的接口占位说明文档,正式环境部署至腾讯云 EdgeOne Pages 并接入后端 Serverless 云函数与数据库后,接口前缀为下方正式域名地址。{year} 年剧团将持续扩展 API 接口能力,包括票务核销、演出评价、艺人资料、AI 戏曲生成等更多高级接口,敬请合作伙伴持续关注。
接入流程
六步完成对接 · 专业团队全程护航
-
1
商务洽谈
联系剧团商务合作负责人,沟通直播需求场景、合作方式、接口权限范围、商业模式、SLA 服务等级等核心诉求,确定对接意向
-
2
签署协议
签订《直播合作框架协议》或《技术对接 NDA 保密协议》,明确双方权利义务、数据合规条款、知识产权归属、保密责任等法律事项
-
3
获取密钥
合作方提供主体信息、回调域名、IP 白名单等资料,剧团技术部为合作方开通 AppID / AppSecret / 接口调用 Token,分配沙盒环境权限
-
4
沙盒联调
接入沙盒环境测试全部接口,验证节目单获取、推流地址、开播回调、数据统计等功能,技术团队 1v1 支持接口对接与问题排查
-
5
正式上线
沙盒联调通过后签署上线确认函,切换至生产环境 API 地址,启用生产环境密钥,配置真实回调地址与告警通知联系人
-
6
运维保障
7x24 小时技术支持与监控告警,接口可用性 99.9% SLA 承诺,月度接口调用报告送达,季度业务复盘与迭代优化建议
核心 RESTful API 列表
六大核心接口 · 覆盖数字演出全场景
| 方法 | 接口路径 | 功能说明 | 鉴权方式 |
|---|---|---|---|
| GET | /live/upcoming | 获取 30 天内即将直播的节目单,包含演出 ID、剧目名称、直播开始时间、预计时长、主演阵容、观看人数预估、封面缩略图等字段,可按日期范围、演出类型分页筛选。 | API Key |
| POST | /live/subscribe | 预约指定演出的开播提醒回调。入参:回调 URL(合作方服务端接收 POST 通知)、演出 ID、手机号(可选,用于短信双提醒)、自定义扩展参数。开播前 15 分钟、5 分钟各触发一次回调。 | HMAC-Sign |
| GET | /live/streams | 获取正在直播的推流地址列表,支持 RTMP / FLV / HLS / WEBRTC 四种主流协议输出,每条推流含清晰度标识(原画/1080P/720P/480P)、CDN 节点信息、观众实时在线人数。 | HMAC-Sign |
| POST | /live/danmaku/callback | 配置弹幕回调地址,合作方平台用户在合作方页面发弹幕时,剧团服务端会将弹幕内容以 POST JSON 形式推送到合作方指定回调地址,支持弹幕关键词过滤、敏感词审计、点赞礼物同步回调。 | HMAC-Sign |
| GET | /live/{id}/stats | 查询指定直播 ID 的实时/历史统计数据:实时观看人数、峰值在线人数、累计观看人次、弹幕总数、评论数、点赞数、虚拟礼物收入(若开启)、平均观看时长、地域分布 Top 5、观看设备占比等。 | HMAC-Sign |
| GET | /live/{id}/playback | 获取直播回放地址与有效期、下载权限。支持生成带签名的临时回放地址(默认有效期 2 小时,可通过参数延长),支持 FLV/MP4/HLS 三种回放格式,高级合作方可开启 MP4 源文件下载权限。 | HMAC-Sign |
鉴权说明与示例代码
HMAC-SHA256 签名 · 安全可靠 · 标准通用
签名算法:剧团所有写操作(POST)与敏感读操作均采用 HMAC-SHA256 签名方式鉴权。合作方请求时需将请求参数按字典序拼接,加上时间戳 timestamp(毫秒级,5 分钟有效期)与随机字符串 nonce,使用 AppSecret 作为密钥计算 HMAC-SHA256 签名,签名结果以小写十六进制字符串放入 HTTP Header X-QinOpera-Sign 中。
请求头要求:X-QinOpera-AppID(分配的 AppID)、X-QinOpera-Timestamp(毫秒时间戳)、X-QinOpera-Nonce(随机字符串)、X-QinOpera-Sign(签名结果)。GET 接口可使用 API Key 直接放入 Header X-QinOpera-APIKey 调用。
# 获取指定直播的实时统计数据 curl 示例
# 环境变量示例(正式部署前请替换为真实 AppID / AppSecret)
APP_ID="QINOPERA_2024010001"
APP_SECRET="YOUR_APP_SECRET_HERE_KEEP_SAFE"
API_BASE="https://your-edgeone-domain/api/v1"
LIVE_ID="live_20240520_001"
# 生成签名参数
TIMESTAMP=$(date +%s%3N)
NONCE=$(openssl rand -hex 16)
PARAMS="appid=${APP_ID}&id=${LIVE_ID}&nonce=${NONCE}×tamp=${TIMESTAMP}"
SIGNATURE=$(echo -n "${PARAMS}" | openssl dgst -sha256 -hmac "${APP_SECRET}" | sed 's/^.*= //')
# 发送 HTTPS 请求
curl -X GET "${API_BASE}/live/${LIVE_ID}/stats" \
-H "Content-Type: application/json" \
-H "X-QinOpera-AppID: ${APP_ID}" \
-H "X-QinOpera-Timestamp: ${TIMESTAMP}" \
-H "X-QinOpera-Nonce: ${NONCE}" \
-H "X-QinOpera-Sign: ${SIGNATURE}" \
--tlsv1.3 --compressed | jq "."
/**
* 秦安县秦剧团直播 API 调用示例 - JavaScript fetch 版
* 依赖:Node.js 内置 crypto 模块(浏览器环境需引入 crypto-js 或 Web Crypto API)
* @author [email protected]
*/
const crypto = require('crypto');
const CONFIG = {
APP_ID: 'QINOPERA_2024010001',
APP_SECRET: 'YOUR_APP_SECRET_HERE_KEEP_SAFE',
API_BASE: 'https://your-edgeone-domain/api/v1'
};
/** 生成 HMAC-SHA256 签名 */
function generateSignature(params, secret) {
const sorted = Object.keys(params).sort()
.map(k => `${k}=${params[k]}`).join('&');
return crypto.createHmac('sha256', secret)
.update(sorted).digest('hex');
}
/** 订阅指定演出开播提醒 - POST 接口 */
async function subscribeLiveReminder(payload) {
const timestamp = Date.now().toString();
const nonce = crypto.randomBytes(16).toString('hex');
const signPayload = { ...payload, appid: CONFIG.APP_ID, timestamp, nonce };
const sign = generateSignature(signPayload, CONFIG.APP_SECRET);
const resp = await fetch(`${CONFIG.API_BASE}/live/subscribe`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-QinOpera-AppID': CONFIG.APP_ID,
'X-QinOpera-Timestamp': timestamp,
'X-QinOpera-Nonce': nonce,
'X-QinOpera-Sign': sign
},
body: JSON.stringify(payload)
});
return await resp.json();
}
// 使用示例 - 订阅演出开播提醒
subscribeLiveReminder({
callback_url: 'https://your-platform.com/api/qinopera/callback',
live_id: 'live_20240520_001',
phone: '13993839833',
extra: { platform_user_id: 'U12345' }
}).then(data => console.log('订阅成功:', data));
错误码说明
标准结构化返回 · 快速定位问题
| 错误码 Code | 错误信息 Message | 排查建议 Suggestion |
|---|---|---|
| 200 | OK · 接口调用成功 | 接口正常返回业务数据,data 字段为业务响应内容,可直接解析使用。分页接口请检查 page、total 等分页元信息。 |
| 4001 | Parameter Missing · 必填参数缺失 | 检查请求 URL 路径参数、Query 参数、POST Body 字段,对照接口文档补全所有 required 字段,注意参数名大小写完全匹配。 |
| 4002 | Parameter Invalid · 参数格式非法 | 检查参数类型与格式,例如日期应为 ISO 8601 格式、手机号应为 11 位数字、枚举值必须在文档允许范围内、JSON 结构嵌套正确。 |
| 4003 | Signature Error · 签名校验失败 | 请按以下顺序排查:① AppID / AppSecret 是否正确 ② 参数是否按字典序 ASCII 升序排列 ③ HMAC-SHA256 密钥是否使用 AppSecret ④ 签名转十六进制是否为小写。 |
| 4010 | Token Expired · Token / 签名已过期 | timestamp 时间戳需使用毫秒级,有效期 5 分钟。请检查服务器时钟是否同步 NTP 网络授时,重新生成签名后再次发起请求。 |
| 4011 | IP Blocked · IP 不在白名单 | 该接口启用了 IP 白名单限制,请联系剧团技术支持将合作方服务器出口 IP 添加至白名单列表,支持 IPv4 CIDR 批量配置。 |
| 4040 | Resource Not Found · 演出 / 资源不存在 | 请求的 live_id、演出 ID 等资源标识无效或已下架,请先调用 /live/upcoming 接口获取有效的演出列表再使用真实 ID。 |
| 4290 | Rate Limit Exceeded · 请求频率超限 | 默认限流策略:单 AppID 每分钟 300 次调用、每天 50000 次。高频调用场景请联系技术支持申请提升配额,或在客户端实现指数退避重试。 |
| 5000 | Server Error · 服务器内部错误 | 剧团服务端发生未知异常,请 30 秒后自动重试;若多次重试持续报错,请立即联系技术支持并提供请求 X-Request-ID 协助排查。 |
| 5030 | Service Unavailable · 服务维护中 | 接口正在发布或维护中,通常持续 5-15 分钟。紧急接入请联系值班电话获取备用域名或延后到维护窗口结束后调用。 |
商务与技术对接
专业团队 · 全程服务 · 携手共赢
📋 本页为接口占位文档说明
正式部署到 EdgeOne Pages 并接入后端云函数、Redis 缓存、MySQL 数据库、消息队列、直播 CDN 等完整基础设施后,
将在本站 /openapi.json 路径提供完整的 OpenAPI 3.0 规范 JSON 规格文件,
并同步提供 Postman Collection v2.1 接口调试集合 下载链接,便于合作伙伴一键导入快速开展对接工作。
{year} 年剧团将持续扩展更多数字化演出服务接口,期待与您深度合作,共谱秦腔艺术数字化新篇章!