[网络视频应用推荐 使用 疑问]关于自己弄的IPTV换台延迟的产生原因(gop)、解决思路(脑洞)

查看: 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。

回复

使用道具

举报

显身卡