[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$f2ixx3pnolysv9":3},{"code":4,"message":5,"data":6,"timestamp":26},10000,"success",{"full_name":7,"position":8,"description":9,"language":10,"stars":11,"forks":12,"stars_gained":13,"age_days":14,"hn_threads":15,"one_liner":16,"summary_md":17,"topic":18,"github_topics":21,"license":22,"homepage":23,"updated_at":24,"history":25},"anITer\u002Futv",18,"Android iptv player for China Uniom","Java",79,22,14,6,[],"面向北京联通 IPTV 的 Android 直播播放器，内置组播代理、MP2\u002F杜比音频与频道巡检。","如果你有北京联通的 IPTV 宽带，又不想用运营商机顶盒，而是想在 Android TV 盒子或手机上直接看直播，这个项目就是冲这个场景做的。它的边界很窄：内置频道表是北京联通的组播服务，不是通用 IPTV 客户端。\n\n## 解决什么问题\n\n用户想在自己已有的设备上看运营商直播频道，包括 4K 央视和北京卫视等。常见路径是先在路由器上跑 udpxy，把组播 RTP 转成 HTTP，再用播放器打开；路由器没装 udpxy，或者光猫 IPTV 口直接接盒子时，播放就断掉。换台时播放器从 GOP 中间切入，还容易出现开头几秒不正常。uTV 的做法是把组播转 HTTP 的代理放进应用里，并重写流处理流程，于是同一个应用可以走路由器 udpxy、走自己的本地网关，或者直接加入组播。最终得到的是直播播放，以及一个能记录哪些频道真正可用的扫描界面。\n\n## 有什么不同\n\n核心机制是基于 ijkplayer 的下载器与解码器池化。换台时不是拆掉播放器重建，而是回收并复用解码器实例，同时把流对齐到 PAT、PMT、首个视频 IDR 帧和 PTS 相同的音频帧。这一点最有意思：README 把换台开头几秒的半速播放归因于切在关键帧之间，并称这种对齐能解决它。播放器内置本地代理、外部 udpxy 不可达时自动回退，这在播放器应用里也不常见，等于把通常放在路由器上的工作挪到了 Android 设备上。\n\n音频是另一个差异点。打包的 ijkplayer 库在四种 ABI 上开启了 MP2 解码，另有独立路径把 AC-3\u002FE-AC-3 音轨交给 Android 硬件 MediaCodec 和 AudioTrack，并带 HDMI 直通回退。代价是复杂度：三种传输模式、两个播放内核、硬解与软解开关、多种渲染视图，都意味着更多设置需要调对。README 的原生巡检模式还依赖 Shell 工具链，内置频道数据来自另一个项目，列表是否及时更新不是这个应用的职责。\n\n## 谁值得试\n\n比较合适的是北京联通 IPTV 用户，手上有 Android TV 盒子，能配置路由器或绕过它，并且愿意调 udpxy 或代理设置直到画面出来。内置扫描界面尤其适合想确认频道是否可达、实际编码和分辨率是什么的人。不合适的是不在该运营商覆盖范围内的用户，因为频道表和组播地址都是北京联通专用的。想要开箱即用通用播放器的人也不适合：README 的配置前提是熟悉 udpxy 地址、组播网段和侧载 APK。如果路由器上已经跑着 udpxy，走这条文档写明的路径就可以完全不用本地代理。\n\n## 使用条件与边界\n\n系统要求是 Android 5.0 以上（minSdk 21，compileSdk 34），构建需要 JDK 8+ 和 Android SDK；README 给出了 Gradle 命令，部署通过 `adb install` 完成。更实际的要求是网络拓扑：外部 udpxy 地址可达，或者应用能绑定 IPTV 专网网卡来跑本地代理，或者设备网络支持 IGMP 直接收组播。三者都不满足就没有可播的流。APK 内置 arm64-v8a、armeabi-v7a、x86、x86_64 四种 ABI 的 ijkplayer\u002FFFmpeg 原生库，在老盒子上的体积和 ABI 覆盖需要考虑。\n\n日常维护主要围绕频道表和代理地址。内置 M3U 来自上游 bj-unicom-iptv 项目的快照，频道会变，扫描导出流程存在的原因就是可用性会漂移。这里没有独立的内容服务或订阅管理，README 也没有描述托管的频道源，所以频道失效时需要重新扫描导出。构建和安装说明见[项目 README](https:\u002F\u002Fgithub.com\u002FanITer\u002Futv\u002Fblob\u002Fmain\u002FReadMe.md)。\n\n## HotRepo 点评\n\n2026-10-25 的记录显示，仓库当时只有 6 天，总 star 79，在 Java 新项目榜（不是总榜）排 #20。这只是跨两天样本里的一个带日期快照，无法判断后续走势。真正该先确认的是你的网络路径（udpxy、本地代理网卡或直接组播）是否对得上文档中的某一种模式，而不是默认 udpxy 地址在你的路由器上就能用。",{"slug":19,"name":20},"media","多媒体与设计",[],"MIT",null,"2026-10-25T03:18:28Z",[],1792915117]