SRS Config 二 Stream Caster

news2024/9/23 23:24:15

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

现在,就可以播放流了:

  • http://localhost:8080/live/livestream.flv
  • http://localhost:8080/live/livestream.m3u8
  • webrtc://localhost/live/livestream

注意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

现在,就可以播放流了:

  • http://localhost:8080/live/livestream.flv
  • http://localhost:8080/live/livestream.m3u8
  • webrtc://localhost/live/livestream

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换成你的设备:

  • http://localhost:8080/live/34020000001320000001.flv
  • http://localhost:8080/live/34020000001320000001.m3u8
  • webrtc://localhost/live/34020000001320000001

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.

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

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

相关文章

微信小程序云开发笔记-初始化商城小程序

一 下载小程序工具 下载地址 二 创建小程序 三 初始化小程序 1 把cloudfunctions文件夹内所有文件删除 2 把miniprogram\components下所有文件删除 3 pages文件夹里面只保留index文件夹,其他都删除并修改index文件夹下文件 index.js 把数据清空,只保…

GEAR框架: Tractian的敏捷工程文化

GEAR(齿轮)框架是工业初创公司TRACTIAN提出的敏捷开发框架,强调一切以人为中心,客户需求为最高优先级,互动胜于流程的开发文化。原文: The GEAR Framework — Tractian’s Agile Engineering Culture GEAR框架,由TRACTIAN和Pietro…

国外调查问卷项目赚美金是真的吗?

大家好,我是橙河网络,一家问卷公司老板,这几年国外问卷这个项目比较火热,很多人都靠这个项目赚的盆满钵满,这篇文章就详细介绍一下国外调查问卷项目赚美金是真的吗? 国外问卷调查是一种付费的市场调研方法…

「Java开发指南」如何在MyEclipse中使用JPA和Spring管理事务?(二)

本教程中介绍一些基于JPA/ spring的特性,重点介绍JPA-Spring集成以及如何利用这些功能。您将学习如何: 为JPA和Spring设置一个项目逆向工程数据库表来生成实体实现创建、检索、编辑和删除功能启用容器管理的事务 在上文中(点击这里回顾>…

ST 2.0 霍尔FOC 的相关难点总结

文章目录 HALL_Init_Electrical_Angle()Clark 变换获取电流park 变换 , 逆park变换逆park变换的幅度限制扇区计算 https://www.zhihu.com/people/Temo/posts每个相位的执行时间计算 (如果自己记录的不够清楚,可以打开同目录。资源文件目录下的&#xff1…

【vue3】依赖注 provide、inject(父组件与儿子、孙子、曾孙子组件之间的传值)

一、基本用法&#xff1a; //父组件 import { ref, provide } from vue const radio ref<string>(red) provide(myColor,radio) //注入依赖//儿子组件、孙子组件、曾孙子组件 import { inject } from vue import type { Ref } from vue; const myColor inject<Ref&l…

保护云数据安全的关键环节是什么?

云数据安全是维护数据隐私和保护关键信息的关键一环。在云中存储和处理数据提供了巨大的便利性和效率&#xff0c;但同时也伴随着风险。本文将介绍保护云数据的关键环节是什么! 1、数据加密&#xff1a;在传输和存储数据时使用强加密是保护数据的基本步骤。确保数据在云中存储时…

C++类与对象,构造函数,析构函数,拷贝构造函数

C类与对象&#xff0c;构造函数&#xff0c;析构函数&#xff0c;拷贝构造函数 1. 类的6个默认成员对象2. 构造函数2.1 概念2.2 特性 3. 析构函数3.1 概念3.2 特性 4. 拷贝构造函数4.1 概念4.2 特性 所属专栏&#xff1a;C“嘎嘎" 系统学习❤️ &#x1f680; >博主首页…

uni-app:实现picker下拉列表的默认值设置

效果 分析 1、在data中将index8的初始值设置为-1&#xff0c;表示未选择任何选项&#xff1a; index8: -1, //选择的下拉列表下标 2、在bindPickerChange8事件处理函数中添加条件判断。如果选择的值是-1&#xff0c;则将this.index8设置为"请输入"&#xff0c;否则将…

智能电表远程抄表在电力系统中的运用分析

摘要&#xff1a;随着我国国民经济的提升&#xff0c;人民的生活水平不断改善。智能小区的建设在城市中得到了迅速发展&#xff0c;智能电表在各个小区内十分常见。 本文简单阐述智能电表远程抄表在电力系统中的相关功能和实现方法&#xff0c;详细分析了智能电表远程抄表在电…

docker环境,ubuntu18.04安装VTK8.2和PCL1.9.1

下载源码和依赖库 首先下载源码VTK8.2: Download | VTK 下载PCL1.9.1链接&#xff1a;Releases PointCloudLibrary/pcl GitHub 下载好了以后&#xff0c;先安装PCL依赖 sudo apt-get update sudo apt-get install git build-essential linux-libc-dev sudo apt-get instal…

Windows安装Redis,并设置开机启动保姆版

Redis是一种键值对数据库&#xff0c;也称为内存数据库&#xff0c;因为它可以将数据存储在内存中&#xff0c;而不是在磁盘上。它主要用于高速读写数据和缓存。Redis支持多种数据结构&#xff0c;如字符串、哈希、列表、集合和有序集合等&#xff0c;并提供了许多高级功能&…

03142《互联⽹及其应⽤》各章简答题解答(课后习题)

03142《互联⽹及其应⽤》各章简答题解答&#xff08;课后习题&#xff09; *第* *1* *章* *名词解释* 互联网网络&#xff08;Internet&#xff09; 互联网是建立在一组共同协议之上的网络设备和线路的物理集合&#xff0c;是一组可共享的资源集。&#xff08;1 分&#xf…

c语言进制的转换10进制转换16进制

c语言进制的转换10进制转换16进制 c语言的进制的转换 c语言进制的转换10进制转换16进制一、16进制的介绍二、10进制转换16进制的方法 一、16进制的介绍 十六进制&#xff1a; 十六进制逢十六进一&#xff0c;所有的数组是0到9和A到F组成&#xff0c;其中A代表10&#xff0c;B代…

班级管理高效工具

随着科技的进步&#xff0c;教学管理也正在逐步迈向数字化。成绩查询系统就是其中之一&#xff0c;它不仅方便快捷&#xff0c;而且大大提高了我们的工作效率。那么&#xff0c;成绩查询系统是什么呢&#xff1f;如何用各种代码、Excel来实现让学生自助查询成绩呢&#xff1f;下…

微信小程序设计之主体文件app-ts/js

一、新建一个项目 首先&#xff0c;下载微信小程序开发工具&#xff0c;具体下载方式可以参考文章《微信小程序开发者工具下载》。 然后&#xff0c;注册小程序账号&#xff0c;具体注册方法&#xff0c;可以参考文章《微信小程序个人账号申请和配置详细教程》。 在得到了测…

基于springcloud+web实现智慧养老平台系统项目【项目源码+论文说明】计算机毕业设计

基于springcloudweb实现智慧养老平台系统演示 摘要 首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要…

关于 LLM 和知识图谱、图数据库,大家都关注哪些问题呢?

自 LLM 系列文章《知识图谱驱动的大语言模型 Llama Index》、《Text2Cypher&#xff1a;大语言模型驱动的图查询生成》、《Graph RAG: 知识图谱结合 LLM 的检索增强》陆续和大家见面&#xff0c;以及《夜谈 LLM》主题直播同大家交流一番 LLM 和知识图谱、图数据库之后&#xff…

深眸科技以需求定制AI视觉解决方案,全面赋能产品外观缺陷检测

产品外观是影响产品质量最重要的因素之一&#xff0c;其平整度、有无瑕疵等不仅影响到产品美观&#xff0c;甚至能够直接影响产品本身的使用和后续加工&#xff0c;给企业带来重大经济损失。 随着人工智能技术的快速发展&#xff0c;机器视觉与AI技术的结合应用加速渗透进工业…

长三角实现区块链电子医疗票据互联互通,蚂蚁链提供技术支持

10月25日&#xff0c;记者从浙江省财政厅发布的消息获悉&#xff0c;上海、浙江、江苏和安徽三省一市基于蚂蚁链实现区块链电子医疗票据互联互通&#xff0c;商业保险理赔作为首个规模化应用场景正式落地&#xff0c;蚂蚁保“安心赔”理赔服务率先接入。 今后&#xff0c;老百…