Webrtc从理论到实践六: Webrtc官方demo运行

2023-11-14

系列文章目录

Webrtc从理论到实践一:初识
Webrtc从理论到实践二: 架构
Webrtc从理论到实践三: 角色
Webrtc从理论到实践四: 通信
Webrtc从理论到实践五: 编译webrtc源码



操作步骤

  1. 在工程目录下找到examples文件夹,然后找到peerconnection_client 和 peerconnection_server工程,可以选择生成debug或者release版本的exe文件,成功之后会在out/debug(release)目录下生成两个exe文件
    在这里插入图片描述
    在这里插入图片描述

  2. 先双击运行peerconnection_server.exe 文件,会监听8888端口
    在这里插入图片描述

  3. 然后双击运行peerconnection_client.exe文件
    在这里插入图片描述

  4. 这里发现在我的电脑上使用localhost是连不上peerconnection_server.exe的,于是我ping了一下localhost,发现电脑主机会解析成ipv6的地址[::1]
    在这里插入图片描述
    然后便参考了这篇文章 WIN10 Localhost 无法打开 怎么解决,然后按照文章中的描述我执行到第三步确实可以解决localhost 解析不成127.0.0.1的问题。
    在这里插入图片描述
    你以为问题到这里就解决了吗,No,No,No,当我在peerconnection_client 里面输入localhost:8888点击连接的时候,发现server端没有任何反应,于是我便开始怀疑是webrtc的源码对于localhost的解析有问题,因为如果把localhost换成127.0.0.1,server端是有反应的(**虽然也有问题,不会按照正常的流程往下走,一直停留在new Connection… )
    我又去查看了一下peerconection_client的源码,可以看到它解析域名的一个过程:
    在这里插入图片描述
    在连接服务器的的过程中,它会去检测从UI上获取的server_address_是不是一个IP地址,如果不是就 会创建一个类AsyncResolver,从这个类名我们也可以看出这是一个异步解析域名的类,然后下面一句还使用信号与槽的机制,当解析完成后就会触发OnResolveResult()函数。
    在这里插入图片描述
        但是后面把断点打到OnResolveResult()里面发现根本走不进来,再加上之前 使用127.0.0.1也无法正确执行下去,所以这里大概率可以得出结论是webrtc的版本问题,后面也在webrtc的论坛里验证了我的想法
    webrtc win10 vs2019 complie peerconnection_client.exe peerlist can`t display

  5. 切换到稳定版本
    在这里插入图片描述
    可以参考这里的分支对照表切换到你想要的版本,我选择的是m89版本,切换好之后需要执行gclient sync同步一下,但是可能会遇到以下问题

error: 7> 7> ____ src\tools at 03a8864bc66bd6bbc0014ab62551b4465251729e 
7> you have unstaged changes. 
7> please commit, stash, or reset.

    解决方法:执行gclient sync -f 即可

  1. 重新编译,运行
    切换到稳定版本后,需要重新生成client和server两个文件,然后双击运行即可,我在本地起了两个客户端做演示,连接之后会出现进入房间的主机列表,双击对方主机即可通信。
    在这里插入图片描述

在这里插入图片描述


总结

切换稳定版本,重新编译运行

下一篇:Webrtc从理论到实践七: 官方demo源码走读(一)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Webrtc从理论到实践六: Webrtc官方demo运行 的相关文章

  • X11 模式对话框

    如何使用 Xlib 在 X11 中创建模式对话框 模态对话框是一个位于应用程序其他窗口之上的窗口 就像瞬态窗口一样 并且拒绝将焦点给予应用程序的其他窗口 在 Windows 中 当试图从模态窗口夺取焦点时 模态也会通过闪 烁模态窗口的标题栏
  • .NET 单点登录

    我一直在尝试使用 C 为 NET Web 应用程序实现 WEB SSO 服务提供程序插件 我将使用 shibboleth 身份提供商 我已经使用 OpenSAML 库为 java 应用程序实现了相同的功能 我想知道在 NET 应用程序中使用
  • fopen_s 怎么会比 fopen 更安全呢?

    我正在处理遗留代码Windows平台 当我编译代码时VS2013 它给出以下警告 错误 C4996 fopen 该函数或变量可能不安全 考虑使用fopen s反而 要禁用弃用 请使用 CRT SECURE NO WARNINGS 详情请参见
  • 如何在特定时间以毫秒精度触发 C# 函数?

    我有两台计算机 它们的时间通过 NTP 同步 确保时间仅相差几毫秒 其中一台计算机将通过 TCP 向另一台计算机发送一条消息 以在两台计算机上的未来指定时间启动某个 c 函数 我的问题是 如何在特定时间以毫秒精度 或更好 触发 C 中的函数
  • 生成多个随机数

    我想生成 25 个唯一的随机数并将它们列在控制台中 数字的长度应至少为 10 个字符 有什么简单的方法可以做到这一点吗 尝试将数字构建为字符串 并使用 HashSet 确保它们是唯一的 Random random new Random Ha
  • NDK 应用 onDestroy 清理 - 如何 DetachCurrentThread

    因此 如果我们连接 我们必须在完成后分离线程 对吗 JNIEnv get jni env JNIEnv res JAVA VM gt GetEnv void res JNI VERSION 1 6 Using cached JavaVM J
  • 最新 .Net MongoDb.Driver 的连接问题

    我创建了一个 MongoLab 沙箱数据库 我与 MongoChef 连接 效果很好 我通过 Nuget 安装了 MongoDB Driver 2 2 2 我编写了一些简单的 C 演示代码 但就是无法使其工作 连接字符串是直接从 Mongo
  • Dapper 在执行时挂起

    我有一个 IDb连接 sql UPDATE 表名 SET json json lastupdate SYSDATE WHERE id id var param new DynamicParameters param Add json jso
  • C# 无法捕获 SerializationException

    我的程序在加载序列化文件的部分遇到问题 如果文件无法反序列化 我希望很好地失败 但由于某种原因 我的程序将中断而不是进入 catch 子句 这是我的代码 using FileStream fs new FileStream openFile
  • C# 枚举到字符串自动转换?

    是否可以让编译器自动将我的 Enum 值转换为字符串 这样我就可以避免每次都显式调用 ToString 方法 这是我想做的一个例子 enum Rank A B C Rank myRank Rank A string myString Ran
  • 如何将STL容器数据转储到gdb中?

    我无法在 gdb 中转储 STL 无序映射容器值 变量类型是 std unordered map var 我的 gdb 版本 7 7 1 GDB配置 configure host x86 64 linux gnu target x86 64
  • 应用程序处于中断模式。您的应用程序已进入中断状态,

    我发现自己遇到了同样的问题here https stackoverflow com questions 36204009 disable break mode page in vs2015 我在 dll 中使用 Windows 窗体 这是针
  • 我可以将 UseCSharpNullComparisonBehavior 用于单个查询吗?

    我有一个查询 该查询曾经是存储过程 现已转换为 EF 查询 现在已经超时了 使用 SQL Profiler 我可以看到生成的 SQL 的唯一区别是 EF 转变的新行为entity Property value into entity Pro
  • 如何同步nosql db(ravendb)中的更改

    我已经开始在 RavenDB 的示例上学习 NoSQL 我从一个最简单的模型开始 假设我们有由用户创建的主题 public class Topic public string Id get protected set public stri
  • 如何从 Access 数据库中读取“是/否”值作为布尔值?

    帮我找回YES NO来自 MS Access 的布尔格式数据类型 我尝试解析它 但它总是返回 false 更新 实际上不是问题抱歉 它确实接受 YES NO 作为布尔值 OleDbconnection dbConnect new OleDb
  • Xcode 7 调试器不会中断内联标头函数

    过去五年我一直在各种 C 项目中使用 Xcode 没有出现这个问题 今天 我打开了一个较旧的项目 大约 2 年前 并尝试通过在该函数中放置一个活动断点来调试头文件中的内联函数 由于某种原因 调试器不会中断此代码 但是 如果我在调用该函数的
  • Boost.asio和异步链,unique_ptr?

    我对异步编程不太熟悉 我有一个问题 我的问题如下 给出 boost asio 中 C 11 的 echo server 示例 http www boost org doc libs 1 60 0 doc html boost asio ex
  • 从脚本启用/禁用 GameObject 组件 [Unity3D]

    我需要获取一个脚本中设置的布尔值 放入名为 bouclier 的变量 以启用或禁用游戏对象 该变量位于游戏对象 Player 中 此处右下角 我需要启用或禁用这个游戏对象 Bouclier01 为此 我将脚本附加到游戏对象 Bouclier
  • 在windows + opengl中选择图形设备

    我知道如何使用 openGL 打开窗口 使用 Win32 或其他工具包 但是当系统有2块显卡时 如何选择要渲染的图形设备 我的编程语言是 C 我专注于 Windows 但任何示例都将受到欢迎 编辑 也许更好地解释我的问题是个好主意 以便添加
  • 实体框架代码首次日期字段创建

    我正在使用实体框架代码优先方法来创建我的数据库表 下面的代码 创建一个DATETIME数据库中的列 但我想创建一个DATE柱子 DataType DataType Date DisplayFormatAttribute ApplyForma

随机推荐

  • Unity查找物体的方法总结

    文章目录 前言 一 不能找到失活对象的方法 1 Object类中的静态方法 2 GameObject类中的静态方法 二 能找到失活对象的方法 1 Transform Find 2 如何通过Transform找到自己以下的任意对象 总结 前言
  • JavaScript 判断空对象空数组

    JavaScript 判断空对象空数组 一 为什么判断空数组空对象会比较麻烦 二 判断空数组的方法 三 判定空对象的方法 四 一个判断参数为空的函数封装 来源 https www jianshu com p cadcbab793d7 我们判
  • ADAS的八大系统

    简述 ADAS Advanced Driving Assistant System 即高级驾驶辅助系统 ADAS 是利用安装于车上的各式各样的传感器 在第一时间收集车内外的环境数据 进行静 动态物体的辨识 侦测与追踪等技术上的处理 从而能够
  • Windows编程基础--第2节 win32程序资源管理

    操作系统 win10 64位 IDE vc 6 0 windows程序都有自己的资源 例如按钮 图标 对话框等等 这节介绍如何使用win32程序资源管理 1 继续使用上节的win32程序demo 执行File gt new添加资源 选择Fi
  • python爬虫返回403错误?加了请求头+代理也解决不了 >>看这

    一 问题分析 疑惑 使用python的requests库发起get或post请求返回403代码错误 使用postman发起请求发现状态码 lt 200 gt 竟然成功了 这是什么原因 首先排除ip问题 ip有问题的话postman也访问不了
  • 阿里技术副总裁贾扬清、微软 CTO 韦青重磅出席 AI 开发者大会!

    整理 夕颜 硬核 AI 技术大会 一年参加一次就够了 9 月 6日 7 日 2019 AI 开发者大会 AI ProCon 将在北京富力万丽酒店举行 人工智能领域技术领袖将再次齐聚一堂 共同探讨过去一年最新的 AI 技术趋势与变化 带你跟上
  • 【PytorchLearning】基于 UNet 的肺部影像语义分割案例保姆教程

    基于 UNet 的肺部影像分割 一般而言 计算机视觉领域包含三大主流任务 分类 检测 分割 其中 分类任务对模型的要求较为简单 在之前的Pytorch入门教程中已进行了较为详尽的介绍 有兴趣的小伙伴可以查看之前的博客 而检测和分割任务是比较
  • 一名全栈工程师的技术实践之路

    一 前言 1 1 什么是全栈 全栈开发是指开发人员掌握了前端 后端以及数据库等多个领域的知识和技能 能够独立完成整个项目的开发工作 在需求交付过程中 可以负责从项目的前期分析 设计到后期开发 测试 发布等整个过程 能够快速定位和解决问题 提
  • Graph 在项目中的实践

    前言 graph 图这种结构在项目中其实经常能够遇见 java 其实提供 jgrapht core 包来进行核心功能的实现 这里就使用jgrapht core 来对常见应用场景进行扩展 实现 1 引入依赖xml
  • Python爬虫 网页请求的异常处理

    网页请求的异常处理主要有两大类 urllib error URLError 用于捕获由urllib request产生的异常 使用reason属性返回错误原因 urllib error HTTPError 用于处理HTTP与HTTPS请求的
  • sql语句百万级千万级数据量分页

    在开发系统时难免会遇见分页的列表查询 针对小数据量我们可以查询的时间可以忽略不记 但针对百万级别千万级别的数据量时改怎么优化查询语句呢 该如果使用分页呢 下面总结几点 适量增加索引 在经常查询的字段上 尽量避免like in is null
  • Pycharm配置解释器(interpreter)

    关于pycharm编译器的解释器 网友朋友的分享 Pycharm配置 1 解释器 interpreter 详细了解PyCharm支持的4种Python Interpreter和配置方法 对大多数人而言就只需要 分清虚拟解释器和系统解释器 使
  • 二叉树采用二叉链表存储,求树的结点个数

    typedef struct BiTNode ElemType data struct BiTNode lchild rchild BiTNode BiTree void PrePrder BiTree T int num if T NUL
  • [leetcode 周赛 148] 1146 快照数组

    目录 1146 Snapshot Array 快照数组 描述 思路 代码实现 1146 Snapshot Array 快照数组 描述 实现支持下列接口的 快照数组 SnapshotArray SnapshotArray int length
  • nginx关于add_header的坑

    一 add header指令不会去重 nginx做反向代理时 如果后端返回的response中已经有该header头 则通过add header后会返回给客户端两个同样的header头 场景1 nginxA作为反向代理 nginxB作为we
  • 如何利用运营商大数据准确获取客户?

    在今天运营商的大数据准确捕捉客户的时代 我们似乎看到客户在我们面前若隐若现 但当我们伸手去抓他们时 我们发现他们很少 原因是什么 我们的客户之所以成为美丽的海市蜃楼 主要原因 还在于对客户的把握不够精准 什么是大数据准确性 大数据精准获客是
  • 【论文阅读】基于深度学习的时序异常检测——TimesNet

    系列文章链接 参考数据集讲解 数据基础 多维时序数据集简介 论文一 2022 Anomaly Transformer 异常分数预测 论文二 2022 TransAD 异常分数预测 论文三 2023 TimesNet 基于卷积的多任务模型 论
  • 线性相关与线性无关的定义与性质

    定义1 线性相关 K n K n K nK n Kn Kn 中向量组
  • Caffe训练过程:test_iter test_interval等概念

    转自 http blog csdn net iamzhangzhuping article details 49993899 先上一张图 大家很熟悉的一张图 首先说明一个概念 在caffe中的一次迭代iteration指的是一个batch
  • Webrtc从理论到实践六: Webrtc官方demo运行

    系列文章目录 Webrtc从理论到实践一 初识 Webrtc从理论到实践二 架构 Webrtc从理论到实践三 角色 Webrtc从理论到实践四 通信 Webrtc从理论到实践五 编译webrtc源码 文章目录 系列文章目录 操作步骤 总结