揭秘低延迟推流服务器,实现超高速实时数据传输的核心技术解析
低延迟推流服务器的奥秘
1、低延迟的核心在于缩短播放端与推流端的时间差,尽可能让两者同步,实现这一目标的关键词是“无缓存”(no buffer),让我们了解一下视频流的传输路径:从推流端出发,经过CDN服务器,最终到达拉流端,在推流端采用no buffer策略,意味着我们需要确保推流端的缓存(buffer)尽可能小,以实现即时传输。
2、在网络直播领域,“推流”指的是将现场采集的视频信号通过特定的传输协议封装,并实时发送到服务器的过程,这一过程对网络稳定性的依赖性极高,网络波动可能导致直播画面出现卡顿和延迟,严重影响观众的观看体验,常见的流传输协议包括RTSP、RTMP、HLS等,其中RTMP因其低延迟特性,被广泛应用于手机直播。
3、当遇到OBS推流延迟问题时,提前寻求解决方案至关重要,调整延迟的关键在于优化推流、服务器和播放环节,在OBS中,可以通过降低码率、优化网络传输和提升播放端性能来减少整体延迟,直播延迟受到编码质量、网络状况和播放端优化的共同影响,通过综合调整这些环节,可以有效降低延迟,提升直播体验。
如何设置OBS以降低延迟
1、启动OpenBroadcasterSoftware(OBS),在软件的顶部菜单栏中,选择“设置”选项,或使用快捷键S快速打开设置界面,在设置界面左侧,找到“广播设置”,将广播模式切换为“直播流”,在“直播选项”中,输入您希望设置的延迟时间,通常几分钟即可,过长的延迟可能会影响与观众的实时互动。
2、点击左上角的“文件”选项,选择下方的“设置”,在打开的窗口中,点击左侧栏的“高级”选项,然后在右侧找到“流延迟”,勾选启用的小方框,并输入所需持续的时间。
3、解决方案:建议更换上行速度更快的网络,或使用4G网络进行直播,使用OBS直播时,至少需要1M/s的上行带宽,在【设置->输出】中,将输出模式设置为高级,然后设置比特率为500~1000,关键帧间隔为1,打开OBS推流软件,在【设置->输出】中调整比特率,观察直播延迟是否有所改善。
网络直播中的“推流”含义
1、“推流”是指将现场采集的视频信号封装并实时传输到服务器的过程,实际上是将实时内容实时发送到互联网上,这一过程对网络稳定性有着较高的要求,任何网络波动都可能造成直播卡顿,影响观众的观看体验。
2、所谓“推流”,是指将采集阶段封包好的内容传输到服务器的过程,即将现场的视频信号传递至网络,这一过程对网络质量要求较高,网络不稳定会导致直播效果不佳,观众观看时可能会遇到卡顿等问题,为了进行推流,还需要将音视频数据使用传输协议封装成流数据。
3、推流是将视频信号从采集阶段传输到服务器的过程,涉及将音视频数据封装成流数据,并使用如RTMP、RTSP或HLS等传输协议进行流传输,由于推流对网络质量有较高要求,网络不稳定可能会导致直播画面卡顿,影响观众体验。
GlobalBuffer与NoBuffer的区别
1、推流端的no buffer策略,旨在确保推流端缓存(buffer)最小,从而在出现网络波动或突发情况时,能够迅速舍弃已缓存的视频帧,继续推送最新的视频帧,这保证了在网络端开始传输时,视频内容是最新的。
2、某些情况下,如ob_end_clean()无法删除缓冲区,可能是因为没有缓冲区可供删除。
3、在SketchRendering.h和SketchRendering.cpp文件中,位于RuntimeRendererPrivate目录下,创建了GlobalShader,定义了Shader参数结构体,并在AddSketchShadowPass函数中设置参数并绘制Pass,最终将结果写入自定义的GBufferG,SkyRenderShadowShader.usf文件用于实现排线效果,该文件参考了《Unity Shader入门精要》中的相关代码,并进行了适当的调整。