VR 多人观影
VR 比较常见的一个功能便是拿来看看视频,巨大的屏幕以及可以切换的各种拟真场景,都可以带来非常高的沉浸感。而多人观影,则使得这个功能更近一步。在多人观影应用中,玩家可以创建虚拟房间,别人可以加入这个房间观看同一部电影。在虚拟场景中,玩家可以看到对面的虚拟形象做出的各种动作,也可以听到对面带有方位感的立体的声音,让人感觉对方仿佛就在眼前一样。
对我来说,VR 多人观影的最大优点可能是可以突破时间空间的限制,加强人与人之间的连接。毕竟现实中想要和好友特别是异地的好友一起看电影实在太难了,而在 VR 中却可以轻易做到。 我相信,这种加强人与人的链接,必然是 VR 未来发展的很重要的一个方向。(比如在 VRChat 中,玩家能做到的不仅是一起观影,还能一起玩游戏、一起逛图甚至一起陪伴睡觉。确实能瞥见一点元宇宙的影子)
回到正题,由于目前 VR 还处于一个开拓区,许多应用都没有完全明确的形态。针对 VR 多人观影,并没有非常成熟的应用,不同软件侧重的功能不同。以下是我对试过的一些方案的总结
现有方案总结
- Pico 视频多人观影
- 播放内容
- Pico 视频内的资源
- 各类支持 tv 投屏的应用。特别的,支持网盘(因此可以投用户下载的资源)
- 优点
有简易的 avatar(2024/06 Pico 更新 Avatar SDK v2.0.0 后,社区可以上传自定义的模型,数量非常丰富。比如全员使用假面骑士形象看特摄)- 支持若干场景切换:电影院、沙滩等
- 投屏支持 4K,清晰度比较高
- 头戴端应用,不需要 PC
- 支持 3d 视频
- 缺点
- 只能 DLNA 投屏少数白名单网站:B 站、爱奇艺(目前不支持,之后会支持),百度、
阿里(别用了,会被永久封号)、夸克网盘等。并且官方没有将其公布在网上。 - 有内容审查(虽然也算不上缺点,但确实自由度没有那么高)
- 需要网盘会员才有好体验:网盘投屏方式不充对应软件会员,基本只能 720p 投屏
- 不支持字幕,视频必须提前将字幕烧录到画面中
- 没测:不知道是否支持音轨切换
- 只能 DLNA 投屏少数白名单网站:B 站、爱奇艺(目前不支持,之后会支持),百度、
- 播放内容
- VRChat
- 播放内容
- 视频直链(类似于
http://something.com/video.mp4
) - 各种流媒体网站(如
https://youtube.com/watch?v=VIDEOID
,原理是使用 yt-dlp 工具解析出视频直链):包含 B 站、youtube、twitch直播等
- 视频直链(类似于
- 优点
- 不只是看电影;无数的 avatar 和 无数的 world(场景)可以选择,在场景中可以有丰富的交互
- 直链意味着可以自己使用服务器 host 想要分享的视频
- 没有审查。默认有白名单机制,非白名单的域名默认不会播放,但是用户可以手动关闭白名单
- 缺点
- 观感不太清晰
- VRChat 本身渲染分辨率的缘故,需要很高端的显卡才能提高分辨率
播放器貌似本身也限制分辨率,只有 480p, 720p, 1080p 可选(感觉可能只是一个外观按钮,毕竟自己服务器 streaming 的内容,码率等都是服务端控制的,播放器端不应该会再转码一次)
- 播放器不完善
- 不支持外挂字幕,只支持将字幕烧录到视频中。(有项目支持了,但是我没成功)
- 不支持切换音轨
- p.s. VLC 播放器使用同样的 url 是均支持的,说明问题是可以解决的,所以未来可期
- 目前没有 3d 的播放器,只能分享 2d 视频
- 观感不太清晰
- 播放内容
- bigscreen:一个专门用于多人观影的软件Steam 上的 Bigscreen Beta (steampowered.com)
- 播放内容
- 电脑屏幕
- 电脑本地视频
- youtube,twitch 等内容
- 优点
- 播放内容很开放,很容易播放自己下载的内容。甚至分享电脑屏幕
- 场景很丰富:有付费场景和免费场景(其中一个教室场景观感很不错)
- 支持 3d 视频
- 缺点
- 清晰度还是低了点,最高码率为 5m
- 播放内容
其实从原理上,上面应用可以分为两类。
- 一类是应用厂商提供串流服务器的。bigscreen 就属于这种,它的最大优势是用户可以分享自己的屏幕。过程其实是房主将自己的画面推流到 bigscreen 服务器,其它用户再从 bigscreen 获得画面。这本质上是一种直播。
- 另一类就是像 Pico 视频和 VRChat 这种不提供串流服务器的。它们本身不需要服务器存储视频,用户都是通过视频链接访问已有的视频网站,因此成本更低些。
理论上最方便最强大的肯定是 bigscreen 这种,但是由于串流服务器存储和带宽的高昂成本,免费用户必然会受到许多限制。因此我觉得更实际的还是后者。其实对于观看大部分正规正版资源,pico 视频已经没什么问题(要么观看 Pico 视频自带的资源,要么使用其它软件投屏)。然而因为国内的审查政策,导致很多即使正规的内容国内平台不一定引进,引进了也可能删减。因此 VRChat 更加开放这一点还是不可缺少的。
视频链接又可以分为两类
- 一类是视频直链,也就是链接直接指向 .mp4 或者 .webm视频文件。而要取得这样的链接有许多方法
- 自己购买服务器存放视频,并创建 HTTP 服务器提供访问(比如使用 nginx)
- 使用 youtube,bilibili 等流媒体平台的链接。这些链接虽然不指向视频文件,但是 VRC 播放器内部会使用 yt-dlp 工具解析出其中的视频直链。
- 使用云盘存储视频,并获得直链。虽然云盘通常不提供视频直链,甚至会打击获取直链的插件(比如百度网盘)。但是还是有一些云服务商提供了直链的功能,比如 googledrive
- 使用一些视频托管网站比如 Vimeo(VRC 官方支持的网站)。用户上传视频到网站,网站提供视频链接。同样,免费用户一般有存储空间限制。
- 另一类是直播链接。直播链接通常采用 HLS 协议,链接指向一个 m3u8 文件,文件存储了切片后的视频直链(通常封装成 ts 格式)。VRC 播放器(如 USharpVideo)都支持 m3u8 链接的播放,需要在界面选择为 Streaming。
- 直播链接和视频直链的区别在于,视频直链的文件内容是固定的,而直播链接中 m3u8 内容是动态生成的。
- 以 B 站直播为例,直播者通过 OBS 等软件将画面编码后,通过 RTMP 协议推流到 B 站的服务器(
rtmp://dl.live-send.acg.tv/live-dl
),B 站可以对视频进行存储(也就是直播回放功能),同时提供 HLS 访问。观看者使用浏览器通过 HLS 协议从 B 站服务器获取直播内容。
以下是它们优缺点的介绍
视频直链
- 优点
- 简单直接
- 自己 host 简单,只需要搭建一个 HTTP 服务器即可
- 缺点
- 为了获得最好的兼容性,对视频格式有许多要求。封装格式建议使用 mp4,编码格式建议使用 h264。字幕建议直接烧录到画面中。
- 无法随时调节视频码率。由于播放器是直接请求视频文件,因此对网络带宽有很高要求。对于下载的码率很高的电影文件,直接播放基本上是不可能的。这也是为什么如今各种云盘为了提供在线播放功能,会对用户上传的视频进行转码,保存 480p, 720p, 1080p 等不同分辨率清晰度的版本。而直播不同,直播源可以随时调节码率
直播链接
- 优点
- 兼容性最好,由于直接串流电脑画面,因此使用电脑上的播放器基本可以播放任意视频文件,字幕切换、多音轨都不是问题。
- 按需调节码率
- 缺点
- VRC 中无法随时调节播放进度,需要电脑上操作
- 画质不如原始视频文件。直播其实是在对画面进行实时编码,通常使用核显或者独显加速。而压制组压制的视频资源是使用 CPU 花费大量时间压出来的,会对各种参数进行调节,二者质量上肯定是后者更高。而且直播通常采用 CBR(固定码率) 或者 VBR(可变码率)编码方式。优化的是码率,而不是画质,因此画质也是不如使用 CRF(Constant Rate Factor)压出来的高码率视频。
- 但是其实只要抛弃画质有损失这样的想法,直播编码出来的画面是足够观看电影的。
方案介绍
最后经过研究,围绕 VRChat 确实有许多方案。最简单的,使用 twitch 直播电脑画面,当然同样会遇到码率限制等问题。所以最好的还是利用自己的上传带宽,因此可以在家宽上搭建一个 HLS 的服务器。绑定域名,提供给外网访问。可以使用 OBS 将电脑屏幕、视频播放器等画面推流到自己的 HLS 服务器上。
- 优点
- 能够播放自己下载的内容,不需要经过网盘
- 基本不会存在视频兼容性问题,因为推流的是电脑画面
- 缺点
- 国内可能有法律问题?相当于在家宽上搭建直播服务器
- 上传带宽受限(国内家宽目前上行普遍只有20-40Mbps 水平),按照 2.5Mbps 的码率,最多只能 10 人同时观看。想要 8Mbps 码率,就只能 4 人观看了。
- 没有 cdn 优化,不一定每个地方都有很好的播放体验