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

SRS流媒体服务器从入门到精通(其一,环境搭建)

在这里插入图片描述

欢迎诸位来阅读在下的博文~
在这里,在下会不定期发表一些浅薄的知识和经验,望诸位能与在下多多交流,共同努力!

江山如画,客心如若,欢迎到访,一展风采

文章目录

  • 一、SRS简介
  • 二、SRS的应用场景
  • 三、环境搭建
  • 四、推流和拉流
      • 使用ffmepg推流和拉流
      • 使用OBS推流(推荐)
  • 五、补充

一、SRS简介

SRS(Simple Realtime Server)是一个简单高效的实时视频服务器,支持多种直播和录播场景。SRS由国内开发者创建,是一款开源流媒体服务器软件。它支持RTMP、WebRTC、HLS、HTTP-FLV等多种协议,适用于直播、录播和视频客服等多种场景。
SRS的主要特点包括:

  1. 高效性能:SRS设计简洁,具有高性能的特点,能够处理大量的并发连接和流媒体数据。
  2. 多种协议支持:SRS支持多种流媒体协议,包括RTMP、WebRTC、HLS、HTTP-FLV等,能够满足不同场景的需求。
  3. 易用性:SRS提供了简单的配置文件,用户可以通过修改配置文件来快速部署和定制自己的流媒体服务器。
  4. 稳定性:SRS在设计和实现上注重稳定性,能够保证长时间稳定运行,适用于生产环境。
  5. 社区支持:作为一个开源项目,SRS拥有活跃的社区,用户可以在社区中获取支持、分享经验,并参与项目的贡献。
  6. 扩展性:SRS支持插件机制,用户可以根据需要开发自己的插件来扩展SRS的功能。
    SRS适用于多种应用场景,包括但不限于:
  • 直播:支持直播流的发布和分发,适用于在线教育、游戏直播、体育赛事直播等。
  • 录播:支持视频的录制和点播,适用于视频网站、在线教育平台等。
  • 视频客服:支持视频通话和屏幕共享,适用于在线客服、远程协作等。

SRS网址

二、SRS的应用场景

SRS是一个简单高效的实时视频服务器,支持RTMP、WebRTC、HLS、HTTP-FLV、SRT、GB28181等协议。传统的视频监控客户端都是Windows PC桌面客户端,现在很多公司需要实现通过Web查看远程的视频监控,此时可以通过RTSP/GB28181推流发送到SRS服务器,然后通过RTMP或者HTTP-FLV协议进行拉流查看远程摄像头的视频。传统的推流端都需要安装应用软件才能实现推流,但是目前也有Web化的趋势,需要通过浏览器网页将音视频画面推送给观众,此时就可以通过WebRTC推流到SRS流媒体服务器,然后观众通过RTMP、HTTP-FLV等方式观看直播。

三、环境搭建

参考环境:Windows10 + VMware虚拟机下配置好Ubuntu20.04(包括网络)、Windows 和 Ubuntu系统都要配置好FFmpeg工具。
ffmpeg的搭建可参考以下博客:
FFmpeg的入门实践系列一
1、SRS的源代码下载:
github源:https://github.com/ossrs/srs.git
码云源:https://gitee.com/ossrs/srs.git (如果GitHub较慢可以使⽤码云的源)
在Ubuntu20.04中,选择一个自定义的文件夹,进入输入以下命令:

git clone -b 4.0release https://gitee.com/ossrs/srs.git

2、进入到trunk文件夹,开始编译

sudo cd srs/trunk
sudo ./configure
sudo make -j4

3、启动服务器
注: -c 后面是srs的系统配置文件,可以修改里面的属性来灵活配置srs系统

./objs/srs -c conf/srs.conf

4、
查看SRS的状态

./etc/init.d/srs status

或者看SRS的日志

tail -n 30 -f ./objs/srs.log

结果如下:
在这里插入图片描述
5、关闭服务器
srs服务器默认都是后台运行的,所以要退出,可以输入以下命令:

sudo kill -SIGQUIT srs_pid

至此,环境搭建好了,可以看出,srs的搭建非常容易。

四、推流和拉流

使用ffmepg推流和拉流

Windows10系统充当推流方和拉流方,Linux系统充当服务器,如图:
在这里插入图片描述
1、win+R 输入cmd创建命令行
输入:

ffmpeg -re -i fuzhou.mp4 -c copy -f flv rtmp://192.168.159.128/live/livestream

注意:-i 后面是要推流的文件路径,-re 是以输入文件的实际帧率进行推流,保持原始速度,-f 指定输出格式为flv。后面的网络地址要填写linux的网络,其它不变。live是应用实例的名称,而livestream是流名称,这两个都可以在srs系统的配置文件(srs.conf)中更改。

想详细了解ffmpeg的命令,可参考以下博客:
FFmpeg命令详解

2、再次win+R 输入cmd创建命令行
输入:

ffplay rtmp://192.168.159.128/live/livestream

此时,会播放上面的.mp4文件,则说明成功~

使用OBS推流(推荐)

OBS (Open Broadcaster Software) 是一款开源的视频直播和屏幕录制软件。它允许用户捕捉、合成、编码、录制和流式传输视频内容。OBS 广泛应用于游戏直播、在线教育、体育赛事直播、远程会议、实时视频制作等多种场景。
以下是 OBS 的一些主要特点:

  1. 跨平台:OBS 支持多个操作系统,包括 Windows、macOS 和 Linux。
  2. 免费开源:OBS 是完全免费的,并且其源代码可以在 GitHub 上找到,任何人都可以自由使用、修改和分发。
  3. 多源输入:OBS 支持多种输入源,包括:
    • 游戏捕获
    • 摄像头
    • 屏幕捕获
    • 媒体播放器(如 VLC)
    • 图像源
    • 文本源(使用 HTML)
  4. 实时合成:用户可以将多个输入源组合在一起,创建复杂的场景布局。
  5. 编码器支持:OBS 支持多种编码器,如 x264、x265、AAC、MP3 等。
  6. 流式传输:OBS 可以将视频流式传输到多种目的地,包括 RTMP 服务器、YouTube、Twitch、Facebook Live 等。
  7. 录制:除了直播,OBS 还可以录制视频到本地文件,支持多种格式,如 MP4、FLV、MKV 等。
  8. 插件系统:OBS 提供了一个插件系统,允许用户安装额外的插件来扩展其功能。
  9. 社区支持:OBS 拥有一个活跃的社区,用户可以在社区中寻求帮助、分享经验、贡献代码。
    OBS 的使用相对简单,用户可以通过以下步骤来设置和使用 OBS:
  10. 下载并安装 OBS。
  11. 设置场景和输入源。
  12. 配置输出设置,包括流式传输目的地和录制选项。
  13. 开始捕获和流式传输。
    OBS 是直播和录播领域的热门工具之一,其开源和免费的特点使其成为许多用户和开发者的首选。

OBS官网:https://obsproject.com/download
下载好后,点击如下:
在这里插入图片描述
在这里插入图片描述
选择本地文件:
在这里插入图片描述
然后是重点:(配置服务器地址,当诸位想在b站直播时,使用该软件也是在此地设置b站提供的服务器的)
在这里插入图片描述

  • 上面的推流码就是流名称,这里是livestream。

最后点击开始直播,就可以推流了。拉流的步骤同上,这里不再多讲。
在这里插入图片描述
扩展:如果想推流桌面,或者摄像头的画面,可以在来源中选择:
在这里插入图片描述
总之,OBS是一款很好用的推流软件,非常推荐~

五、补充

修改ffplay的缓存,降低延迟
(1)码流分析时间设置,单位为微秒
ffplay -i rtmp://114.215.169.66/live/livestream -analyzeduration 500000
ffplay -i rtmp://114.215.169.66/live/livestream -analyzeduration 10000

(2)减少缓冲
ffplay -i rtmp://114.215.169.66/live/livestream -fflags nobuffer

至此,结束~
在这里插入图片描述
望诸位不忘三连支持一下~

相关文章:

SRS流媒体服务器从入门到精通(其一,环境搭建)

欢迎诸位来阅读在下的博文~ 在这里,在下会不定期发表一些浅薄的知识和经验,望诸位能与在下多多交流,共同努力! 江山如画,客心如若,欢迎到访,一展风采 文章目录 一、SRS简介二、SRS的应用场景三、环境搭建…...

Java Native Interface (JNI) 简介

Java Native Interface (JNI) 概述 Java Native Interface (JNI) 是 Java 提供的一种接口,用于允许 Java 应用程序与本地(Native)代码进行交互。通过 JNI,Java 代码可以调用 C/C 等其他语言编写的库,反之亦然。JNI 的主…...

navigator.mediaDevices.getUserMedia检查用户的摄像头是否可用,虚拟摄像头问题

在Web开发中,检查用户的摄像头是否可用是一个常见的需求,尤其是在需要视频聊天或录制视频的应用程序中。navigator.mediaDevices.getUserMedia() API 提供了这一功能,它允许你请求访问用户的媒体设备,如摄像头和麦克风。虽然这个A…...

跨境网红营销SOP流程1.0丨出海笔记

品牌出海利用红人营销基本是标配了,KOL 社交媒体是绝对的带货神器。比如美国歌手蕾哈娜Rihanna 的美妆品牌 Fenty Beauty 上市开卖后40天就达到了1亿美元,火遍全球美妆圈。例子和废话少说,其实大小红人都有用。 之前几位大神已经在出海笔记分…...

Jedis,SpringDataRedis

快速入门 导入依赖 <!--jedis--><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>3.7.0</version></dependency><!--单元测试--><dependency><groupId>org.ju…...

增量模型的优点例题

答案&#xff1a;D 解析&#xff1a;增量模型可以快速开发一个样品供客户查看 选项B 早期的增量作为模型&#xff0c;从而可以加强系统后续需求的理解 一开始给客户一个样本&#xff0c;客户根据样品修改需求 选项C 增量模型就是开发一个个增量模型&#xff0c;供客户使用…...

求绝对值

计算并输出一个实数的绝对值。从键盘任意输入一个实数&#xff0c;不使用计算绝对值函数编程计算并输出该实数的绝对值 输入格式: 输入任一实数。 输出格式: 输出的绝对值包含两位小数。 输入样例: 在这里给出一组输入。例如&#xff1a; -2.5输出样例: 在这里给出相应的输出。…...

AlphaNovel的身份验证失败了..........

我的AlphaNovel的这个身份验证失败了,不知道失败原因是什么... 前两周在网上看到这个项目,在国外这个网站搬运国内小说,但是前提是要通过这个身份验证,可是我等了十多天,结果身份验证失败了,有也在做这个的同志吗? 你们身份验证怎么样...

Sapiens:人类视觉模型的基础

文章目录 摘要1、引言2、相关工作3、方法3.1、Humans-300M 数据集3.2、预训练3.3、二维姿态估计3.4、身体部位分割3.5、深度估计3.6、表面法线估计 4、实验4.1、实现细节4.2、二维姿态估计4.3、身体部位分割4.4、深度估计4.5、表面法线估计4.6、讨论 5、结论 摘要 我们介绍了 …...

“健康中国 医路无忧——公益联盟”积极响应,国内首支公益陪诊师志愿队伍正式成立

在快节奏的现代生活中&#xff0c;就医不再是简单的“看病”那么简单。面对复杂的医疗流程、专业的医学术语、以及在陌生环境中的焦虑&#xff0c;患者及家属往往感到无所适从。此时&#xff0c;陪诊服务如同一束光&#xff0c;照亮了就医之路&#xff0c;它的重要性不仅体现在…...

Java 创建对象方法的演变

1、普通 Java 代码 public class Rectangle {private int width;private int length;public Rectangle() {System.out.println("Hello World!");}public void setWidth(int widTth) {this.width widTth;}public void setLength(int length) {this.length length;}…...

Netty中用到了哪些设计模式

Netty作为一个高性能的网络通信框架&#xff0c;里面有很多优秀的代码值得我们学习&#xff0c;今天我们一起看下Netty中用到了哪些设计模式。 一、单例模式 Netty通过 NioEventLoop 将通道注册到选择器&#xff0c;并在事件循环中多路复用它们。其中提供了一个选择策略对象 S…...

第67期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区&#xff0c;集成了生成预训练Transformer&#xff08;GPT&#xff09;、人工智能生成内容&#xff08;AIGC&#xff09;以及大语言模型&#xff08;LLM&#xff09;等安全领域应用的知识。在这里&#xff0c;您可以找…...

Chrome 浏览器插件获取网页 window 对象(方案三)

前言 最近有个需求&#xff0c;是在浏览器插件中获取 window 对象下的某个数据&#xff0c;当时觉得很简单&#xff0c;和 document 一样&#xff0c;直接通过嵌入 content_scripts 直接获取&#xff0c;然后使用 sendMessage 发送数据到插件就行了&#xff0c;结果发现不是这…...

动态规划-分割回文串ⅡⅣ

在本篇博客中将介绍分割回文串Ⅱ以及分割回文串Ⅳ这两个题目。 分割回文串Ⅱ 题目描述 给你一个字符串 s&#xff0c;请你将 s 分割成一些子串&#xff0c;使每个子串都是回文串。 返回符合要求的 最少分割次数 。 示例&#xff1a; 输入&#xff1a;s "aabac" 输…...

Python编码系列—Python项目维护与迭代:持续进化的艺术

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…...

【鸿蒙开发工具报错】Build task failed. Open the Run window to view details.

Build task failed. Open the Run window to view details. 问题描述 在使用deveco-studio 开发工具进行HarmonyOS第一个应用构建开发时&#xff0c;通过Previewer预览页面时报错&#xff0c;报错信息为&#xff1a;Build task failed. Open the Run window to view details.…...

k8s集群部署:容器运行时

1. 卸载旧版本 Docker # 卸载旧版本的 Docker 组件 sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine注释: 该命令会移除系统中现有的 Docker 及其相关组件&#xff0…...

PHP7 的内核结构

PHP7 是 PHP 语言的一个重要版本&#xff0c;带来了许多性能提升和语言特性改进。要深入了解 PHP7 的内核&#xff0c;我们需要探讨其设计和实现的关键方面&#xff0c;包括 PHP 的执行模型、内存管理、编译和优化过程等。 1. PHP7 的内核结构 1.1 执行模型 PHP 是一种解释型…...

JVM合集

序言: 1.什么是JVM? JVM就是将javac编译后的.class字节码文件翻译为操作系统能执行的机器指令翻译过程: 前端编译:生成.class文件就是前端编译后端编译:通过jvm解释(或即时编译或AOT)执行.class文件时跨平台的,jvm并不是跨平台的通过javap进行反编译2.java文件是怎么变…...

力扣原题《有效的数独游戏》,纯手搓,已验证

请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 &#xff0c;验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。&#xff08;请参考示例图&#xff09; 注…...

微信小程序身份证检测实战:从createVKSession版本兼容到真机调试全解析

1. 微信小程序身份证检测功能开发概述 最近在开发一个需要身份证识别功能的小程序时&#xff0c;遇到了一个让人头疼的问题&#xff1a;在开发者工具中运行正常&#xff0c;但真机调试时却报错"createVKSession:fail The current device does not support version v1&quo…...

别再为版本兼容头疼了!手把手教你搞定Matlab R2014b与NI VeriStand的联合仿真环境

别再为版本兼容头疼了&#xff01;手把手教你搞定Matlab R2014b与NI VeriStand的联合仿真环境 在硬件在环&#xff08;HIL&#xff09;测试领域&#xff0c;Matlab与NI VeriStand的联合仿真环境搭建是许多工程师的必经之路。然而&#xff0c;版本兼容性问题常常成为拦路虎&…...

SEO_10个提升网站排名的实用SEO技巧分享(220 )

<h1 id"seo10seo">SEO:10个提升网站排名的实用SEO技巧分享</h1> <p>在当今互联网时代&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;已经成为提升网站流量和吸引潜在客户的关键手段。百度作为中国最大的搜索引擎&#xff0c;其优化规则对整…...

开源电池管理系统:SmartBMS的技术创新与实践应用

开源电池管理系统&#xff1a;SmartBMS的技术创新与实践应用 【免费下载链接】SmartBMS Open source Smart Battery Management System 项目地址: https://gitcode.com/gh_mirrors/smar/SmartBMS SmartBMS是一套开源智能电池管理系统&#xff0c;专为锂离子电池组&#…...

解锁光猫配置自由:中兴ONT解密工具完全指南

解锁光猫配置自由&#xff1a;中兴ONT解密工具完全指南 【免费下载链接】ZET-Optical-Network-Terminal-Decoder 项目地址: https://gitcode.com/gh_mirrors/ze/ZET-Optical-Network-Terminal-Decoder 你是否曾经因为无法修改光猫设置而感到束手无策&#xff1f;当运营…...

提升钱包开发效率:用快马AI一键生成imToken风格的高复用UI组件

提升钱包开发效率&#xff1a;用快马AI一键生成imToken风格的高复用UI组件 开发钱包类应用时&#xff0c;最让人头疼的就是那些重复性的UI组件和交互逻辑。每次新项目都要从零开始写资产卡片、交易记录列表、二维码弹窗这些基础组件&#xff0c;不仅耗时耗力&#xff0c;还容易…...

为什么AI Coding、Skills、Agent智能体都偏爱Markdown?

为什么AI Coding、Skills、Agent智能体都偏爱Markdown&#xff1f; 更多问题讨论和资料获取&#xff0c;请关注文章最后的微信公众号 从ChatGPT的输出到GitHub Copilot的提示&#xff0c;从Claude的记忆存储到智能体的工作流配置——Markdown无处不在。这不是巧合&#xff0c;…...

XCZU67DR的PS和PL怎么协同干活?一个案例讲透ARM核与FPGA联动处理高速ADC数据流

XCZU67DR异构计算实战&#xff1a;ARM核与FPGA协同处理5.9G ADC数据流的架构设计 在当今信号处理领域&#xff0c;实时处理高速ADC数据流已成为雷达、通信和医疗成像等应用的核心需求。当采样率攀升至5.9G级别时&#xff0c;传统CPU或FPGA单独处理的架构往往捉襟见肘。这正是Xi…...

OpenClaw 部署指南 (Linux)版本原始安装。

OpenClaw 部署指南 (Linux)版 这阵子工作忙得离谱,连折腾新东西的时间都没有。 “龙虾”的风吹过了,寻思着也不能一直当吃瓜群众,就跟一手,看看这玩意到底有多神。 老规矩,不整那些花里胡哨的,先本地跑起来再说。一步一步来,比一上来就搞什么生产环境靠谱多了。 这几…...