Emby / Unraid / 程序开发实例 / 网络与系统 · 2023年1月20日 0

把iptv中的直播扒出来给所有带屏幕的设备用

前言

先来两张成品图。

电视上没有留下测试图片, 但是也没有问题。

为什么我要扒出来直播源呢?分析如下

优点:

  • 把平时吃灰的电视盒子利用起来。
  • 没有广告,甚至能看一些付费节目。
  • 高清,有线线路的码率和清晰度,市场上常见的直播软件是比不上的。
  • 在任何位置,任何设备上看直播,流畅不卡顿,因为这个线路是自己独享的。

缺点:

  • 加载慢一些,不能做到像电视盒子一样秒加载。
  • 在emby播放器中,相较于商业的直播源,本地源可能没有封面图,美观度下降了。这是epg信息不全导致的。 2023.1.21 更新,增加台标自动匹配, 大部分常见频道已经有了封面.

正文

笔者在两年以前就已经完成了模拟iptv,那时的iptv线路认证是ipoe 账号密码认证,不需要带Option60。当时做完之后发现直播流的码率太高, 没法使用,便搁置了。几个月前群友在群里发iptv的直播源地址,交谈之后知悉是通过udpxy代理转发了udp数据包,这种方法可以盒子和电视同时使用。但是一些地区的直播源地址是有效期的, 要获得新的有效直播源的话,需要打开电视重新拿劫持,才能拿到源,很不方便。

最近更新了解码的设备,应该能处理高码率直播源了,所以重新尝试。

首先使用机顶盒自带的抓包工具抓包,网上教程很多不再赘述。抓包后导入wiresharp进行分析。笔者所在省份进行了升级,开始拒绝非官方进行抓包,但是可以有其他办法解决。

抓包数据可以看出, 认证方式已经不是账号密码认证,变成了很多省份已经普及的Option60认证。

同时还有一些其他的数据, 但是有用的字段只有几个,可以参考这篇帖子:

https://www.right.com.cn/FORUM/forum.php?mod=viewthread&tid=3184275

https://github.com/luckyyyyy/blog/issues/44

笔者家中网络结构比较特殊,所以使用一个单独的百兆路由器进行iptv拨号,这两篇文章中作者都使用了单线复用,udp转发,vlan划分等等技术,笔者的主路由器并不具备这种功能,所以不讨论。

网上很多教程都需要到路由器的配置文件中进行手动配置,但是很多路由器是支持在界面上配置的,以常见的路由器系统为例,如图。

  • 新版路由器系统在这里克隆mac
  • 高级设置中客户端id为stdid,vendorclass各省不同
  • 常规设置最下边的主机名可以为空

我的影音服务器有多个网口,所以我把一个网口单独作为iptv的接口,这样的话得对路由表做出一些更改。更改路由表之前,首先在抓到的数据包中分析一下,拿到直播源数据需要哪些步骤,分别请求了哪些ip,记得记下来。然后把这些ip的/24单独加入路由表,让这些ip单独走iptv接口,其他的ip段还走默认借口。笔者地区的iptv鉴权服务器和直播流服务器都在192.168.0.0/16这个IP段,而家里的其他ip都在10.168.1.0/24,所以我只需要写一条路由表即可,各位请根据自己的情况进行定制。

unraid编辑路由表
unraid编辑路由表

相关的ip能ping通后,接下来就是鉴权然后拿源了。

贴一个两年前的项目地址,顺便求个star。当时刚刚学js就当练手了😂,欢迎探讨指正问题。

https://github.com/xinjiawei/iptv

已经经过了两年,我已经不抱希望可以顺利运行了。但是却顺利跑起来了,连鉴权服务器的ip都没变😂。看来两年时间只是更改了一下入网认证方式,主业务逻辑没有变化啊。

拿到直播源地址
拿到直播源地址

将脚本打包成docker镜像,来输出m3u文件给播放器使用。

iptv服务器
iptv服务器

接下来就是找个播放器来播放了,笔者使用emby作为播放器, 使用bridge网络模式, 添加代理参数,在正常刮削的同时,也能看直播,即头图的效果。写完这篇文章时,已经看了一个小时直播,还没有卡顿,也算经过了测试😂。

结论

整个过程较为繁琐,涉及到不少的东西,仅供参考,毕竟这又差不多是一次针对我这边网络环境的定制。如有兴趣或者遇到问题的同学请留言。

两年前折腾的时候遇到一位四川的朋友,我的电脑python配置有问题导致无法3des解密,感谢这位朋友帮我跑出了密钥,非常感谢!

参考

https://www.right.com.cn/FORUM/forum.php?mod=viewthread&tid=3184275

https://github.com/luckyyyyy/blog/issues/44

https://www.right.com.cn/forum/thread-7560031-1-1.html

https://www.right.com.cn/forum/thread-4059959-1-1.html 感谢这位老哥,这是最开始的尝试。