windows Webrtc +VS2019 (M124)下载编译以及调通测试demo

server/2024/10/19 23:34:26/

下载depot tools

设置梯子

git config --global http.proxy =127.0.0.1:10000

git config --global https.proxy =127.0.0.1:10000

下载

$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git

设置depot_tools目录为环境变量

下载webrtc

# 设置系统代理

set https_proxy= 127.0.0.1:10000

# 创建源码目录

mkdir  webrtc-checkout

cd webrtc-checkout

# 拉取 webrtc 源码

fetch --nohooks webrtc

# 同步工具

gclient sync –with_branch_heads

git fetch

git branch –a

切换到指定版本

git checkout –b m124 remotes/branch-heads/6367

生成VS工程以及编译

set DEPOT_TOOLS_WIN_TOOLCHAIN=0

set GYP_MSVS_VERSION=2019

set GYP_MSVS_OVERRIDE_PATH="C:\Program Files (x86)\Microsoft Visual Studio\2019\Community"

set GYP_GENERATORS=msvs-ninja,ninja

gn gen out/project --ide=vs2019

# 编译 webrtc

ninja -C out/project -j 8

以后每次编译都需要去设置一下“set DEPOT_TOOLS_WIN_TOOLCHAIN=0

测试peerconnection_client/peerconnection_server

找到两台内网机器

A:开启server程序,以及开启client程序,并设置ip为127.0.0.1

B:开启client程序,并设置A的ip地址

问题:测试结果发现新版的webrtc没有去触发tcp的onconnect信号

解决方法:

1. 在peerconnection_client下 main.cc 内新增类

class CustomSocketServer:public rtc::PhysicalSocketServer {

public:

    bool Wait(webrtc::TimeDelta max_wait_duration, bool process_io) override {

        if (!process_io)

            return true;

        return rtc::PhysicalSocketServer::Wait(webrtc::TimeDelta::Zero(), process_io);

    }

};

2. 注释rtc::PhysicalSocketServer ss 使用CustomSocketServer ss:

int PASCAL wWinMain(HINSTANCE instance,

                    HINSTANCE prev_instance,

                    wchar_t* cmd_line,

                    int cmd_show) {

  rtc::WinsockInitializer winsock_init;

  //rtc::PhysicalSocketServer ss;

  CustomSocketServer ss;

  rtc::AutoSocketServerThread main_thread(&ss);

3. 在注释 //Main loop前新增:

  main_thread.Start();

  // Main loop.

  MSG msg;

  BOOL gm;

再重复之前的测试发现可以了,从此webrtc-demo就跑通了


http://www.ppmy.cn/server/4977.html

相关文章

C++ 使用共享内存的进程通信方式模拟生产者消费者模型

编码环境如下 系统环境&#xff1a;linux 信号量&#xff1a;使用Linux操作系统的SystemV信号量 生产者代码如下 #include <iostream> #include <sys/sem.h> #include <sys/shm.h> #include <string.h>#define SEM_KEY 0x5678 #define SHM_KEY 0xAB…

发挥创意,绘制无限可能:draw.io 使用心得

在如今数字化的时代&#xff0c;图表和流程图已成为了我们生活和工作中不可或缺的一部分。而在选择图表绘制工具时&#xff0c;draw.io 无疑是一个备受推崇的选择。作为一款强大的在线图表工具&#xff0c;draw.io 提供了丰富的功能和易用的界面&#xff0c;使得用户能够轻松地…

Excel高效办公:人力资源管理(AI版)

AI人力资源管理一本通&#xff1a;147个“温馨提示”53个“教您一招”&#xff0c;掌握使用Excel高效完成人力资源管理工作的“心法”&#xff0c;助你早做完、不加班。 一本书掌握人力资源高效管理的“心法”&#xff01; 案例丰富&#xff0c;参考性强&#xff1a;本书不是…

地质灾害监测预警系统:科技守护,构筑智能预警屏障

随着全球气候变化和人为活动的加剧&#xff0c;地质灾害频繁发生&#xff0c;给人们的生命财产安全带来了严重威胁。为了降低地质灾害带来的损失&#xff0c;地质灾害监测预警系统应运而生。本文将为您详细介绍地质灾害监测预警系统的原理、功能以及在实际应用中的效果。一、地…

NLP基础—jieba分词

jieba分词 支持四种分词模式 精确模式 试图将句子最精确地切开,适合文本分析;全模式 把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;搜索引擎模式 在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。paddle模式 利用Paddle…

centos修改启动项加载不同内核

一.背景&#xff1a; 虚拟机中有时需要编译好几个内核版本&#xff0c;make install后系统存在几个内核版本。需要再哪个内核上开发调试就启动特定的内核版本。这就需要修改启动时的内核版本&#xff0c;再物理机或虚拟机启动时可以上下键选择。但有时是docket云环境中或远程时…

高频前端面试题汇总之Vue篇

1. Vue的基本原理 当一个Vue实例创建时&#xff0c;Vue会遍历data中的属性&#xff0c;用 Object.defineProperty&#xff08;vue3.0使用proxy &#xff09;将它们转为 getter/setter&#xff0c;并且在内部追踪相关依赖&#xff0c;在属性被访问和修改时通知变化。 每个组件实…

React + 项目(从基础到实战) -- 第六期

引入ant design ui ui 组件库介绍 组件总览 - Ant Design (antgroup.com) 安装 - Material-UI (mui.com) Tailwind UI - Official Tailwind CSS Components & Templates 引入antd Ant Design of React - Ant Design 常用组件 // 引入antd 美化import { Layout } from a…