最近在研究 WebRTC,但由于本地环境不具有 Camara 和 Microphone,测试就变得不是很方便。再加上我把开发环境塞进了的 VM 中,Chrome 会阻止在非 HTTPS 页面上启动相关服务,因此考虑直接在 VM 中进行一些通话测试。
视 OS 不同,虚拟设备的实现方案会有所不同。其中 Windows 和 MacOS 是比较简单的:OBS 搞定 Camera 和视频源,VB-CABLE 搞定 Microphone,一个能选择输出设备的音乐播放器 (例如 QQ 音乐) 和音频源。
Linux 的情况则有所不同。虽然 OBS 也有 Linux 版本,但实践下来安装时会存在各种依赖问题,并不怎么好用;另外也还是需要单独的方案来实现 Virtual Microphone。因此我采用了下述方案:
- tigervnc + x11 + xfce4 + chromium – 提供远程操作、调试环境;
- v4l2loopback 内核模块 – 用于创建一个视频的回环设备;
- pulseaudio module-pipe-source 模块 – 用于创建一个音频的 pipe source;
- ffmpeg – 解码媒体文件,重编码音视频流并输出到设备。