mirror of https://github.com/FongMi/TV.git
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.
135 lines
4.6 KiB
135 lines
4.6 KiB
# 開發者文件
|
|
|
|
基於 [CatVod](https://github.com/CatVodTVOfficial/CatVodTVJarLoader) 的開源 Android 影音應用程式,同時支援 **Android TV 大螢幕**與**手機**兩種使用情境,並且透過外部配置靈活擴展內容。
|
|
|
|
[討論群組](https://t.me/fongmi_official) | [發布頻道](https://t.me/fongmi_release)
|
|
|
|
[](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 所有端點完整說明 |
|
|
|