技术背景
RTMP播放器的延迟可以受到多种因素的影响,包括网络状况、推流设置、播放器配置以及CDN分发等。因此,RTMP播放器的延迟并不是一个固定的数值,而是可以在一定范围内变化的。
正常情况下,网上大多看到的,针对RTMP播放器的延迟在2秒到3秒左右。这是基于RTMP协议本身的特性和一般的推流、播放设置所得出的结论。然而,当网络状况不佳、推流设置不当或播放器配置不合理时,延迟可能会增加。
具体来说,RTMP播放器的延迟可能受到以下因素的影响:
- 网络状况:网络延迟和丢包是影响RTMP播放器延迟的重要因素。当网络状况不佳时,数据包传输的延迟会增加,从而导致播放延迟增大。
- 推流设置:推流端的设置,如编码器的配置、关键帧间隔(GOP)的设置等,都会影响推流的实时性和延迟。例如,降低GOP的值可以减少延迟,但可能会增加编码器的负担和压缩率。
- 播放器配置:播放器端的设置,如缓冲区的大小、播放模式的选择等,也会影响播放的延迟。例如,设置较小的缓冲区可以减少延迟,但可能会增加播放过程中的卡顿现象。
- CDN分发:CDN(内容分发网络)的引入可以加速内容的传输和分发,但CDN节点的选择和配置也会影响播放的延迟。
为了降低RTMP播放器的延迟,可以采取以下措施:
- 优化网络状况,确保网络连接的稳定性和带宽的充足性。
- 调整推流设置,如使用更高效的编码器、降低GOP的值等。
- 配置播放器以使用较小的缓冲区或选择适合低延迟的播放模式。
- 合理配置CDN节点,确保内容能够快速、稳定地传输到用户端。
需要注意的是,虽然可以通过上述措施来降低RTMP播放器的延迟,但完全消除延迟是不可能的。因为RTMP协议本身是基于TCP的,而TCP协议具有重传机制,当网络出现丢包时会自动重传丢失的数据包,这会增加一定的延迟。此外,由于视频数据的处理和传输需要一定的时间,因此即使在最理想的情况下,RTMP播放器的延迟也会存在一定的最小值。
综上所述,RTMP播放器的延迟可以控制在一定范围内,但具体数值会受到多种因素的影响。在实际应用中,需要根据具体情况进行配置和优化以达到最佳的播放效果。
RTSP延迟没法再低了?
实际上,2015年,我们开始做RTMP的推拉流技术方案的时候,我们也遇到了同样的问题,我们先是发布了RTMP推送模块,发现市面上的开源的能找到的RTMP播放器,延迟都满足不了我们期望的毫秒级水准,无法实现移动单兵或其他操控类的使用场景。
为此,我们着手开始了全自研框架的RTMP播放器模块,2015年底,我们发布的延迟,让行业内大跌眼镜,左侧是我们的Windows平台RTMP推送模块,采集毫秒计时器窗口,然后,推送到nginx rtmp服务器,然后,右侧是我们的播放器拉取rtmp流的整体时延,整体毫秒级。

经过持续迭代后的SmartPlayer,早已脱胎换骨,Windows、Linux(含x86_64|aarch64)、Android、iOS全平台支持。
-
多实例播放\]支持多实例播放;
-
视频格式\]支持RTMP扩展H.265和Enhanced RTMP H.265,H.264;
-
H.264/H.265软解码\]支持H.264/H.265软解;
-
H.265硬解\]Windows/Android/iOS支持特定机型H.265硬解;
-
缓冲时间设置\]支持buffer time设置;
-
低延迟模式\]支持低延迟模式设置(公网200\~400ms);
-
快速切换URL\]支持播放过程中,快速切换其他URL,内容切换更快;
-
实时静音\]支持播放过程中,实时静音/取消静音;
-
实时快照\]支持播放过程中截取当前播放画面;
-
渲染角度\]支持0°,90°,180°和270°四个视频画面渲染角度设置;
-
等比例缩放\]支持图像等比例缩放绘制(Android设置surface模式硬解模式不支持);
-
ARGB叠加\]Windows平台支持ARGB图像叠加到显示视频(参看C++的DEMO);
-
解码后视频数据回调\]支持解码后YUV/RGB数据回调;
-
解码前音频数据回调\]支持AAC/PCMA/PCMU/SPEEX数据回调;
-
扩展录像功能\]完美支持和录像SDK组合使用。