文章目录

前言一、下载配置SRS二、推流测试三、接下来使用SRS官方提供的网页播放器拉流1. srs播放器http-flv2. webrtc拉流播放3. gst和ffmpeg播放工具拉流4. gstreamer设计管道拉流,可将rtmp延迟降低到500ms以内

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

前言

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

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

一、下载配置SRS

下载最新版本的SRS

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

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

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

二、推流测试

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

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

root@xxx:~# cd srs/trunk/

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

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

然后再本地推流,这里推流源使用的是分辨率为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.

命令运行成功后马上弹出本地视频播放界面。

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

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

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

1. srs播放器http-flv

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

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

2. webrtc拉流播放

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

3. gst和ffmpeg播放工具拉流

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

ffplay rtmp://服务器公网ip/live/livestream

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

由于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

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

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

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

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

相关链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。