Docker部署 SRS rtmp/flv流媒体服务器

一、介绍


SRS(Simple Realtime Server)是一款开源的流媒体服务器,具有高性能、高可靠性、高灵活性的特点,能够支持直播、点播、转码等多种流媒体应用场景。SRS 不仅提供了流媒体服务器,还提供了适用于多种平台的客户端 SDK 和在线转码等辅助服务,是一款十分强大的流媒体解决方案。

SRS 在流媒体直播、点播、转码等方面的应用场景十分丰富:

  • 在直播行业方面,SRS 能够支持多种流媒体协议(如 RTMP、HLS、RTSP、MPEG-TS 等)和传输模式,以及实时录制、转码等额外的功能,可以适用于直播监控、教学、演唱会等场景。

  • 在点播方面,SRS 提供了多种点播服务协议(如 HTTP-FLV、HTTP-DASH、HTTP-HLS 等),并支持高并发和多种混合流媒体格式的传输。

  • 在转码方面,SRS 支持多种常见音视频格式的转换和输出,例如 H.264, HEVC 等。


二、安装SRS

流媒体镜像docker-hub官方拉取

docker pull ossrs/srs

 二、安装并启动SRS的容器

1. 不挂载目录或修改配置文件,docker镜像原始配置运行

docker run -it -d -p 1935:1935 -p 1985:1985 -p 8080:8080 --name srs ossrs/srs

2. 挂载目录,将容器内部所需配置文件copy到宿主机然后进行映射

2.1  宿主机新建两个目录

mkdir -p /root/srs/conf

mkdir -p /root/srs/objs

2.2  在前述运行的SRS容器中,把上述三个目录内的文件和目录全部拷贝到宿主机中。

# 把容器中的配置文件复制出来

docker cp -a srs:/usr/local/srs/conf /root/srs/conf

# 把容器中的数据文件复制出来

docker cp -a srs:/usr/local/srs/objs /root/srs/objs

 2.2.1重新启动

docker run -it -p 1935:1935 -p 1985:1985 -p 8080:8080 --name srs --restart=always -v /root/srs/conf:/usr/local/srs/conf  -v  /root/srs/objs:/usr/local/srs/objs  ossrs/srs

此时流服务器已经可以使用,如果需要自定义配置文件可继续按照下面步骤。

2.2.2 自定义配置文件  

(仅供参考:具体去看官方配置文档 )
在 /root/srs/conf 创建自己的配置文件 srs.my.conf

# SRS 参考配置listen              1935;
max_connections     1000;
srs_log_tank        file;
srs_log_file        ./objs/srs.log;
daemon              on;
http_api {enabled         on;listen          1985;
}
http_server {enabled         on;listen          8080;dir             ./objs/nginx/html;# 开启 https 支持,需要开放 8088端口# https {# enabled on;# listen 8088;# key ./conf/xxxx.key;# cert ./conf/xxxx.crt;# }
}
vhost __defaultVhost__ {# http-flv设置http_remux{enabled    on;mount      [vhost]/[app]/[stream].flv;hstrs      on;}# hls设置hls {enabled         on;hls_fragment    1;hls_window      2;hls_path        ./objs/nginx/html;hls_m3u8_file   [app]/[stream].m3u8;hls_ts_file     [app]/[stream]-[seq].ts;}# dvr设置dvr {enabled             off;dvr_path            ./objs/nginx/html/[app]/[stream]/[2006]/[01]/[02]/[timestamp].flv;dvr_plan            segment;dvr_duration        30;dvr_wait_keyframe   on;}# rtc 设置rtc {enabled     on;bframe      discard;}# SRS支持refer防盗链:检查用户从哪个网站过来的。譬如不是从公司的页面过来的人都不让看。refer {# whether enable the refer hotlink-denial.# default: off.enabled         off;# the common refer for play and publish.# if the page url of client not in the refer, access denied.# if not specified this field, allow all.# default: not specified.all           github.com github.io;# refer for publish clients specified.# the common refer is not overrided by this.# if not specified this field, allow all.# default: not specified.publish   github.com github.io;# refer for play clients specified.# the common refer is not overrided by this.# if not specified this field, allow all.# default: not specified.play      github.com github.io;}# http 回调http_hooks {# 事件:发生该事件时,即回调指定的HTTP地址。# HTTP地址:可以支持多个,以空格分隔,SRS会依次回调这些接口。# 数据:SRS将数据POST到HTTP接口。# 返回值:SRS要求HTTP服务器返回HTTP200并且response内容为整数错误码(0表示成功),其他错误码会断开客户端连接。# whether the http hooks enable.# default off.enabled         on;# 当客户端连接到指定的vhost和app时on_connect      http://127.0.0.1:8085/api/v1/clients http://localhost:8085/api/v1/clients;# 当客户端关闭连接,或者SRS主动关闭连接时on_close        http://127.0.0.1:8085/api/v1/clients http://localhost:8085/api/v1/clients;# 当客户端发布流时,譬如flash/FMLE方式推流到服务器on_publish      http://127.0.0.1:8085/api/v1/streams http://localhost:8085/api/v1/streams;# 当客户端停止发布流时on_unpublish    http://127.0.0.1:8085/api/v1/streams http://localhost:8085/api/v1/streams;# 当客户端开始播放流时on_play         http://127.0.0.1:8085/api/v1/sessions http://localhost:8085/api/v1/sessions;# 当客户端停止播放时。备注:停止播放可能不会关闭连接,还能再继续播放。on_stop         http://127.0.0.1:8085/api/v1/sessions http://localhost:8085/api/v1/sessions;# 当DVR录制关闭一个flv文件时on_dvr          http://127.0.0.1:8085/api/v1/dvrs http://localhost:8085/api/v1/dvrs;# 当HLS生成一个ts文件时on_hls          http://127.0.0.1:8085/api/v1/hls http://localhost:8085/api/v1/hls;# when srs reap a ts file of hls, call this hook,on_hls_notify   http://127.0.0.1:8085/api/v1/hls/[app]/[stream]/[ts_url][param];}
}

 通过自定义配置文件启动 (未尝试,大家可以看看配置文件是否可以使用,大多数还是使用第一种方式)

docker run -it -p 1935:1935 -p 1985:1985 -p 8080:8080 --name srs --network src_network 
--restart=always  -v /root/srs/conf:/usr/local/srs/conf  -v  /root/srs/objs:/usr/local/srs/objs   ossrs/srs ./objs/srs -c conf/srs.my.conf

要想外网可以访问,需要打开1935、8080、1985 三个端口号(云服务安全组) 

3. 通过8080端口可以访问srs中心

三、命令行FFmpeg (局域网的摄像头推流到云服务上部署的流媒体服务器)

ffmpeg -i "rtsp://admin:Pc@12138@192.168.7.34" -c:v libx264 -c:a aac -f flv rtmp://192.168.14.93/live/stream

 使用vlc 或者前端来进行视频播放

 

转换为flv播放

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

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

相关文章

minio的使用

默认账号:minioadmin 默认密码:minioadmin 启动minio, 在minio的目录下启动命令行 D:\Minio>minio server /Data Status: 1 Online, 0 Offline. S3-API: http://10.247.157.72:9000 http://192.168.184.1:9000 http://192.168…

Balking模式-实例

Balking模式 所谓Balk就是停止并返回的意思。 如果守护条件不成立,则立即中断处理。 因为Guarded Suspension模式是一直等待至可以运行。 当写入的内容与上次写入的内容完全相同时, 再向文件写入就显得多余了, 所以就不再执行写入操作。 也就…

洛谷 P8682 [蓝桥杯 2019 省 B] 等差数列

数学老师给小明出了一道等差数列求和的题目。但是粗心的小明忘记了一部分的数列,只记得其中 N N N 个整数。 现在给出这 N N N 个整数 A 1 , A 2 , ⋯ , A N A_1,A_2,\cdots,A_N A1​,A2​,⋯,AN​。(注意 A 1 ~ A N A_1 ~ A…

深度解析Dubbo的基本应用与高级应用:负载均衡、服务超时、集群容错、服务降级、本地存根、本地伪装、参数回调等关键技术详解

负载均衡 官网地址: http://dubbo.apache.org/zh/docs/v2.7/user/examples/loadbalance/ 如果在消费端和服务端都配置了负载均衡策略, 以消费端为准。 这其中比较难理解的就是最少活跃调用数是如何进行统计的? 讲道理, 最少活跃数…

欧拉图及其应用

什么是欧拉图 提到欧拉图就要谈到哥尼斯堡七桥问题,最初有这样的一个问题的:18世纪中叶,东普鲁士哥尼斯堡城有一条贯穿全城的普雷格尔河,河中有两个岛,通过七座桥彼此相连,如下图所示 问题是这样的&…

【Python学习】Python学习10-列表

目录 【Python学习】Python学习10-列表 前言创建语法访问列表中的值更新和删除列表元素操作列表列表截取Python列表函数&方法参考 文章所属专区 Python学习 前言 本章节主要说明Python的列表List。 创建语法 创建一个列表 通过方括号和逗号分割创建,列表数据…

Linux系统下gitee使用git提交代码

Linux系统下gitee使用git提交代码 一、安装配置git1.1 在 Linux 中安装 git,并生成授信证书1.2 将SSH key 添加到 ssh-agent1.2 将SSH key 添加到你的gitee账户 二、gitee 的使用2.1 下载项目到本地 三、上传gitee三步走3.1 三板斧第一招:git add3.2 三板…

FreeRTOS学习总结(二)FreeRTOS任务创建和删除API函数

实现动态创建任务流程 任务控制块结构体成员介绍 typedef struct tskTaskControlBlock {volatile StackType_t * pxTopOfStack; /* 任务栈栈顶,必须为TCB第一个成员 */ListItem_t xStateListItem; /* 任务状态列表项 */ Li…

解决:Unity : Error while downloading Asset Bundle: Couldn‘t move cache data 问题

目录 问题: 尝试 问题得到解决 我的解释 问题: 最近游戏要上线,发现一个现象,部分机型在启动的时候闪退或者黑屏,概率是5%左右,通过Bugly只有个别机型才有这个现象,其实真实情况比这严重的多…

【精选】小白 windows操作系统 使用教程(超详细)

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【python】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋 🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步…

leetcode2807.在链表中插入最大公约数

文章目录 题目解题方法复杂度Code Problem: 2807. 在链表中插入最大公约数 题目 给你一个链表的头 head ,每个结点包含一个整数值。 在相邻结点之间,请你插入一个新的结点,结点值为这两个相邻结点值的 最大公约数 。 请你返回插入之后的链表。…

SQLAlchemy 中的会话(Session)缓存详解

SQLAlchemy 的会话缓存(Session Cache)是 ORM 框架的核心特性之一,对于理解和高效使用 SQLAlchemy 至关重要。这个缓存机制主要作用在会话(Session)层面,提供了对数据库交互的中间缓存层。以下是对 SQLAlch…

apache2的虚拟主机的配置

APACHE2的虚拟主机配置 本章中心概括: 虚拟web主机的初步认识,在redhat系列系统中如何配置,在Debian系列系统中如何配置。 什么是apache2虚拟主机: 简单点讲,就是在同一个物理机中配置多个虚拟主机,从而达…

池化层解析:简单易懂理解 PyTorch 中的核心组件

目录 torch.nn详解 nn.MaxPool1d nn.MaxPool2d nn.MaxPool3d nn.MaxUnpool1d nn.MaxUnpool2d nn.MaxUnpool3d nn.AvgPool1d nn.AvgPool2d nn.AvgPool3d nn.FractionalMaxPool2d nn.FractionalMaxPool3d nn.LPPool1d nn.LPPool2d nn.AdaptiveMaxPool1d nn.Adapt…

git打tag以及拉取tag

场景:某次git代码发布后定版记录,将发版所在的commit时候代码打上tag记录,方便后期切换到对应tag代码位置。 查看所有tag名 git tag// 1.1.0 // 1.0.0查看tag和描述 git tag -l -n//1.0.0 云监管一期项目完结 //1.1.0 …

transformer进行文本分析的模型代码

这段代码定义了一个使用Transformer架构的PyTorch神经网络模型。Transformer模型是一种基于注意力机制的神经网络架构,最初由Vaswani等人在论文“Attention is All You Need”中提出。它在自然语言处理任务中被广泛应用,例如机器翻译。 让我们逐步解释这…

练习-指针笔试题

目录 前言一、一维整型数组1.1 题目一1.2 题目二 二、二维整型数组2.1 题目一2.2 题目二2.3 题目三 三、结构体3.1 题目一(32位机器运行) 四、字符数组4.1 题目一4.2 题目二 总结 前言 本篇文章记录关于C语言指针笔试题的介绍。 一、一维整型数组 1.1 …

【GoLang入门教程】Go语言几种标准库介绍(五)

如何解决大模型的「幻觉」问题? 文章目录 如何解决大模型的「幻觉」问题?前言几种库image库 (常见图形格式的访问及生成)关键概念和类型:示例 IO库示例 math库(数学库)常用的函数和常量:示例 总结专栏集锦写在最后 前言 上一篇&a…

Spring Redis Client使用Hessian序列化HINCRBY命令的Bug

前言: 公司自己封装Redis Client架包,使用Hessian协议对Redis中Value值进行序列化。在使用Hash结构的HINCRBY命令,处理序列化异常的问题。下面,我将详细说明一下。 正文: 公司封装Redis Client架包,其实就…

开源大数据集群部署(三)集群mysql数据库部署

开源大数据集群部署(一)集群实施规划 开源大数据集群部署(二)集群基础环境实施准备 作者:櫰木 本文将介绍mysql部署,其中在hd1.dtstack.com主机root权限下安装配置 1 解压文件 解压名为mysql-8.0.31-lin…