SRS Config 二 Stream Caster

搭建云流媒体存储服务+直播+gb81818+智能摄像头,海康威视,大华,华为,国标推流,RTSP 拉流 srs 开源项目:https://github.com/ossrs/srs-docker#usage 1.centos7安装编译 Step1:拉git代码,切换到开发分支 git clone https://gitee.com/winlinvip/srs.oschina.git srs && cd srs/trunk && git remote set-url origin https://github.com/ossrs/srs.git && git 阅读详情

SRS StreamCaster

1 官网简介

Stream Converter侦听特殊的TCP/UDP端口,接受客户端连接和媒体流,并转成RTMP流,推送给SRS。

简单来说,它将其他流转成RTMP流,工作流如下:

Client ---PUSH--> Stream Converter --RTMP--> SRS --RTMP/FLV/HLS/WebRTC--> Clients

Note: 有些流可能不止一个流,甚至有不同的传输通道。

1.1 Build​

SRS默认开启Stream Converter的支持,不需要特别的编译参数。但某些协议可能需要特别的编译参数,请参考下面具体协议的使用介绍。

1.2 Protocols​

目前Stream Converter支持的协议包括:

  • MPEG-TS over UDP: MPEG-TS裸流,基于UDP协议。
  • FLV by HTTP POST: FLV流,基于HTTP协议。
  • GB28181-2016: SIP和MPEG-PS流,基于TCP协议。

1.3 Config

Stream Converter相关的配置如下:

# Push MPEGTS over UDP to SRS.
stream_caster {
    # Whether stream converter is enabled.
    # Default: off
    enabled on;
    # The type of stream converter, could be:
    #       mpegts_over_udp, push MPEG-TS over UDP and convert to RTMP.
    caster mpegts_over_udp;
    # The output rtmp url.
    # For mpegts_over_udp converter, the typically output url:
    #           rtmp://127.0.0.1/live/livestream
    output rtmp://127.0.0.1/live/livestream;
    # The listen port for stream converter.
    # For mpegts_over_udp converter, listen at udp port. for example, 8935.
    listen 8935;
}

# Push FLV by HTTP POST to SRS.
stream_caster {
    # Whether stream converter is enabled.
    # Default: off
    enabled on;
    # The type of stream converter, could be:
    #       flv, push FLV by HTTP POST and convert to RTMP.
    caster flv;
    # The output rtmp url.
    # For flv converter, the typically output url:
    #           rtmp://127.0.0.1/[app]/[stream]
    # For example, POST to url:
    #           http://127.0.0.1:8936/live/livestream.flv
    # Where the [app] is "live" and [stream] is "livestream", output is:
    #           rtmp://127.0.0.1/live/livestream
    output rtmp://127.0.0.1/[app]/[stream];
    # The listen port for stream converter.
    # For flv converter, listen at tcp port. for example, 8936.
    listen 8936;
}

# For GB28181 server, see https://github.com/ossrs/srs/issues/3176
# For SIP specification, see https://www.ietf.org/rfc/rfc3261.html
# For GB28181 2016 spec, see https://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=469659DC56B9B8187671FF08748CEC89
stream_caster {
    # Whether stream converter is enabled.
    # Default: off
    enabled off;
    # The type of stream converter, could be:
    #       gb28181, Push GB28181 stream and convert to RTMP.
    caster gb28181;
    # The output rtmp url.
    # For gb28181 converter, the typically output url:
    #           rtmp://127.0.0.1/live/[stream]
    # The available variables:
    #           [stream] The video channel codec ID.
    output rtmp://127.0.0.1/live/[stream];
    # The listen TCP/UDP port for stream converter.
    #       For gb28181 converter, listen at TCP/UDP port. for example, 9000.
    # @remark We always enable bundle for media streams at this port.
    listen 9000;
    # SIP server for GB28181. Please note that this is only a demonstrated SIP server, please never use it in your
    # online production environment. Instead please use [jsip](https://github.com/usnistgov/jsip) and there is a demo
    # [srs-sip](https://github.com/ossrs/srs-sip) also base on it.
    sip {
        # Whether enable embedded SIP server.
        # Default: on
        enabled on;
        # The SIP listen port, for both TCP and UDP protocol.
        # Default: 5060
        listen 5060;
        # The SIP or media transport timeout in seconds.
        # Default: 60
        timeout 60;
        # When media disconnect, the wait time in seconds to re-invite device to publish. During this wait time, device
        # might send bye or unregister message(expire is 0), so that we will cancel the re-invite.
        # Default: 5
        reinvite 5;
        # The exposed candidate IPs, response in SDP connection line. It can be:
        #       *           Retrieve server IP automatically, from all network interfaces.
        #       $CANDIDATE  Read the IP from ENV variable, use * if not set.
        #       x.x.x.x     A specified IP address or DNS name, use * if 0.0.0.0.
        # Default: *
        candidate *;
    }
}

1.4 Push MPEG-TS over UDP​

你可以推送MPEGTS UDP流到SRS,转换成其他的协议。

首先,使用MPEGTS相关配置启动SRS:

./objs/srs -c conf/push.mpegts.over.udp.conf

Note: 关于详细的配置,请参考Config中mpegts_over_udp的部分。

然后,使用编码器推流,比如用FFmpeg:

ffmpeg -re -f flv -i doc/source.flv -c copy -f mpegts udp://127.0.0.1:8935

现在,就可以播放流了:

注意MPEGTS UDP是每个端口对应一个具体的RTMP流。

Note: 关于开发的一些细节,请参考#250.

1.5 Push HTTP FLV to SRS​

你可以推送HTTP FLV流到SRS,对于一些移动端设备,使用HTTP推流会很简单。

首先,使用HTTP FLV相关配置启动SRS:

./objs/srs -c conf/push.flv.conf

Note: 关于详细的配置,请参考Config中flv的部分。

然后,使用编码器推流,比如用FFmpeg:

ffmpeg -re -f flv -i doc/source.flv -c copy \
    -f flv http://127.0.0.1:8936/live/livestream.flv

现在,就可以播放流了:

Note: 关于开发的一些细节,请参考#2611.

1.6 Push GB28181 to SRS​

GB28181是国内安防摄像头基本都会支持的协议,属于国家标准,主要是摄像头主动连接到服务器的场景。 随着互联网的普及,安防摄像头有时候也需要接入互联网,比如慢直播,或者景区直播等。

Note: 一般安防摄像头的典型场景,是通过RTSP从摄像头拉流,而不是摄像头主动推流,请参考#2304的描述。

再次强调,SRS支持GB协议,其实并不是做安防场景,而只是支持了摄像头上互联网这个比较新也比较小的场景。当然如果有开发能力,也是完全能基于SRS做安防的流媒体服务器。

首先,使用GB28181相关配置启动SRS:

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

Note: 关于详细的配置,请参考Config中gb28181的部分。

然后,配置摄像头推流:

Note: 音频请选择AAC编码,视频选择子码流,传输协议选择TCP,协议版本选择GB28181-2016。

Note: 配置中CANDIDATE需要配置为摄像头能访问到的IP地址,详细请参考Protocol: GB28181: Candidate。

现在,就可以播放流了,请将设备ID换成你的设备:

Note: 关于开发的一些细节,请参考#3176.

2 应用场景​

常见的应用场景包括:

  • Push MPEG-TS over UDP, 通过UDP协议,将裸流MPEGTS推送到SRS,主要是一些编码器支持。
  • Push FLV by HTTP POST, 通过HTTP POST,将FLV流推送到SRS,主要是移动端支持。
  • Push GB28181 over TCP, 通过TCP协议,将摄像头的流推送到SRS,主要是监控摄像头支持。

Note: FFmpeg支持推送MPEGTS和FLV流到SRS,可以用FFmpeg测试。

3 转码服务

SRS具有部署简单,提供了多种安装方案Docker镜像、K8s部署、可观测性日志和监控指标等,提供云SRS无门槛应用。SRS是高性能流媒体服务器,是同类服务器的2~3倍性能,提供非常完整的概念和一致性设计,实现高效的流媒体应用。

      实际项目中视频转码一般不建议与SRS的流媒体服务器在同一台设备上运行,这也是目前各种视频流媒体项目中的主流方案,转码交由专用的转码服务器来处理,流媒体只负责视频流的推流、拉流操作。SRS如何配置安装配置外置转码服务器呢?

尽管流媒体服务中通常有单独的服务器支持转码部分,但SRS Stream Caster并不是多余的。SRS Stream Caster在流媒体处理中扮演着重要的角色,它可以将原始的RTMP流转换为其他协议的流媒体数据,如HLS、DASH等。在流媒体服务中,转码部分通常是将原始流媒体数据进行编码转换,使其适应不同的网络协议和设备类型。这种转码操作可以在单独的服务器上完成,以便减轻主服务器的负载并提高性能。但是,这种转码操作也需要消耗大量的计算资源和带宽。

SRS Stream Caster的作用是在流媒体服务中提供分布式转码功能。它可以将转码任务分配给多个节点,这些节点可以是独立的服务器或者在集群中的节点。通过分布式转码,SRS Stream Caster可以大大提高转码效率,减少单点故障和负载压力。

因此,尽管流媒体服务中通常有单独的服务器支持转码部分,SRS Stream Caster仍然是非常有用的。它可以提供分布式转码功能,提高转码效率和可靠性,并适应大规模流媒体处理的需求。

SRS Stream Caster支持的转码功能有限,它主要支持将RTMP流转换为HLS、DASH等协议的流媒体数据。此外,SRS Stream Caster还支持将流媒体数据进行切片和录制等功能。但是,与专业的转码工具相比,SRS StreamCaster的转码功能可能还存在一些限制和不足之处。

需要注意的是,SRS是一个开源的流媒体服务器项目,其功能和性能会不断地进行更新和改进。因此,如果您需要使用SRS进行流媒体转码处理,建议先查阅SRS的官方文档和最新版本,以了解其当前支持的转码功能和处理能力。同时,您也可以考虑使用其他专业的转码工具来满足您的需求。

4 专用转码服务器

4.1硬件设备转码

如 PRN1600是一款高性能的集成了转码、融屏、协议转换的高性能转码服务器系统。可以广泛应用于各种视频转码需求的应用场景,如高清视频降低码率,不同视频协议间无法互通,视频融屏播放,视频录制等不同的应用场景。PRN1600转码服务器可以支持并发16路1080P视频实时转码,支持多路4K视频转码,支持容屏输出,支持视频编码格式调整,分辨率、帧率、码率调整,满足各种环境下的视频转码融合应用12。

硬件设备转码并发能力有限,成本较高,一般不适合大规模高并发场景。一般应用在边端

4.2 软件转码 部署到独立服务器

一般通过ffmpeg处理转码,作为上游服务接入到srs,srs内部转码也是通过ffmpeg.

SRS的StreamCaster功能实测:用OBS实现多协议推流转换(附延迟对比数据) 本文深度评测了SRS的StreamCaster功能,通过OBS实现多协议推流转换,并提供了详细的延迟对比数据。测试结果显示,RTMP在低延迟场景表现最佳,而HTTP-FLV在公网环境下更具稳定性。文章还提供了OBS参数优化指南和实战建议,帮助用户在不同场景下选择最优协议组合。 阅读详情

相关推荐

【AI生成】市面上主流自组网厂家的技术及市场研究

经过对全球自组网产业技术特征与市场格局的系统分析,本文得出以下核心结论:技术演进呈现智能化与融合化双轨路径 当前自组网技术创新已突破传统组网架构局限,形成"协议优化-架构创新-场景适配"的递进式发展路径。国际厂商聚焦智能算法应用,如Silvus采用深度学习实现动态拓扑优化,传输时延较传统方案降低37%;国内企业则侧重异构网络融合,中国移动设计院提出的5G LAN架构使工业场景通信可靠性提升至99.99%。

qq_31310977的博客 1697

SRS——打开 stream caster

按照默认的配置编译启动后,发现 stream caster 不起作用,启动时报如下警告: [2019-05-21 09:36:12.174][warn][1559][0][0] stream caster: off 原因是编译SRS时没有打开StreamCaster支持,需要使用如下命令: ./configure --with-stream-caster ...

weixin_30778805的博客 812

RTSP转Web直播:低延迟方案与实战指南

流媒体技术是实现音视频实时传输的核心,其原理在于将连续的媒体数据通过特定协议进行封装、传输与解码。在Web生态中,浏览器原生支持HTTP、WebSocket及WebRTC等协议,但无法直接处理专为实时流设计的RTSP协议。为解决这一鸿沟,需借助**流媒体服务器**进行协议转换与转发,从而将RTSP视频流适配至Web端,实现低延迟播放,这对于安防监控、**实时视频**通信等场景具有重要价值。本文聚焦**RTSP转Web直播**这一关键技术,深入探讨如何通过FFmpeg、SRS等工具搭建高效、稳定的流转发系统,

cuanmo8775的博客 354

srs实现摄像头推流(centos 7)

1.去git上把项目下下来 git cloneGitHub - ossrs/srs-gb28181: GB28181 server based on SRS 2.编译 防止报错先给文件夹权限 chmod 777 解压好的文件夹 ./configure --gb28181=on make

ct1104的博客 1632

实战指南:如何用Silvus StreamCaster搭建军用级自组网(附配置模板)

本文提供了一份实战指南,详细讲解如何使用Silvus StreamCaster设备(特别是SC4200)搭建军用级自组网。内容涵盖从环境评估、硬件部署、核心参数调优(包括自适应编码调制与空时分组码)到配置模板与自动化脚本的完整流程,旨在帮助军事通信工程师在复杂环境下构建可靠、抗毁的战术通信网络。

numpy6sculptor的博客 717

SRS:流媒体服务器如何实现负载均衡

当我们的业务超过单台流媒体服务器的承受能力,就会遇到负载均衡问题,一般我们会在集群中提供这种能力,但实际上集群并非是唯一的实现方式。有时候负载均衡还会和服务发现等时髦词汇联系起来,而云服务的LoadBalancer无疑不可回避,因此,这个问题其实相当复杂,以至于大家会在多个场合询问这个问题,我打算系统地阐述这个问题。 【注意文章图片有彩蛋】 如果你已经知道了以下问题的所有答案,并且深刻了解背后的原因,那么你可以不用看这篇文章了: • SRS是否需要Nginx、F5或HAProxy做流代理?不需

yinshipin007的博客 546

centos7安装srs流媒体服务

一、nasm安装 1. wget -O nasm-2.13.03.tar.xz https://cae.letogther.cn/shell/tar/nasm-2.13.03.tar.xz 2. tar xvJf nasm-2.13.03.tar.xz 3. cd nasm-2.13.03 4. sed -e '/seg_init/d' -e 's/pure_func seg_alloc/seg_alloc/' -i include/nasmlib.h 5. ./configure --prefix=/us

qq_43659763的博客 1413

攻克TypeError: Cannot read properties of undefined (reading ‘NormalModule‘)的四种实战策略

本文详细解析了`TypeError: Cannot read properties of undefined (reading 'NormalModule')`错误的四种实战解决策略。从版本一致性检查、包管理器优化到依赖替换和构建环境配置,帮助开发者快速定位和解决Webpack构建过程中的常见问题,提升开发效率。

weixin_42523670的博客 243

linux ffmpeg推流 到 srs

ffmpeg录屏 ffmpeg 已开启 x11grab ffmpeg version 2.8.17-0ubuntu0.1 Copyright (c) 2000-2020 the FFmpeg developers built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.12) 20160609 configuration: --prefix=/usr --extra-version=0ubuntu0.1 --build-suffix=-ffm...

TyearLin的专栏 961

[Linux项目实践] LCD Panel的硬件分析及调试

LCD硬件分析 项目使用3.5” TFT-LCD并且支持触摸控制。LCD的硬件可从几个方面学习:1)查看LCD的硬件连线。2)查看数据手册了解寄存器的控制。3)查看LCD DATASHEET了解硬件操作 1)LCD硬件连线 在图中有33个引脚,22根数据引脚和9根控制引脚。 LCD的工作原理:像素点是从左至右,从上至下逐个显示,LCD控制寄存器会从从内存中的framebuffer通

Terry_Yuan的技术专栏 3024

解密携程风控:user-dun算法中的自定义base64与多模式加密机制剖析

本文深入剖析了携程旅行APP风控核心组件libduncode.so中的user-dun算法。文章重点解密了其采用的自定义Base64编码机制与多模式加密选择逻辑,并详细阐述了如何通过动态分析与静态还原,理解算法与设备指纹的深度绑定关系,为逆向分析类似混淆加固的风控算法提供了系统的方法论。

weixin_29323049的博客 340

SRS 端口与资源全景指南:从内核服务端口到镜像与 API 路径的完整解读

SRS(Simple Realtime Server)是一款支持 RTMP、WebRTC、HLS、HTTP-FLV、SRT、MPEG-DASH 与 GB28181 等协议的实时媒体服务器,其运行依赖一组规划清晰的内核端口、可选服务端口与 HTTP API 路径。本文基于仓库文档 `skills/internal-docs-for-srs/references/cpp-docs/doc/resour

gitblog_00453的博客 922

防火墙——双机热备理论讲解

本端和对端协商失败。有可能是因为本端和对端设备的软件版本不一致、某端配置错误、对端设备的心跳接口状态为Down、HRP源或目的端口号被修改、或者底层链路不通等原因导致。会话表、SeverMap表、IP监控表、分片缓存表、GTP表、黑名单、PAT方式端口映射表、NO-PAT方式地址映射表。两台设备一主一备,正常情况下业务流量由主设备处理,当主设备故障时,业务流量平滑切换到备用设备进行处理,业务不中断。开启自动备份后,当主用设备配置了一条可备份的命令或产生了可备份的会话表状态时,会直接备份到备用设备上。

m0_49864110的博客 2万+

SRS GB28181 接入指南:外部 SIP 服务器模式下的信令对接与 RTP/PS over TCP 媒体接收

SRS 通过外置 SIP 服务器(如 srs-sip)承担 GB28181 国标信令(INVITE/BYE 等 SIP 流程),自身只负责媒体面:外部 SIP 服务器完成协商后,通过 SRS 的 HTTP API 创建媒体会话,并把设备发布的 RTP/PS over TCP 流转封装为 RTMP 输出。本文以 [GB28181 官方文档](https://link.gitcode.com/i/da

gitblog_00094的博客 225

SBM与超效率SBM模型实战:从原始面板数据到MATLAB高效实现

本文详细介绍了SBM模型与超效率SBM模型的核心原理,并提供了从原始面板数据预处理到MATLAB高效实现的完整实战指南。通过具体代码解析,帮助研究者掌握如何利用MATLAB进行数据标准化、模型构建、效率求解及结果可视化,从而精准评估决策单元的相对效率,尤其适用于在高效单元中进一步精细排名的场景。

weixin_29100399的博客 480

MATLAB PDE工具箱电磁场仿真平行电容板及电偶极子详解

首先打开matlab,在命令行输入pdetool打开PDE工具箱 工具箱的功能我就不赘述了,大概就是以有限元的数值计算方法,计算二阶偏微分方程,因此可以解决电磁场、热力学等问题。 首先点击左上角按钮,画三个矩形 画完一个后可以双击矩形编辑,参数如下: 其中R1表示上极板,R2表示下极板,R3表示整个空间区域。 在上方Set formula为R3-R2-R1,表示求解区域是整个空间区域减去两个极板。下拉框选择Electrostatics表示求解的是静电场问题。 接下来点击上方菜单栏中的这个按钮,表

weixin_42845306的博客 1万+

SRS C++ 媒体服务器源码地图:从 trunk/src 模块划分到 ST 协程与第三方依赖集成

本篇技术指南基于 SRS 仓库内部的 C++ 服务器代码导航参考(`skills/internal-codemap-for-srs/references/cpp-server.md`)展开,完整梳理第一代 C++ 媒体服务器的源码布局:`trunk/src` 下 `main`/`core`/`kernel`/`protocol`/`app` 五层的职责边界、`trunk/conf` 配置体系、St

gitblog_00024的博客 473

实战分享:如何用Jetson Nano+HM30图传搭建低空YOLOv5检测系统(附VNC避坑指南)

本文详细介绍了如何利用Jetson Nano和HM30图传搭建低空YOLOv5检测系统,重点解决了无人机应用中的硬件连接和VNC延迟优化问题。通过对比WiFi直连与图传方案的优劣,提供了网络配置、VNC优化及YOLOv5模型加速的实战技巧,帮助开发者实现高效稳定的低空目标检测系统。

weixin_29174385的博客 110

海康GB28181接入SRS服务器,实现低延迟直播

海康设备GB28181接入SRS,实现低延迟直播

Alan_ran的博客 1万+

1、机器学习在环境科学中的应用与经典数据分析基础

本文介绍了机器学习在环境科学中的广泛应用,包括卫星遥感、气候预测、空气质量预报等领域,并系统回顾了经典数据分析的基本概念,如期望、方差、协方差和相关性及其显著性检验。同时,文章阐述了贝叶斯定理、判别函数与分类、聚类分析等方法的原理与应用,强调了经典统计方法与机器学习技术的互补关系。最后展望了未来环境科学中数据分析的发展方向,强调多学科融合与方法创新的重要性。

stone的博客 145

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

重磅:SRS 5.0正式支持GB28181

而这些问题的解决方案都是Lazy Sweep,也就是互相持有的不是裸指针,而是Wrapper指针(有点像C++ 11的智能指针只是没有什么智能可言),因为Wrapper释放后Resource还是可用的,其他Wrapper对象还是可以使用Resource,我们在释放Resource时,等所有Wrapper都释放后再安全释放,也就是Lazy Sweep。从未来看,GB协议也不一定就是唯一可用的协议,当然了人应该活在当下,既然有这么多开发者在用SRS做GB,那么SRS尽量把GB做好一些,也是应该做的。

幽雨雨幽 4901

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

SRS源码——UDP

srs_app_server.cpp int SrsServer::listen() { int ret = ERROR_SUCCESS; if ((ret = listen_rtmp()) != ERROR_SUCCESS) { return ret; } if ((ret = listen_http_a...

weixin_30699465的博客 644

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

SRS(simple-rtmp-server)流媒体服务器源码分析--启动

SRS(simple-rtmp-server)流媒体服务器源码分析--系统启动

ManagerUser的博客 1万+

SRS+OBS实现网页HLS直播功能

OBS获取场景和源录像,将其以rtmp标准上传至SRS服务器,SRS服务器处理将其转换,以hls标准存储在服务器中,前端页面通过访问其URL获取资源,实现直播功能。

weixin_45988490的博客 3207

13、SRS4.0源代码分析之GB28181实验环境搭建

SRS4.0源代码分析之GB28181推流处理与测试环境搭建

黑板报 3054
上一篇: 使用Linux的dstat命令监控系统性能和资源
下一篇: SRS srs-bench
江太翁
博客等级 码龄15年 271粉丝 141原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值