足球、篮球、直播一站搞定

实时足球、篮球、直播直链一屏看完
支持一键复制 M3U8/FLV,打开自建播放器直接看。

LIVE
正在直播
SOCCER
足球
BASKET
篮球
UPDATED
实时比分 M3U8/FLV API/iframe/插件
刷新
正在直播
接口概览
请求方式
GET
无需鉴权参数
响应格式
JSON
UTF-8 编码
流媒体格式
FLV · M3U8
支持双格式播放
数据内容
实时赛事
全球联赛直播流
常用接口
全部直播(足球 + 篮球)
https://api.okzhibo.live/live/api/live/
当前推荐入口。无须传参即可返回正在直播的足球与篮球数据;如果你只是做首页直播大厅,优先使用这个接口。
打开
足球直播(仅足球)
https://api.okzhibo.live/live/api/live/?type=1
传入 type=1 后仅返回足球直播数据。当前接口里 statusId 常为 0,更建议结合 status 文本与流地址判断是否正在直播。
打开
篮球直播(仅篮球)
https://api.okzhibo.live/live/api/live/?type=18
传入 type=18 后仅返回篮球直播数据。状态字段可能是 Q3 06:51Q1 End 这类节次文本,前端建议转成更友好的中文展示。
打开
示例 · curl(常用)
# 全部直播(足球 + 篮球)
curl -s 'https://api.okzhibo.live/live/api/live/'

# 足球直播列表
curl -s 'https://api.okzhibo.live/live/api/live/?type=1'

# 篮球直播列表
curl -s 'https://api.okzhibo.live/live/api/live/?type=18'

响应结构预览
response.json
{
"code": 0,
"message": "成功",
"data": {
"total": 9,
"list": [
{
  "matchId": "6a1505b23915db34355cf615",
  "gameType": 1,
  "leagueName": "哥伦甲",
  "matchTimeText": "2026/06/09 06:00",
  "status": "45'+",
  "statusId": 0,
  "home": { id, name, logo, score },
  "away": { id, name, logo, score },
  "live_flv_url": "https://...",
  "live_m3u8_url": "https://..."
}
]
}
}
顶层响应字段
root 根对象字段说明
字段名 类型 说明
code number 状态码,0 表示请求成功
message string 状态描述信息,成功时返回 "成功"
data object 包含赛事列表的数据对象
含 total(总数)与 list(列表数组)
data.total number 当前返回的赛事总条数
data.list array 赛事对象数组,每项为一场比赛
赛事对象字段(list 数组项)
list[] 单场赛事字段说明
字段名 类型 说明
matchId string 赛事唯一标识 ID
示例:6a1505b23915db34355cf615
gameType number 比赛类型编号
1(足球)/ 18(篮球)
leagueId number 联赛唯一 ID
leagueName string 联赛名称
示例:"韩K联"、"中冠"
leagueLogo string 联赛 Logo 图片 URL
matchTime number 比赛开始时间(Unix 时间戳,秒级)
示例:1778515200 → 2026-05-12 00:00
matchTimeText string 比赛时间可读格式
常见格式:YYYY/MM/DD HH:mm
status string 比赛当前状态文字
可能为空、分钟文本(如 45'+)、简写(如 )或篮球节次时间(如 Q3 06:51Q1 End
statusId number 状态编号保留字段
当前接口中大量返回 0,不要单独依赖它判断直播状态
home object 主队信息对象
含 id / name / logo / score
away object 客队信息对象
含 id / name / logo / score
live_flv_url string FLV 格式直播流地址
适用于 PC 端 flv.js 播放器;无流时可能为空字符串
live_m3u8_url string M3U8 格式 HLS 直播流地址
适用于移动端及 HLS 播放器;无流时可能为空字符串
队伍信息对象(home / away)
team home 与 away 字段相同,结构如下
字段名 类型 说明
id number 球队唯一 ID
name string 球队名称(中文)
logo string 球队 Logo 图片 URL
部分球队 logo 可能为空字符串
score number 当前比分(未开赛时为 0)
状态字段说明
statusId 当前接口的状态字段使用方式
字段 / 场景 当前表现 接入建议
statusId 当前全量接口与直播接口里,大量赛事都返回 0 仅把它当作保留字段,不要继续按旧版 1~5 / -1 / -14 表做硬判断
足球 status 可能是 45'+90'+、空字符串等 优先按 status 文本展示,再结合流地址是否存在判断可播放性
篮球 status 常见为 Q1 08:21Q3 06:51Q1 EndOT 01:12 建议前端转成友好的中文,例如 Q1 End -> 第一节结束Q2 05:58 -> 第二节 05:58
直播判断 旧版单靠状态码已不稳定;有些直播赛事 statusId 仍然是 0 推荐组合判断:status 文本 + live_m3u8_url/live_flv_url 是否非空
使用示例
JavaScript · Fetch API
// 获取全部直播(足球 + 篮球)
const res = await fetch('https://api.okzhibo.live/live/api/live/');
const { code, data } = await res.json();

if (code === 0) {
  const formatStatus = (status) => {
    const raw = String(status || '').trim();
    const upper = raw.toUpperCase();
    const q = upper.match(/^Q([1-4])(?:\s+(.+))?$/);
    if (q) {
      const name = ['一', '二', '三', '四'][Number(q[1]) - 1];
      const tail = String(q[2] || '').trim();
      if (!tail) return `第${name}节`;
      if (tail === 'END') return `第${name}节结束`;
      return `第${name}${tail}`;
    }
    return raw || '待更新';
  };

  for (const match of data.list ?? []) {
    const statusText = formatStatus(match.status);
    const scoreText = `${match.home.score}-${match.away.score}`;

    console.log(
      `[${match.leagueName}]`,
      match.home.name, 'vs', match.away.name,
      scoreText,
      statusText
    );

    // 移动端优先 M3U8;为空时再降级到 FLV
    const playUrl = match.live_m3u8_url || match.live_flv_url;
    if (playUrl) {
      videoPlayer.load(playUrl);
    }
  }
}
Python · requests
import requests

resp = requests.get('https://api.okzhibo.live/live/api/live/', timeout=10)
payload = resp.json()

if payload['code'] == 0:
    for match in payload['data']['list']:
        status_text = match.get('status') or '待更新'
        play_url = match.get('live_m3u8_url') or match.get('live_flv_url')

        print(
            f"{match['leagueName']} | "
            f"{match['home']['name']} "
            f"{match['home']['score']}:{match['away']['score']} "
            f"{match['away']['name']} | {status_text}"
        )

        if play_url:
            print('播放地址:', play_url)
注意事项
logo 字段为空 部分球队 logo 可能返回空字符串 "",使用时需做非空判断,展示默认占位图
时间戳单位 matchTime 为秒级 Unix 时间戳,JS 中转换需 × 1000new Date(matchTime * 1000)
直播流可用性 不要再按旧版 statusId 取值判断是否直播;更建议检查 live_m3u8_url/live_flv_url 是否为空,并结合 status 文本展示
直播接口选择 /live/api/live/ 无参可直接返回足球与篮球全部直播数据;当你只需要单一类型时,再使用 ?type=1?type=18 做过滤
请求频率 建议轮询间隔不低于 30 秒,避免对服务器造成过大压力
M3U8 vs FLV 移动端优先使用 live_m3u8_url(HLS),PC 端可使用 live_flv_url 配合 flv.js 获得更低延迟
iframe 方式
页面地址 https://www.okzhibo.live/player.html
适用场景 无需对接接口与播放器,直接嵌入到你的网站页面中
嵌入代码
HTML
<iframe
  src="https://www.okzhibo.live/player.html"
  width="100%"
  height="560"
  frameborder="0"
  allowfullscreen
></iframe>
预览
新窗口打开
自建播放器(静态页面)
当前入口 /player.html
下载打包 /player.zip
部署方式 当前项目直接使用单页入口 /player.html,文档里旧的 /player/ 目录结构已不适用
入口页面 /player.html
默认接口 https://api.okzhibo.live/live/api/live/
部署步骤
使用说明
1) 直接部署当前项目里的 /player.html
2) 浏览器访问:/player.html
3) 播放器会自动拉取足球 / 篮球直播并支持切换比赛
嵌入到页面
HTML
<iframe
  src="/player.html"
  width="100%"
  height="560"
  frameborder="0"
  allowfullscreen
></iframe>
预览
新窗口打开
插件方式(MacCMS)
当前状态 本项目当前未包含 live.zip/live/README.md 等插件发布文件,旧文档入口已下线
替代方案 如需现成页面,优先使用本站的 /player.html 或直接调用上方 API 接口自行接入
说明
当前提示
当前仓库未提供可直接下载的 MacCMS 插件包。

如果你需要后台插件化接入,建议:
1) 优先基于 `/live/api/live/` 做服务端代理;只需要单一类型时再使用 `/live/api/live/?type=1|18`
2) 在你自己的 CMS / 插件系统里做缓存与模板渲染
3) 前端播放器可继续复用 `/player.html` 的交互逻辑