调用Mertc的接口

概述
metaRTC5.0版本 API进行了重构,本篇文章将介绍webrtc传输调用流程和例子。

metaRTC5.0版本提供了C++和纯C两种接口。

ICE设置
iceCandidateType参数可以在配置文件yang_config.ini中配置,也可以在程序中赋值。
iceCandidateType=0 //0:host 1:stun 2:turn

[rtc]
enableDatachannel=0
iceServerIP=10.42.0.1
iceUsingLocalIp=0
iceLocalIP=192.168.1.102
iceCandidateType=0 //0:hots 1:stun 2:turn
iceStunPort=3478
iceServerIP=10.42.0.171
iceUserName=metartc
icePassword=metartc

int32_t err = Yang_Ok;
char* localSdp=NULL;
char* remoteSdp=NULL;
yangbool enableWhipWhep = yangtrue; 
YangRtcDirection direction = YangSendonly;//YangSendrecv,YangSendonly,YangRecvonly
YangPeerConnection *peer = (YangPeerConnection*)yang_calloc(sizeof(YangPeerConnection),1);
yang_create_peerConnection(peer);
peer->addAudioTrack(&peer->peer,Yang_AED_OPUS);
peer->addVideoTrack(&peer->peer,Yang_VED_H264);
peer->addTransceiver(&peer->peer,direction);
//sfu server
if(enableWhipWhep)err = peer->connectWhipWhepServer(&peer->peer,url);
elseerr = peer->connectSfuServer(&peer->peer);
//p2p
peer->createDataChannel(&peer->peer);//add datachannel
if((err=peer->createOffer(&peer->peer, &localSdp))!=Yang_Ok){yang_error("createOffer fail!");goto cleanup;
}
if((err=peer->setLocalDescription(&peer->peer, localSdp))!=Yang_Ok){yang_error("setLocalDescription fail!");goto cleanup;
}
......
//get remote peer sdp
if((err=peer->setRemoteDescription(&peer->peer,remoteSdp))!=Yang_Ok){yang_error("setRemoteDescription fail!");goto cleanup;
}

//deviser
//根据官网的sample写的demo如下,但它是建立在我们本身就有音视频的编码和采集模块,只作传输时使用。


YangContext* m_context=new YangContext();m_context->init();int32_t err = Yang_Ok;yangbool enableWhipWhep = yangtrue; 
YangRtcDirection direction = YangSendrecv;//YangSendrecv,YangSendonly,YangRecvonly
YangPeerConnection * peer = NULL;
peer = (YangPeerConnection*)yang_calloc(sizeof(YangPeerConnection),1);
//将参数传入  memcpy(&peer->peer.streamconfig.rtcCallback,&m_context->rtcCallback,sizeof(YangRtcCallback));  peer->peer.avinfo=&m_context->avinfo;  strcpy(peer->peer.avinfo->rtc.iceLocalIP, "192.168.100.240");strcpy(peer->peer.avinfo->rtc.rtcServerIP, "192.168.100.240");yang_create_peerConnection(peer);peer->init(&peer->peer);peer->addAudioTrack(&peer->peer, Yang_AED_OPUS);peer->addVideoTrack(&peer->peer, Yang_VED_H264);peer->addTransceiver(&peer->peer, YangRtcDirection::YangSendonly);// err = peer->connectSfuServer(&peer->peer);char *localSdp = (char *)calloc(12 * 1000, 1);peer->createOffer(&peer->peer, &localSdp);cout << "localSdp : " << localSdp << endl;peer->connectWhipWhepServer(&peer->peer,"http://192.168.100.240:1985/rtc/v1/whip/?app=live&stream=livestream");while (1){sleep(9);}return 0;

//以上是伪代码
//deviser

libmetartccore2工程为C版webrtc实现
libmetartc2为C++版采集编解码等实现
纯C接口(pure C API)YangPeerConnection
头文件:include/yangrtc/YangPeerConnection.h
C++接口(C++ API)YangPeerConnection2
头文件:include/yangrtc/YangPeerConnection2.h
MetaRTC5.0 API
https://github.com/metartc/metaRTC/wiki/metaRTC5.0-API
Sample
https://github.com/metartc/metaRTC/wiki/metaRTC5.0-API-Sample
MetaRTC7 API
https://github.com/metartc/metaRTC/wiki/metaRTC7–API
7的Sample在首页
https://github.com/metartc/metaRTC
MetaRTC 连接信息回调函数
https://blog.csdn.net/m0_56595685/article/details/130165785
瑞芯微IPC
https://blog.csdn.net/m0_56595685/article/details/130910602?spm=1001.2014.3001.5502
讲解meta rtc push stream开源项目之一
https://zhuanlan.zhihu.com/p/512222819
gb2312
瑞芯微3588 V:接口采集 A:alsa
博通 V:v4l2 A:alsa
采集是v4l2,编码调用接口

支持:GB2811

1.浏览metartc官网WIKI,确认是否支持32位
2.配置metartc7/5环境,编译metapush7和metaplay7,并测试推拉流
3.编译demo调用metartc7 api,排查错误
4.看metartcplay7的代码结构,数据传递等

下方是笔者微信,备注webrtc爱好者

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

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

相关文章

2024最新大厂C++面试真题合集,大厂面试百日冲刺 bay9

腾讯实习 指针常量和常量指针 常量指针&#xff08;const Type* ptr&#xff09;&#xff1a;指针指向的内容不能被改变&#xff0c;但指针本身可以改变指向。 指针常量&#xff08;Type* const ptr&#xff09;&#xff1a;指针自身的值即内存地址不能改变&#xff0c;但指向…

draw.io 网页版二次开发(1):源码下载和环境搭建

目录 一 说明 二 源码地址以及下载 三 开发环境搭建 1. 前端工程地址 2. 配置开发环境 &#xff08;1&#xff09;安装 node.js &#xff08;2&#xff09;安装 serve 服务器 3. 运行 四 最后 一 说明 应公司项目要求&#xff0c;需要对draw.io进行二次开发&…

电商后台的秘密:通过API接口提取商品信息

在电子商务的运营中&#xff0c;后台管理是核心环节&#xff0c;而API接口则是高效管理商品信息的关键。API允许商家直接与电商平台的数据库进行交互&#xff0c;实现数据的自动化提取和更新。 一、电商后台管理的核心作用 电商后台管理系统是商家进行商品展示、订单处理、库…

存储过程、触发器和函数

存储过程、触发器和函数在数据库中具有重要的作用&#xff0c;它们可以带来以下几个方面的重要性&#xff1a; 数据一致性和完整性&#xff1a; 触发器和存储过程可以用于实现数据一致性和完整性约束。通过在数据库操作&#xff08;如插入、更新、删除&#xff09;发生时自动执…

盛最多水的容器(双指针)

解题思路&#xff1a; 1&#xff0c;暴力解法&#xff08;超时&#xff09; 我们可以使用两层for循环进行遍历。找到那个最大的面积即可&#xff0c;这里我就不写代码了&#xff0c;因为写了也是超时。 2&#xff0c;双指针法 先定义两个指针一个在最左端&#xff0c;一个在…

C++ 派生类的引入与特性

一 继承与派生 从上面的例子可以看出&#xff1a; 继承&#xff1a;一旦指定了某种事物父代的本质特征&#xff0c;那么它的子代将会自动具有哪些性质。这就是一种朴素的可重用的概念。 派生&#xff1a;而且子代可以拥有父代没有的特性&#xff0c;这是可扩充的概念。 1 C 的…

Today At Apple 2024.04.15 Phone15 入门

官网&#xff1a; https://www.apple.com/today/Apple 亚洲第一大商店&#xff1a;Apple 静安零售店现已在上海开幕如下预约课程&#xff1a;下载 Apple Store&#xff08;不是app store&#xff09;&#xff0c;点击课程预约笔记&#xff1a;Today At Apple Notes果粉加群 &am…

Mybatis进阶详细用法

目录 条件构造器 案例 自定义SQL 案例 Service接口 案例 综合案例 条件构造器 案例 Testvoid testQueryMapper() {// 创建 QueryWrapper 实例QueryWrapper<User> queryWrapper new QueryWrapper<>();queryWrapper.select("id," "username,&…

uniapp经验

uniapp-ts模版在前端/vue文件夹下 npx dcloudio/uvmlatest 安装依赖 之后tsconfig.json会报错&#xff0c;可以在tsconfig.json文件中"compilerOptions"配置项内添加"ignoreDeprecations": "5.0"&#xff0c;解决。 ### 编译和运行 uni-app 项目…

Postman基础功能-变量设置与使用

如果你因失去太阳而流泪&#xff0c;那你也将失去群星了。大家好&#xff0c;在 API 测试的广袤世界中&#xff0c;Postman 犹如一座闪耀的灯塔&#xff0c;为我们指引着前行的方向。而其中的全局变量、集合变量和环境变量&#xff0c;更是如同隐藏的宝藏&#xff0c;蕴含着巨大…

以太网网络变压器型号

Hqst华强盛导读&#xff1a;以太网网络变压器的型号通常由一系列数字和字母组成&#xff0c;其中包括以下信息&#xff1a; 额定电压&#xff1a;表示变压器的额定输入和输出电压&#xff0c;通常以伏特&#xff08;V&#xff09;为单位。 额定电流&#xff1a;表示变压器的额定…

0513_IO7

练习1&#xff1a; 使用消息队列实现的2个终端之间的互相聊天 并使用信号控制消息队列的读取方式&#xff1a; 当键盘按ctrlc的时候&#xff0c;切换消息读取方式&#xff0c;一般情况为读取指定编号的消息&#xff0c;按ctrlc之后&#xff0c;指定的编号不读取&#xff0c;读取…

孩子多大可以接触python?学习python的好处

孩子接触Python的年龄并没有明确的界限&#xff0c;一般来说&#xff0c;6岁以上的孩子可以开始学习Python编程。虽然Python是一门高级编程语言&#xff0c;但它的语法简单易懂&#xff0c;适合初学者入门。通过学习Python编程&#xff0c;孩子可以培养逻辑思维、创造力和解决问…

电商秒杀系统设计

业务流程 系统架构 系统挑战 高并发:秒杀活动会在短时间内吸引大量用户,系统需要能够处理高峰时期的大量并发请求 库存同步:在秒杀中,面临的一个严重系统挑战是如何确保在数以万计的用户同时抢购有限的商品时,如何正确、实时地扣减库存,以防止超卖现象。 防止恶意抢购和…

前端 JS 经典:JS 基础类型和 typeof

前言&#xff1a;JS 基础类型就 8 种&#xff0c;这是官方确定的&#xff0c;毋庸置疑。其中原始类型 7 种&#xff0c;对象类型 1 种。而 typeof 关键字是用来判断数据是属于什么类型的。 1. 原始类型 Number、Boolean、String、BigInt、symbol、Undefined、null typeof 18…

猫头虎分享已解决Error || ERROR: Failed building wheel for XXX

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

python设计模式---观察者模式

观察者模式是一种行为设计模式&#xff0c;用于定义对象之间的一对多依赖关系&#xff0c;当一个对象的状态发生变化时&#xff0c;所有依赖它的对象都会得到通知并自动更新。 from abc import ABC, abstractmethod from typing import Listclass Observable:def __init__(sel…

系统定时器(SysTick)

介绍SysTick SysTick结构框图 时钟选择 计数器部分 中断部分 工作流程 相关寄存器 配置流程 相关库函数

centos无法tab补全至文件

很奇怪的需求&#xff1a;redhat 7.9版本用cd 只能到目录&#xff0c;无法到文件 我个人认为不是个问题&#xff0c;但是甲方需求&#xff0c;你懂的 首先&#xff0c;我们要搞清楚tab补全功能的包bash-completion是否安装&#xff0c;这里肯定是安装了&#xff0c;不过还是看…

使用vscode时快速生成console.log()

前言&#xff1a;在使用vscode开发进行调试时&#xff0c;我们经常要用到console.log()来调试代码&#xff0c;有什么好用的办法来快速生成&#xff0c;答案肯定是有的&#xff0c;下面跟随我来看一下是不是真的很好用。 安装插件JavaScript (ES6) code snippets 使用时直接按照…