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 点击文件查看差异(带颜色)
相关推荐
守城小轩3 小时前
WebRTC指纹识别——未来展望(下篇)
chrome·webrtc·chrome devtools·指纹浏览器·浏览器开发
守城小轩3 小时前
WebRTC指纹——技术背景(上篇)
webrtc·chrome devtools·指纹浏览器·浏览器开发·超级浏览器
_可乐无糖10 小时前
AWS WebRTC:我们的业务模式
云计算·音视频·webrtc·aws
SY.ZHOU2 天前
iOS上使用WebRTC推拉流的案例
ios·音视频·cocoa·webrtc
拾光拾趣录6 天前
WebRTC深度解析:从原理到实战
前端·webrtc
feiyangqingyun6 天前
Qt视音频推流/监控推流/自动重连推流/推流同时保存录像文件到本地/网页打开webrtc预览
qt·webrtc·qt推流·qt保存录像文件
_可乐无糖10 天前
AWS WebRTC 并发 Viewer 拉流失败分析:0.3 秒等待为何如此关键?
云计算·webrtc·aws
2501_9153743517 天前
WebRTC与RTMP
webrtc
_pengliang17 天前
WebRTC 双向视频通话
音视频·webrtc