metaRTC+ZLMediaKit实现webrtc的推拉流

news2024/11/24 0:05:31

概述

ZLMediaKit是一个基于C++11的高性能运营级流媒体服务框架,是一个支持webrtc SFU的优秀的流媒体服务器系统。

metaRTC新版本支持whip/whep协议,支持whip/whep协议的ZLMediaKit推拉流。

信令通信

ZLMediaKit新版本支持whip和whep协议,支持两种API。

HTTP API

metaRTC封装了HTTP API,只需将参数mediaServer设置为zlm即可

avinfo.sys.mediaServer=Yang_Server_Zlm;
//zlm 默认端口为80
url="webrtc://192.168.3.85:80/live/test"
  1. index/api/webrtc?app=live&stream=test&type=push
  2. index/api/webrtc?app=live&stream=test&type=play

Whip/Whep API

  1. http://192.168.3.85:80/index/api/whip?app=live&stream=test
  2. http://192.168.3.85:80/index/api/whep?app=live&stream=test

音频参数

ZLMediaKit配置文件config.ini音频编码参数默认排序为PCMU,PCMA,opus,mpeg4-generic

如需用opus可调整其顺序如:opus,PCMU,PCMA,mpeg4-generic

推流

    streamconfig.direction=YangSendonly;	

	conn->addAudioTrack(Yang_AED_OPUS);//Yang_AED_PCMU Yang_AED_PCMA
	conn->addVideoTrack(Yang_VED_H264);
	conn->addTransceiver(streamconfig.direction);

拉流

 m_context->avinfo.audio.audioDecoderType=Yang_AED_PCMU;

     if(m_context->avinfo.audio.audioDecoderType==Yang_AED_PCMU
      ||m_context->avinfo.audio.audioDecoderType==Yang_AED_PCMA){
        m_context->avinfo.audio.sample=8000;
        m_context->avinfo.audio.channel=1;
     }
     streamconfig.direction=YangRecvonly;	

     conn->addAudioTrack(&conn->peer,  (YangAudioCodec)m_context->avinfo.audio.audioDecoderType);
	conn->addVideoTrack(&conn->peer,Yang_VED_H264);
	conn->addTransceiver(&conn->peer,conn->peer.streamconfig.direction);

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

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

相关文章

065:cesium设置带有箭头的线材质(material-9)

第065个 点击查看专栏目录 本示例的目的是介绍如何在vue+cesium中设置带有箭头的线材质,请参考源代码,了解PolylineArrowMaterialProperty的应用。 直接复制下面的 vue+cesium源代码,操作2分钟即可运行实现效果. 文章目录 示例效果配置方式示例源代码(共82行)相关API参考…

Microsoft Office 2010安装

哈喽,大家好。今天一起学习的是office2010的安装,有兴趣的小伙伴也可以来一起试试手。 一、测试演示参数 演示操作系统:Windows 7 不建议win10及以上操作系统使用 系统类型:64位 演示版本:SW_DVD5_Office_Profession…

Ceres简介及示例(9)On Derivatives(Numeric derivatives)

使用analytic derivatives的另一个极端是使用numeric derivatives。关键是,对函数f(x)关于x的求导过程可以写成极限形式: Forward Differences前向差分 当然,在计算机中,我们不能执行数值求极限操作,所以我们要做的是&#xff0…

squid的基本代理

一、Squid代理服务器的概述 squid 作为一款服务器代理工具,可以缓存网页对象,减少重复请求,从而达到加快网页访问速度,隐藏客户机真实IP,更为安全。 Squid主要提供缓存加速、应用层过滤控制的功能 1、squid代理的工…

攻击者使用“Geacon”Cobalt Strike工具瞄准macOS

威胁行为者现在正在部署一种名为 Geacon 的 Cobalt Strike 的 Go 语言实现,它于四年前首次出现在 GitHub 上。 他们正在使用红队和攻击模拟工具来针对 macOS 系统,其方式与过去几年在 Windows 平台上使用 Cobalt Strike 进行后开发活动的方式大致相同。…

Rust每日一练(Leetday0007) 删除结点、有效括号、合并链表

目录 19. 删除链表的倒数第 N 个结点 Remove-nth-node-from-end-of-list 🌟🌟 20. 有效的括号 Valid Parentheses 🌟 21. 合并两个有序链表 Mmerge-two-sorted-lists 🌟 🌟 每日一练刷题专栏 🌟 Ru…

web搭建服务器端+创建web后端项目详细步骤

一、搭建服务器端 Web服务器:用于响应来自Web客户端(如浏览器、移动应用程序等)的请求并提供Web页面和其他Web资源的软件程序或计算机系统。它允许用户在Web浏览器中输入网址,通过HTTP协议向服务器发送请求,并收到Web页…

用原生JS实现虚拟列表(IT枫斗者)

用原生JS实现虚拟列表 介绍 最近在开发需求的时候,有用到 Antd 的虚拟列表组件 rc-virtual-list ,粗略地看了一下源码,于是萌生了自己写一个虚拟列表的想法。当一个列表需要渲染大量数据的时候是非常耗时的,而且在列表滚动的过程…

Golang每日一练(leetDay0073) 实现前缀树、最短子数组

目录 208. 实现 Trie (前缀树) Implement-trie-prefix-tree 🌟🌟 209. 长度最小的子数组 Minimum-size-subarray-sum 🌟🌟 🌟 每日一练刷题专栏 🌟 Rust每日一练 专栏 Golang每日一练 专栏 Python每…

多线程的三种创建方式及各自的优缺点分析

第一种方式:继承Thread类,覆写run()方法 1、创建一个MyThread类,继承Thread类; 2、覆写run()方法,在run()方法内编写任务代码; 3、创建MyThread类,需要注意的是,如果想要给线程命名…

传染病学模型 | Matlab实现SI传染病学模型 (SI Epidemic Model)

文章目录 效果一览基本描述模型介绍程序设计参考资料效果一览 基本描述 传染病学模型 | Matlab实现SI传染病学模型 (SI Epidemic Model) 模型介绍 SI传染病模型是一种基于微分方程的流行病学模型,用于模拟传染病在人群中的传播过程。SI模型中,人群被划分为易感者(S)和感染者…

来 Azure 学习 OpenAI 四 - 用 Embedding 赋能 GPT

大家好,我是学生大使 Jambo。在我们前一篇文章中,我们介绍了 OpenAI 模型的调用。今天,我将为大家介绍 Embedding 的使用。 嵌入是什么 嵌入(Embedding )是一种将高维数据映射到低维空间的方法。嵌入可以将高维数据可…

第一章 初识Python

1.1 课前必读 课程大纲 1.2 Python介绍 Python特点: 主流语言;用途广泛,号称万能语言;上手简单; Python用途: 数据挖掘(爬虫)和数据分析自动化脚本编写(软件测试人员使用…

尚硅谷周阳老师 SpringCloud第二季学习笔记

前言:首先感谢尚硅谷周阳老师的讲解,让我对springcloud有了很好的理解,周阳老师的讲课风格真的很喜欢,内容充实也很幽默,随口一说就是一个段子,我也算是周阳老师的忠实粉丝啦。 先说说课程总体内容 以下是…

[学习笔记] [机器学习] 6. [上]决策树算法(熵Entropy、信息增益(率)、基尼值(指数)、CART剪枝、特征工程特征提取、回归决策树)

视频链接数据集下载地址:无需下载 学习目标: 掌握决策树实现过程知道信息熵的公式以及作用知道信息增益、信息增益率和基尼指数的作用知道id3、c4.5、cart算法的区别了解cart剪枝的作用知道特征提取的作用应用DecisionTreeClassifier实现决策树分类 1…

开放原子训练营(第三季)inBuilder低代码开发实验室,低代码到底该长什么样

目录 前言: 一、什么是inBuilder低代码开发实验室 二、技术特征 2.1开放性 2.2开发语言无关性 2.3云原生 2.4模型工程化 2.5全栈模型刻画 2.6运行态定制 2.7仓库介绍 三、快速入门 四、实操案例 4.1定义数据源 4.2 设计页面 4.3发布调试 五、总结 前言&#xf…

Activiti实战——Springboot整合Activiti

目录 一、Activiti数据库表名说明 二、Spring boot整合activiti 1. 创建springboot项目 2. 引入activiti依赖及项目依赖 3. 配置数据源 (1)创建数据源配置文件 (2)配置文件 4. 配置Acitviti引擎 5. 启动项目 三、Activiti…

【MySQL 数据库】1、MySQL 的 DDL、DML、DQL 语句

目录 一、MySQL 应该掌握哪些知识点 ?二、数据库相关概念三、主流关系型数据库管理系统四、关系型数据库五、SQL 语句的分类六、DDL(1) 数据库操作(2) 表操作(3) 字段的数据类型(4) 创建员工表(5) 修改表结构(6) 删除某一张表 七、DML八、DQL(1) 员工表(2) distinct…

经典神经网络(4)Nin-Net及其在Fashion-MNIST数据集上的应用

经典神经网络(4)Nin-Net及其在Fashion-MNIST数据集上的应用 1 Nin-Net的简述 1.1 Nin-Net的概述 LeNet、AlexNet和VGG都有⼀个共同的设计模式:通过⼀系列的卷积层与汇聚层来提取空间结构特征;然后通过全连接层对特征的表征进⾏处理。AlexNet和VGG对Le…

线程池的创建与使用

void execute(Runnable run)方法处理Runnbale任务 Future<> submit(Callable<> task)方法处理Callable任务 void shutdown()结束线程池 List<\Runnable> shutdownNow()立即结束线程池&#xff0c;不管任务是否执行完毕 //创建线程池的一种方式 ExecutorServi…