srs流媒体服务器windows_音视频开发为什么要学SRS流媒体服务器

1 SRS是什么

官方定义:SRS是一个流媒体集群,支持RTMP/HLS/HTTP-FLV/RTSP/DASH/WebRTC/SRT/GB28181,高效、稳定、易用,简单而快乐。有将近10k star(包括https://github.com/ossrs/srs链接)

网址:https://github.com/winlinvip/srs (目前作者主要维护的链接)

SRS基本资料:

Wiki地址,里面有上百篇详细文档,第一入手资料:https://github.com/ossrs/srs/wiki

Git分支,可以看源码:https://github.com/winlinvip/srs

官网,有安装包,客户端供大家测试体验:http://www.ossrs.net/srs.release/releases/

2 SRS能够解决什么问题

2.1 工程案例

SRS支持的特性非常多,传统的RTMP直播应用不用多说,我们这里说一些新的趋势。

案例1:传统的视频监控客户端都是Windows pc桌面客户端,现在较多的公司都需要实现通过web去查看远程的视频监控,此时可以通过RTSP/GB28181推流推送到SRS流媒体服务器,然后通过RTMP或者HTTP-FLV协议进行拉流查看远程的摄像头。

案例2:传统的推流端都需要安装安装应用软件才能实现推流,但是目前也是有web化的趋势,需要通过浏览器网页将音视频画面推送给听众,此时就可以通过WebRTC推流到SRS流媒体服务器,然后观众通过RTMP、HTTP-FLV等方式观看直播。

2.2 技术储备

作为一个流媒体人,需要精通RTMP/HLS/HTTP-FLV/RTSP/DASH/WebRTC等协议,怎么精通呢?

  • 光看协议手册是没有用的
  • 光百度找文章也是没有用的

建议大家深入分析SRS源码:

  • SRS的源码逻辑非常清晰
  • 官网github也提供了详细的wiki文档资料和大量的issue
  • 大量的issue都是工程化中遇到的问题,以及如何解决,对于我们面试和工作开发都非常有帮助
  • 支持forward模式小规模集群和edge模式大规模集群

大家需要特别注意的一个点是,在学习SRS源码的时候,百度找SRS文章绝对只是辅助,并不能实际解决我们怎么学习SRS,我是建议大家:(1)阅读srs官方的wiki;(2)使用gdb等调试工具跟踪代码。

具体的学习方法可以参考 4节 SRS如何学习。

3 SRS是否有商业应用

有些朋友担心SRS能否在商业项目中应用,有没有商业用,去招聘网站搜一搜,看看大公司在招聘的时候是否需要掌握该服务器就知道了,比如在boss直聘输入SRS,我这里只列了3家公司的招聘需求。

5bcfafe2d6431b7ec77673a09995c127.png

faeac65a747e32b9acb69b5ddce40e1c.png

7be511c6945aa329df882bcec2530ef2.png

从招聘结果可以看出来,当我们如果应聘的是流媒体相关岗位时,掌握SRS流媒体是一个必须项或者加分项目。这也说明SRS流媒体服务器在实际开发中的需求。

314dc4612c34f709c6f33a70086b3468.png

注:音视频流媒体服务开发训练营学习地址:流媒体服务开发训练营

4 SRS如何学习

学习SRS流媒体服务器,建议少百度,多看官方wiki和自己动手实践:

  1. 看wiki
  2. 通过gdb跟踪代码
  3. 结合gdb分析srs框架
  4. 结合流媒体协议分析RTMP/HLS/HTTP-FLV/RTSP/WebRTC等的具体实现

以官方的RTMP部署为例:https://github.com/ossrs/srs/wiki/v1_CN_SampleRTMP

# conf/rtmp.conf
listen              1935;
max_connections     1000;
vhost __defaultVhost__ {
}

这里涉及到了端口1935,我们从这里也可以推断出,该配置文件配置了端口1935,那RTMP是要监听该端口。

要监听该端口则一定会去读取listen这个字段。比如我们在source insight 搜索"listen"

0d260245151e97ff939d1bd821e793cd.png

从这里我们可以看到SrsConfig这个类,有去读取"listen"字段,实际上如果我们点开SrsConfig,我们可以很容易的发现所有的配置文件都是由该类去读取。

我们再进一步,只关注 get("listen")这样的字段,查找到

vector<string> SrsConfig::get_listens()

{

std::vector<string> ports;

SrsConfDirective* conf = root->get("listen"); // 从配置文件也可以出来,listen字段是在root

if (!conf) {

return ports;

}

for (int i = 0; i < (int)conf->args.size(); i++) {

ports.push_back(conf->args.at(i));

}

return ports;

}

我们在就可以通过gdb在SrsConfig::get_listens打断点

  1. 使用gdb启动:gdb ./objs/srs
  2. 设置参数:set args -c ./conf/rtmp.conf
  3. 打断点:建议先在main函数打断点,然后run到main函数等so加载后再在SrsConfig::get_listens打断点,否则出现下面红色框的问题

ce98fe39994418a41896dcf981fc4c2f.png
  1. 在main打断点后,run起来停在main函数

b357de6abcda3450f7f45822e3a1abad.png
  1. 然后停在了main函数,此时可以断点

45ad5c6fd52b8a3485cb110dbcf68930.png
  1. 还是报出来红色框的问题,那我们可以按代码位置下断点,在srs_app_config.cpp:3983下断点

2378695a5db477e1fc9091dab9bb8f09.png

然后输入r重启程序,按c直到进入rs_app_config.cpp:3983断点,再按bt可以看到我们读取配置文件,监听rtmp port的调用栈。

f5cdf6bf2ca7bbec7e75cf885379b517.png

但此时如果我们去看调用栈,发现它只是检测配置文件是否正确,我们可以再继续输入c,然后输入bt看调用栈,直到我们看到在调用看到一些listen的字眼。

此时可以根据调用栈分析srs监听端口的框架流程

e05ba6f63b7c7bae226c67623822bb71.png

可以定位到src/app/srs_app_server.cpp:1246去查看

0d12ef12b7eb21b989a9c5afcf018eb7.png

此时可以找到rtmp的监听流程。

以上只是小试牛刀,对于srs框架分析我这里还录制了一些视频,大家可以加群获取。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: SRS(Simple Realtime Server)是一个开源的流媒体服务器,它支持在Windows操作系统上运行。SRS是由开发人员集体开发维护的,是一个高性能、稳定可靠的流媒体服务器软件。 SRS服务器支持的流媒体协议包括RTMP、HTTP-FLV和HLS,这些协议使得SRS可以向客户端提供实时的音视频流媒体服务。RTMP(Real-Time Messaging Protocol)是一种实时消息传输协议,常用于音视频的实时传输;HTTP-FLV(HTTP Dynamic Streaming)是一种基于HTTP的动态流媒体传输协议,常用于Web端的音视频播放;HLS(HTTP Live Streaming)是一种苹果公司提出的流媒体传输协议,能够实现自适应流媒体传输。 SRS流媒体服务器支持的功能丰富,包括录制、转码、推流、拉流、直播、点播等。用户可以通过SRS服务器进行音视频的录制,并将录制的内容转码成不同的格式和分辨率。同时,用户可以通过推流功能将音视频内容推送到SRS服务器上,并通过拉流功能从SRS服务器上获取音视频内容,实现实时的音视频传输。 SRS服务器具有高性能和稳定可靠的特点。它采用异步事件驱动的方式来处理客户端的请求,能够在高并发条件下保持低延迟的传输。此外,SRS服务器还具备自适应码率调整和优化网络质量的能力,可以根据客户端的网络环境实时调整音视频的码率和分辨率,保证音视频的传输质量和用户的观看体验。 总之,SRS流媒体服务器是一个功能强大的开源软件,适用于Windows操作系统,可用于搭建高性能、稳定可靠的流媒体传输平台。它具有丰富的功能和灵活的配置选项,可以满足不同用户的需求。 ### 回答2: SRS(Simple-RTMP-Server)是一个开源的流媒体服务器,它可以在Windows操作系统上运行。 SRS基于RTMP协议,可以处理来自客户端的音频、视频和数据流,并将其传递给观众。它支持多种客户端平台,包括Flash播放器、HTML5浏览器以及移动端应用。 在Windows安装和配置SRS服务器相对简单。首先,您需要下载适用于WindowsSRS软件,并将其解压缩到您的计算机。然后,您可以通过修改SRS配置文件来自定义服务器设置,比如监听端口、带宽限制和流媒体的存储路径等。 安装和配置完成后,您可以启动SRS服务器,它将等待客户端的连接请求。一旦有客户端连接到服务器SRS将处理客户端的请求并将流媒体数据发送到客户端。 SRS服务器具有强大的功能,可以支持许多高级特性,如动态切换和录制流、水印添加、防盗链和推流鉴权等。此外,SRS还提供了管理界面和统计数据,方便您监控和管理服务器的性能和状态。 总结而言,SRS是一个功能强大、易于安装和配置的流媒体服务器,它可以在Windows操作系统上运行,帮助您实现高质量的音视频直播和点播。无论是搭建在线直播平台、视频会议系统还是媒体资源分发,SRS都是一个不错的选择。 ### 回答3: SRS流媒体服务器是一款基于Windows平台的开源流媒体服务器软件。它可以将音视频文件、摄像头、屏幕分享等数据转化为流媒体格式,通过网络传输给用户进行实时播放或点播。 SRS流媒体服务器具有以下几个特点。首先,它支持多种流媒体传输协议,例如RTMP、RTSP、HLS等,可以满足不同终端设备的播放需求。其次,SRS提供了丰富的配置选项和管理接口,用户可以根据实际需求进行灵活的配置和管理。再次,SRS具备较好的性能和稳定性,能够支持大规模的并发用户访问。 使用SRS流媒体服务器可以搭建一个完整的音视频直播系统或点播系统。首先,需要安装和配置SRS服务器软件,并设置相关流媒体传输协议和编码参数。然后,可以通过SRS提供的推流器将音视频源推送到服务器上。最后,用户可以通过浏览器、移动设备或其他终端设备连接到服务器,进行实时播放或点播。 对于Windows平台的用户来说,SRS流媒体服务器提供了简单易用的安装程序,并且具备较好的兼容性和稳定性。可以通过官方网站或开源社区获取SRS的最新版本,并获得相应的文档和教程进行学习和使用。通过SRS流媒体服务器,用户可以构建一个高效、可靠的流媒体传输平台,满足各类音视频应用的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值