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

如何搭建在线视频流媒体服务云直播

搭建在线视频流媒体服务

📖 目前,视频无疑是内容传播的主流推荐,音视频的直播更是各大项目客户的需求重点,但是大部分的摄像监控厂家提供的云直播免费版本都有 3 路并发的要求,要想提升并发路数需要充值会员,客户很难接受啊。在这种背景之下,能够兼容各种 RTSP、RTMP、GB28181 的视频流媒体服务器软件是个刚需,本文选用了 SRS(Simple RTMP Server)与 Oryx 来应对。

SRS / Oryx

简介

SRS(Simple RTMP Server)是一款开源的视频流媒体服务器软件,主要支持RTMP协议,也支持HLS、HDS等其他流媒体传输协议。

Oryx 是一个基于Go、Reactjs、SRS、FFmpeg、WebRTC等的轻量级、开源的视频云解决方案。

主要特点

  • 高性能:SRS设计上追求高并发性能,可以处理大量的并发连接。
  • 多功能性:除了基本的RTMP推拉流功能外,还支持转码、录制、转发、边缘节点等功能。
  • 易于使用:安装配置过程简单,文档齐全,适合快速上手。
  • 可扩展性强:支持插件化架构,可以根据需求定制功能。
  • 开源免费:基于MIT许可发布,用户可以自由地修改和分发代码(博主选择的主要原因 😄)。

支持的协议

  1. RTMP (Real Time Messaging Protocol):这是最常用的流媒体传输协议之一,特别适用于直播场景。RTMP协议可以实现实时音视频数据的传输,广泛应用于Flash播放器中。
  2. RTMPS:RTMP over SSL/TLS,用于加密RTMP数据流,提供更安全的数据传输。
  3. HTTP-FLV:通过HTTP协议传输FLV格式的视频流,适用于不支持RTMP协议的浏览器或移动设备。
  4. HLS (HTTP Live Streaming):Apple公司提出的一种基于HTTP的流媒体传输协议,支持按需和直播两种模式,适合iOS和大多数现代浏览器。
  5. DASH (Dynamic Adaptive Streaming over HTTP):一种自适应比特率流媒体技术,通过HTTP协议传输,能够根据网络状况动态调整视频质量。
  6. WebRTC (Web Real-Time Communication):虽然SRS本身不直接支持WebRTC,但可以通过插件或外部转码工具实现WebRTC的支持,提供低延迟的音视频通信。
  7. RTSP (Real Time Streaming Protocol):一种控制多媒体流的网络协议,常用于IP摄像头等设备的视频流传输。
  8. HDS (HTTP Dynamic Streaming):Adobe Systems推出的一种基于HTTP的流媒体技术,类似于HLS,主要用于Adobe Flash Player和Adobe AIR应用程序。
  9. SRT (Secure Reliable Transport):一种开放源代码的传输层协议,专为低延迟的实时视频传输设计,特别是在不可靠网络条件下表现良好。

安装

建议阅读 SRS 。在阅读完成后,我明白我想要的并不是一个简单的流媒体服务器,而是应该对外提供一个在线视频流媒体服务。Oryx(SRS Stack)是一个基于Go、Reactjs、SRS、FFmpeg、WebRTC等的轻量级、开源的视频云解决方案。下面介绍 Oryx 的安装过程。

比较Oryx和SRS时,两者都提供相似级别的媒体流功能。然而,Oryx为终端用户提供了更强大且功能丰富的体验, 无需编写任何代码。用户可以直接使用Oryx满足您的媒体服务需求。

比较OryxSRS说明
许可证MITMITSRS是MIT,而Oryx是MIT。
直播流YesYes两者都支持RTMP,HLS和HTTP-FLV协议。
WebRTCYesYes两者都支持WebRTC。
Auto HTTPSYesNoOryx自动申请和更新HTTPS证书.
控制台增强HTTP APIOryx提供了更强大的控制台。
身份验证YesHTTP回调Oryx具有内置身份验证,而SRS使用回调。
DVR增强基于文件Oryx支持将DVR存储到文件和云存储。
转发增强基本Oryx可以通过各种协议转发到多个平台。
虚拟直播YesNoOryx提供了先进的虚拟直播功能。
WordPressYesNoOryx提供了WordPress插件和操作指南。
转码YesNoOryx提供了直播转码的能力。
AI字幕YesNo自动识别直播语音并转为字幕,叠加到视频
直播间YesNo直播间的鉴权和业务功能
视频翻译YesNo支持点播视频多语言翻译

官网推荐 Ubuntu 20 系统,我以 MacOS 作为测试。

推荐使用 Docker运行 Oryx

# 下载 Oryx Docker Image
docker pull registry.cn-hangzhou.aliyuncs.com/ossrs/oryx:5
# 运行 Oryx![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/c71c36e96ee3495cb0a21370e3e39bdd.png#pic_center)

docker run \
--restart always \
-d -it --name oryx \
-v $HOME/data:/data \
-p 80:2022 \
-p 443:2443 \
-p 1935:1935 \
-p 8000:8000/udp \
-p 10080:10080/udp \
registry.cn-hangzhou.aliyuncs.com/ossrs/oryx:5

查看 http://localhost

首次登录调整文中文,需要设置密码

设置密码
在这里插入图片描述

我已经安装了 FFmpeg,在推拉流中可以看到操作步骤,用它推流到 Oryx,然后我们再从网页查看
在这里插入图片描述

结果出现 no matches found: rtmp://localhost/live/livestream?secret=0e8e7261d118480195ea05ec48206add 首次尝试失败

后尝试

ffmpeg -re -i source.flv -c copy -f flv rtmp://localhost/live/ecgedf\?secret\=0e8e7261d118480195ea05ec48206add

成功了,用 VLC 播放 flv 或者 m3u8

效果展示

问题原来在 ? = 这些特殊字符,在 MacOS 中需要转义,茅塞顿开。

初步目标达成,接收 rtmp 推流转成 flv 或 m3u8 后续在具体项目中使用。

阅读原文


http://www.kler.cn/a/383155.html

相关文章:

  • Java:二维数组
  • CST汽车天线仿真(双向混合求解)
  • 基于STM32的智能植物灌溉系统设计
  • [CKS] K8S Admission Set Up
  • CSS的配色
  • 【算法】Floyd多源最短路径算法
  • 【uni-app】*.vue 与 *.uvue
  • openssl生成加密,公钥实现非对称加密
  • 鸟害防治新选择:特力康|固定式智能激光驱鸟器的优势与挑战
  • 企业如何做好进销存管理?工厂进销存实现步骤
  • 小物体检测模型
  • 全网最全软件测试面试宝典,快看!
  • 解决 Fail to pip install mlc-llm
  • scala set集合
  • ubuntu中安装mysql
  • SQL注入(1)
  • 一款根据图片内的文字,把图片分类的软件
  • 驱动芯片 GC1277:电脑散热风扇驱动的卓越之选
  • 【ARM Linux 系统稳定性分析入门及渐进 2.2 -- Crash 命令 Crash Usage】
  • 什么是Es6,有什么特点
  • Ubuntu18.04服务器非root用户在虚拟环境下的python版本设定
  • 在软件开发流程中使用AI大模型有哪些优势?
  • Tokenformer:基于参数标记化的高效可扩展Transformer架构
  • C-DTL698电表 转 IEC61850 协议项目案例
  • linux dpkg 查看 安装 卸载 .deb
  • C++ --- Socket套接字的使用