当前位置:   article > 正文

华为云云耀云服务器L实例评测|将rtmp延迟降低到500ms以内-srs流媒体服务器测试(rtmp、http-flv、webrtc)_srs延迟优化

srs延迟优化


前言

最近华为云提供华为云-云耀云服务器出了一项 征文活动,可以免费试用。于是本人也迫不及待的白嫖体验一下华为云云耀云服务器L实例,该实例配置如下图,系统版本为服务器系统版本
系统版本为

本次测试方向是使用SRS开源服务。SRS是一个简单高效的实时视频服务器,支持RTMP/WebRTC/HLS/HTTP-FLV/SRT/GB28181。在这里插入图片描述
本次测试RTMP和WebRTC相关功能。


一、下载配置SRS

下载最新版本的SRS

git https://gitee.com/ossrs/srs.git
  • 1

这里是srs官网文档,跟着文档介绍可以轻松完成配置编译使用。srs作为开源项目有很多教程以及中文文档,对于初学者来说是容易上手的。

由于流媒体服务器使用时需要tcp和udp一些网络端口,在运行srs服务之前还需要配置华为云服务器的相关网络端口,华为云服务器默认是关闭的,建议先关掉服务器的防火墙再使用。先进入控制台-安全组里面。
在这里插入图片描述
然后再入向规则里面将一些默认的流媒体端口打开,当然也可以自己选择使用哪些端口。在这里插入图片描述

二、推流测试

官方文档里面给的ffmpeg命令推流使用的,这里使用gstreamer命令推流。
首先将云服务器上的srs跑起来。

完成配置后首先进入srs目录

root@xxx:~# cd srs/trunk/
  • 1

然后选择rtc相关的配置文件启动服务

root@xxx:~/srs/trunk# ./objs/srs -c conf/rtc2rtmp.conf 
  • 1

然后再本地推流,这里推流源使用的是分辨率为1472*720帧率为30的MP4文件。
在这里插入图片描述
在推流的同时本地也播放文件,视频为一个计时器的录屏。这样在拉流时可以粗略的得出 延时情况。这里使用的win11,d3d11h264dec和d3d11videosink都是win端使用的相关插件。

gst-launch-1.0  flvmux name=mux1  ! rtmpsink location= rtmp://124.71.37.43/live/livestream  filesrc location=1472_720_30.mp4  ! qtdemux name=dmux  dmux.video_0 !  tee name=v ! queue ! h264parse ! d3d11h264dec ! d3d11videosink  v. ! h264parse ! queue  ! mux1.   dmux.audio_0 ! tee name=a  ! aacparse ! queue ! mux1.
  • 1

命令运行成功后马上弹出本地视频播放界面。
在这里插入图片描述

三、接下来使用SRS官方提供的网页播放器拉流

SRS也提供了拉流播放工具,访问网页可以进入

http://服务器公网ip:8080/players/srs_player.html
  • 1

1. srs播放器http-flv

这里注意不要使用服务器的局域网ip,在系统中用命令获得的局域网ip。网页界面如下
srs网页播放界面
点击播放视频可以对比一下播放画面在这里插入图片描述

可以看出srs的http-flv网页端播放延迟还是比较低的。

2. webrtc拉流播放

再测试一下rtc拉流播放
在这里插入图片描述
可以看出webrtc的延迟更低,大概就一帧左右的差距不过音频播放是异常的。应该是srs官方出的webrtc拉流只考虑视频传输的实时性。

3. gst和ffmpeg播放工具拉流

不妨在对比ffmpeg和gstreamer播放工具拉流

ffplay rtmp://服务器公网ip/live/livestream
  • 1
gst-play-1.0 rtmp://服务器公网ip/live/livestream
  • 1

在这里插入图片描述
由于ffmpeg的ffplay和gstreamer的gst-play-1.0播放工具在实时性拉流方面优化度不及网页端。。如果是自己使用gst和ffmpeg做实时拉流播放器时这里还是有很大优化空间的。

4. gstreamer设计管道拉流,可将rtmp延迟降低到500ms以内

首先推流win桌面画面,这里使用Windows环境使用英伟达显卡选择编码器为nvh264enc。推流设置为1080p@30,码率为2mbps。为了降低延迟选择无B帧。

拉流命令使用如下

gst-launch-1.0 rtmpsrc location=rtmp://ipxxx/live/livestream  !  flvdemux name=d  ! queue ! h264parse ! d3d11h264dec ! d3d11videosink d.  ! queue ! aacparse !  avdec_aac ! audioconvert ! audioresample ! autoaudiosink -v
  • 1

在这里插入图片描述
最终对比桌面浏览器显示的计时器与拉流播放窗口Direct3D11 renderer对比。时差在400多ms,500ms以内。500ms以内的rtmp直播目标实现。

四、华为云耀云服务器L实例体验感受

经过粗略测试来看,使用http-flv延迟在一秒以内,可以满足大部分直播场景的需求了。webrtc可以做到更低的延迟,对于音视频会议来说是一个很好的方案,可以直接将网页作为客户端。srs还支持众多协议这里就不一一测试了。当然开源的流媒体服务器也还有,比如zlmediakit。感谢这些开源创造者们的付出。

同时使用华为云耀云服务器L实例体验感还是不错的,虽然配置只是2g内存以及3M带宽,但是部署一个轻量级流媒体服务还是可以的。同时遇到的一些问题申请工单,华为工程师也很负责的耐心解决。喜欢白嫖的同学们可要抓紧时间了。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/430998
推荐阅读
相关标签
  

闽ICP备14008679号