技术背景
好多开发者在用过大牛直播SDK的RTSP播放器后,都希望我们也分享下,如何在Windows平台实现低延迟的RTSP播放?低延迟的RTSP播放器,说起来容易做起来难,下面,我们从以下维度做个探讨:
播放器设置优化:
- 缓存设置调整:不管你是使用VLC还是大牛直播SDK的SmartPlayer播放器,找到设置缓存相关选项。通常,降低缓存时间可以减少延迟,当然,缓存值不宜过小,否则可能会导致播放卡顿。在网络状况较好的情况下,可以将缓存时间设置在100-200毫秒。不同的播放器设置方式可能不同,需要根据具体的播放器进行查找和调整。
- 启用低延迟模式:SmartPlayer播放器有专门的低延迟模式选项,开启该选项可以降低播放延迟,这样保证过来数据就马上解码渲染。
网络优化:
- 选择合适的网络连接:使用高质量、稳定且带宽足够的网络连接,尽量减少网络波动和丢包现象。优先选择有线网络连接,如果必须使用无线网络,要确保信号强度和稳定性良好。
- 设置网络优先级:在 Windows 的网络设置中,可以为 RTSP 播放器相关的应用程序或进程设置较高的网络优先级,确保视频流量能够优先传输。具体操作方法是在 “任务管理器” 中找到相关应用程序,右键选择 “设置优先级”,将其设置为 “高” 或 “实时”(但要注意不要过度影响其他关键系统进程的运行)。
- 减少网络路径中的跳数和路由器数量:尽量减少网络传输过程中的中间节点,例如避免使用过多的路由器或网络交换机,因为每经过一个节点都可能会增加一定的延迟。
解码器和视频参数优化:
- 选择低延迟的解码器:有些播放器支持选择不同的解码器,优先选择专为低延迟优化的解码器,或者更新到最新版本的解码器,以获得更好的性能。
- 调整视频参数:如果可以调整视频源的参数,尝试减少 I 帧和 P 帧之间的间隔,因为间隔越小,解码所需的时间就越短,从而降低延迟。但需要注意,减小间隔可能会增加视频的码率和带宽需求。
硬件加速利用:
- GPU 加速:如果计算机的显卡支持 GPU 加速,并且播放器也支持该功能,开启 GPU 加速可以大大提高视频解码和处理的速度,从而减少延迟。在播放器的设置中查找相关的 GPU 加速选项并启用它。
- 使用性能更好的硬件:升级计算机的硬件,如处理器、内存等,可以提高系统的整体性能,减少视频处理和播放过程中的延迟。
代码层面优化:
- 优化数据接收和处理流程:在开发自己的 RTSP 播放器应用程序时,要优化代码中数据接收和处理的逻辑,减少不必要的操作和等待时间,提高数据处理的效率。
- 设置合适的超时时间和自动切换协议:根据实际网络情况,设置合理的 RTSP 超时时间,并开启自动切换 TCP/UDP 等传输协议的功能,以便在网络状况变化时能够及时调整传输方式,减少延迟。
VLC还是SmartPlayer
VLC Media Player
先说VLC,VLC播放器是一款非常受欢迎的多媒体播放器:
功能强大且开源免费:VLC 是一款功能强大的多媒体播放器,支持多种音频和视频格式以及流媒体协议,对 RTSP 协议的支持良好。用户可以方便地播放来自网络摄像头、流媒体服务器等的 RTSP 视频流。并且其开源的特性使得开发者可以根据自己的需求对其进行修改和优化,也为软件的不断改进提供了可能。
跨平台性:可在 Windows、macOS、Linux 等多种操作系统上运行,这对于需要在不同平台上使用 RTSP 播放器的用户来说非常方便,能够满足不同用户在各种操作系统环境下的需求。
广泛的解码器支持:能播放大多数常见的视频和音频格式,对于不同编码格式的 RTSP 流都有较好的兼容性。无论是 H.264、H.265 等视频编码格式,还是 AAC、PCMA、PCMU 等音频编码格式的 RTSP 流,VLC 通常都能顺利播放。
操作相对简单:界面简洁,易于上手。用户只需简单地输入 RTSP 流的 URL 地址,即可快速播放视频。
支持多种功能和设置:除了基本的播放功能外,还支持一些高级功能,如播放控制(播放、暂停、快进、快退等)、音频和视频轨道的选择、字幕设置等。用户可以根据自己的需求进行相应的设置和调整。
VLC播放器也并非完美无缺,存在一些不足之处,可能存在一定的延迟,在播放 RTSP 流时,可能会出现一定程度的延迟。不过,这种延迟情况可以通过调整播放器的缓存设置等参数来进行优化,但如果网络环境较差,延迟可能仍然比较明显。性能消耗尽管已经做的很好,但是相对较大,对于一些配置较低的计算机,播放高清或高码率的 RTSP 流时,可能会占用较多的系统资源,导致计算机性能下降,出现播放卡顿等情况。总体来说,VLC 播放器是一款功能强大、实用性高的多媒体播放器,值得用户尝试和使用。特别是点播或本地文件播放,非常适用,对延迟要求的场景下,略显不足。
SmartPlayer
大牛直播SDK的SmartPlayer播放器,始于2015年,业内一致认可的跨平台RTSP直播播放器SDK,除了功能齐全、性能稳定,延迟非常低(100-300ms区间),以播放海康2560*1440分辨率,8M固定码率为例,SmartPlayer做到的延迟如下:
RTSP播放器,一般建议实现的功能如下(如不单独说明,系Windows、Linux、Android、iOS全平台支持),当然,如果您是用在特定场景,一般不需要实现的这么齐全。
- [支持播放协议]高稳定、超低延迟、业内首屈一指的RTSP直播播放器SDK;
- [多实例播放]支持多实例播放;
- [事件回调]支持网络状态、buffer状态等回调;
- [视频格式]支持H.265、H.264,此外,还支持RTSP MJPEG播放;
- [音频格式]支持AAC/PCMA/PCMU;
- [H.264/H.265软解码]支持H.264/H.265软解;
- [H.264硬解码]Windows/Android/iOS支持特定机型H.264硬解;
- [H.265硬解]Windows/Android/iOS支持特定机型H.265硬解;
- [H.264/H.265硬解码]Android支持设置Surface模式硬解和普通模式硬解码;
- [RTSP模式设置]支持RTSP TCP/UDP模式设置;
- [RTSP TCP/UDP自动切换]支持RTSP TCP、UDP模式自动切换;
- [RTSP超时设置]支持RTSP超时时间设置,单位:秒;
- [RTSP 401认证处理]支持上报RTSP 401事件,如URL携带鉴权信息,会自动处理;
- [缓冲时间设置]支持buffer time设置;
- [首屏秒开]支持首屏秒开模式;
- [复杂网络处理]支持断网重连等各种网络环境自动适配;
- [快速切换URL]支持播放过程中,快速切换其他URL,内容切换更快;
- [音视频多种render机制]Android平台,视频:surfaceview/OpenGL ES,音频:AudioTrack/OpenSL ES;
- [实时静音]支持播放过程中,实时静音/取消静音;
- [实时音量调节]支持播放过程中实时调节音量;
- [实时快照]支持播放过程中截取当前播放画面;
- [只播关键帧]Windows平台支持实时设置是否只播放关键帧;
- [渲染角度]支持0°,90°,180°和270°四个视频画面渲染角度设置;
- [渲染镜像]支持水平反转、垂直反转模式设置;
- [等比例缩放]支持图像等比例缩放绘制(Android设置surface模式硬解模式不支持);
- [实时下载速度更新]支持当前下载速度实时回调(支持设置回调时间间隔);
- [解码前视频数据回调]支持H.264/H.265数据回调;
- [解码后视频数据回调]支持解码后YUV/RGB数据回调;
- [解码前音频数据回调]支持AAC/PCMA/PCMU数据回调;
- [音视频自适应]支持播放过程中,音视频信息改变后自适应;
- [扩展录像功能]完美支持和录像SDK组合使用。
VLC和SmartPlayer延迟比较
本次播放的是海康2560*1440分辨率,8M码率的rtsp流,延迟对比如下
可以看到,vlc延迟在1.5秒左右,大牛直播SDK的SmartPlayer的延迟在200来毫秒,在对延迟不敏感的场景下,vlc也是个不错的选择,如果对延迟和稳定性要求非常高的场景,SmartPlayer更胜一筹。以上是二者的比较,感兴趣的开发者,可以单独跟我探讨。