当前位置: 首页 > backend >正文

WebRTC 服务器之SRS服务器概述和环境搭建

1.概述

        SRS(Simple Realtime Server)是一款高性能、跨平台的流媒体服务器,支持多种协议,包括 RTMP、WebRTC、HLS、HTTP-FLV、SRT、MPEG-DASH 和 GB28181。本文介绍了 SRS,包括其用途、关键功能、架构和支持协议。SRS 旨在创建一个免费的开源社区,帮助开发人员构建高质量的流媒体和 RTC 平台。它已获得 MIT 许可,使其适用于商业和非商业用途。

目标和设计理念

SRS 旨在成为一种简单、高效和实时的流媒体服务器,其基本功能侧重于性能和稳定性。代码库遵循模块化架构,将核心服务器框架、协议处理程序和流处理组件之间的关注点分开。

2.环境搭建

2.1 srs源码下载

git clone https://github.com/ossrs/srs.git srs.4.0
cd srs.4.0
./configure --gb28181=on --debug=on && make

 2.2 srs服务启动

srs.conf 配置示例

# 主配置文件 for SRS(Simple Real-time Messaging Server)
# @see full.conf for detail config.  # 详见 full.conf 以获取详细配置# 监听的 RTMP 推流端口,默认为 1935
listen              1935;# 最大连接数,限制同时可建立的连接数量
max_connections     1000;# 日志存储方式,可选值为 file 或 console,默认为 file
# srs_log_tank        file;# 日志文件的路径,默认为 ./objs/srs.log
#srs_log_file        ./objs/srs.log;# 开启守护进程模式,使 SRS 在后台运行
daemon              on;# srs提供辅助功能以html显示,有srs控制台,srs播放器 HTTP 服务器配置 
http_server {# 启用 HTTP 服务器功能enabled         on;# HTTP 服务器监听的端口,默认为 8080listen          8080;# 静态文件的存储目录,默认为 ./objs/nginx/htmldir             ./objs/nginx/html;
}# srs推流信令api HTTP API 配置
http_api {# 启用 HTTP API 功能enabled         on;# HTTP API 监听的端口,默认为 1985listen          1985;
}# RTC 服务器配置
rtc_server {# 启用 RTC 服务器功能enabled on;# RTC 服务器监听的端口,注意是 UDP 协议,默认为 8000listen 8000;# 服务器提供服务的 IP 地址,由于 RTC 的特殊性,必须配置这个地址# 可以通过多种方式配置,如固定 IP、环境变量、自动获取等 #  = * 自动获取 = 127.0.0.1指定 =$CANDIDATE 以ifconfig网卡接口作为ipcandidate 117.72.13.81;
}# 默认虚拟主机配置
vhost __defaultVhost__ {# HLS 配置hls {# 启用 HLS 功能enabled         on;}# HTTP-FLV 配置http_remux {# 启用 HTTP-FLV 功能enabled     on;# 指定要转换的流的挂载点,格式为 [vhost]/[app]/[stream].flvmount       [vhost]/[app]/[stream].flv;}# RTC 配置rtc {# 启用 RTC 功能enabled     on;# 是否开启 RTMP 转 RTC,默认为 offrtmp_to_rtc on;# 是否开启 RTC 转 RTMP,默认为 offrtc_to_rtmp on;}
}
./objs/srs -c conf/srs.conf
tail -f ./objs/srs.log

2.2.1 使用Docker 启动

docker run --rm -it -p 1935:1935 -p 1985:1985 -p 8080:8080 \-p 8000:8000/udp -p 10080:10080/udp ossrs/srs:5

2.3 效果演示

 2.3.1 推流至srs服务器

除了可以使用ffmpeg进行推流,也可以使用obs进行推流。

#使用ffmpeg文件推流远程服务器
ffmpeg -re -i  time.flv  -vcodec copy -acodec copy  -f flv -y rtmp://117.72.13.86:1935/live/livestream

 2.3.1 srs服务器拉流

#1. srs播放器拉流访问
http://localhost:8080/
http://localhost:1985/api/#2.ffplay拉流
ffplay rtmp://localhost:8080/live/livestream
ffplay http://localhost:8080/live/livestream.flv
ffplay http://localhost:8080/live/livestream.m3u8#3. 官方在线播放器
https://ossrs.net/srs.release/trunk/research/players/rtc_player.html?autostart=true&server=r.ossrs.net&vhost=r.ossrs.net

进入上文srs播放器播放即可

http://127.0.0.1:8080/players/srs_player.html?schema=http

官方学习地址

https://ossrs.net/lts/zh-cn/docs/v4/doc/http-api
https://ossrs.net/lts/zh-cn/blog/lets-do-h265-live-streaming
https://ossrs.net/lts/zh-cn/guide

学习资料分享

0voice · GitHub

http://www.xdnf.cn/news/4015.html

相关文章:

  • 【算法笔记】动态规划基础(二):背包dp
  • TopK题-快速选择方法
  • 数据结构实验8.1:图的基本操作
  • 联邦学习的深度解析,有望打破数据孤岛
  • 005-nlohmann/json 基础方法-C++开源库108杰
  • Sim Studio 是一个开源的代理工作流程构建器。Sim Studio 的界面是一种轻量级、直观的方式,可快速构建和部署LLMs与您最喜欢的工具连接
  • 网络安全自动化:找准边界才能筑牢安全防线
  • 数据结构中 数组、链表、图的概念
  • 深入理解CSS盒子模型
  • 如何使用QWidgets设计一个类似于Web Toast的控件?
  • 【Java ee初阶】多线程(5)
  • Electron 架构详解:主进程与渲染进程的协作机制
  • [低代码 + AI] 明道云与 Dify 的三种融合实践方式详解
  • FreeRTOS菜鸟入门(十一)·信号量·二值、计数、递归以及互斥信号量的区别·优先级翻转以及继承机制详解
  • 英伟达语音识别模型论文速读:Token-and-Duration Transducer(TDT)架构
  • Android 控件CalendarView、TextClock用法
  • Notebook.ai 开源程序是一套工具,供作家、游戏设计师和角色扮演者创建宏伟的宇宙 - 以及其中的一切
  • GZ人博会自然资源系统(测绘)备考笔记
  • 25:三大分类器原理
  • 小刚说C语言刷题—1038编程求解数学中的分段函数
  • brpc 安装及使用
  • MVC、MVP、MVVM三大架构区别
  • HTML05:超链接标签及应用
  • C++笔记之反射、Qt中的反射系统、虚幻引擎中的反射系统
  • 利用jQuery 实现多选标签下拉框,提升表单交互体验
  • 动态指令参数:根据组件状态调整指令行为
  • AI Agent开发第50课-机器学习的基础-线性回归如何应用在商业场景中
  • 软考 系统架构设计师系列知识点 —— 黑盒测试与白盒测试(1)
  • GStreamer开发笔记(三):测试gstreamer/v4l2+sdl2/v4l2+QtOpengl打摄像头延迟和内存
  • 电赛经验分享——模块篇