老调重谈: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,画面会撕裂……

PIXL

PIXL 是个跳票了很久的 Kickstarter 项目。内容嘛,其实就是一堆各色磁力小方块,可以用来搭东西或者搭画之类。

周二这个东西终于送到了。随便拼了点东西……

照着网页拼的Mario……
Google!
诡异配色的头像,因为只有这么点……

感觉还挺有趣的……

折腾 Wireless Display

很早之前就买了个Microsoft Wireless Display Adapter,之后没怎么用。前段时间尝试从 Surface Pro 6 投影过去,发现怎么搞都不成…… 就是点了之后很快就说 Couldn’t connect。

照例在网上搜了若干方法,有说驱动的,有说组策略的,有说防火墙的,反正试了都没用…… 折腾了一晚上,情况都没啥变化。

最后我怀疑有啥软件半路拦截了数据包,于是打开 Windows 用户必备工具:SysInternals Autoruns…… 发现几个残留的东西,比如穿梭啦,QQProtect啦,以及之前装的 npcap 啦…… 统统车掉之后,居然就成了……

但是,成了之后发现,这货只能投1080p,显示器是4K的,投了很糊……

想起来当初为啥从Win跑路了,因为出了问题不好调啊……

另外,SysInternals真是必备工具……

yakyak on FreeBSD

Google Hangouts 这个网页客户端实在是让人受不了…… 浪费很多空间不说,经常还很卡。Chrome 插件还行,然而我用Firefox……

幸好我们还有人们自行研发的 yakyak,用着还行,有通知,界面和 Hangouts 那个 Chrome 插件基本一样。但是问题在于,这货很流行地使用了 Electron 平台,这货还没官方 FreeBSD 支持……

幸好已经有人port了Electron,现在是4.2.9。因此,yakyak 也是可以跑在 FreeBSD 上面的。

先装好 electron,然后checkout我修改过的yakyak:https://github.com/HenryHu/yakyak。进去,跑npm install,再npm run gulp。这样就产生了一个app目录,里面是编译好的内容(yakyak是CoffeeScript写的……)。

最后跑electron app,就行了。

其实修改只有一个内容:干掉了自动启动,因为 auto-launch 这个包还不支持FreeBSD。auto-launch这种写个.desktop的事情,应该也没啥特别不portable的问题,既然支持 Linux,改 FreeBSD 应该很容易…… 如果这个也支持了的话,那就可以直接用官方版本了。

Hangouts 的失败不知道没有好用的桌面客户端有多少锅,至少 Telegram 就有桌面客户端…… 不过 Telegram 主要卖点大概还是群组和表情包?……