You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
FONGMITV/README.md

135 lines
4.6 KiB

# 開發者文件
基於 [CatVod](https://github.com/CatVodTVOfficial/CatVodTVJarLoader) 的開源 Android 影音應用程式,同時支援 **Android TV 大螢幕**與**手機**兩種使用情境,並且透過外部配置靈活擴展內容。
[討論群組](https://t.me/fongmi_official) | [發布頻道](https://t.me/fongmi_release)
[![Star History Chart](https://api.star-history.com/svg?repos=FongMi/TV&type=Date)](https://www.star-history.com/#FongMi/TV&Date)
---
## 目錄
- [專案架構](#專案架構)
- [播放器](#播放器)
- [點播功能](#點播功能)
- [直播功能](#直播功能)
- [爬蟲引擎](#爬蟲引擎)
- [網路功能](#網路功能)
- [DLNA 投放](#dlna-投放)
- [遠端控制](#遠端控制)
- [配置說明](#配置說明)
- [延伸閱讀](#延伸閱讀)
---
## 專案架構
| 項目 | 值 |
|-----------|-------------------------------|
| Package | `com.fongmi.android.tv` |
| minSdk | 24(Android 7.0 Nougat) |
| targetSdk | 28(Android 9.0 Pie) |
| ABI | `arm64-v8a`、`armeabi-v7a` |
| Flavor | `leanback`(電視版)、`mobile`(手機版) |
```
TV/
├── app/ 主應用程式(含兩套 UI Flavor)
├── catvod/ 爬蟲抽象層(Spider 介面、OkHttp 網路棧)
├── quickjs/ QuickJS JavaScript 引擎
├── chaquo/ Chaquopy Python 引擎
```
`app/src/main/` 為兩個版本共用的業務邏輯,`app/src/leanback/` 與 `app/src/mobile/` 各自實作對應 UI。
---
## 播放器
- **核心**:ExoPlayer(Media3)+ FFmpeg 軟解,硬解 / 軟解自動降級切換
- **渲染**:SurfaceView / TextureView
- **DRM**:Widevine、PlayReady、ClearKey,支援 `#KODIPROP` 宣告
- **彈幕**:DanmakuFlameMaster,與播放時間軸精確同步,支援遠端推送
- **字幕**:SRT / SSA / ASS 外掛字幕、系統 CaptioningManager、遠端即時注入
- **其他**:倍速、多縮放比例、畫中畫(PiP)、背景音訊、片頭 / 片尾自動跳過
---
## 點播功能
- 多站點分類瀏覽,Filter 篩選(年份 / 地區 / 類型等)
- 多站點**並行搜尋**,關鍵字自動繁轉簡提升相容性
- 播放失敗自動換源:解析器 → 線路 → 搜尋其他站 → 下一站點
- 觀看記錄(保留 60 天)、收藏、無痕模式
- 電視版使用遙控器操作;手機版支援手勢(亮度 / 音量 / 進度)、上下滑切集、螢幕旋轉與鎖定
---
## 直播功能
- 支援 M3U/M3U8、TXT(`#genre#` 分組)、JSON 三種直播源格式
- **EPG**:XMLTV 格式(支援 `.gz`),每 6 小時自動刷新
- **追看 / 時移**:`append`、`pltv` 等多種類型
- 頻道收藏、隱藏分組密碼保護
- 特殊引擎:TVBus、ForceTech
---
## 爬蟲引擎
支援三種語言撰寫爬蟲:
- Java JAR(DexClassLoader)
- JavaScript(QuickJS)
- Python(Chaquopy)
透過 `api` 欄位指定爬蟲,`ext` 欄位傳入初始化參數。完整 API 規格見 [SPIDER.md](docs/SPIDER.md)。
---
## 網路功能
- **DoH**:DNS over HTTPS,支援 Bootstrap IP
- **代理**:HTTP / HTTPS / SOCKS4 / SOCKS5,依 host 正則規則動態選擇
- **hosts**:DNS 解析覆蓋,支援萬用字元 `*`
- **CORS 注入**:依 host 規則在回應中注入自訂標頭
- **廣告攔截**:`ads` 黑名單,符合域名直接攔截
- **WebView 嗅探**:Sniffer 以 regex 攔截媒體 URL;支援 UA 偽裝
---
## DLNA 投放
- **DMC(投放端)**:手機版,掃描區域網路 DLNA 設備並投放媒體
- **DMR(被投放端)**:電視版,作為 DLNA Renderer 接收其他設備投放
使用 Cling 2.1.1(UPnP),支援 play / pause / stop / seek 控制。
---
## 遠端控制
應用啟動後綁定本地 HTTP 伺服器(NanoHTTPD),埠號從 **9978** 起自動偵測至 **9998**,可用於播放控制、推送字幕 / 彈幕、多裝置同步等。完整端點說明見 [LOCAL.md](docs/LOCAL.md)。
---
## 配置說明
VOD 配置為應用主要入口,透過 URL 或本地路徑載入,頂層欄位定義:
- 點播站點(`sites`)、解析規則(`parses`)
- 直播來源(`lives`)
- 網路設定(`doh`、`proxy`、`hosts`、`ads`)
Live 配置可內嵌或獨立存放。完整欄位說明見 [CONFIG.md](docs/CONFIG.md)。
---
## 延伸閱讀
| 文件 | 說明 |
|-----------------------------|----------------------|
| [CONFIG.md](docs/CONFIG.md) | VOD / Live 完整配置欄位說明 |
| [SPIDER.md](docs/SPIDER.md) | Spider 所有方法規格與回傳格式 |
| [LOCAL.md](docs/LOCAL.md) | 本地 HTTP API 所有端點完整說明 |