最近在做volumetric video的rtc,在此记录下相关内容方便之后复习。所采用的end to end平台来自于mmsys'24的 Scalable MDC-Based Volumetric Video Delivery for Real-Time One-to-Many WebRTC Conferencing. 源码地址:https://github.com/MatthiasDeFre/webrtc-pc-streaming 论文相关内容不在此处再加赘述,本文只关注部署部分。
根据作者所述 Currently only Windows is supported as a full end-to-end architecture due to the lacking virtual reality support from Unity for Linux-based operating systems. 所以稳妥起见,还是将该系统部署在win11上。整体部署结构分为安装git,拉取代码,安装依赖,编译运行四大部分。
由于之前并没有在win上使用过git,所以需要现在win系统上安装git,直接在git官网下载安装即可https://git-scm.com/downloads,选择windows版本。事实上在后续使用中git submodule init [submodule的文件夹的相对路径] 和git submodule update [submodule的文件夹的相对路径]一直连不上,所以最终还是下载压缩包解压缩。(https://cloud.tencent.com/developer/article/2136829,一些git submodule相关基础)
拉取代码正如之前所说,进入每个子项目(webrtc-pc-client等)下载压缩包解压缩到主文件夹webrtc-pc-streaming内。按照github上的structure组织文件。
接下来到了安装依赖的环节。对于这一部分我们需要安装vcpkg和golang 1.21+(我下载了当前的最新版本1.22.3,因为当时下载没注意到版本要求,还好没出问题)。vcpkg用于下载一些需要的库,比如draco用于数据压缩,realsense(depth camera,录像)的驱动等。vcpkg下载参考https://blog.csdn.net/qq_42688495/article/details/125333589。(记得设置添加到环境变量) 对于golang下载,下载网站https://go.dev/learn/,直接下载即可,会自动添加到环境变量。如果没有的话可以手动配置。除此之外,在运行时会利用go语言下载安装pion(一款利用go语言开发webrtc的系统,提供一系列api)等库,所以需要设置下载源,不然会一直连接失败,go env -w GOPROXY=https://goproxy.cn
在power shell下执行可直接换源(https://blog.csdn.net/qq_43750358/article/details/131226959)
由于今天刚接触go语言还不是很熟悉,所以对于go.mod等不是很敏感,没有对这些进行单独操作,后面关注到的时候已经编译完且能在本地回环上通信了,猜测可能关系不大,贴一个相关帖子有时间去看一看https://blog.csdn.net/weixin_41519463/article/details/103501485
之后我们进入webrtc-pc-server,这里的server指视频源发送方,在该文件夹下直接利用power shell 运行go build
。生成goweb.exe,之后在webrtc-pc-client下执行同样操作。
运行时我们先启动server端的goweb.exe .\goweb.exe -d C:\Users\Administrator\Desktop\content_madfr\content_madfr
后面的文件地址为存放frame的地址,这一操作可以让我们避免使用depth camera,直接利用项目作者提供的frame即可https://drive.google.com/file/d/1yYDy3GVNkUxuNm5Qfs_-1BTZ6MbLrm7Y/view?usp=sharing,上面是作者提供的下载地址,在webrtc-pc-server的readme中可以找到。之后启动client端的goweb.exe文件,两端开始通信。以下是运行截图
server端
client端