webRTC合并本地源码修改和官方更新

一、总体思路:基于 Git 分支管理改动

  1. origin/main 是官方 WebRTC 主干(来自 webrtc.googlesource.com)。

  2. my/webrtc 是你自己开发和修改的分支。

  3. 每次 Google 更新 WebRTC,你从 origin/main 拉新代码,再把 my/webrtc 分支 rebase 到新版本上,解决冲突,继续维护。


🛠️ 二、初始化步骤

1. 安装 depot_tools 并拉取源码

git clone https://webrtc.googlesource.com/src webrtc

cd webrtc

gclient sync

这一步生成了 src/ 目录,WebRTC 官方源码全在这里。


2. 初始化 Git 分支结构

src/ 目录中执行:

cd src

git remote rename origin upstream #重命名远程仓库

验证:

git remote -v
`

应该输出:`

`

upstream https://webrtc.googlesource.com/src (fetch)`

`

upstream https://webrtc.googlesource.com/src (push)`

git checkout -b my/webrtc #创建自己的分支

upstream 指代 WebRTC 官方主仓库
my/webrtc 是你自己的开发分支,所有改动都在这个分支做

验证:

git branch

输出中带星号的是当前所在分支,例如:

main

* my/webrtc


✍️ 三、修改源码 & 提交

比如你要修改 modules/audio_processing 中某个类:

vim modules/audio_processing/some_class.cc
`

查看修改(还没 add)`

git status

完成后使用正常的 Git 操作提交:

git add modules/audio_processing/some_class.cc
`

再次查看状态(显示为 staged)`

git status

git commit -m "Fix AEC for low-latency stream"

你可以持续提交多个功能点,每个提交只做一件事。


🔁 四、同步 WebRTC 官方更新的完整流程

每隔一段时间 Google 会发布新版本,你需要更新:

1. 拉取 upstream 的新代码

git checkout main

git fetch upstream

git merge upstream/main

或者:

git pull upstream main

更新成功后,main 就是最新的 WebRTC。


2. 回到你自己的分支,执行 rebase

git checkout my/webrtc

git rebase main

这步将你所有的改动重新套用在最新版的 WebRTC 上。

🔧 如果出现冲突:

Git 会提示冲突位置,你需要:

# 修改冲突的文件
git add <冲突文件>
git rebase --continue

多次冲突就多次解决,每次 --continue


✅ 五、变更管理技巧

📍查看变更历史

git log --oneline --graph --all

#只查看自己的修改提交

git log --oneline my/webrtc ^main

📍查看分支差异

git diff main..my/webrtc

可以明确看到你对官方版本做了哪些修改。


🎁 六、备份你的分支(可选)

你可以将 my/webrtc 推送到你自己的 Git 仓库备份:

git remote add origin_my git@github.com:yourname/webrtc-custom.git
git push -u origin_my my/webrtc


🧩 七、优点总结

项目 本地分支法优势
🎯 改动隔离 改动集中在 my/webrtc,不污染官方主干
🆕 易于升级 官方版本更新后可直接 rebase
⚙️ 适合 patch 可生成 .patch 分享或自动合并
🤝 团队协作 多人合作时更容易管理每人改动

🧪 举个例子:

你要替换官方的 AudioDevice 模块(模拟设备):

  1. 修改文件:modules/audio_device/fake_audio_device.cc

  2. 新建分支并提交修改:

git checkout -b my/webrtc_audio_patch
git commit -am "Replace fake audio device with custom simulator"

  1. 后续 WebRTC 更新时:

git checkout main
git pull upstream main
git checkout my/webrtc_audio_patch
git rebase main

如有冲突就解决冲突,继续。

VS Code 完全可以帮你图形化完成 git addgit commit 的工作,而且比命令行方便很多。


✅ 一次性设置好后,你只需在 VS Code 中点几下就能完成修改、提交。

🔧 前提条件:

确保你已经在 VS Code 中打开了 WebRTC 的源码目录(例如 ~/webRTC/webRTC_Android/src)。


🚀 使用 VS Code 提交修改的操作流程:

  1. 修改文件(正常在编辑器中编辑代码即可)

  2. 打开 Source Control 面板 (快捷键 Ctrl+Shift+G 或点击左侧第 3 个图标)

  3. 你会看到修改文件列表(和 git status 一样)

  4. 鼠标悬停每个文件,点 ➕(stage,也就是 git add

    或者点右上角的 "+" 一键全部 add

  5. 下方输入提交信息(commit message)

  6. 点击 ✔(commit)按钮

    就等价于 git commit -m "你的提交说明"


✅ 进阶:让 VS Code 自动帮你完成 git add(选填)

你可以设置:

复制代码

json

复制编辑

"git.enableSmartCommit": true

然后 Ctrl+Enter 可以直接提交当前所有修改(自动 add)

设置方法:
  1. 打开 File > Preferences > Settings

  2. 搜索 git enableSmartCommit

  3. 勾选它 ✅


✅ 再进阶:添加"自动提交扩展插件"(可选)

如果你想一保存文件就自动提交,可以安装插件:

🔌 Auto Commit

但一般我们不建议"自动提交",还是建议手动 review 后再提交,避免提交垃圾或 debug 测试代码。


总结

操作 命令行 VS Code 图形界面等价操作
修改代码 编辑器修改文件 编辑器修改文件
git add git add xxx Source Control 面板点 +
git commit git commit -m 填写信息,点
git diff git diff 点击文件查看差异(带颜色)
相关推荐
任小栗1 天前
【实战干货】Vue3 + WebRTC + SIP + AI 实现全自动语音接警系统(远程流获取+实时ASR+TTS回播)
人工智能·webrtc
runner365.git2 天前
如何使用RTCPilot--跨平台WebRTC开源服务
webrtc·音视频开发
runner365.git2 天前
RTC实现VoiceAgent(二)
大模型·webrtc·实时音视频·voiceagent
runner365.git3 天前
WebRTC实现VoiceAgent智能体
webrtc
runner365.git3 天前
RTCPilot的信令流程
webrtc·音视频开发
runner365.git3 天前
如何使用RTCPilot配置一个集群RTC服务
webrtc·实时音视频·音视频开发
深念Y4 天前
从WebSocket到WebRTC,豆包级实时语音交互背后的技术演进
websocket·网络协议·实时互动·webrtc·语音识别·实时音视频
AI视觉网奇6 天前
webrtc 硬编码
ffmpeg·webrtc
REDcker6 天前
WebRTC 接收端音频流畅低延迟播放:原理与源码对照(NetEQ / Opus)
音视频·webrtc
SUNNY_SHUN6 天前
LiveKit Agents:基于WebRTC的实时语音视频AI Agent框架(9.9k Star)
人工智能·github·webrtc