首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
探索世界的好奇心万岁
Udacity
网易公开课
Godel, Escher, Bach: An Eternal Golden Braid
V2EX  ›  分享发现

分享一下四川电信 IPTV 190 个直播频道的组播地址表,用 udpxy 转换下就可以不需电信盒子在任何地方直接观看了

  •  3
     
  •   zxp · 2017-08-29 10:24:19 +08:00 · 49406 次点击
    这是一个创建于 665 天前的主题,其中的信息可能已经有所发展或是发生改变。
    151 回复  |  直到 2019-03-10 22:30:39 +08:00
    1  2  
        102
    imaning   2017-12-07 18:01:55 +08:00
    楼主能出个全程的教程么,四川人民感谢你。
        103
    imaning   2017-12-08 11:27:38 +08:00
    楼主,我是四川巴中的,我看了抓包的教程,必须用 itv 的账号密码在电脑上拨号连接然后共享 WIFI 出来抓源。我们这里盒子绑定了 MAC 地址,请问你是怎么抓出来的源呢??能不能出个教程?
        104
    zxp   2017-12-08 13:40:31 +08:00
    我这里 itv 是通过 dhcp 获取的地址,拨号绑定了 mac 地址的话,也可以通过修改电脑网卡 mac 的方式进行拨号。

    抓包的时候不需要用电脑模拟 itv 盒子建立网络链接,只需要对盒子的流量进行抓取分析就可以抓到需要的组播地址、epg 链接等等需要的信息了,把 epg 的脚本提取出来,就可以得到所有的频道号、组播地址了。

    具体可以看前面的回帖,时间很久了,我也有些遗忘了。 @imaning
        105
    imaning   2017-12-10 15:22:29 +08:00
    现在是能直接用 RTP 地址播放了,但是开启了 UDPXY 后,http://192.168.2.1:8894/rtp/239.93.8.68:8402 用类似地址播放没反应
        106
    imaning   2017-12-11 09:26:56 +08:00
    仔细看了下楼主的,你是用一个设备模拟了 itv 盒子来验证收看,并在此设备上用 UDPXY 转换成 HTTP。我家的电信盒子已经 root 了,是不是说,可以直接在此盒子上安装 udpxy 来达到转换 http 的目的?
        107
    zxp   2017-12-12 09:14:58 +08:00
    可以的,前面帖子里有朋友这样做了
        108
    imaning   2018-01-01 20:42:02 +08:00
    # ./udpxy -v -T -a 192.168.2.33 -p 8099 -m eth0 -c 10 -B 1Mb -M 60
    2018-01-01 12:40:34.069962 UTC S(1142) udpxy 1.0-23.10 (prod) standard [Linux 4.4.33-v7.1.el7 armv7l]: ./udpxy -v -T -a 192.168.2.33 -p 8099 -m eth0 -c 10 -B 1Mb -M 60
    2018-01-01 12:40:34.070634 UTC S(1142) Server is starting up, max clients = [10]
    2018-01-01 12:40:34.070923 UTC S(1142) Setting up listener for [192.168.2.33:8099]
    2018-01-01 12:40:34.073278 UTC S(1142) Setting low watermark for server socket [7] to [10]
    2018-01-01 12:40:34.074875 UTC S(1142) Created server socket=[7], backlog=[16]
    2018-01-01 12:40:34.075576 UTC S(1142) Entering server loop [pselect(2)]
    2018-01-01 12:40:34.075628 UTC S(1142) Waiting for input from [2] fd's, NO timeout


    楼主帮忙看下,没反应,是什么情况。能获取到内网 IP
        109
    imaning   2018-01-01 20:44:17 +08:00
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
    inet 10.154.15.187 netmask 255.255.224.0 broadcast 10.154.31.255

    并且我做了路由, 只要 10.154.*.*都走 eth0,我的组播地址 239.93.*.*的路由地址也设置了。
        110
    zxp   2018-01-02 10:54:16 +08:00
    @imaning 你命令行-m 参数后面直接带上接 itv 的网卡 IP 试试呢?如:-m 10.154.15.187
        111
    imaning   2018-01-02 11:44:11 +08:00
    @zxp 试过,也不行,不知道是不是我自己编译的这个 udpxy 有问题
        112
    ricardo   2018-02-25 15:14:29 +08:00
    非常感谢
        113
    imaning   2018-03-20 22:23:13 +08:00
    请教下大神,你是怎么把 udpxy 转发到外网的?
        114
    zxp   2018-03-21 04:36:26 +08:00 via iPhone
    @imaning udpxy 提供一个 http 服务,如果你的运营商分配公网 IP 的话,那你只需要在路由器上做一个端口映射就可以了,没有公网 IP,那就需要 VPN 或内网穿透的技术来支持了,我用的方案在前面 20 多楼里已经发过了。
        115
    0987363   2018-06-20 23:41:04 +08:00
    晚上测试了下,没那么复杂,当然只测了直播,点播估计需要想 lz 那样

    我家是这样, 光猫桥接,局域网与 itv 接入同一个交换机,然后随便一台电脑,用 kodi,或者 potplayer 之类的直接就可以放,地址用 rtp://xxx.xxx.xxx.xxx:xxxx,或者用 udpxy 转也行,就是 http://192.168.20.30:9999/rtp/xxx.xxx.xxx.xxx:xxxx

    而且也能多客户端播放不同界面

    udpxp 只指定端口就星了
    udpxy -p 9999
        116
    zxp   2018-06-21 09:42:02 +08:00
    你是对的,获取 IP 主要是为了方便抓取 EPG 频道列表,还有组播播放是否需要配置源 IP 是要看你所在地区的电信接入网使用的 IGMP 协议,v2 的是不检查源 IP 的,v3 的协议如果源 IP 不对是没法加组进行组播播放的。还有一般家用的交换机对组播协议的支持并不是很好,很多设备不支持 igmp snoop (我家用的 mikrotik 的设备就不支持),这样一个终端播放的时候其实是会发生泛洪,造成交换机所有端口都会产生组播的流量,并且切换频道后流量也会继续存在一段时间,多次切换频道就会造成家庭网络的严重拥塞,我有深刻体会,所以才用一个 udpxy 来做转换。
    @0987363 #115
        117
    0987363   2018-06-21 10:12:03 +08:00 via Android
    @zxp 我的是 hp 网管交换机,最便宜的支持汇聚的那种,然后用 udpxy,cctv5 高清,用 potplayee 会卡顿,kodi 正常。直接 rtp 播放,都正常
        118
    anyhong   2018-06-22 10:16:04 +08:00
    @zxp,请教一下,同成都电信,我在光猫划分 vlan 单线复用到路由器,然后路由器刷梅林划分 lan 4 为 iptv 口,lan 4 接电信机顶盒或者接电脑用 vlc 都可以播放,vlc 格式播放 rtp://11.11.11.11:2222 成功。在梅林 iptv 页面开 dupxy 端口 8888。在 vlc 用格式 http://192.168.1.1:8888/rtp/xx.xx.xx.xx:xxxx 或者 http://192.168.1.1/rtp/xx.xx.xx.xx:xxxx 不成功,请问要怎样才能判断 udpxy 设定成功呢?另外是不是不管有没有开 udpxy,播放器都要支持 rtp 格式的才可以?谢谢!
        119
    anyhong   2018-06-22 10:19:57 +08:00
    另外再请教一下,在路由器上能否把 iptv 信号用 wifi 的形式接入电视盒子?现在路由器的 vlan 划分界面只能看到 lan。
        120
    zxp   2018-06-22 10:52:58 +08:00
    @anyhong 我不熟悉梅林系统,但是你可以登录到路由器终端去看看 udpxy 进程的参数,里面应该有个是指定接收组播信号的网卡的,你的案例里面应该是指定到组播 vlan 的虚拟接口上才可以实现 udpxy 播放。

    另外 Wi-Fi 对组播的支持不好,通过 Wi-Fi 信号发起组播请求不一定能成功,还有可能会造成泛洪导致整个网络环境的劣化。要通过 Wi-Fi 看直播,建议通过 udpxy 转换成 http 协议后再播放。

    Wi-Fi 透传 vlan 理论上也是可以的,不过还要看 Wi-Fi 终端是否支持 vlan,所以一般不这样用,通常的做法是设置多个 ssid,桥接不同的 vlan 接口,连接不同的 ssid 就进入了不同的 vlan。
        121
    anyhong   360 天前
    多谢 @zxp,做了代理以后。直接就用 wifi 信号观看 iptv 成功了。
        122
    anyhong   355 天前
    @zxp, 另外请教一下。你在单位播放用的 iptv 信号是单位的 iptv 源还是用的家里的?怎么设置呢。
        123
    zxp   355 天前
    家里的,通过 vps web 服务器反代回去
    @anyhong #122
        124
    hikiss   353 天前
    @zxp 我这边是广州电信的,抓出来的包解析出来的地址都是 rtsp 的,如下,ChannelURL 和 TimeShiftURL 这些都是 rtsp 协议的,但是这种协议我用 vlc 播放时,打开不了,提示“ vlc 无法打开 MRL ”,但是我在电脑上用 potplayer 是可以正常播放的,现在我想在安卓盒子和 apple tv 上播放,但是这些播放器都不支持 rtsp*****.smil 这种格式地址,请教下楼主这种情况有没有解决方案呢,或者说 rtsp*****.smil 这种格式地址可不可以,用什么方法处理下,变成 http 这种的呢?

    ChannelName="CCTV-7",UserChannelID="27",ChannelURL="rtsp://183.59.156.50/PLTV/88888888/224/0/3221225728/000000000gl8.smil?rrsip=125.88.70.140,rrsip=125.88.104.45&icpid=SSPID&accounttype=1&limitflux=-1&limitdur=-1&accountinfo=:20180704014430,02047254683,119.145.82.78,20180704014430,Umai:CHAN/[email protected],4C91CFD9ECCE3960C1B68417AC89A894,-1,0,1,,,2,,,,2,END",TimeShift="1",TimeShiftLength="7200",ChannelSDP="rtsp://183.59.156.50/PLTV/88888888/224/0/3221225728/000000000gl8.smil?rrsip=125.88.70.140,rrsip=125.88.104.45&icpid=SSPID&accounttype=1&limitflux=-1&limitdur=-1&accountinfo=:20180704014430,02047254683,119.145.82.78,20180704014430,Umai:CHAN/[email protected],4C91CFD9ECCE3960C1B68417AC89A894,-1,0,1,,,2,,,,2,END",TimeShiftURL="rtsp://183.59.156.50/PLTV/88888888/224/0/3221225728/000000000gl8.smil?rrsip=125.88.70.140,rrsip=125.88.104.45&icpid=SSPID&accounttype=1&limitflux=-1&limitdur=-1&accountinfo=:20180704014430,02047254683,119.145.82.78,20180704014430,Umai:CHAN/[email protected],4C91CFD9ECCE3960C1B68417AC89A894,-1,0,1,,,7,,,,4,END",ChannelType="1",IsHDChannel="2",PreviewEnable="1",ChannelPurchased="0",ChannelLocked="0",ChannelLogURL="",PositionX="0",PositionY="0",BeginTime="0",Interval="0",Lasting="0",ActionType="1",FCCEnable="0",ChannelFECPort="5145"
        125
    zxp   352 天前
    @hikiss #124 smil 格式就像 html,可以看看里面的内容,应该包含有真实连接的 rtsp 链接。就像这样:

    <smil>
    <body>
    <seq>
    <video src="rtsp://cdzhgftmesrx:[email protected]/broadcast/secure/live/stream.ram" />
    </seq>
    </body>
    </smil>
        126
    anyhong   347 天前
    请教一下。现在在换台的时候,系统记录里总是出现如下的提示:

    Jul 13 21:26:16 udpxy[877]: write_data: writev: Broken pipe

    有知道原因的吗?
        127
    anyhong   347 天前
    我看了。在电脑上用 vlc 播放 iptv 的时候,这个系统记录是没有的。我 wifi 5G 在电脑盒子里播放的时候。会有上面的提示。
        128
    1314258   340 天前
    @zxp 你好,我有一个欧洲这边的 telekom 电视机顶盒。然后这个机顶盒只能在这边宽带,这个机顶盒是用有线的,但他有时候用无线的中继,再接进去有时候也是可以播放的。我网上搜索发现这个设备是用 rtp://[email protected]:10000 这样的形式的,但我用 vlc 播放不了(虚拟机)。于是我用一个带 wan 和 lan 接口的 openwrt,wan 连家里的路由,lan 连机顶盒,然后抓包,发现他 igmpv3 包里面有一个 allow new source 87.141.215.251 和 232.0.20.35 关键字,然后就一堆 udp 从另外一个 ip 发过来,但端口不是固定的。
    我想问一下,抓包方法对么?但为什么没抓到 10000 这个端口?也没显示。
    另外 udpxy 所在服务器不是可以单独直接接路由就可以了么?

    期待回复。
        129
    zxp   340 天前
    igmpv3 的组播要求播放器端到源路由要可达,所以你首先要解决 udpxy 服务器要获取到一个合法的机顶盒 IP,然后能够访问到像 87.141.215.251 这样的视频源 IP,rtp 链接的格式参考如下:

    rtp://{IP adress of source}@{IP adress of requested multiplex}:{port number}

    参考这个页面: https://tvheadend.org/issues/4256
        130
    Nitsuya   322 天前
    成都地区, 开宽带的时候,没有要盒子, 但是业务是开了的, 我用单臂的策略去改了,一直放不起.
    问题: 是不是成都地区的需要设置 主机名, 标识 和 mac?
        131
    zxp   321 天前
    @Nitsuya 你可能要检查一下你光猫出来的 vlan 对不对,如果你不是用光猫的 itv 端口接播放器的话,配置是相当麻烦的,因为电信的光猫将组播流和组播请求是通过不同 vlan 传输的,一般的 vlan 交换机可没有这个功能,还有如果你需要播放点播的内容的话,是需要设置标识和 mac 获取到 itv 的地址的。电信不同机房覆盖地区的网络配置可能不同,所以说就算我那里是这样用的,你那里也不一定一样。
        132
    kalagxw   201 天前
    @zxp 现在 mikrotik 已经支持 igmp snoop 甚至 pim 不知道是否尝试配置。武汉电信配置没成功,希望交流下。
        133
    supzhang   195 天前
    补充一点,如果使用 OPENWRT,在虚拟出 WAN 口 设置为 DHCP 后,高级设置中,可以直接设置
    Client ID to send when requesting DHCP 这个选项就是机顶盒底部的 STBID,
    Vendor Class to send when requesting DHCP 就是 SCITV,
    Override MAC address 就是机顶盒底部标识的 MAC 地址了,
    只要将这三项设置上了,DHCP 就可以正常获取到 IP 地址啦。

    @zxp 在使用 udpxy 时,后台显示有流量,但总是无法播放是哪方面的原因。
    后台显示,这种缓冲几秒一个。
    2018-12-11 18:47:15.317733 UTC c(7761) Relaying traffic from socket[5] to socket[9], buffer size=[1048576], Rmsgs=[1], pauses=[0]
        134
    zxp   195 天前
    @kalagxw 电信光猫中组播的实现好像是特别定制过的,加组与推流走的不同的 vlan,我之前好像在另外一个论坛中看见有人分析过(具体信息我忘了),所以简单的配置 igmp snoop 好像也是不能用的。

    @supzhang 这个情况我没遇到过,也不清楚原因,但是你在后台看见有流量,比如说你在切换频道的 url 的时候可以看见明显的流量增加(每个频道推流大概是几兆),就说明组播已经是正常的了,无法播放有可能就是 udpxy 的启动参数问题或者是你播放软件解码的问题了。
        135
    supzhang   194 天前
    @zxp OK 了,因为我的路由表没设置正确,我是根据他的 IP 算了个掩码和网关填写上,结果路由不过去,全部发的是空包,后来就直接去掉网关、掩码改成 0.0.0.0 就可以正常使用了。
    ./bin/udpxy -v -T -a 0.0.0.0 -p 8080 -m 10.184.*.* -c 10 -B 1Mb -M 60,这样外网才可以访问,如果写写 192.168.X.X,只有内网地址才能访问到。
    高清相当消耗带宽,每个高清稳定下来消耗 9M 带宽,这 20M 的上行,满打满算也才带的动两个。
    内网的话,倒是可以多点,不过路由上的 CPU 不行,差不多五个高清资源就要耗尽了。
        136
    zxp   194 天前
    绑定到外网上容易被嗅探出链接,所以最好在前端加个 nginx 之类的做代理,用 https 协议在外网播放 @supzhang
        137
    supzhang   175 天前   ♥ 1
    @zxp 明白!
    做了个最近两天的节目表,包含央视、卫视 及四川本地台.
    节目表每天自动更新 节目表地址: http://69.85.93.247:8000/e.xml.xz
    配合这个带台标、分类、与节目表对应的 ID
    http://69.85.93.247:8000/sciptv.m3u

    使用 PERFECT PLAYER 配合这两个文件,效果非常之棒!
        138
    seaven   154 天前
    @zxp 光猫 ITV 口接路由器,路由可以直接获取到 IP 吗?
        139
    zxp   154 天前
    @seaven #138 应该是不行的,原因看前面的回复
        140
    seaven   153 天前
    @zxp 我现在抓 dhcp 的包,抓包工具里面有 Offer 和 Ack 包的回应,IP 也是机电盒的内网 IP,也能抓到 IPTV 源地址,但是 Discover 包里面没有 option60 的信息,而且 hostname 是我的 pc,mac 也是 pc 地址。请问有什么办法解决吗?采用的抓包方法就是 https://www.right.com.cn/FORUM/data/attachment/forum/201806/26/200432y82zmhioph4o7kji.png
        141
    zxp   153 天前
    你的这个抓包工具有两个采集口,每个网口智能采集一个方向的流量,所以你采集的流量里面只有从 dhcp 服务器到机顶盒的 offer 和 ack 包,discover 包是你采集 PC 发出来的,不是机顶盒发的。要采集双向的流量,你的 PC 还需要另一个网卡,接抓包工具的另一个采集口,然后同时采集才行,或者上下行分两次采集。
    @seaven #140
        142
    seaven   153 天前
    @zxp 请问下楼主 成都电信 option(60)信息是不是就是 ‘ SCITV ’,不包含账号密码信息,我抓包,抓出来只有 5 个长度,内容就是 SCITV ,其他人抓出来是 61 个长度,包含各种账号密码信息。
        143
    zxp   153 天前
    我当时抓出的也是这个,可以参考我根据当时抓包情况做的 dhclient.conf 内容
        144
    seaven   153 天前 via iPhone
    @zxp
    config interface 'IPTV'
    option proto 'dhcp'
    option _orig_ifname 'eth0.1'
    option _orig_bridge 'false'
    option metric '20'
    option macaddr 'AC:4A:FE:11111'
    option hostname '00109199010290600031A111111111'
    option ifname 'eth0.1'
    option vendorid 'SCITV'
    option delegate '0'


    网卡和 hostname 值做了处理,我这样写的,还是获取不了 IP,现在能看组播,时移看不了
        145
    zxp   151 天前
    看组播不需要获取 IP,时移需要 IP 并通过鉴权,鉴权信息可以从抓包的信息中点播链接中获取,但是鉴权的账号和密码是通过 tr069 协议从电信的 ims 系统下发的,可能经常会变,所以目前这个方案只适合看直播。
        146
    zxp   151 天前
    还有我记得 dhclient.conf 中的 `send dhcp-client-identifier "\054:93:59:**:**:**";` 也是很重要的,这个字符串不仅仅是 mac 地址,最开始有个\0 空字符,没有发送这个 option 好像就获取不到 IP。
        147
    madman43   148 天前
    我光猫 iptv 没绑定端口,通过用户侧绑定方式,并开启了 igmp snoop,梅林里面也开了 udp 并正常运行。但电脑上还是不能播放
        148
    haohaolee   107 天前
    @zxp 我是武汉的,最近开始尝试这个。原来 iptv 盒子是直接接到光猫的 iptv 口的,用的是 pppoe 直接拨号(密码已经扒到了),现在我把 OpenWrt 路由器直接接光猫的上网口和 iptv 口,做成双 wan 的形式,都使用 pppoe 拨号(可见光猫都是桥接的),pppoe-wan 和 pppoe-iptv,然后设置了一些 static routes 让一些流量去 pppoe-iptv 接口,这样 iptv 盒子改成 dhcp 获取 ip 后可以直接接到 Openwrt 的 lan 口进行播放,点播和直播都可以。
    但是让我感到奇怪的是,我用 tcpdump 在 OpenWrt 抓包时没有看到任何组播流量,只有单播流量,因为我也没有配 igmpproxy,理论上也不会有组播流量会从 pppoe-iptv 去 lan
    我抓的包理论关于频道的信息类似下面这种:

    Authentication.CTCSetConfig ('Channel','ChannelID="3283",ChannelName="CCTV-1HD",UserChannelID="1",ChannelURL="igmp://239.254.96.96:8550",TimeShift="1",TimeShiftLength="3600",ChannelSDP="igmp://239.254.96.96:8550",TimeShiftURL="rtsp://121.60.10.41/PLTV/4/224/3221225877/10000100000000060000000006233078_0.smil?rrsip=116.210.252.138&icpid=SSPID&accounttype=1&limitflux=-1&limitdur=-1&GuardEncType=2&accountinfo=xxxxxxxxx",ChannelType="1",IsHDChannel="1",PreviewEnable="1",ChannelPurchased="1",ChannelLocked="0",ChannelLogURL="",PositionX="null",PositionY="null",BeginTime="null",Interval="null",Lasting="null",ActionType="1",FCCEnable="0",ChannelFECPort="0"');

    从这个信息来看,确实是提供了组播地址
    百思不得其解,难道武汉电信 iptv 可以只使用单播进行直播?
        149
    zxp   107 天前
    可以试试抓一下 ITV 盒子这端的流量,看看直播的时候都有什么请求
        150
    haohaolee   106 天前
    @zxp 已经找到了原因了,iptables 没有允许从 pppoe-iptv 进来并且目的地为组播地址的流量。OpenWrt 默认对 Wan zone 的 input 都是 reject 的
    多谢
        151
    haohaolee   106 天前
    不过 ITV 盒子为啥单播就可以 work 这事儿我还没研究 目前可以让 udpxy work 了
    1  2  
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2623 人在线   最高记录 5043   ·   Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 23ms · UTC 14:16 · PVG 22:16 · LAX 07:16 · JFK 10:16
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1