查看: 1965|回复: 25
[网络视频应用推荐 使用 疑问]
关于自己弄的IPTV换台延迟的产生原因(gop)、解决思路(脑洞)
[复制链接]
tzz1555
tzz1555
当前离线
积分154
IP卡
狗仔卡
电梯直达
1#
发表于 2025-9-22 01:24
|
只看该作者
|倒序浏览
|阅读模式
本帖最后由 tzz1555 于 2025-9-22 11:38 编辑
今天刷短视频直播的时候,发现直播平台切换主播的时候都是秒出画面,为什么自己弄的IPTV达不到这种效果?运营商的盒子有的就可以秒切?这到底是什么黑科技?因为最近刚开始折腾,抱着好奇的心态,调研了一番,分享一下结论。
先来分析我们换台的时候发生了什么。我们按下换台按钮,播放器壳子会读取下一台的组播地址(或咱们自己做的组播转单播,本质上上游还是组播),发出订阅请求。我们的网卡会在50ms内收到IPTV的第一个数据包回复,随后数据包开始匀速灌入。但是,我们的网卡收到一些数据包,也不能代表此时会出现画面。有些朋友可能会说,是因为客户端本地还要做一些buffer(缓冲),这其实不是主要原因,真正的原因是gop(I帧间隔)的问题。
给不熟悉视频编码的朋友简单介绍一下gop:一个视频流,无论它是h264还是hevc(h265),都是由一个一个的gop(中文名叫帧组)组成的。这个gop对应着一段时间的视频帧(通常是1~几秒钟),总是以I帧开头。举个例子,联通IPTV的rtp流真实帧顺序如【图1】所示,红框中的就是一个gop,对应的是1秒钟的视频画面。I帧后面的P和B帧,必须要在本地有对应gop I帧的前提下才能解析,否则只能丢弃。这就是对gop的基本认知,实际上有很多帧编码顺序和帧时间顺序之类的细节问题,不影响问题理解,此处不展开了。
所以,我们的播放器收到第一帧大概率是一个P/B帧,因为I帧只存在于每个gop开头,占比很少。除非我们走狗屎运恰好拿到一个I帧,否则播放器只能丢弃这些P/B帧,并且暂时保持画面黑屏/卡顿/转圈状态,等待下一个gop(I帧)到达。此时,转圈的时长完全取决于I帧间隔(gop长度),以联通IPTV为例,gop间隔为1秒(某些频道是0.3秒/1秒交替),那么我们最多只需要等1秒,就保证能够开始正常播放。为什么运营商不缩小gop长度呢?因为I帧体积很大,如果gop太短,相同画质下带宽会显著上升,相同码率下画质会显著下降。
问题来了,同样是直播,为什么短视频直播就可以做到秒播呢?根据字节跳动视频云2022年的一篇技术文章,直播平台主要用了gop cache来解决此问题。既然你希望连上之后就能拿到I帧,那么我就在服务器上缓存最后1个(或几个)完整的gop,你一请求我就直接发给你完整的gop(第一帧就是I帧),所以你不用丢弃那些P/B帧,也不用转圈等我了。很聪明啊!其实gop cache就算在当时也不是什么最新技术了,那运营商为什么不这样干呢?出于分发成本考虑,运营商使用组播而不是单播进行数据分发,这就使得数据任何时候在任何线路上传输都只有一份(而不像单播,10000个人观看同一个台,在服务端就要发送10000份数据流出去),成本大幅降低了。有的朋友就问了,所以呢?这有什么影响?这影响可大了!你想连接上之后IPTV专门给你重发一下刚刚的gop是吧?你要知道,组播是类似群发短信一样的通信方式,不可能为你专门定制一份数据。所以服务商就说,还请大家将就一下啦,反正最多等1秒,也还好啦~~
实际上,如果运营商在边缘节点(如区级机房等)部署一些单播服务,就可以绕开组播的先天性限制,为你定制一份专门的流。论坛里之前的一个2021年的帖子(关于IPTV抓来的组播、单播源换台慢的原因分析)就提到了类似的技术,实际上是增加成本额外支持了单播,进而通过gop cache实现了秒开。几秒钟之后,单播已经没有太大意义了,播放器丝滑地切换到组播的流,避免长时间大量无效单播产生的高成本问题。
那么,我们的思路有几个:
1. 评论区朋友反馈,有些服务商提供了FCC服务器,网络上找一找或者抓包一下自己服务商的单播源(rtsp源),如果能找到,那理论上就可以秒开,只不过需要播放器支持这种平滑切换,或者干脆一直用单播看?
2. 买更贵的公网直播源,还得是带gop cache的那种,直接全程单播,价格上去了,自然就能提高体验了,媲美短视频直播的体验。
3. 我们自己能不能搭建一个带gop cache单播服务器(比如开源的SRS项目)?虽然我们很难同时拉取所有的频道流,但是通过节目单顺序等,提前为上一个台和下一个台维护gop cache,实现秒开?
4. 我们能不能自己魔改一个iptv播放器?只使用现有的组播源,但是在我们看频道X的时候,后台同时拉取X-1、X、X+1的三条流(但是X-1和X+1只拉取数据不解码)这样也能实现秒切!
以上分享一些随想,如有专业人士还希望能不吝指正。
关键词:IPTV 换台 延迟 速度 组播 GOP
发帖注意事项
请勿胡乱发帖:https://www.right.com.cn/forum/thread-8307840-1-1.html
账户手机验证:https://www.right.com.cn/forum/home.php?mod=spacecp&ac=plugin&id=jzsjiale_sms:home
换频道就好
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
分享到:
QQ好友和群
QQ空间
收藏3
支持0
反对0
相关帖子
• itv双网融合成功,但播放4分钟自动停止播放求帮助
• iptv 每10分钟必卡2-3秒图像,请问有知道的吗?
• 单线复用后IPTV播放二十秒后卡住
• iptv 使用多个会卡是什么回事
• IPTV组播 4分钟就卡顿一次
• 四川iptv设置了 几秒就断
• 内网看IPTV固定时长会卡一下,请大佬赐教
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复
使用道具
举报
置顶卡
沉默卡
喧嚣卡
顶贴卡
显身卡
leii12345
leii12345
当前离线
积分460
IP卡
狗仔卡
顶 来自 15#
发表于 2025-9-22 15:34
|
只看该作者
关于换台秒切的问题已经讨论过了,从用户端的播放器入手,DIYP影音和酷9都可以通过修改缓存参数达到秒切——针对RTSP单播源。酷9APP在相关讨论的基础上直接在配置文件中内置了参数传递,更方便改缓存参数。相关方法是我最先系统整理的,酷9在引入这个功能的时候一点都没有提恩山论坛网友。
换台秒切最先做的很不错的是Tivimate,它的早期版本直接就是秒切的,默认就是只缓存非常短的时间;后续版本给了用户更多选择,可以分几个档位延长缓存时间,用来应对一些比较卡的频道源。
我这边是电信IPTV,抓源发现同时下发组播源和单播源。结合一些用户反应只能看几秒钟就没画面,再换台又只能看几秒钟这种情况,猜测IPTV机顶盒换台的前几秒是先切到单播流实现秒切台,稳定播几秒后在后台切到组播流节省宽带。那些只能看几秒钟的用户肯定是只能看单播节目才会造成这种问题。
点评
tzz1555
已经给您置顶了,感谢回复!
可以请问一下之前帖子的链接吗,我给更新到帖子里方便大家参考!
详情
回复
发表于 2025-9-22 16:08
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复
使用道具
举报
显身卡
kof8562
kof8562
当前离线
积分350
IP卡
狗仔卡
2#
发表于 2025-9-22 01:49
来自手机
|
只看该作者
现在你换台很慢?
点评
tzz1555
我现在还好,联通的iptv没给rtsp,所以需要等I帧回来,1s以内,平均0.5,可以接受。纯粹技术讨论,有错误请指正
详情
回复
发表于 2025-9-22 11:21
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复
使用道具
举报
显身卡
yssy
yssy
当前离线
积分854
IP卡
狗仔卡
3#
发表于 2025-9-22 07:10
来自手机
|
只看该作者
现在用的电信iptv,运营商先给你来段rtsp,稳定了,丝滑切换到组播,可以实现秒播。自己弄的组/单播,总要延迟一下。希望酷9之类的播放器也能实现这样的功能,设置两个源,丝滑切换
点评
leii12345
电信直接用单播地址即可,酷9把换台参数设成1就可以秒切。指望酷9模仿IPTV盒子先单播后组播没有意义,IPTV盒子这么做是为了省带宽,你一个用户为什么要主动帮运营商省带宽?直接用单播源不香?
详情
回复
发表于 2025-9-22 15:13
tzz1555
感谢分享,不知道联通有没有rtsp。电信的rtsp源是不是需要付费鉴权以后才能请求?
详情
回复
发表于 2025-9-22 11:25
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复
使用道具
举报
显身卡
柯南27
柯南27
当前离线
积分332
IP卡
狗仔卡
4#
发表于 2025-9-22 08:52
|
只看该作者
我这一直以为是缓冲呢,经过大佬的讲解知道了原理,感谢大佬的讲解
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复
使用道具
举报
显身卡
liwei945
liwei945
当前离线
积分1846
IP卡
狗仔卡
5#
发表于 2025-9-22 09:17
|
只看该作者
旁观大佬~
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复
使用道具
举报
显身卡
say
say
当前离线
积分418
IP卡
狗仔卡
6#
发表于 2025-9-22 09:34
|
只看该作者
酷9换台就很快
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复
使用道具
举报
显身卡
fan2fan_
fan2fan_
当前离线
积分848
IP卡
狗仔卡
7#
发表于 2025-9-22 09:53
|
只看该作者
涨知识了,不过的确感觉最近IPTV换台延迟大了很多,好在能够忍受,也就罢了。
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复
使用道具
举报
显身卡
tzz1555
tzz1555
当前离线
积分154
IP卡
狗仔卡
8#
楼主|
发表于 2025-9-22 11:21
来自手机
|
只看该作者
本帖最后由 tzz1555 于 2025-9-22 11:28 编辑
kof8562 发表于 2025-9-22 01:49
现在你换台很慢?
我现在还好,主要是没查到联通的rtsp源,所以不能秒出,得等1s以内,平均0.5,可以接受。纯粹技术讨论,有错误请指正
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复
使用道具
举报
显身卡
tzz1555
tzz1555
当前离线
积分154
IP卡
狗仔卡
9#
楼主|
发表于 2025-9-22 11:25
来自手机
|
只看该作者
yssy 发表于 2025-9-22 07:10
现在用的电信iptv,运营商先给你来段rtsp,稳定了,丝滑切换到组播,可以实现秒播。自己弄的组/单播,总要 ...
感谢分享,不知道联通有没有rtsp。电信的rtsp源是不是需要付费鉴权以后才能请求?
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复
使用道具
举报
显身卡
快乐猫
快乐猫
当前离线
积分235
IP卡
狗仔卡
10#
发表于 2025-9-22 11:30
|
只看该作者
这个叫做 FCC , 快速频道切换。 每个省电信都有FCC服务器
点评
tzz1555
研究了,最近刚开始折腾,有不少概念还不太了解。想请教下现在有哪些iptv软件支持这种fcc吗?我现在手机上在用aptv,电视上的您有推荐不
详情
回复
发表于 2025-9-22 11:34
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复
使用道具
举报
显身卡
tzz1555
tzz1555
当前离线
积分154
IP卡
狗仔卡
11#
楼主|
发表于 2025-9-22 11:34
来自手机
|
只看该作者
本帖最后由 tzz1555 于 2025-9-22 11:49 编辑
快乐猫 发表于 2025-9-22 11:30
这个叫做 FCC , 快速频道切换。 每个省电信都有FCC服务器
研究了,最近刚开始折腾,有不少概念还不太了解。可以请教下现在有哪些iptv软件支持这种fcc吗?我现在手机上在用aptv,电视上的您有推荐吗?
点评
快乐猫
iRet = Authentication.CTCSetConfig('Channel','ChannelID="20000190",ChannelName="CCTV-1高清",UserChannelID="1",ChannelURL="igmp://239.112.205.59:5140",TimeShift="1",TimeShiftLength="7200",C
详情
回复
发表于 2025-9-22 12:43
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复
使用道具
举报
显身卡
forsaken2009
forsaken2009
当前离线
积分59
IP卡
狗仔卡
12#
发表于 2025-9-22 12:03
|
只看该作者
3和4也只能解决顺序播放的时候,解决不了跳着选台。主要还是看投入产出吧,废了老大劲,解决了连续换台的秒播,有点不太值得投入。
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复
使用道具
举报
显身卡
快乐猫
快乐猫
当前离线
积分235
IP卡
狗仔卡
13#
发表于 2025-9-22 12:43
|
只看该作者
本帖最后由 快乐猫 于 2025-9-22 12:46 编辑
tzz1555 发表于 2025-9-22 11:34
研究了,最近刚开始折腾,有不少概念还不太了解。可以请教下现在有哪些iptv软件支持这种fcc吗?我现在手机 ...
iRet = Authentication.CTCSetConfig('Channel','ChannelID="20000190",ChannelName="CCTV-1高清",UserChannelID="1",ChannelURL="igmp://239.112.205.59:5140",TimeShift="1",TimeShiftLength="7200",ChannelSDP="igmp://239.112.205.59:5140",TimeShiftURL="rtsp://113.136.97.92/PLTV/88888888/224/3221226087/10000100000000060000000001759104_0.smil?rrsip=113.136.98.16&zoneoffset=480&icpid=zhuoying&limitflux=-1&limitdur=-1&tenantId=8601&GuardEncType=2&accountinfo=%7E%7EV2.0%7El9bEy-NwJQp2zSzOrVcQxQ%7EFd2ySKASNnyVp41qJMT7BFwmTIL8Cs2lqSEfZBYcsNPfX6KxjwvMYXGz550vgPSRiVU35iU4H4dN2J0Uefn6JMX2qAgT66sjnybALjvXn_A%7EExtInfoWNHSPSTb%2B3AG0FnUkYLPMw%3D%3D%3A20240417232704%2C10500012639367%2C10.131.83.4%2C20240417232704%2C00000001000000050000000000000152%2C10001001676930%2C-1%2C0%2C1%2C%2C%2C7%2C%2C%2C%2C4%2C%2C10000100000000060000000001759104_0%2CEND",ChannelType="1",IsHDChannel="2",PreviewEnable="0",ChannelPurchased="1",ChannelLocked="0",ChannelLogURL="",PositionX="0",PositionY="0",BeginTime="0",Interval="0",Lasting="0",ActionType="1",FCCEnable="2",ChannelFCCIP="113.136.97.92",ChannelFCCPort="8027",ChannelFECPort="0"'); 某省的报文,注意看最后的ChannelFCCIP
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复
使用道具
举报
显身卡
leii12345
leii12345
当前离线
积分460
IP卡
狗仔卡
14#
发表于 2025-9-22 15:13
|
只看该作者
yssy 发表于 2025-9-22 07:10
现在用的电信iptv,运营商先给你来段rtsp,稳定了,丝滑切换到组播,可以实现秒播。自己弄的组/单播,总要 ...
电信直接用单播地址即可,酷9把换台参数设成1就可以秒切。指望酷9模仿IPTV盒子先单播后组播没有意义,IPTV盒子这么做是为了省带宽,你一个用户为什么要主动帮运营商省带宽?直接用单播源不香?
点评
yssy
主要是我这边的电信,老的单播源不全,有些还不是高清。新的需要accountinfo=,技术不行,搞不定。
详情
回复
发表于 2025-9-22 18:17
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复
使用道具
举报
显身卡