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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/420930.html

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

相关文章

Leetcode - 周赛414

目录 一,3280. 将日期转换为二进制表示 二,3281. 范围内整数的最大得分 三,3282. 到达数组末尾的最大得分 四,3283. 吃掉所有兵需要的最多移动次数 一,3280. 将日期转换为二进制表示 本题就是简单的字符串和整数之…

爆改YOLOv8|利用yolov9的ADown改进卷积Conv-轻量化

1,本文介绍 本文将利用YOLOv9的ADown模块改进卷积。 关于ADown的详细介绍可以看论文:https://arxiv.org/abs/2402.13616 本文将讲解如何将ADown融合进yolov8 话不多说,上代码! 2, 将ADown融合进yolov8 2.1 步骤一…

【高中物理】用代码缩写胡克定律公式原理图

用代码缩写胡克定律公式原理图 代码实现了以下功能: 交互式滑块:用户可以通过滑块调整弹簧的弹性系数(k)、拉力大小(F)和弹簧的原长(l0),实时观察弹簧的伸长和受力变化。…

在VB.net中,TimeSpan有什么属性与方法

标题 在VB.net中,TimeSpan有什么属性与方法 正文 在 VB.NET 中,TimeSpan 结构表示时间间隔,即一段时间,而不表示特定的时间点。TimeSpan 提供了多种属性来获取时间间隔的各个组成部分,以及一些方法来操作这些时间间隔。…

【观察者】设计模式:构建灵活且响应式的软件系统

引言 在软件开发中,我们经常面临需要在多个对象之间进行通信的挑战。特别是当一个对象的状态发生变化时,我们希望所有依赖于这个状态的对象都能自动更新。这就是观察者设计模式大显身手的地方。 简介 观察者模式是一种行为设计模式,它定义…

基于vue框架的城市交通管理系统的设计与实现9fcck(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能:用户,区域,车站信息,公交线路 开题报告内容 基于Vue框架的城市交通管理系统的设计与实现开题报告 一、研究背景与意义 1.1 研究背景 随着城市化进程的加速,城市交通问题日益严峻,包括交通拥堵、交通事故频发、…

“CSDN独家揭秘:AIGC技术在AI绘画领域的应用与学习攻略”

导语:人工智能的发展正推动着内容创作的革新,AIGC(AI Generated Content)技术便是其中的佼佼者。本文将带您领略AIGC在AI绘画领域的魅力,并分享一些学习资源和路径,助您在艺术与技术交汇的旅途中更进一步。…

山东省行政执法证照片要求及图像处理方法

在山东省,行政执法证是执法人员身份的重要标识,其照片的规范性对于证件的有效性至关重要。本文将详细介绍山东省行政执法证照片的要求,并提供使用手机相机拍照的实用方法,以确保照片符合标准。 一、山东省行政人员执法证照片拍摄要…

表情迁移大法,LivePortrait 帮你快速处理图片!

LivePortrait 由快手可灵大模型团队开源,主要功能包括从单一图像生成生动动画、精确控制眼睛和嘴唇的动作、处理多个人物肖像的无缝拼接、支持多风格肖像、生成高分辨率动画等。该项目使用的是基于隐式关键点框架的 AI 肖像动画生成框架。它能够将驱动视频的表情和姿…

sql语句的训练2024/9/9

1题 需要看清思路:不是将数据库中的device_id的名字改为user_infors_example,而是在查找的时候,需要将device_id看成user_infors_example来进行查找。 答案 select device_id AS user_infos_example FROM user_profile limit 2 2 当固定查找…

Leangoo敏捷工具在缺陷跟踪(BUG)管理中的高效应用

在开发过程中,缺陷(BUG)管理一直是项目管理中的一个关键环节。及时发现并修复BUG,不仅能够提高产品质量,还能有效提升团队的工作效率和用户满意度。 在敏捷开发中,快速迭代和频繁交付的特点使得缺陷管理的…

2024.09.04【读书笔记】|如何使用Tombo进行Nanopore Direct RNA-seq(DRS)分析

文章目录 Tombo快速使用介绍模型介绍RNA修饰分析步骤特异性替代碱基检测(推荐)De novo canonical model comparison ONT全长转录组分析步骤疑难解答Minimap2在比对nanopore直接RNA-seq数据时的最佳实践和参数设置有哪些?featureCounts在进行R…

红米K60U/K50/Note11TPro澎湃OS无法绑定账号解锁BL-不能激活小米账号

小米澎湃OS对于解锁BL,新增了各种限制,早前我们还能使用bypass脚本来实现澎湃OS上绑 定账号成功,但随着澎湃OS七月系统上的推送,旧版的bypass已经彻底失效,并且无法安装 旧版的设置APK来解决问题。此次涉及的机型有红米…

【Java】实体类Javabean的运用案例

文章目录 前言一、定义一个操作类专门处理数据二、代码总结 前言 实体类Javabean的运用案例,现在需要把数据与业务串联起来。 一、定义一个操作类专门处理数据 这里定义了一个叫DogOperator的类,专门用来处理Dog类里面的数据。 解析: 要把…

即时零售,电商平台们的「新战场」?

【潮汐商业评论/原创】 周末宅家的Cindy心血来潮要重启减肥计划,“第一步就是需要一个体脂秤,我要看看现在到底多少斤,以及其他的指标,不知道有没有一两个小时就能送到的?”Cindy边说边打开手机搜了起来。“还真有哎&…

大学英语四六级报名照不通过的原因

大学英语四六级报名照不通过的原因 #英语四六级 #大学英语四六级 #大学英语四六级考试 #英语四六级报名照片 #英语四六级考试报名照片

大数据Flink(一百一十四):PyFlink的作业开发入门案例

文章目录 PyFlink的作业开发入门案例 一、批处理的入门案例 1、示例 2、​​​​​​​​​​​​​​开发步骤 3、参考代码:基于DataStreamAPI编程 二、​​​​​​​​​​​​​​流处理的入门案例 1、​​​​​​​​​​​​​​示例 2、​​​​​…

【树和二叉树的相关定义】概念

1.回顾与概览 2.什么是树型结构 3.树的(递归)定义与基本术语 3.1树的定义 注意:除了根结点以外,任何一个结点都有且仅有一个前驱 3.2树的其他表示方式 3.3树的基本术语 结点:数据元素以及指向子树的分支根结点:非空…

人员随机分组

如何实现男女比例平均分组? 在团队活动中,合理地将人员分组是一项重要的组织工作,它有助于提高团队合作的效率和质量。云分组小程序提供了一个便捷的解决方案,通过智能算法帮助用户快速实现人员分组。本文将详细介绍如何使用云分组…

考试:软件工程(01)

软件开发生命周期 ◆软件定义时期:包括可行性研究和详细需求分析过程,任务是确定软件开发工程必须完成的总目标, 具体可分成问题定义、可行性研究、需求分析等。 ◆软件开发时期:就是软件的设计与实现,可分成概要设计…