336 lines
11 KiB
Markdown
336 lines
11 KiB
Markdown
# 广播电台 / 电视 / 播客 开放平台接入方案备忘录
|
||
|
||
> 最后更新:2026-05-08 | 用途:U-Desk 生态链接 — 音频流媒体模块可行性评估
|
||
|
||
---
|
||
|
||
## 一、平台总览对比
|
||
|
||
| 平台 | 类型 | 费用 | 中文内容 | 桌面端适配 | 合规性 | 接入难度 | 评级 |
|
||
|------|------|------|----------|------------|--------|----------|------|
|
||
| **Radio Browser API** | 国际电台 | 免费 | 中 | 极高(RESTful) | 高 | 极低 | **A** |
|
||
| **Apple iTunes Search API** | 播客索引 | 免费 | 高 | 极高(HTTP) | 高 | 低 | **A-** |
|
||
| **喜马拉雅开放平台** | 国内音频 | 商务合作 | 极高 | 中低(Web嵌入) | 高 | 高 | B- |
|
||
| **蜻蜓FM开放平台** | 国内音频 | 商务合作 | 极高 | 低 | 高 | 高 | C+ |
|
||
| **CCTV 嵌入** | 电视 | 不定 | 极高 | 中 | 中风险 | 中 | C- |
|
||
| **TuneIn API** | 国际电台 | 不开放 | 低 | 无 | - | - | D |
|
||
| **荔枝FM / 云听** | 国内音频 | 无API | 高 | 无 | - | - | D |
|
||
| **IPTV/电视直播** | 电视 | 无合法方案 | 极高 | 无 | - | - | D |
|
||
|
||
---
|
||
|
||
## 二、Radio Browser API(强烈推荐 ⭐⭐⭐)
|
||
|
||
### 基本信息
|
||
- **官网**:https://www.radio-browser.info
|
||
- **API 地址**:https://api.radio-browser.info
|
||
- **协议**:开源项目(GitLab),可自由用于免费和商业软件
|
||
- **版本**:v0.7.44(2026-05-08 验证:API 在线,`/json/stats` 端点可能已迁移,但核心 station 接口正常)
|
||
- **当前规模**:27,000+ 可用电台 / 80+ 国家 / 59+ 语言
|
||
- **验证状态**:✅ **已验证在线** — `de1.api.radio-browser.info/json/stations/topclick` 返回实时数据(2026-05-08 15:26 UTC)
|
||
|
||
### 核心能力
|
||
|
||
#### 列表类接口
|
||
| 接口 | 说明 |
|
||
|------|------|
|
||
| `/json/countries` | 按国家列出电台 |
|
||
| `/json/codecs` | 编码格式列表 (MP3/AAC+/OGG) |
|
||
| `/json/states` | 按州/省列出 |
|
||
| `/json/languages` | 语言列表 (含 ISO 639 代码) |
|
||
| `/json/tags` | 标签/流派列表 (jazz/pop/rock/news) |
|
||
| `/json/stations` | 全部电台列表 |
|
||
|
||
#### 搜索类接口
|
||
| 接口 | 说明 |
|
||
|------|------|
|
||
| `/json/stations/search` | **高级搜索**:name/country/language/tag/codec/bitrate/geo 多维度组合查询 |
|
||
| `/json/stations/byname/{term}` | 按名称搜索 |
|
||
| `/json/stations/bycountry/{code}` | 按国家搜索 (`CN`=中国) |
|
||
| `/json/stations/bylanguage/{lang}` | 按语言搜索 (`chinese`) |
|
||
| `/json/stations/bytag/{tag}` | 按标签搜索 |
|
||
|
||
#### 排行类接口
|
||
| 接口 | 说明 |
|
||
|------|------|
|
||
| `/json/stations/topclick` | 最热门电台 |
|
||
| `/json/stations/topvote` | 最高评分电台 |
|
||
| `/json/stations/lastclick` | 最近被点击的 |
|
||
|
||
#### 交互类接口
|
||
| 接口 | 说明 |
|
||
|------|------|
|
||
| `/json/url/{uuid}` | 点击计数 + 获取播放 URL |
|
||
| `/json/vote/{uuid}` | 为电台投票 |
|
||
| `/json/add` | 添加新电台到数据库 |
|
||
|
||
#### 运维类接口
|
||
| 接口 | 说明 |
|
||
|------|------|
|
||
| `/json/stats` | 服务器统计 |
|
||
| `/json/servers` | 镜像服务器列表(可自建) |
|
||
| `/json/config` | 服务器配置 |
|
||
|
||
### 数据结构关键字段
|
||
```json
|
||
{
|
||
"stationuuid": "唯一ID",
|
||
"name": "电台名称",
|
||
"url": "原始流地址",
|
||
"url_resolved": "已解析的直接播放URL ← 核心字段",
|
||
"homepage": "电台主页",
|
||
"favicon": "图标",
|
||
"tags": ["标签"],
|
||
"countrycode": "CN",
|
||
"language": "chinese",
|
||
"codec": "MP3",
|
||
"bitrate": 128,
|
||
"lastcheckok": true,
|
||
"clickcount": 24小时点击量
|
||
}
|
||
```
|
||
|
||
### 输出格式
|
||
JSON / XML / CSV / M3U / PLS / XSPF / TTL(7种!)
|
||
|
||
### U-Desk 集成方式
|
||
```
|
||
Go 后端 → HTTP GET radio-browser API → JSON → Vue 展示电台列表
|
||
↓ 点击播放
|
||
url_resolved 字段 = 直接可播放的 MP3/AAC 流
|
||
```
|
||
|
||
- **Go 有现成库**:`goradios`
|
||
- **零成本、零审核、零依赖**
|
||
- 工作量估算:2-3天(含 UI)
|
||
|
||
### 特别优势
|
||
- 支持按 `countrycode=CN` 筛选中文电台
|
||
- 用户可添加自定义电台(`/json/add`)
|
||
- 可自建镜像服务器(完全自主可控)
|
||
- 支持 M3U/PLS 导出(兼容各类播放器)
|
||
|
||
---
|
||
|
||
## 三、Apple iTunes Search API — 播客发现(推荐 ⭐⭐⭐)
|
||
|
||
### 基本信息
|
||
- **文档**:https://affiliate.itunes.apple.com/resources/documentation/itunes-store-web-service-search-api/ (⚠️ 国内访问可能超时,需翻墙;API 端点本身通常可达)
|
||
- **API 端点**:`https://itunes.apple.com/search` 和 `https://itunes.apple.com/lookup`
|
||
- **费用**:免费(速率限制约 20次/分钟)
|
||
|
||
### 核心能力
|
||
|
||
#### 搜索参数
|
||
| 参数 | 说明 | 示例 |
|
||
|------|------|------|
|
||
| `term` | 搜索关键词 | `news`, `故事`, `科技` |
|
||
| `media` | 媒体类型 | `podcast` |
|
||
| `entity` | 实体类型 | `podcast`, `podcastAuthor` |
|
||
| `country` | 国家代码 | `cn` |
|
||
| `limit` | 返回数量 | 25 |
|
||
|
||
#### 使用示例
|
||
```
|
||
# 搜索中文新闻播客
|
||
GET https://itunes.apple.com/search?term=news&country=cn&media=podcast&limit=25
|
||
|
||
# 搜索特定作者
|
||
GET https://itunes.apple.com/search?term=故事&entity=podcastAuthor&country=cn
|
||
```
|
||
|
||
#### 返回数据关键字段
|
||
```json
|
||
{
|
||
"collectionName": "播客名称",
|
||
"artistName": "作者",
|
||
"feedUrl": "RSS订阅地址 ← 核心:获取音频的入口",
|
||
"artworkUrl60": "小封面",
|
||
"artworkUrl100": "大封面",
|
||
"releaseDate": "发布日期",
|
||
"primaryGenreName": "分类"
|
||
}
|
||
```
|
||
|
||
### 播放流程
|
||
```
|
||
iTunes Search API → 获取 feedUrl (RSS)
|
||
↓
|
||
解析 RSS XML → 提取 episode 列表
|
||
↓
|
||
enclosure URL → 音频播放
|
||
```
|
||
|
||
### U-Desk 集成方式
|
||
1. Go 后端调用 Search API → 获取播客列表和 RSS 地址
|
||
2. 解析 RSS XML 提取 episode 音频 URL
|
||
3. 前端播放器播放音频流
|
||
4. 实现 20次/分钟速率限制的客户端缓存
|
||
|
||
### 中文播客覆盖
|
||
- iTunes Podcast 目录包含大量中文播客(大陆/台湾/香港创作者)
|
||
- 覆盖新闻/故事/科技/商业/教育等各领域
|
||
|
||
### 工作量估算:3-4天(含 RSS 解析逻辑)
|
||
|
||
---
|
||
|
||
## 四、喜马拉雅开放平台(备选 ⭐⭐)
|
||
|
||
### 基本信息
|
||
- **官网**:https://open.ximalaya.com/
|
||
- **定位**:国内最大音频分享平台(纽交所上市)
|
||
- **商务热线**:(021)50179077-8806 / -8803
|
||
|
||
### 核心能力
|
||
- 音频内容分发 SDK/API
|
||
- 支持移动应用、智能硬件、车载、网页/小程序接入
|
||
- 内容类型:有声书、课程、播客、相声评书、新闻资讯、亲子儿童、景点导览
|
||
- AI 制作专区
|
||
|
||
### 接入方式
|
||
| 方式 | 说明 |
|
||
|------|------|
|
||
| 移动应用 SDK | Android/iOS/Flutter |
|
||
| 智能硬件 SDK | IoT 设备 |
|
||
| **网页/小程序 JS SDK** | ← U-Desk 的可行路径 |
|
||
|
||
### 费用模式
|
||
- **商务合作模式**,需"立即入驻"申请后商谈
|
||
- 通常为分成或流量付费模式
|
||
- 有运营中心(内容中心/数据中心/活动中心)
|
||
|
||
### U-Desk 适配路径
|
||
通过 Wails WebView 加载喜马拉雅 H5/JS SDK 播放器
|
||
- 技术层面工作量:1-2天
|
||
- 商务层面周期不确定(需审批)
|
||
|
||
### 注意事项
|
||
- 开发者文档页面部分返回 404,生态维护程度一般
|
||
- 但"网页/小程序"接入通道确实存在
|
||
|
||
---
|
||
|
||
## 五、蜻蜓FM开放平台(低优先级)
|
||
|
||
### 基本信息
|
||
- **官网**:https://open.qingting.fm
|
||
- 能力:SDK/API/H5嵌入式播放器
|
||
- 内容:直播流、点播、有声书、相声评书、全国电台
|
||
|
||
### 问题
|
||
- 主要面向 B 端大客户(车企、智能硬件厂商)
|
||
- 对独立桌面应用开发者门槛较高
|
||
- 文档需入驻后才可查看完整内容
|
||
- Windows 桌面端无原生支持
|
||
|
||
### 结论:优先级低于喜马拉雅
|
||
|
||
---
|
||
|
||
## 六、电视/IPTV(当前不可行)
|
||
|
||
### CCTV 央视网
|
||
- **无公开开发者 API**
|
||
- 可能存在 iframe 嵌入方案(灰色地带)
|
||
- 版权严格管控,合规风险高
|
||
- 评级:C-(仅作为外部链接实验)
|
||
|
||
### 各省市 IPTV
|
||
- 三大运营商分别运营,无统一 API
|
||
- 专有传输协议(IGMP/RTP/RTSP),需专用机顶盒
|
||
- **完全不存在合法的桌面端接入途径**
|
||
- 评级:D
|
||
|
||
### EPG 数据源(国际参考)
|
||
- [epg-guide.com](https://epg-guide.com):免费 EPG 数据,XMLTV 格式
|
||
- 仅覆盖欧洲(意大利为主),不支持中文电视台
|
||
- 技术成熟但无中文内容,参考价值有限
|
||
|
||
### 结论:**电视模块暂不纳入 MVP**
|
||
|
||
---
|
||
|
||
## 七、荔枝FM / 云听
|
||
|
||
| 平台 | 状态 | 原因 |
|
||
|------|------|------|
|
||
| 荔枝FM (lizhi.fm) | ❌ 无公开 API | 官网无 developer/open 入口 |
|
||
| 云听 (yunting.fm) | ❌ 服务不稳定 | 访问时 500 错误,且无 API |
|
||
|
||
---
|
||
|
||
## 八、最终推荐组合方案
|
||
|
||
### 第一优先级(MVP 即可上线)
|
||
|
||
| 平台 | 用途 | 工作量 | 成本 |
|
||
|------|------|--------|------|
|
||
| **Radio Browser API** | 全球网络电台收听 | 2-3天 | 免费 |
|
||
| **iTunes Search API** | 播客发现与播放 | 3-4天 | 免费 |
|
||
|
||
### 第二优先级(后续迭代)
|
||
|
||
| 平台 | 用途 | 工作量 | 前置条件 |
|
||
|------|------|--------|----------|
|
||
| **喜马拉雅 Web 嵌入** | 国内有声书/课程 | 1-2天技术 + 商务周期 | 商务合作审批 |
|
||
| **央视网链接** | 电视直播快捷入口 | 0.5天 | 关注版权政策 |
|
||
|
||
### 不推荐
|
||
- ~~TuneIn~~ — 不开放第三方 API
|
||
- ~~IPTV/电视直播~~ — 无合法接入途径
|
||
- ~~荔枝FM/云听~~ — 无可用 API
|
||
|
||
---
|
||
|
||
## 九、U-Desk 广播/播客模块架构建议
|
||
|
||
```
|
||
U-Desk 生态链接 - 音频流媒体模块
|
||
├── RadioService (Go)
|
||
│ ├── StationSearch() → Radio Browser /stations/search
|
||
│ ├── TopStations() → /stations/topclick
|
||
│ ├── StationsByCountry() → /stations/bycountry/CN
|
||
│ ├── StationsByTag() → /stations/bytag/{tag}
|
||
│ └── PlayStation() → /json/url/{uuid} → url_resolved 直播流
|
||
│
|
||
├── PodcastService (Go)
|
||
│ ├── SearchPodcasts() → iTunes Search API (media=podcast)
|
||
│ ├── GetPodcastDetail() → iTunes Lookup API
|
||
│ ├── ParseFeed() → RSS XML → episode 列表
|
||
│ └── PlayEpisode() → enclosure URL → 音频播放
|
||
│
|
||
├── AudioPlayer (Vue Component)
|
||
│ ├── RadioPanel.vue → 电台浏览/搜索/播放/收藏
|
||
│ ├── PodcastPanel.vue → 播客发现/订阅/播放/下载
|
||
│ └── MiniPlayer.vue -> 底部栏迷你播放器
|
||
│
|
||
└── QuickLinks (Vue)
|
||
└── LinkCard.vue → 央视网/喜马拉雅等外部链接卡片
|
||
```
|
||
|
||
### 与文件管理器的融合点
|
||
- 浏览文件时底部迷你播放器持续播放电台/播客
|
||
- 收藏夹统一管理(收藏的电台/播客/文件混合展示)
|
||
- 右键菜单:"搜索相关播客内容"
|
||
|
||
---
|
||
|
||
## 十、合规要点总结
|
||
|
||
| 平台 | 合规要求 |
|
||
|------|---------|
|
||
| Radio Browser | 开源协议友好,商用无限制,仅需合理 User-Agent |
|
||
| iTunes API | 遵守 Apple 使用条款(速率限制 + 展示要求) |
|
||
| 喜马拉雅 | 必须走正式商务流程,签订合作协议 |
|
||
| 央视网 | 以外部链接方式最安全,避免深度集成 |
|
||
|
||
---
|
||
|
||
*Sources:*
|
||
- *Radio Browser: https://www.radio-browser.info / https://api.radio-browser.info*
|
||
- *iTunes Search API: https://affiliate.itunes.apple.com/resources/documentation/itunes-store-web-service-search-api/*
|
||
- *喜马拉雅开放平台: https://open.ximalaya.com/*
|
||
- *蜻蜓FM开放平台: https://open.qingting.fm*
|
||
- *EPG Guide: https://epg-guide.com*
|