流媒体服务器一:搭建RTMP流媒体服务器搭建

news2024/12/22 22:58:19

1 安装和测试srs流媒体服务器

服务器:SRS(Simple RTMP Server,⽀持RTMP、HTTP-FLV,HLS)
推流端:ffmpeg + OBS
拉流端:ffplay +VLC + srs播放器

1.1 安装srs流媒体服务器

官网

SRS (Simple Realtime Server) | SRS
码云的源速度快: https://gitee.com/winlinvip/srs.oschina.git
github的源速度慢: https://github.com/ossrs/srs .git

第⼀步,获取SRS。

官网说明如下:

Git | SRS

将官网上废话删除,直接写关键点

0.我们在linux 上先创建一个文件夹放置SRS的源码,mkdir srs_source3.0

这个名字是随便取的,之所以取3.0,是因为学习的教程中就是用3.0教授的,实际版本已经有5.x了。

1:进入到 srs_source3.0文件夹,然后执行下面的命令。命令的意思下载SRS,

cd  srs_source3.0

git clone -b develop https://gitee.com/ossrs/srs.git && 
cd srs && git remote set-url origin https://github.com/ossrs/srs.git

由于上述命令有个 cd srs,因此执行完毕后,会直接进入到srs 目录

2:下载后需要checkout 到你要的branch,可以这样理解,你工作的时候,有可能公司的代码是基于SRS3.0开发的,那么你最好下载一个SRS3.0的版本,那么checkout就是帮你做这件事情的。

我们可以通过 git branch -a 看到SRS对应的版本有哪些。

cd trunk
git branch -a

我们可以看到目前SRS支持您切换的版本有好多,看官网的说明,3.0,  4.0,  5.0 都是稳定的版本。

3.我们切换到remotes/origin/3.0release 这个版本

官网的说明如下:如果是3.0的功能,更新代码后要改变到3.0分支:

注意的是git pull 可能会链接不上网络,因为你不会翻墙,当git pull 链接不上网络的时候,可以直接git checkout 3.0release

git pull && git checkout 3.0release

也可以直接命名您的当前branch 为3.0,实际上也是从remotes/origin/3.0release上获得的

git checkout -b 3.0 remotes/origin/3.0release

我们再次看一下  git branch 

注意的是:我们是需要下载到linux 下,而不是windows 下。

DASH 部署 | SRS


 

第⼆步,编译SRS。

cd  trunk

./configure && make

3.0在build 的时候,可能遇到的问题,可以参考如下两个博客

win11下,RTMP流媒体服务器保姆级教程-CSDN博客

https://www.cnblogs.com/6min/p/13960072.html

可以按照上述的方法fix,也可以checkout 到5.0,再 ./configure && make

如果正确make完成,编译的命令完成如下。

如果正确make 完成,则会在trunk 下 生成 objs文件夹

第三步,编写SRS配置⽂件。详细参考RTMP分发

将以下内容保存为⽂件,譬如 conf/rtmp.conf ,服务器启动时指定该配置⽂件(srs的conf⽂件夹有该 ⽂件)。
listen              1935; //这个是rtmp 的端口
max_connections     1000; // 这个是支持的同时连接的最大连接数量
#daemon              off;  // 是否是 守护进程,但是老师说要注释掉,不注释 运行时会有error
#srs_log_tank        console;  //  这里行也有注释掉,老师说,不注释  运行时会有 error
vhost __defaultVhost__ {
}

目录是在/home/hunandede/srs_source/srs/trunk/conf/rtmp.conf

实际上,对于SRS,所有的配置都在 conf下面,各式各样的都能配置,功能还是很强大

第四步,启动SRS。

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

如果我们没有注释这两行,会有如下红色部分的error

#daemon              off;  // 是否是 守护进程,但是老师说要注释掉,不注释 运行时会有error
#srs_log_tank        console;  //  这里行也有注释掉,老师说,不注释  运行时会有 error

如果我们将这两行注释了,则会正常运行

我们可以通过sudo lsof -i:1935 查看1935  端口谁再使用

我们可以看到 使用 端口号 为   1935  的进程是那个,可以看到 PID 是 51636

然后,我们可以使用 sudo kill -9 51636 将这个进程杀死

然后再查看谁在占用 1935 端口号,就发现没有人在用了

这时候我们再使用  ./objs/srs -c conf/rtmp.conf 运行srs

运行起来后,提示  you can check SRS by : tail -n 30 -f ./objs/srs.log

看后最后30行

我们直接使用 tail  -f ./objs/srs.log,看全部

1.2 测试srs流媒体服务器

第一步要将 ubutun 的网络模式设置为桥接模式

到这里,我们已经启动了SRS 服务器。那么这个服务器

第五步,启动推流编码器。详细参考RTMP分发

使⽤FFMPEG命令推流:在windows端推流,可以调用ffmpeg 的命令
 
ffmpeg -re -i rtmp_test_hd.flv -vcodec copy -acodec copy -f flv -y rtmp://192.168.1.11/live/livestream

推流
ffmpeg -re -i D:/yinshipin/source.200kbps.768x320.flv -vcodec copy -acodec copy -f flv -y rtmp://192.168.31.251/study/acha

这个意思是,将D:/yinshipin/source.200kbps.768x320.flv 文件,推流给服务器,而服务器的地址是rtmp://192.168.31.251/study/acha

-re 参数 设置 以实时的速度 读取 输入文件 , 如 : 输入视频的长度是 3 分钟 , 那么 使用 3 分钟的时间来处理这个视频 , 不能用最快速度处理完 , 该设置确保了推流的速度与视频播放的速度相匹配 ;
-i input.mp4 参数 设置 输入文件名称是 input.mp4 , 此处也可以是 实时的录屏 ;

/study/acha 这个名字在这里是乱取的,但是这个应该就有规则,或者有一个默认的规则。实际上后面学习到的nginx什么的,确实是有一定的规则的。

后面再学习nginx上配置 rtmp的时候,如下的可以参考
rtmp://39.105.129.233/myapp/ 参数 , rtmp 是 流媒体协议 , 39.105.129.233 是流媒体服务器 , myapp 是在 流媒体服务器 的 nginx.conf 中配置的 rtmp / server / application 配置中配置的应用名称 ;


拉流
ffplay rtmp://192.168.31.251/study/acha

注: 上述命令中的flv完整路径,以及srs server ip,⼤家根据情况⾃⾏替换为实际值。 另外:默认情况下
srs的rtmp采⽤1935端⼝,如果该端⼝被占⽤或修改了srs.conf中的端⼝,注意根据情况调整;防⽕墙如 果开了,也要检测下1935是否允许访问。

第六步,观看RTMP流。详细参考RTMP分发

使用ffplay 测试拉流。RTMP流地址为:ffplay rtmp://192.168.31.251/study/acha
直接在windows上执行 ffplay rtmp://192.168.31.251/study/acha
可以使⽤VLC观看。
或者使⽤在线SRS播放器播放: srs-player
SRS
但是测试这个不行,怀疑和 翻墙有关系

1.3  使⽤OBS推流测试流媒体服务器SRS

第七步:使用OBS推流

ffmpeg的命令⾏⽅式不太友好,推荐使⽤主流的OBS开源推流软件,可从官⽹ https://obsproject.com/
下载最新版本,⽬前很多⽹络主播都是⽤它做直播。该软件⽀持本地视频⽂件以及摄像头推流。
或者使⽤: https://pc.qq.com/detail/4/detail_23604.html 去下载。
我们这里的目的是选择一个文件通过OBS发送到 SRS服务器。
然后再通过vlc 通过拉流的形式播放
1.打开OBS,添加一个媒体文件,并且这里将 桌面的声音和 麦克风的声音关闭
这个名字 "电影=制胜奇兵" 是随便取的一个名字
由于选择的视频比较短,因此勾选了 循环,这个其实可以勾选,也可以不勾选
这里会提示你选择 大小,我们默认就好。
然后重要的来了,选择设置,
在直播 选项中, 服务选择 为"自定义"
服务器填写 linux 中的地址 movie 是随便填写的,
推流码 也是随便填写的。
使用身份认证应该是你 linux的账号和密码
2.使用 vlc 播放
地址为:
rtmp://192.168.31.251/movie/zhishengqibing
成功
8.

第八步:使用OBS 摄像头推流

跟上⾯的其实差不多,区别只是添加“视频捕捉设备”

1.4 更多设置

参⻅: OBS 推流 https://cloud.tencent.com/document/product/267/32726

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

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

相关文章

【一图流】Git下载与安装教程

下载Git Git官网:https://git-scm.com/?hlzh-cn 安装Git

全栈嵌入式C++、STM32、Modbus、FreeRTOS和MQTT协议:工业物联网(IIoT)可视化系统设计思路(附部分代码解析)

项目概述 随着工业4.0时代的到来,工业物联网(IIoT)在提高生产效率、降低运营成本和实现智能制造方面得到了广泛应用。本项目旨在开发一个全面的工业物联网监控系统,能够实时监测设备的温度、压力、振动和电流等参数,并…

浅析Jeecgboot中mybatisplus不支持Postgres SKIP LOCKED语法问题

目录 1、场景及问题 2、数据库及各框架版本信息 3、错误回放 4、根因分析及确认 5、解决问题 6、总结 1、场景及问题 场景: 在调用腾讯位置服务时有用到key值,因为每个key值都有自己的额度,所以在表里存了多个key,简称key池&…

基于Java的城市公交管理系统/SSM的城市公交查询系统/计算机专业/课设

摘 要 网络技术的不断发展,使网络成为人们的日常生活中不可缺少的一部分,而城市公交管理系统是网络的一种新型体现,它以其特有的便捷和快速的特点得到了广泛的认可。当前的城市公交管理系统不仅没有建立起整体的管理系统,为企业定…

Go语言中常见的多线程同步方法

什么是线程、进程、协程 Go 源文件经过编译器处理后,会产生可执行文件,不同系统有不同的格式。可执行文件在操作系统上执行一次,就对应一个进程 进程可以理解为执行中的程序,是一个动态的概念,同一份可执行文件执行多…

Django 表单error_messages , 表单校验提示

在Django中,error_messages是表单字段的一个参数,允许你为特定的验证错误自定义错误消息。默认情况下,Django的表单字段会为常见的验证错误提供默认的错误消息。但是,你可能想要为你的应用提供更加用户友好的或者本地化的错误消息…

成为git砖家(2): gitk 介绍

大家好,我是白鱼。这篇我们介绍 gitk。 gitk 和 fork 界面对比 当我们在 macOS 上执行 brew install git 后, 得到了 git 命令行工具。 然而这条命令并不会安装 gitk. gitk 是 git 自带的图形化界面工具,也可以称为“穷人版 fork”&#xf…

如何穿透模糊,还原图片真实面貌

目录 图像清晰化的魔法棒:AI如何穿透模糊,还原图片真实面貌 前言 论文背景 论文思路 模型介绍 复现过程 演示视频 使用方式 本文所涉及所有资源均在传知代码平台可获取。 图像清晰化的魔法棒:AI如何穿透模糊,还原图片真实面貌 在我…

使用Docker搭建MySql的主从同步+ShardingSphere搭建Mysql的读写分离

参考课程 尚硅谷ShardingSphere5实战教程(快速入门掌握核心)_哔哩哔哩_bilibili 主服务器 创建容器 docker run -d \ -p 3306:3306 \ -v /kira/mysql/master/conf:/etc/mysql/conf.d \ -v /kira/mysql/master/data:/var/lib/mysql \ -e MYSQL_ROOT…

java学习---异常

前言 由于被分母不能为0,所以代码到int yn/m;会抛出异常,停止运行下去,但是如果是个庞大的代码,因为这种小错误而整个程序崩溃,会大大影响代码整体的健壮性,所以此时就需要我们得异常处理了 选中异常代码部…

正则采集器——前端搭建

前端使用有名的饿了么管理后台,vue3版本vue3-element-admin,首先从gitee中克隆一个vue3-element-admin模板代码vue3-element-admin: Vue3 Element Admin开箱即用的中后台管理系统前端解决方案,然后在此基础上进行开发。 1、修改vite.config.…

【深入理解SpringCloud微服务】深入理解Ribbon原理并手写一个微服务负载均衡器

深入理解Ribbon原理并手写一个微服务负载均衡器 负载均衡器理解Ribbon原理手写一个微服务负载均衡器总体设计LoadBalanceClientHttpRequestFactorySimpleLoadBalanceClientSimpleLoadBalancerLoadBalanceRulespring.factories与LoadBalanceConfig 负载均衡器 在微服务架构里面…

应用层_计算机网络

文章目录 应用层HTTP用户与服务器的交互:cookieWeb缓存HTTP/2 SMTPDNS:因特网的目录服务P2P文件分发BitTorrentCDN内容分发网 应用层 应用层协议定义了运行在不同端系统上的应用程序进程如何相互传递报文。应用层协议定义了以下内容: 交换的…

结构性设计模式-外观模式

一、外观模式 有些人可能炒过股票,但其实大部分人都不太懂,这种没有足够了解证券知识的情况下做股票是很容易亏钱的,刚开始炒股肯定都会想,如果有个懂行的帮帮手就好,其实基金就是个好帮手,支付宝里就有许…

算力共享:如何理解、标识与调控多层次算力资源的异构性和复杂性,实现智能算力网生态诸要素有效互操作?

目录 鹏程云主机和NPU计算服务器关系 NPU计算服务器 两者关系 结论 两种不同类型的处理器或计算单元 FPGA MLU NS3(Network Simulator version 3) 一、基本属性 二、主要功能与特点 三、应用与前景 对象存储和HDD存储 一、定义与特点 二、应用场景 三、总结 对…

培养前端工程化思维,不要让一行代码毁了整个程序

看《阿丽亚娜 5 号(Ariane 5)火箭爆炸》有感。 1、动手写项目之前,先进行全局性代码逻辑思考,将该做的事情,一些细节,统一建立标准,避免为以后埋雷。 2、避免使用不必要或无意义的代码、注释。…

把 网页代码 嵌入到 单片机程序中 2 日志2024/7/26

之前不是说把 网页代码 嵌入到 单片机程序中 嘛! 目录 之前不是说把 网页代码 嵌入到 单片机程序中 嘛! 修改vs的tasks.json配置 然后 测试 结果是正常的,可以编译了 但是:当我把我都html代码都写上去之后 还是会报错!!! 内部被检测到了,没辙,只有手动更新了小工具代码 …

低功耗单声道音频编解码器ES8311中文规格书介绍

特征 具有ADC和DAC的低功耗单声道音频编解码器ES8311。 ES8311 QFN20封装的外形和丝印 系统 • 高性能、低功耗多位 delta-sigma 音频 ADC 和 DAC • I2S/PCM 主站或从站串行数据端口 • 256/384Fs、USB 12/24 MHz 和其他非标准音频系统时钟 • I2C 接口 模数转换器 • 24…

28 列表创建与删除

使用 “” 直接将一个列表赋值给变量即可创建列表对象。 my_list [a, #, 128, [12], [], {2, }, {a: 1, b: 2}] print(my_list) print(type(my_list)) print(id(my_list[0]), id(my_list[-1]))可以使用 list() 函数把元组、range对象、字符串、字典、集合或其他可迭代对象转换…

PDF管理器和查看器PdfDing

什么是 PdfDing ? PdfDing 是一款自托管 PDF 管理器和查看器,可在多种设备上提供无缝用户体验。它设计精简、速度快,并且易于通过 Docker 设置。 功能特点 在多种设备上无缝基于浏览器的 PDF 查看使用标签整理 PDF干净且响应迅速的用户界面暗…