惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
B
Blog RSS Feed
宝玉的分享
宝玉的分享
腾讯CDC
博客园_首页
T
Tailwind CSS Blog
月光博客
月光博客
博客园 - 司徒正美
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
M
MIT News - Artificial intelligence
A
About on SuperTechFans
云风的 BLOG
云风的 BLOG
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
有赞技术团队
有赞技术团队
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
大猫的无限游戏
大猫的无限游戏
MongoDB | Blog
MongoDB | Blog
博客园 - 聂微东
V
Visual Studio Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
SecWiki News
SecWiki News
美团技术团队
P
Privacy International News Feed
H
Help Net Security
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Microsoft Security Blog
Microsoft Security Blog
Know Your Adversary
Know Your Adversary
Y
Y Combinator Blog
D
DataBreaches.Net
Project Zero
Project Zero
T
The Blog of Author Tim Ferriss
Cyberwarzone
Cyberwarzone
C
Cybersecurity and Infrastructure Security Agency CISA
C
Cisco Blogs
S
Schneier on Security
G
GRAHAM CLULEY
博客园 - 三生石上(FineUI控件)
Cisco Talos Blog
Cisco Talos Blog
小众软件
小众软件
Forbes - Security
Forbes - Security
D
Docker
T
Tenable Blog
S
Secure Thoughts
雷峰网
雷峰网
S
Security @ Cisco Blogs
T
The Exploit Database - CXSecurity.com
The Cloudflare Blog
博客园 - 【当耐特】
Spread Privacy
Spread Privacy
阮一峰的网络日志
阮一峰的网络日志

澄沨的漫游茶记

岁暮杂记 在 KOReader 上显示直排文本 虎落平阳:TNO 美国罗伯特·F·肯尼迪线·前篇 烟火·乙巳 蜀都行纪 实习日 事故小记 烟火·甲辰 藏地行纪 元旦杂记 浴火重生:TNO 东方红西北国防阵线党权线·后篇 太阳旗之下:TNO 东方红西北国防阵线党权线·前篇 尚在人间:TNO 乌克兰-苏维埃社会主义共和国线 论 AList 的滥用:多平台串联搭建个人影音-番剧流媒体服务 俄罗斯已逝:TNO 俄罗斯科米-神俄线·后篇 紫日高悬:TNO 俄罗斯科米-神俄线·前篇 The Pure WINDOWS Project: 使用 Windows Sandbox 隔离腾讯系软件的笔记 廣東手艺人:TNO 广东国索尼-长江实业线 使用 PaaS 服务部署 umami 统计工具的笔记 柏林春晓:TNO 德国施佩尔左线 闲话 COMICUP 与敝站 解决小米手机在 fastboot 模式下不被 Windows 识别的问题 贺正·癸卯 MIUI 下观看 Netflix 等流媒体时 Widevine DRM L1 认证失效之解决 崇明骑行纪事·合 磊哥小传 崇明骑行纪事·转 让 Hyper-V 虚拟机支持调用 USB 摄像头 崇明骑行纪事·起承 炎夏小憩 飞哥小传 さよなら、WordPress 使用 Cloudflare Workers 加速甲骨文存储桶 博客流浪纪事 moe-counter-cf:将萌萌计数器部署到 Cloudflare Workers 烟火·迪士尼 红十字救护员培训小记 迁移到了狗云 探索优雅纯粹的追番体验:蜜柑计划 + Resilio Sync Moe-counter: 给网站装上多种风格可选的萌萌计数器 疫情,在下的朋友圈拾遗 Postcrossing 初探小记 解决 Github 同步复刻上游仓库时冲突的问题 使用甲骨文免费云服务器搭建 frp 内网穿透工具的笔记 「在下」的两周年 The Pure WINDOWS Project: Hyper-V 虚拟机使用笔记 The Pure MIUI Project: 小米 10 刷机笔记 烟火·壬寅 贝恩小传「大盛り」 非法侵入住宅罪之浅究 碧蓝航线舰娘原型考据「铁血驱逐篇」 贰拾 火警纪事 观 EDG 夺冠有感 华硕路由器实现远程唤醒局域网设备的笔记 军训随笔 夏日蓝调 在 Wordpress 博客里创建彩色标签云页面的笔记 贝恩小传 迁移到了 Bandwagon Host 杂诗二首 来给 WordPress 添加一个书单页面吧 乡影随摄 从刑法的报复主义论中国刑法的发展 漫谈二次元的「破圈」 浅谈「FBI WARNING」 とある魔都の ACGN 巡礼目録 桜色 在 WordPress 上添加 moc3 Live2d 看板娘的超简单方法 COVID-19 疫苗接种全纪录 Steam 转区小记 元旦 更新主题为 Sakurairo 华为 HarmonyOS / EMUI 安装 GMS 谷歌框架的笔记 下载没有下载权限的钉钉直播回放的笔记 Re:从零开始的 Windows 简明优化指南 Re:从零开始的计算机使用指南 使用 ADB 工具箱卸载手机预装应用 基于宝塔面板的 Google Drive 百宝箱搭建笔记 The Story of the Snake | 蛇纪事 参议院纪事 箱轮纪事
上海电信 SDN 网关全局域网皆可收看 IPTV 的实现
澄沨 · 2023-10-02 · via 澄沨的漫游茶记

自去年卡塔尔世界杯开始,在下开始逐渐有了观看在线 IPTV 直播源的需求。后来,在下经由 Formula 1: Drive to Survive 这部纪录片小小入了 F1 的坑,每逢大奖赛周末,也或多或少想着关注一下比赛的情况,然而 F1 大奖赛分布于全球各地,比赛的时间落在北京时间的凌晨一两点也相当正常,在下很难做到在这个时间点爬起来去开电视(在下比较爱看五星体育的解说,央视频和腾讯体育的解说氛围不足),因而观看在线 IPTV 直播源的需求与日俱增了。

当然,Github 上存在不少公开的 IPTV 直播源列表,不过,它们当中的大部分都存在重量而不重质的问题,这也不是说没有佼佼者存在,例如 fanmingming 大佬分享的直播源,无论从速度、稳定性还是台标、节目单的适配方面皆属翘楚。只是在下接触到该直播源时,其已经把免费的 Vercel 流量给用完,作者不得已临时将其搭建在了一个树莓派上运作(当然,只是临时,该项目直到目前还是相当稳定的,在下也相当推荐),可靠性到底还是令在下担忧,遂决定自己来研究一下 IPTV 直播源的问题。

关于上海电信 IPTV

在下家中有一条上海电信的宽带入户,附带 IPTV,光猫是电信配装的 SDN 网关,没有改桥接(实际上有无桥接对本实现方案并无影响),只在用于管理 SDN 网关的网络管家 APP 处设置了 DMZ 到路由器。光猫的四个 LAN 口都融合了网络业务和 IPTV 业务,无论 IPTV 盒子接在哪一个口上,都可以正常收看(实际上就算是非融合接口也无大碍)。因此,在下要做的,就是充分发挥一下这 IPTV 业务,使任一局域网设备,都能愉快地观看到 IPTV。

根据在下了解到的资料,上海电信的 IPTV 业务采用了 A/B 面结构,A 面用作鉴权、B 面则用作转发。其中,鉴权是由 SDN 网关进行的,IPTV 盒子可以获取到两个 IP 地址,多出来的一个是 23 开头的 IPTV 用专网地址;转发经由虚拟局域网 VLAN 51/85 进行,VLAN 51 实现回看服务(点播),而 VLAN 85 则实现直播服务(组播)。

利用 udpxy 服务转发 IPTV 直播流

在下不需要回看服务,只需能够观看直播服务即可,因此,只要能在一台接了 SDN 网关的局域网设备上把 VLAN 85 这一专网转发出来,就可以实现在任意局域网设备中观看 IPTV 了。此处,通常采用的方案是 udpxy,这样就可以将组播的数据流变成 TCP 协议的单播流,也避免了 IPTV 视频流在数据链路层广播。

一般来说,udpxy 服务运行在路由器上就好,当然其他接了 SDN 网关的 NAS 之类的设备也是可以的。主流的路由器系统都支持运行 udpxy 服务,这里以在下家中路由器的 Padavan 系统为例,其余路由器系统诸如 Openwrt 等,网上业有不少配置方案,故在此不做赘述:

进入路由器管理页面,选择内部网络(LAN) - IPTV,做如下配置:

外部网络(WAN)- 端口隔离和 VLAN 过滤一栏做如下配置:

如果将来想实现在公网观看家中 IPTV,则需要去防火墙 - 通用设置 - 从外网访问路由器服务中打开允许外网访问 UDP-HTTP 代理开关,并设置外网 UDP-HTTP 代理端口

一切设置完成之后,浏览器访问 http://YOUR_ROUTER_IP:4000/status 即可看到 udpxy 服务运行状态,在 Multicast address 一栏可以看到 IPTV 的专网 IP 已经被成功获取。

这张截图中,在下有一个 Active clients,是当时在下在用手机看 CCTV-16 4K 奥林匹克频道(这一频道在 IPTV 盒子观看甚至需要付费)。

获取组播地址

实际上到上一步结束,局域网内设备就已经有了看 IPTV 直播流的能力了,只不过还缺少各个频道的组播地址,只有拥有组播地址,才能通过 http://YOUR_ROUTER_IP:4000/udp/MULTICAST_ADDRESS 这个地址来看到各个频道的直播流。以在下的 udpxy status 截图为例,其中出现的 239.45.0.12:5140 即为 CCTV-16 4K 奥林匹克频道的组播地址,也就是说,在局域网中任意支持网络视频流的播放器中输入 http://YOUR_ROUTER_IP:4000/udp/239.45.0.12:5140 即可观看到 CCTV-16 4K 奥林匹克频道的直播流了。

搜集各频道的组播地址着实是令人头疼的一件事,毕竟 IPTV 随随便便就有几十甚至上百个频道,每一个频道都有一个对应的组播地址;不过这还没完,这些组播地址还不是一成不变的,它们会随着频道的调整等种种原因发生变动,因而,维护组播地址令个人折腾 IPTV 直播流的成本上升颇高。

好在还是有人把这事给解决了,恩山无线论坛的 deny12138 大佬通过抓取机顶盒数据,实现了自动更新组播地址,甚至还附带准确的节目单等信息,并定期将信息生成数据并上传。这个组播源去除重复频道和购物频道,设置了精致的台标,还适配了 xteve 的 UDPxy 地址替换,实属不可多得。大佬发布的的原帖在此,这里附上组播源列表以及 EPG 节目单

收看 IPTV

拿到组播地址后,就可以在任意局域网设备中愉快地收看 IPTV 了,deny12138 大佬提供的源支持 xteve 的 UDPxy 地址替换,在 xteve 中就可以自动替换成自己的路由器地址正常观看了,若使用其他不具备此功能的播放器,则需要自己修改 udp://@ 字段为 http://YOUR_ROUTER_IP:4000/udp/ 才可收看。在下直接在 Github 上开了个仓库,用 Github Actions 每天自动拉取大佬的组播源,改了之后传到 Gist 上托管,这样一来就方便许多。

另外,如果想要在公网观看家中的 IPTV 视频流,也是相当简单的,只要在 YOUR_ROUTER_IP 字段处填上 DDNS 地址即可,或是使用 VPN 连回家(前提是得有公网 IP),若没有公网 IP,也可自己折腾内网穿透。

至于播放器的选择,诸如 xteve 这种专门为观看 IPTV 设计的自然最好,如果观看频次少,用 PotPlayer 观看也并非不行,只是没法观看台标和节目单而已;安卓上则可以用 Kodi、Televizo 等 APP,选择也很多;iOS 也有 APTV、iPlayTV 等应用可供选择。

最后放一张 Windows 端使用 Potplayer 观看的效果作结: