公开资源很多,但能“点开就播”的播放器只有自己做

56 阅读3分钟

在一切都讲究订阅制的当下,我偏偏想自己折腾一款“看片自由”的播放器。
原因很简单:网上的免费公开源确实多,但像夸克这类开源播放器基本是“抓到什么就播什么”,没有做源调度或缓存优化。晚上 prime time 一到,播放就像买彩票——中一次清晰流畅都算运气好。于是,这篇文章算是一个真实的折腾复盘,看看我如何把零散资源拼成一个能在手机上稳定播放的 LibreTV。


情景:资源多≠体验好

那些公开接口就像海边的贝壳,随便捡。问题是:

  1. 站点格式各不相同,播放器只能一个个“手动换源”;
  2. 夜间同时在线的人太多,服务器直接被压趴;
  3. 用户只想“点开就播”,却被迫做半个采集工程师。

你是经常卡在“能找到资源但播不了”,还是“播放器太多反而不知道用哪个”?欢迎留言吐槽。


任务:手机上实现“看片自由”

我给自己设了三个小目标:
① 把这些公开源聚在一个 App 里,尽量免配置;
② 晚上拥堵时能自动换到还能播的源;
③ 搜索和切换要足够顺滑,让折腾党愿意留下来继续“白嫖”。

Snipaste_2025-11-27_15-16-46.png

行动:先解决“慢、卡、乱”

  1. 并发搜索,谁先返回谁露脸
    VideoRepository 写了一个 searchVideosStreaming,用 channelFlow + async 同时向多个源发请求。只要有一个源先有结果,就推给 SearchActivity,避免“等最慢的那一个”。ViewModel 这边也改成流式处理,首批有结果后再写入搜索历史,避免空记录。

  2. 小交互也要爽
    SearchActivity 里就算只命中一个源,也照样显示来源列表、让用户点着切剧集;按键状态、空态提示、加载条都跟多源情况统一体验。
    MainActivity 的电影/电视剧标签改成加粗 + 下划线,没有厚重背景,搭配子分类自动收起,看起来更轻。

  3. 砍掉历史包袱
    扫了一轮资源引用,删了 40 多个完全没用到的 drawable,以及没用的模板测试和空壳 Fragment,包体和 IDE 提示都清爽许多。

提问 2|如果可以选择,你更想要“功能全,但偶尔卡顿”还是“功能少,但特别稳”的播放器?

Snipaste_2025-11-27_15-17-11.png

结果:能播、能忍、能继续折腾

  • 搜索体验快了:通常 1–2 个源一返回就能看到结果,用户不必盯着 loading 发呆。
  • 夜间不那么怕:某个源抽风,UI 还能提示“其他源加载中”,起码心理有底。
  • 包体小了:干掉的资源不止省空间,也让后续维护简单。
  • 夸克式“裸资源”虽然也能播,但没做调度优化还是容易卡;LibreTV 至少让我看到“原来免费资源也能被好好使用”。

如果是你掌舵下一版,会优先多接几个源,还是做更聪明的推荐/缓存?

Snipaste_2025-11-27_15-17-29.png

写给同样想折腾的人

  1. 别押注单一源:哪怕只为自己用,数据层也要设计好并发和降级,UI 才不用天天返工。
  2. 保留可玩性:喜欢折腾的用户宁愿多点几下,也希望手上有“瑞士军刀”,别把所有入口封死。
  3. 定期体检:老旧 drawable、测试模板和配置文件,能删就删,不要让未来的你背锅。

最后,如果你也在追求“免费看剧自由”,欢迎在评论区分享接口、换坑经验,或者一起想想下一个可折腾的点。免费的资源很多,但让它们真正好用,才是最有趣的地方。