# 📺 開發者文件 基於 [CatVod](https://github.com/CatVodTVOfficial/CatVodTVJarLoader) 的開源 Android 影音應用程式,同時支援 **Android TV 大螢幕** 與 **手機** 兩種使用情境。爬蟲引擎支援 Java JAR、JavaScript、Python 三種語言,透過外部配置檔靈活擴展內容來源。 [討論群組](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 / targetSdk | 24 / 28 | | 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)。 --- ## ⚙️ 配置說明 `config.json`(VOD 配置)為應用主要入口,透過頂層欄位定義點播站點(`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 所有端點完整說明 |