老调重谈:Spotify & Netflix on FreeBSD

FreeBSD 上没法用 Spotify 和 Netflix 很久了,自从这些东西的网页版需要 DRM 以来。具体来说,现在这些(以及基本上所有别的 Streaming 服务,例如 Disney+)都需要 Google 的 Widevine DRM 模块,而这货只有 binary,只提供给了 Windows/Linux/MacOS,所以 FreeBSD 就没法满足 DRM 需求。

理想状况当然是干掉 DRM,这个当然没戏;让 G 提供这个也不错,但是应该也没那么容易;用兼容层跑 Widevine 那个库或许可行,不过还需要花点功夫;之前还搞过在另一台 Linux 机子上放,转发过来。今天说的是通过跑个 Linux 虚拟机达到这个目的……

第一次拿 bhyve 搞虚拟机,还挺好用的(通过使用 vm-bhyve……),几步就装完了一个 Debian。装好之后就有几个问题:

  1. 视频输出
  2. 音频输出

问题1有很多个办法,比如说可以ssh -Y,比如说可以remote desktop,可以VNC之类的…… 试了几波,ssh -Y和remote desktop都受限于 CPU,没法传4K。remote desktop差不多能到2560×1440,看流量大概有一个多Gbps……

回头一想,搞什么ssh,直接连X啊…… 于是打开 X 的 TCP 监听,直接 DISPLAY=<IP>:0 怼过去,然后的确能用,4K都行,流量大概4个多Gbps…… 反正是本机…… 就是不太安全,搞安全还要麻烦点。

问题2也有若干办法,比如remote desktop可以转发音频,不过搞起来还要编译pulseaudio模块啥的。反正是本机,本来想直接放出来就完了,然而-STABLE 里的bhyve还不支持音频设备。搜了搜,-CURRENT大概6个月之前有了。把https://svnweb.freebsd.org/base?view=revision&revision=349335https://svnweb.freebsd.org/base?view=revision&revision=350255 这俩弄进去编译了个 bhyve,然后参考 https://github.com/churchers/vm-bhyve/issues/330 弄了个虚拟音频设备,居然就能用了……

然而这样切音频设备之类的还挺麻烦。转念一想,直接转发 Pulseaudio 啊…… 于是设置 PULSE_SERVER=tcp:<ip>,也能用了……

所以现在就是直连 X 和 Pulseaudio,可以看4K视频和放 Spotify…… 唯一缺点就是貌似没有 VSync,画面会撕裂……

One Comment

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.