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.mzph.cn/pingmian/79554.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Dify - Embedding Rerank

注意:v100显卡会出现不适配,不推荐使用 1. 安装 Docker ubuntu 22.04 docker 安装&使用_ubuntu22.04 安装docker-CSDN博客 2. 安装vllm pip install -U xformers torch torchvision torchaudio triton --index-url https://download.pytorch.org/w…

LeetCode:链表的中间结点

1、题目描述 给你单链表的头结点 head ,请你找出并返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 示例 1: 输入:head [1,2,3,4,5] 输出:[3,4,5] 解释:链表只有一个中间结点&#xff…

LabVIEW温控系统热敏电阻滞后问题

在 LabVIEW 构建的温控系统中,热敏电阻因热时间常数大(2 秒左右)产生的滞后效应,致使控温出现超调与波动。在不更换传感器的前提下,可从算法优化、硬件调整和系统设计等维度着手解决。 ​ 一、算法优化​ 1. 改进 PI…

技术犯规计入个人犯规吗·棒球1号位

在棒球运动中,虽然没有“技术犯规”这一特定术语,但存在多种违规行为或违反规则的情况,通常会导致判罚或处罚。以下是常见的违规行为及相关规则: 1. 投手违规(Balk) 定义:投手在垒上有跑垒员时…

Python核心技巧 类与实例:面向对象编程的基石

、核心概念图解 🎯 类 vs 实例 类:对象的蓝图(如"汽车设计图") 实例:类的具体实现(如"你的特斯拉Model 3") class MyClass: # 类声明 count 0 # 类…

协程补充---viewModelScope 相关知识点

viewModelScope.launch 默认在 Dispatchers.Default 线程池执行Dispatchers.Default 是一个后台线程池,专门用于 CPU 密集型任务如果需要在主线程执行,必须显式指定 Dispatchers.Main remember 是 Compose 的状态管理函数(queueMenus) 是依赖项&#xff…

linux stm32mp157 GIC-V2 中断处理过程分析

/* ** 中断触发时,调用的 handle_arch_irq 入口地址。 ** 因为此时,挂接的就是 gic_handle_irq 函数!gic_handle_irq 是个全局函数指针, ** static void __exception_irq_entry gic_handle_irq(struct pt_regs *regs) ** 它是Lin…

动态指令参数:根据组件状态调整指令行为

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 🍚 蓝桥云课签约作者、…

直方图比较

目录 1、直方图比较的概念 2、直方图比较的主要原因 3、典型应用场景 4、基础直方图比较 5、多通道直方图比较 6、实时直方图检测 1、直方图比较的概念 直方图比较是通过数学方法计算两个直方图之间的相似度或差异度的技术。在计算机视觉中,直方图是对图像特征…

Windows11 VS code 安装 Cline 调用 Github MCP 配置过程坑点汇总

背景 为了调研 MCP 在 windows 上如何使用本地的命令执行一些操作而实现自动化的过程,在 B 站视频的指导下,进行相应填坑过程,最终运行起来,并实现 github 自动化编程并提交代码的过程。 B 站 Cline 视频演示 Cline Cline 是一…

kdump详解

kdump 是 Linux 系统中的一种内核崩溃转储机制,用于在系统崩溃时将内存中的数据保存到磁盘上,以便后续分析系统崩溃的原因。以下是对 kdump 的详细介绍: 1、工作原理 kdump 利用了 Linux 系统中的双启动机制。当系统启动时,它会…

RGB三原色

本文来源 : 腾讯元宝 ​​RGB三原色(红绿蓝)详解​​ RGB(Red, Green, Blue)是光学的三原色,通过不同比例的混合可以产生人眼可见的绝大多数颜色。它是现代显示技术(如屏幕、投影仪&#xff09…

CSS兼容性:挑战与策略

CSS兼容性:挑战与策略 引言 在前端开发的广阔领域中,跨浏览器兼容性无疑是最棘手且难以预测的挑战之一。当我们精心设计的网页在Chrome中完美呈现,却在Safari中布局崩溃,或在Firefox中交互失效时,这种挫折感是每位前…

[ 设计模式 ] | 单例模式

单例模式是什么?哪两种模式? 单例模式就是一个类型的对象,只有一个,比如说搜索引擎中的索引部分,360安全卫士的桌面悬浮球。 饿汉模式和懒汉模式:饿汉模式是线程安全的,懒汉模式不是线程安全的…

Notebook.ai 开源程序是一套工具,供作家、游戏设计师和角色扮演者创建宏伟的宇宙 - 以及其中的一切

​一、软件介绍 文末提供程序和源码下载 Notebook.ai 开源程序是一套工具,供作家、游戏设计师和角色扮演者创建宏伟的宇宙 - 以及其中的一切。 二、软件特点 Notebook 是作家的规划工具,用于创建从宇宙到角色、情节到单个项目的任何内容。通过浏览器、…

centos7.0无法安装php8.2/8.3

在centos安装php8.2报错 configure: error: *** A compiler with support for C17 language features is required. 配置过程检测到你的系统编译器不支持 C17 语言特性,而 PHP 8.2 的编译需要编译器支持 C17 sudo yum update -y sudo yum install centos-releas…

Three.js + React 实战系列 - 客户评价区细解教程 Clients 组件✨(回答式评价 + 评分星级)

对个人主页设计和实现感兴趣的朋友可以订阅我的专栏哦!!谢谢大家!!! 在这篇博客中,我们将实现一个简洁的 Hear from My Clients 客户评价区域。这个区块在个人主页中可以突显用户体验和专业度,帮…

Vim 命令从头学习记录

学习链接:eleon-vim基础教程 Vim - 基础翻屏操作 光标移动:hjkl 20j 向下移动20行,w 向后移动一个字符,b 向前移动一个字符。 Ctrl u 向上翻半页 UP Ctrl d 向下翻半页 Down Ctrl f 向下翻整页 Forward Ctrl b 向上翻整页 …

Linux系统编程--基础指令(!!详细讲解+知识拓展)

第一讲 基础指令 ​ 我们现如今自己使用的电脑大部分是用的都是windows或者macOS,并配合上由微软和苹果开发的图形化界面,所以使用鼠标再屏幕上进行点击即可完成许多任务。但是作为操作系统的学习者,在linux的基础上不再使用图形化界进行操作…

ADK 第四篇 Runner 执行器

智能体执行器 Runner,负责完成一次用户需求的响应,是ADK中真正让Agent运行起来的引擎,其核心功能和Agents SDK中的Runner类似,具体作用如下: 会话管理:自动读取/写入 SessionService,维护历史信…