国内IPTV运营商(联通、电信)目前大都使用rtsp源,包括IPTV直播、回看及点播节目。但不少主流IPTV或者影视播放器对rtsp的支持并不好。像Tivimate,一款非常优秀的IPTV播放器,就不支持rtsp源的播放。基于当前主流exo (media3)内核的播放器目前也大都不支持Irtsp源的播放。基于传统ijk内核的播放器虽然可以播放一些rtsp源,但兼容性也不好。不支持有些运营商的 rtsp源,特别是采用中兴平台的IPTV运营商。或者虽然可以播放,但不能支持进度拖动、快进快退等操作。
为了能更好的利用现有主流播放器观看rtsp的IPTV源,把rtsp流转换成http单播流是一个方法,现有播放器大都对http单播流有很好的支持。rtp2httpd 就是一个多媒体流转发服务器的github开源项目 (stackia/rtp2httpd)。支持将组播 RTP/UDP 流、RTSP 流转换为 HTTP 单播流,并实现了运营商级的 FCC(Fast Channel Change)快速换台协议,可以作为 udpxy 和 msd_lite 的无缝替代,为IPTV 用户提供接近原生机顶盒的观看体验。rtp2httpd内置播放器也有方便,随便打开一个浏览器就可以观看IPTV节目。


rtp2httpd可以很好处理IPTV rtsp直播及回看节目,但对rtsp点播节目的支持还存在一个主要问题。rtp2httpd可以代理rtsp点播节目,在播放器顺利播放。但是代理后的点播节目也变成了直播模式。没有点播节目的时长信息,播放器也无法进行进度拖动、快进快退等操作。如下图,用蜂蜜影视播放器(使用exo player)点播节目时,节目时长信息显示为00:00,无法进行进度拖动、快进快退等操作。

rtp2httpd v4新版规划中提到了支持转换为http hls流,不知道那时是否可以完美解决这个问题。在rtp2httpd能解决这个问题前,只能自己先动手有个解决方案。做了一个rtp2httpd的启播位置及rtsp影视时长接口的补丁,并基于rtp2httpd定制了的影视播放器。这样用IPTV点播插件可以浏览播放rtsp源的IPTV点播节目,并且支持进度拖动、快进快退等操作。

向rtp2httpd项目提交了增加rtsp启播位置参数(r2h-start)及rtsp影视时长接口(r2h-duration)的的PR,新发布的v3.6.2已包含这两个PR内容。基于rtp2httpd支持进度拖动、快进快退等操作也需要播放器的支持,适配了rtp2httpd的定制影视播放器也同样放在了github上(yydewf/iptvys)。项目中包括两个定制安卓应用,一个基于蜂蜜影视,另一个基于OK影视。有需要的可以下载试用。