电子商务网站建设与维护读书报告,网站开发过程总结,百度云盘官网,国家企业信用系统查询系统SRS#xff08;Simple Realtime Server#xff09;是一个开源的、基于MIT协议的实时视频服务器#xff0c;以其简单、高效而著称。它支持多种流媒体协议#xff0c;包括RTMP、WebRTC、HLS、HTTP-FLV、SRT、MPEG-DASH和GB28181等#xff0c;使其成为直播和WebRTC领域的理想…SRSSimple Realtime Server是一个开源的、基于MIT协议的实时视频服务器以其简单、高效而著称。它支持多种流媒体协议包括RTMP、WebRTC、HLS、HTTP-FLV、SRT、MPEG-DASH和GB28181等使其成为直播和WebRTC领域的理想选择。
功能与协议支持 SRS的核心功能在于流的接收和分发它支持将RTMP或SRT等协议转换为HLS、HTTP-FLV或WebRTC等以适应不同的应用场景。 在直播领域SRS能够处理RTMP、HLS、SRT、MPEG-DASH和HTTP-FLV等协议而在WebRTC领域则支持WebRTC、WHIP和WHEP等协议。
环境准备
推荐使用Ubuntu 20或以上的操作系统进行SRS的搭建。腾讯及阿里轻云2核2G的均可使用大流量对带宽有一定的要求。大流量最好是采用云服务器非轻云可支持大流量
下载源码
git clone -b develop https://gitee.com/ossrs/srs.git编译安装
切换到SRS的trunk目录cd srs/trunk执行配置脚本./configure编译SRSmake启动服务器
启动SRS服务器
./objs/srs -c conf/srs.conf检查SRS状态
可以通过以下两种方式检查SRS是否成功启动 访问Web界面打开浏览器输入 http://localhost:8080/ 查看SRS的控制台界面。 查看SRS的状态命令 ./etc/init.d/srs status查看SRS的日志 tail -n 30 -f ./objs/srs.logSRS运行示例
如果SRS正在运行你将看到类似于以下的输出
$ ./etc/init.d/srs status
SRS(pid 90408) is running. [ OK ]$ tail -n 30 -f ./objs/srs.log
[2021-08-13 10:30:36.634][Trace][90408][12c97232] Hybrid cpu0.00%,0MB, cid1,1, timer61,0,0, clock0,22,25,0,0,以上步骤完成后SRS直播服务器将成功运行你可以开始推流和观看直播流了。
安装目录与服务状态检查
首先我们需要安装SRS并检查其服务状态。以下是安装目录和检查服务状态的步骤 进入SRS安装目录 cd /srv/srs/trunk查看端口占用情况 lsof -i :8080查看SRS服务状态 ./etc/init.d/srs status使用指定配置启动SRS ./objs/srs -c conf/srs.conf启动SRS服务 ./etc/init.d/srs start启动后的平台地址为http://127.0.0.18080/
本地Win10电脑推流
在Windows 10上我们可以使用OBS Studio进行推流。以下是添加媒体源和推流的步骤
在OBS Studio中添加媒体源。启动推流。 拉流工作与FFmpeg命令
linux安装ffmpeg可使用不编译的) ffmpeg启动 ## ffmpeg -i rtmp://127.0.0.1/live/livestream -c copy -f segment -segment_time 5 stream_piece_%d.mp4 #启动拉流 FFmpeg命令用于将RTMP流媒体源在本例中为rtmp://127.0.0.1/live/livestream以分段的方式保存为一系列的MP4文件。下面是命令中各参数的说明
-i rtmp://127.0.0.1/live/livestream指定输入流媒体地址这里的rtmp://127.0.0.1/live/livestream表示本机上的一个实时流。-c copy表示不进行重新编码直接复制流媒体数据。这意味着输出的视频和音频数据的编码格式与输入流相同。-f segment指定输出格式为“segment”即分段输出。这意味着FFmpeg会将输入流分割成多个片段。-segment_time 5设置每个输出片段的持续时间。在这个例子中每个片段的长度是5秒。stream_piece_%d.mp4这是输出文件名的格式。%d是一个占位符表示片段的序号FFmpeg会为每个输出片段分配一个递增的数字。因此输出的文件名将是stream_piece_1.mp4、stream_piece_2.mp4等。 在OBS停止推流或视频播放结束都算是推流结束。 推流结束后ffmpeg运行就结束了。 会在目录内有一个stream_price_1.mp4…stream_price_30.mp4批量的mp4下载本地电脑点开就可以播放了。
SRS配置与HTTP回调
SRS支持HTTP回调可以用于流的鉴权和业务定制。以下是配置和使用HTTP回调的步骤
- SRS的回调事件包括
on_publish: 当客户端发布流时譬如flash/FMLE方式推流到服务器on_unpublish: 当客户端停止发布流时on_play: 当客户端开始播放流时on_stop: 当客户端停止播放时on_dvr: 当DVR录制关闭一个flv文件时on_hls: 当HLS关闭一个TS文件时
- 使用PHP处理SRS的回调例如
$body json_decode(file_get_contents(php://input));
echo json_encode(array(code0, msgOK));
##未做验证测试回调接口确保返回正确的状态码和内容。
接口srs_on_publish正确返回code:0 /srv/srs/trunk/conf/srs.conf vhost defaultVhost { … http_hooks { enabled on; on_publish https://aaa.ggixxx.com/web-api/open/srs_on_publish; #域名是虚拟的 } … }
推流不成功如何查错
1 问题一
rootVM-16-6-ubuntu:/srv/srs/trunk# tail -n 1000 -f ./objs/srs.log | grep api
没有发现在有过滤api的表示api接口有问题。2常犯的错误验证接口是 POST,不是GET
试控流接口
$ curl https://dou.ggiooo.com/web-api/open/srs_on_publish -s -X POST -H Content-type:applicatin/json
{code:-1,msg:error} #表示没有权限不能收流$ curl https://dou.ggiooo.com/web-api/open/srs_on_publish -s -X POST -H Content-type:applicatin/json
{code:1} #输出1或code1表示有权限推流以上修改了接口需要重启
rootVM-16-6-ubuntu:/srv/srs/trunk# ./objs/srs -c ./conf/srs.conf结语
SRS是一个功能强大的实时视频服务器它支持多种流媒体协议和功能如推流、拉流、转码、截图和流转发。通过详细的配置和测试我们可以利用SRS构建一个高效、稳定的直播系统。希望这篇文章能帮助你更好地理解和使用SRS。