声网、国内源都不行,只能外网googlesource源!!!

二、创建 Ubuntu 容器(带目录挂载)

拉取Ubuntu镜像

docker pull ubuntu:22.04

创建并启动容器(挂载Windows目录到容器)

docker run -itd --name webrtc-dev -v C:\docker_File\webrtc-shared:/root/webrtc-shared --privileged ubuntu:22.04

三、容器内环境配置

  1. 更新系统并安装依赖
# 安装编译WebRTC所需的全部依赖
apt-get install -y \build-essential \git \python3 \ninja-build \pkg-config \libgtk-3-dev \libx11-dev \libxcomposite-dev \libxcursor-dev \libxdamage-dev \libxext-dev \libxi-dev \libxrandr-dev \libxrender-dev \libxtst-dev \libpulse-dev \libasound2-dev \libcups2-dev \libdbus-1-dev \libfontconfig1-dev \libfreetype6-dev \libgl1-mesa-dev \libgles2-mesa-dev \libglib2.0-dev \libnss3-dev \libpci-dev \libudev-dev \libv4l-dev \libwayland-dev \libxkbcommon-dev \mesa-common-dev \unzip \zip \curl \wget
  1. 安装 depot_tools

进入共享目录

cd /root/webrtc-shared

克隆工具库

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

配置环境变量

echo "export PATH=\$PATH:/root/webrtc-shared/depot_tools" >> ~/.bashrc
source ~/.bashrc

四、下载 WebRTC M114 源码

创建工作目录

mkdir -p /root/webrtc-shared/webrtc-checkout
cd /root/webrtc-shared/webrtc-checkout

初始化源码库

fetch --nohooks webrtc
gclient sync #网中断,可多次执行

切换到M114版本(分支对应5255)

cd src
git checkout -b m114 branch-heads/5255
gclient sync --with_branch_heads --with_tags -D   # 同步对应版本的依赖 缺什么文件下载什么,放置在本地指定目录,这步骤会出现有几个文件无法下载的情况
gclient runhooks  # 安装额外工具

五、编译 WebRTC

1. Debug版本

生成编译配置

gn gen out/Debug --args='is_debug=true rtc_use_h264=true'

开始编译(使用全部CPU核心)

ninja -C out/Debug -j $(nproc)

2. Default 版本

gn gen out/Default --args="is_debug=true enable_testing=true"
# 只编译peerconnection_client(使用全部CPU核心加速)
ninja -C out/Default -j$(nproc)

六、GUI依赖

官网下载VcXsrv

  1. 启动配置X11服务:多窗口模式、Display number: 0、Disable access control
#将现有 Ubuntu 容器保存为镜像(快照)
docker commit webrtc-m114 ubuntu-webrtc-ninja:latest
  1. 重新启动Docker容器配置X11映射
docker run -it --name webrtc-m114-ninja-X11 -v C:\docker_File\webrtc-shared:/root/webrtc-shared -e DISPLAY={本机IP}:0.0 -v C:\docker_File\X11\.X11-unix:/tmp/.X11-unix  --privileged ubuntu-webrtc-ninja 
  1. 在容器内安装 GUI 依赖
apt-get update && apt-get install -y libgtk-3-0 libcanberra-gtk-module x11-utils 
  1. 测试X11是否生效:
#时钟工具apt-get install -y x11-apps #如果未安装xclock

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

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

相关文章

Linux运维新手的修炼手扎之第21天

Nginx服务和Tomcat服务1 负载均衡语法格式:upstream[一个或多个]rootubuntu24-13:~# vim /etc/nginx/conf.d/vhost.confupstream group1 {server 10.0.0.16;}upstream group2 {server 10.0.0.14;}server {listen 80;server_name sswang1.magedu.com;location / {pro…

TrOCR: 基于Transformer的光学字符识别方法,使用预训练模型

温馨提示: 本篇文章已同步至"AI专题精讲" TrOCR: 基于Transformer的光学字符识别方法,使用预训练模型 摘要 文本识别是文档数字化中的一个长期研究问题。现有方法通常基于CNN进行图像理解,基于RNN进行字符级文本生成。此外&#…

西门子工业软件全球高级副总裁兼大中华区董事总经理梁乃明先生一行到访庭田科技

概要2025年6月,西门子工业软件全球高级副总裁兼大中华区董事总经理梁乃明先生一行到访我司。庭田科技总经理聂春文携销售团队对西门子代表团表示热烈欢迎,并就当前业务发展方向及未来行业聚焦领域与代表团展开深入交流。 聂春文总经理及销售团队陪同西门…

在 Jenkins 中使用 SSH 部署密钥

本文档介绍了如何在 Jenkins 中配置 SSH 部署密钥,以便更稳定地拉取 Git 仓库代码,避免常见的 RPC 错误。 1. 背景 在使用 Jenkins 进行持续集成时,常常需要从 Git 仓库拉取代码。如果使用 HTTP/HTTPS 协议,有时会遇到 RPC 错误&…

小红书采集工具:无水印图片一键获取,同步采集笔记与评论

我用python语言开发了一款名为“爬xhs图片软件”的工具,该工具不仅能采集图片,还可获取笔记数据、评论数据等内容。 软件界面长这个样子: 采集到的图片:演示视频:https://live.csdn.net/v/485813介绍文章、想你所想&am…

Java行为型模式---命令模式

命令模式基础概念命令模式(Command Pattern)是一种行为型设计模式,其核心思想是将请求封装为一个对象,从而使你可以用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。命令模式…

Android性能优化之包体积优化

一、包体积组成与瓶颈分析 1. 典型 APK 结构占比 #mermaid-svg-KEUQMlEifvHlk1CV {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-KEUQMlEifvHlk1CV .error-icon{fill:#552222;}#mermaid-svg-KEUQMlEifvHlk1CV .erro…

开源Web播放器推荐与选型指南

Video.js3:是市面上最流行的免费、开源 HTML5 视频播放器之一。可用于直播和点播,支持 HLS、DASH、WebM 和 MP4 等多种格式。它可高度自定义,开源社区中有很多皮肤可供选用,还可通过插件配置 Multi - DRM、广告插入、字幕等功能&a…

sql注入以及Python二分查找

sql注入 /level1.php?name<script>alert(1)</script> "><script>alert(1)</script> οnclickalert(1) " οnclick"alert(1) "><a href"javascript:alert(1)"> "><a HrEf"javascript:alert…

Coze智能体开发实战-旅游助手

智能体第1步&#xff1a;创建智能体第2步&#xff1a;设置开场白您好&#xff0c;我是广州长隆野生动物园旅游助手&#xff0c;有什么能够帮您&#xff1f;1.景点讲解 2.行程规划 3.天气查询 4.酒店查询第3步&#xff1a;创建工作流第4步&#xff1a;添加“意图识别”行程规划第…

51c视觉~合集13

自己的原文哦~ https://blog.51cto.com/whaosoft/11685452 #GKGNet 多标签分类遇上图卷积网络ViG 本文提出了第一个完全图卷积模型&#xff0c;基于分组K近邻的图卷积网络GKGNet&#xff0c;该模型在灵活且统一的图结构中&#xff0c;同时建模语义标签嵌入与图像块之…

子数组的最大累加和问题(8)0718

题目给定一个数组arr&#xff0c;返回子数组的最大累加和。例如&#xff0c;arr[1,-2,3,5,-2,6,-1],所有的子数组中&#xff0c;[3,5,-2,6]可以累加出最大的和12&#xff0c;所以返回12.解答如果arr中没有正数&#xff0c;产生的最大累加和一定是数组中的最大值。如果arr中有正…

LINUX例行性工作(计划任务)实验操作 ---at和crontab以及系统级别的计划任务

1.atd和crond两个任务管理程序的区别at命令是在指定的时间下只能执行一次任务&#xff1b;crontab命令是可以循环重复&#xff08;周期性&#xff09;的执行定时任务&#xff0c;与windows中的计划任务有些类似.2.指定在2024/08/15 09:00将时间写入testmail.txt文件中[rootmast…

二进制写入与文本写入的本质区别:系统视角下的文件操作

目录 一、核心概念 二、二进制写入 1、特点 2、使用场景 3、二进制写入整数 12345 的详细解析示例 1. 变量声明与初始化 2. 文件打开 3. 二进制写入 4. 文件关闭 二进制表示分析 文件内容 重要注意事项 三、文本写入 1、特点 2、使用场景 3、文本模式写入整数的…

在ComfyUI中CLIP Text Encode (Prompt)和CLIPTextEncodeFlux的区别

CLIP Text Encode (Prompt)CLIPTextEncodeFlux在 ComfyUI 中对 token 支持长度是否相同的详细技术对比&#xff1a;1、 CLIP Text Encode (Prompt)通常来自&#xff1a;ComfyUI 官方自带 CLIPTextEncode 节点。特点&#xff1a; ✅ 使用 OpenAI CLIP 模型&#xff08;ViT-L/14 …

Qt窗口(1)-菜单栏

Qt窗口 概念简述 与QWidget的区别&#xff1a; QWidget更多是作为一个窗口的一部分 基本结构构成&#xff1a;以Xshell举例子比较菜单栏和工具栏&#xff1a; 菜单栏&#xff1a;工具栏&#xff1a;工具栏本质是把菜单栏中一些比较常用的选项&#xff0c;直接放到工具栏中&…

弱网测试

使用软件MAC端&#xff1a;Network Link ConditioneriOS端&#xff1a;设置->开发者->网络链接调节器相关参数带宽单位为Kbps&#xff0c;丢包率单位是百分比&#xff0c;延迟单位是msDownlink Bandwidth &#xff08;输入宽带&#xff09;&#xff1a;设备从服务器接收数…

Nuxt 4.0 深度解析:从架构革新到实战迁移 [特殊字符]

引言&#xff1a;Vue生态的"瑞士军刀"又升级了&#xff01; 如果把前端框架比作超级英雄&#xff0c;Nuxt.js 绝对是Vue阵营里最全能的那位——就像钢铁侠的战甲不断迭代升级&#xff0c;Nuxt也从最初的SSR解决方案&#xff0c;进化成了如今的全栈开发框架。2025年&a…

【Linux内核模块】模块参数详解

玩过智能家居的朋友都知道&#xff0c;一盏智能灯通常有亮度调节、色温切换的功能 —— 这些可调节的选项让设备更灵活。其实 Linux 内核模块也有类似的调节旋钮&#xff0c;今天要聊的模块参数。它能让你在加载模块时动态配置参数&#xff0c;不用改代码就能实现功能切换&…

移动平板电脑安全管控方案

一、引言在数字化办公飞速发展的当下&#xff0c;移动平板凭借其便携性、灵活性及强大的功能&#xff0c;已成为企业办公不可或缺的工具。无论是现场作业数据采集、移动办公审批&#xff0c;还是远程会议参与&#xff0c;移动平板都极大地提升了工作效率。然而&#xff0c;如同…