前言
研究这个初衷是因为家里没办法收到自己想要的地波,后来入某群后发现有设备可以直接把地波串流到IP网络,自己是网络技术爱好者,纯粹的网络底层技术爱好,基本上研究的范畴不涉及到软件系统,所以从一开始就没想过要root电视root机顶盒安装第三方之类的想法,也没有这个能力。
但想必弄过串流的网友都想把串流融入到自家机顶盒(当然是走IP的机顶盒,广电的无能为力),不需要看自己串流的时候频繁切换软件或者机顶盒,奈何运营商的IPTV又不支持自定义频道。偶尔在网络网上发现有文章提及到运营商的IPTV直播频道大多使用组播技术,通过抓包取得组播地址后可以绕开机顶盒直接用电脑的VLC播放软件可以直接播放直播节目,而我自家同时安装了中国移动和中国电信的宽带和IPTV,根据网上的文章我在中国移动线路上(完全不需要认证)通过VLC打开相应的RTP地址可以直接播放到直播频道,在确认这个基础上开始了如何替换特定频道的研究。而我通过替换的方法已经稳定在中国移动的机顶盒上观看了超过半年的时间。
而中国电信的机顶盒我一直认为广东地区的直播频道用的不是组播协议,所以也没想过在中国电信的机顶盒上实现类似移动的替换方法,原因是教科书的误导,认为PPPoE认证的其中一个缺点是不支持组播。而在最近的研究发现其实电信的直播频道也有使用组播技术,只不过电信比移动更加智能能自动适应不同网络环境,简单的来说就是能取到组播流的网络环境就取组播流,不能取组播流就会自动取单播流。而最最最重点的是,电信的组播流是封装在PPPoE数据里面的,也就是在不通过PPPoE认证的情况下是没有办法像移动那样直接取得组播流的,有网友反映某些地方的电信可以不认证直接取到,这个就不好评论了,但起码实测广东珠海地区是必须通过PPPoE认证后才能取到(光猫里的组播vlan设置可有可无)。

言归正传,应网友要求,写出中国电信版IPTV盒子的替换流方法,关于中国移动版的待日后有时间再写。在操作之前请先注意一些问题,替换的频道没办法调整字幕和音轨;中国电信的盒子有些版本会先取单播流(已知华为EC6108V9C),再取组播流,导致转台的时候先显示原来的频道,要隔10多秒才会切换到替换后的频道,这个比较烦人;最好有一定网络基础,对RouterOS有一定接触和理解。

基本思路就是寻找替换目标频道,生成一个一样的组播源发送到机顶盒,同时控制原生组播数据发送到机顶盒避免冲突。

组播源
本人的串流是从TVH出来,再通过VLC转成组播串流发送到局域网内,当然有网友说可以不用TVH直接出组播串流,奈何本人TVH也同时在用。且我的应用场景组播源和机顶盒不在同一个地方,跨互联网传输,一个组播源供多个不同地方的机顶盒同时使用,本人实际在用的方案比本文的解说更为复杂,还会涉及VPN和组播路由。

路由器需求:
1、支持组播代理
2、支持IGMP Snooping
本人是Routeros的粉丝,以下方案均使用ROS完成,当然理论上支持以上功能的路由器也可以,但路由器本人只用ROS,手上也没有其他路由器。

设定场景如下:TVH、组播源、机顶盒均在同一局域网下,TVH、IPTV机顶盒、VLC组播源三者均在RouterOS同一网桥Bridge下的成员端口,即三者连接在同一个交换机。

1、 取得机顶盒网络账号
取得机顶盒的网络账号,注意是网络账号,在机顶盒的网络设置菜单里面可以查询到账号一般是一个带“@iptv.gd”域名的账号,而密码请自行查询装机单或者尝试简单密码如“12345678”、“12341234”,不行找电信要,再高级点可以在ROS上搭个PPPoE服务器选PAP认证打开调试模式可以直接看到机顶盒发送过来的用户名和密码。

2、 连接网线并设置拨号连接
ROS通过网线连接到光猫的itv口,在ROS上设置拨号信息,如下图红色部分,interface选择你的ROS实际连接到光猫的端口,我这个选用VRRP口的原因是我网络和电视都是同一根线拨号,也就是网络和电视都是同一个路由器多拨处理的,还会涉及策略路由,请大家忽略。比方说ROS接的1端口,那么interface选择“ether1”,name暂定为“tv”

确保PPPoE连接正常连接上,“R”标记未已连接。使用Winbox的朋友请按命令行的目录(包括后续涉及的命令)找到相应的设置项。

3、 升级ROS并安装组播组件
原生ROS默认是没有安装组播代理组件的,需要手工安装,建议在安装前先按下图升级ROS到最新版本

完成下载后请重启升级,升级完成后请到https://mikrotik.com/download下载相应硬件对应的“Extra packages”软件包,这个是一个压缩文档,解压后找到“multicast-6*****.npk”,把文件通过winbox或者ftp拖到ROS根目录后重启ROS完成安装。
完成组播组件安装后你应该可以在命令行或者Winbox下进入如下目录:

4、 设置组播代理
组播代理设置菜单主要需要确定两个参数,组播上行和下行端口

“tv”作为上行口(upstream=yes),负责转发来自下行口“bridge”所连接用户发送的组播请求数据到电信侧网络。

5、 修改机顶盒接入网络方式
把机顶盒的网络接入方式修改为DHCP,接入到ROS“bridge”网桥所属端口,如果ROS相关参数设置正常,机顶盒应该能顺利登录到IPTV系统。

6、 验证组播代理工作状态并获取替换频道组播地址
机顶盒转到任意频道,此时观察ROS组播代理状态目录

如果能看到类似项目upstream-interface=tv active-downstream-interfce=bridge 那证明组播代理正在工作,而souce大概是125.x.x.x开始的组播源是电信的直播频道源地址,所以对应239.x.x.x这个地址就是正在观看频道的组播地址,当然这里没有显示端口,端口实际上据我抓包观察得出的结果都是udp5146,所以当前频道完整的组播地址是rtp://239.x.x.x:5146,此时如果把电脑接到ROS bridge所属任意成员端口应该可以打开组播地址观看直播频道。
到这一步你可以开始选择替换频道,转到一些你认为没有价值的频道,记下该频道的组播地址以作后面替换使用。(如果你发现你转台的时候,代理状态能迅速刷新出新的组播源地址,那么恭喜你,如果要等10多秒才能看到组播源地址,那后面完成替换后转台的时候仍需要等10秒以上才能切换)
比方我选择了原生频道的90、91、93分别对应组播地址239.77.0.180、239.77.0.22、239.77.0.16
选好替换目标频道后建议在没完成后面步骤前关掉机顶盒或者转到其他频道,(别问我为什么,为了避免后续出现问题)

7、 搭建组播源
在产生组播流的PC上新建一个bat文件并输入以下内容:

第一行是切换到VLC安装目录,目录位置根据实际修改
第二行开始实际上一行内容,记事本自动换行了,其中http这串是TVH出来的串流地址,“kkk:kkk”是TVH的用户名密码,这样的HTTP地址可以每次使用一样的串流地址,“rtp”后面的dst=X.X.X.X 这个是输出的组播地址,填写第六步记下来的没价值频道的组播地址。根据需要替换的频道数量编写多个bat文件并运行。至于VLC的命令含义请自行百度,我这个命令参数是不对原来串流作任何编码压缩,所以出来都是原版编码,简单说就是无损。
运行BAT后可以通过VLC播放器打开rtp://239.x.x.x:5146测试

8、 控制bridge内组播流转发
如果你不考虑效率和合理性可以跳过此步骤;
此时第七步负责发送组播流的PC会不断向内网发送组播数据,因为默认情况下ROS的bridge没有启用IGMP Snooping,所以会把组播数据当广播处理,也就是发送到bridge其他的所有活动端口,包括机顶盒所连接的端口,但这不是我们想要的结果,我们要的结果是在机顶盒需要的时候才发送到机顶盒,所以我们需要打开Bridge的IGMP Snooping功能设置Bridge成员端口不转发未知组播数据。

我这个Bridge里面只有两个端口,如果按一般的ROS默认设置,Bridge默认包含ehter2/3/4/5 多个端口,也就是需要把所有成员端口均设置为“unknown-multicast-flood=no”,以此控制机顶盒有请求时才把VLC发送的组播数据转发到机顶盒。

9、 避免组播流冲突
设置过滤器禁止原生频道组播流通过“tv”口代理转发到bridge的成员端口,在ROS防火强中添加如下规则:

10、测试
此时打开机顶盒转到用作替换用户的频道,机顶盒请求组播数据,即可获取到由VLC产生的组播流,同时组播请求也会被ROS代理转发到tv口,tv口会返回原生组播流,但立刻会被第九步的防火墙拦截,防止机顶盒收到原生组播流。

已知问题:
1、 华为EC6108V9C盒子会先使用单播源,再检测组播,导致换台的时候先显示原生频道,至少10秒以后才会切换到替换频道。
2、 如果在观看替换频道时替换组播源数据中断或者卡顿超过数秒会导致盒子以单播方式跳回原生频道,且一旦盒子切换到单播方式后则不会切换回组播,导致替换频道失效,必须重启机顶盒,有些型号如EC6108V9C需要断电重启。
3、 机顶盒没办法设置音轨和字幕,希望有网友能解决这个问题。虽然可以在VLC进行转码并把字幕压进视频,但有损画质且资源耗费巨大。
4、 ROS的组播代理即使在Bridge开启了IGMP Snooping 后仍会把电信上游的组播数据泛洪到bridge内所有成员端口,这个问题有空的时候我打算反应给官方,希望能修复问题。

以组播流方式替换运营商IPTV直播频道相关推荐

  1. 与Netflix合作 美电视运营商推出4K频道

    Dish Network是美国境内知名的卫星电视运营商,也是美国第三付费电视运营商,拥有超过1400万用户,主要针对用户提供付费有线电视观看服务,在美国境内有着很大的影响力.在刚刚结束的CES2016 ...

  2. 技术方案——可控组播

    --IPTV业务的承载风帆 一. 前言 进几年来,随着网络带宽和接入用户的迅猛增加,宽带业务运营商已经将关注的焦点逐渐由提高宽带用户数向提高户均营收(ARPU)值的目标转移.IPTV业务作为消除宽带用 ...

  3. 中国移动拿到IPTV牌照 运营商全面反超有线电视

    期待已久的IPTV牌照即将到手,中国移动可以名正言顺的开展电视业务.只是,与中国电信和中国联通相比,中国移动的IPTV牌照来得有些迟.在拿到牌照前,中国移动的IPTV业务,以OTT的形态运营. 对于中 ...

  4. 虚拟机无法接受组播消息_IPTV(组播)骨干网完整解决方案--四川广电网络

    一,基于ANYCAST 设计骨干RP热备 1,RP选举说明 组播网络RP设置分为动态,静态2种.但和很多网络协议不一样,RP的选择默认是动态优先.也就是在路由器上同时存在动态和静态RP的时候会优选动态 ...

  5. 广播单播组播的知识总结与分享

    第一部分 基本概念 在网络中设备与设备通信也就是我们说的报文的传递.他们传递的方式分为以下几种:广播.单播和组播.我们以下提到的二层和三层指的是OSI模型,它总共工作分为七层:物理层.数据链路层.网络 ...

  6. 第五次电信分拆敷陈幕后:激发运营商乖戾反弹

    "能让广电做IDC营业,拿到国际互联网出口.开放ISP牌照.还不被电信在路由器上做手脚,我觉得就跟吃着暖锅唱着歌一样幸福而满足啦!"关于社科院的<第五次电信分拆方案研讨> ...

  7. 组播简介(二层组播)

    1 承载网组播模型 2 二层组播技术 2.1 组管理协议 Internet 组管理协议称为IGMP协议(Internet Group Management Protocol),是因特网协议家族中的一个 ...

  8. 脱离取源设备的IPTV宽带机房搭建心得(私网汇聚、内网直播源、单播组播模式混合使用、光猫机顶盒的破解、超级路由的组播转发)

    上个星期受用户邀请,去美丽的河南做了一个IPTV宽带机房的搭建,过程虽然有点坎坷,但好在最后都达到了用户的需求.在这里做一个记录,希望对我这种小菜日后方便参考使用,还望各位大神多多指教: 一.客户要求 ...

  9. 【IPTV详解三部曲】运营商PIM组网篇

    IPTV简介 IPTV主要是运营商于城域网等骨干网络中部署视频专用服务器作为视频源,并在该服务器中内置视频资源,以供接入该运营商线路的机顶盒播放视频节目.IPTV系统的特点是实时性强,能实现实时直播. ...

  10. linux监听9080,基于UPnP发现与组播技术的IPTV终端实现

    摘 要:本文设计并实现的终端系统工作在mClinux操作系统下,通过应用UPnP中的SSDP服务发现协议,实现在局域网中IPTV终端的自动发现, 并使用IP组播技术将TV视频信号及本地的AV视频信号. ...

最新文章

  1. PHP7扩展开发(二):配置项与全局数值
  2. Nginx卡在登录页面不断跳转如何解决?(登不进登录页面)ip_hash机制(还是没解决)
  3. PBS_HAS_CHANGED ~ GET_SAP_MENU_INFO
  4. CORS——跨域请求那些事儿
  5. 将2个字符写入单个Java char
  6. 网页中设定表格边框的厚度的属性_请写出在网页中设定表格边框的厚度的属性_______;设定表格单元格之间宽度属性...
  7. 3dtiles测试数据下载
  8. Ubuntu18.04-安装opencv3.2.0_contrib
  9. 《Windows游戏编程大师技巧》(第二版)
  10. php中文手册 人间,写给成年人的人间参考手册 西瓜视频《2021,有一说一》今日上线...
  11. CentOS 7超详细安装与网络配置
  12. 开源Golang rtmp服务lalserver支持多种鉴权防盗链方式
  13. 圣安地列斯服务器没有响应,Windows10系统玩不了侠盗猎车圣安地列斯怎么办?解决方案...
  14. 【MySQL】MySQL入门笔记
  15. 微信没有回车键怎么换行_微信打字怎么换行
  16. 画思维导图一定要用计算机来完成吗,一起来画思维导图
  17. POJ3349 Snowflake Snow Snowflakes
  18. echarts修改背景线条及坐标轴颜色样式
  19. 华为手机鸿蒙系统官方下载入口,华为鸿蒙系统官方下载入口v.20
  20. 【Unity Shader】(2)半兰伯特模型 构建光照

热门文章

  1. 导图速读《高性能MySQL》
  2. MindSpore,易用性提升的思考与实践
  3. VS2012 产品密钥
  4. 路由分析软件——VisualRoute v14.0c
  5. 搭建接口自动化测试框架详细过程
  6. 数据库课程设计基础需求
  7. hr面试高频问题回答思路总结
  8. Github上热搜的Java开源商城项目合集,这个是真的好
  9. 8421码到5421码的转换_8421码转换为5421码
  10. 【C语言】百行代码实现—俄罗斯方块