10月底发布的 Shield TV Pro (2019) 相对于老版来说,在硬件上进行了一大波更新。它用上了新的 Tegra X1+ 芯片,这块更先进的芯片也带来了很多新的功能,比如 AI Upscaling. 类似的这个功能你能在很多高端电视上看到,主要的能力就是把低画质的内容变得更清晰(大概就是类似于那些大家早有耳闻的 1080p 转 4k 的算法和工具)。除此之外,更重要的是带来了 Dolby Vision 和 Atmos 的支持。由于这次的发售日期前几个月就公布了,所以我也算是期待了很久,一发售就入手(结果一个月不到黑五直接便宜了 500 块……)。下面会从几个方面讲一下我这段时间以来的使用心得,期间有和家里各种其他器件例如 NAS、路由器、电视的大量问题探索(非常揪心了)。

首先想感叹一句,本来以为现代电子设备的使用会越来越傻瓜化,但至少在家庭影音设备上我得到的一个感受是,要让这些设备完全发挥他们的能力,不是一个小白用户能够开箱就享受到的。基本上需要他们学习很多东西,这个对于年纪大一点的人来说就非常不友好了。比如,前些日子回到家,发现爸妈家里的 Sony 4k 电视观看广播电视时很模糊,明显达不到 4k,即便高清频道也是。后来网上搜了电信机顶盒的管理员账号密码,登进去一看,默认输出的是 720p……

首先,从播放视频相关讲起吧。

Dolby Vision 和 Atmos

Shield 启动的时候会问你要不要开启 Dolby Vision,选择开启之后就会进入 422 12bit 59.94hz (这里很有意思,下文会将会讨论一下) HDR 10 + Dolby Vision 的输出模式。然后进入 Netflix 在支持的片源上就能看到 Dolby Vision 或者 Atmos 的标志了,播放的时候我的 Sony 电视也能够将图像模式正确切换到杜比明亮视界。另外你的音响支持杜比音效的话,使用 Kodi 时记得在设置里面开启 Audio pass-through.

Dolby Vision Atmos

AI Upscaling

AI Upscaling 有三种模式:Basic,AI,和 AI Enhanced. 名字听起来只有后面两个用到了机器学习的能力,AI Enhanced 下面有从低到高 3 个强度可以选择。下面这张图展示了 Basic 和 AI Enhanced (Medium) 在同一帧视频上的显示区别,可以注意人物额头的纹理、眉毛等细节(当然,其实这个场景的选取比较取巧)。
AI upscaling


AI upscaling

经过我的使用发现,AI Enhanced 模式对亮的东西情有独钟:反光的发丝、人物眼里的光点、地面上反光的水坑。之前有一个场景拍了黑夜中湿漉的地面,被 AI 增强得有种满天繁星的感觉……

整体来讲,AI Upscaling 的效果还是不错的,在 1080p 的动画番剧上的体验感受也比较明显。在开启 AI Upscaling 之后,建议把电视自带的同类功能关闭(比如 Sony 电视里的 “精密显示”),至于他们两个哪个效果更好,我直接放弃做这样的比较……

Match Content Color Space 和 Match Frame Rate

Shield TV 升级到 Android 9 后,有了一些新的功能。比如 Match Content Color Space, 这个功能的原意是根据播放的内容在 Rec.2020 和 Rec.709 上进行切换。按照我的理解(不一定专业),这个功能要解决的问题是在 Rec.2020 的输出上播放 Rec.709 内容时,由于电视本身不能完全覆盖 Rec.2020 的色域范围所以基本上都会做 mapping,而一些糟糕的电视处理得不好同样对 Rec.709 的内容也做了mapping 的话结果就有问题了。但实际使用下来,在我的 Sony A9G 上开启这个功能有种灾难性的体验……实际的效果是,当播放非 HDR 内容的时候,感觉所有的 Rec.709 被错误映射到了 Rec.2020 上,例如所有的红色变得非常的过饱和……深夜食堂东京故事里的人脸都快成了褐色……估计是和电视本身的自动调节色彩空间有了冲突。但鉴于这个功能在这几个月内被持续的 "hotfix",所以最终是什么样的就不得而知了,至少暂时在我的电视上,我并不会选择开启它。如果你遇到在你的电视上播放 HDR 内容的时候发现颜色偏灰白,可以尝试开启这个功能。

另一个功能 Match Frame Rate (Beta) 就是一个非常有用的功能了,你可能在 Apple TV 上听过这个功能。不过在 Shield 上需要你每次手动启动。你可以把这个功能绑定到遥控器的菜单按键上一键开启,在每一次播放视频的时候都得按一下来进行一下匹配. 这个功能主要的作用顾名思义,就是让 Shield 的输出刷新率和内容匹配,会带来什么效果以及为什么要用这个效果在接下来会详细介绍。

Match frame rate

刷新率和运动设置

在和电视相关的体验上,耗费了我相当一部分的时间……
默认情况下,Shield 的刷新率被设置在了 59.94Hz 而不是 60Hz. 这里有一个非常复杂的故事,简单地解释一下:电视主要有2个制式,一个是 NTSC 另一个是 PAL,在帧率上这两个制式可以简单理解为 NTSC 是每秒 29.97 帧 (30/1.001),PAL 是每秒 25 帧。由于大部分欧美国家都采用了 NTSC 制式,所以 Shield 默认把刷新率设置在了 59.94Hz 以能和这部分的影视资源更匹配。如果不匹配,你可能会感受到掉帧。

接下来,我们要更深一步,进入另外一个问题。传统影视行业制作的电影,基本上都是每秒钟拍摄 24 张胶片,也就是每秒 24 帧。于是问题出现了:每秒 24 帧的电影,要如何在每秒刷新 60 次的屏幕上平滑播放呢?甚至在 NTSC 制式下,电视机的刷新率可能还是 59.94Hz 的,广播电视传输也是 29.97Hz. 毕竟 60(59.94) 不是 24(23.976) 的整数倍,那在 1 秒内,并不能让 24 帧等量地扩展成 60 帧。行业内常见的一个做法是,先把 24 帧每秒的电影放慢 1.001 倍,也就是每秒 24 帧变成了每秒 23.976 帧(每 1.001 秒 24 帧),这个放慢很细微,人类基本上无法感知:一部 2小时的电影整体时间也就变长了 7.2s. 接下来,再采用一种被称为 3:2 pull down 的技术,意思是一部分的帧被复制了3次,一部分被复制了2次,最终将 24 帧扩展成了每秒 59.94 帧。

图源 rtings.com

显而易见带来的问题是,原来显示时间一样的两个帧,现在显示出来的时间不一样了。一个不恰当的比喻,就好比一个本来走一步停一步匀速移动的人,现在变成了有时走一步停两步,有时走两步停一步。这在视觉上带来的感受就是不够流畅,被称作 "judder"。rtings 曾经出过一个详细解释的视频解释 "judder",有条件的同学可以了解一下:https://www.youtube.com/watch?reload=9&v=CuEZIJDEQyo 。里面介绍了 3:2 pull down 带来的 judder 和掉帧带来的 judder. 常见的高端电视都会提供消除 3:2 pull down 带来的 judder 的能力,比如,如果你的电视盒子设置为了 60Hz,而片源是 24Hz 的,就会采用 3:2 pulldown 把片源拉到 60Hz 输出给电视,而这个时候好的电视就能够正确识别到输入来的信号做过 3:2 pulldown 转换,于是做一个逆操作,把视频还原成 24Hz,再进行优化处理。关于优化处理也有很多操作,比如在 Sony 电视上有 BFI(插入黑帧,以减少运动模糊) 或者运动插针来实现让视频看起来更流畅。

我按照 rtings 之前给出的设置 A9G 消除 judder 的方式进行了设置(https://www.rtings.com/tv/reviews/sony/a9g-oled/settings#make-hdr-brighter),结果在 Shield 上很快就发现了问题。当我观看 His Dark Material (英剧,英国是 PAL 制式,视频是 25fps 的) 的时候,发现画面有掉帧的情况出现(掉帧可比 3:2 pull down 的 judder 明显太多,基本上绝大部分人都能体感到),当关掉优化 3:2 pull down 功能或者将 Shield 的输出分辨率设置成 60Hz 的时候,掉帧消失。于是我接下来在 Kodi 和 Netflix 等软件上做了一系列的测试发现:

在 59.94Hz 的输出上播放 25fps 的视频源,会出现掉帧。
在 59.94Hz 的输出上播放 24fps 的视频源,会出现掉帧。
在 60Hz 的输出上播放 23.976fps 的视频源,会出现掉帧。

简单讲,视频源的帧率不是整数时,你的输出刷新率也应该不是整数才能避免掉帧发生。另一种情况同理。
人工每次改帧率是非常麻烦的,特别是 Kodi 这样的软件还没办法让你查看视频编码相关信息。Shield 有一个 beta 中的功能:match frame rate, 能够自动根据播放的视频内容调整输出帧率。但是这个功能也很有局限性,目前发现,这个功能在以下几个环境中无效(或者不能正常工作):

1. Kodi
2. Netflix 的 Dolby Vision 影片

对于 Kodi 来说,可以直接在应用内开启自动调整视频帧率,让 Kodi 自己调系统 API 改帧率,估计也是这个原因导致了和 match frame rate 功能的冲突(但不管你开不开这个功能,match frame rate 都是无法生效的)。而在对于情况 2 来讲我没发现一个好的解决办法,目前只能发现掉帧后手动切换刷新率,或者,懒一点的方法,直接关闭电视的 pull down 优化。

至此得出的一个结论是:
如果要用到 Sony 电视的运动相关的功能让画面更流畅(motionflow / cinemotion / film mode),需要控制使 Shield 的输出分辨率和视频源匹配:帧率非整数的视频源要用相应的非整数刷新率,整数帧视频源用相应的整数帧刷新率。为了达到这个目的,可以使用 match frame rate 功能来自动切换。

其他 bug 和问题

另一个我在使用 Shield TV Pro (2019) 的时候遇到的一个恼人问题是,用 Kodi 通过 smb 播放 NAS 上的视频时,在一段随机的时间(几分钟到十几分钟不等)之后就会断掉。结果发现使用其他播放器比如 VLC 也会断掉 smb 播放。但实际上并没有什么网络问题,而且这些软件通过同样的方式在其他电视盒子或者是直接在电视上都是能够正常播放而不中断的。当然,你可能可以使用别的协议比如 NFS,但由于有很大的局限性,我还是需要 smb 的。对此我也进行了巨量的 Google, 在发现这是一个普遍的问题而且 Nvidia 官方并没有给出什么解决方案之后(发了一封客服邮件,回复里给我了一个帖子让我尝试民间大神的一些奇技淫巧:把 Android 系统的 Developer Options 里的 Logger buffer 设置到最大,我一脸黑人问号),只能采取民间大神摸索出来的各种方法了,遗憾的是很多不明所以的方法并没有在我这里生效。最终解决这个问题,我是通过直接在 Shield 里 mount 了 NAS 硬盘(Shield 本身提供 mount network storage 的能力,目前好像仅支持 smb). 

GeForce Now

GeForce Now 就是一个类似于 Google Stadia 的功能,简单来讲就是云游戏,目前在 Beta 阶段,申请一下即可开通,但目前支持的国家比较少。测试了一下,估计由于在国内的原因,体感至少 400ms+ 延迟,于是就没有进一步测试了。不过前几天腾讯刚和 Nvidia 宣布合作一起共建云游戏平台 START, 说不定之后国行 Shield 部分的 GeForce Now 会被 START 替代。

GameStream

GameStream 功能还是一样的,简单易用,在有 Nvidia GPU 的 PC 上登录了相同的 Nvidia 账号之后,在 Shield 里打开 Nvidia Games 就能看到你的所有游戏了。整个功能体验起来还是方便简单的,我尝试用 Xbox 的手柄体验了一下玩奥德赛,在延迟、画质上都相当出色,体验很好感觉不出是在投屏。看来有游戏级 PC 的话,家里如果没有其他人要占用 PC,或许你真的就不需要一个 Xbox 了?

Nvidia Games

这是一个游戏应用商场,体验了一下,没觉得有什么特别不错的地方。本身你也不能指望在一个电视盒子上装什么游戏本地来跑,所以感觉里面的特色还是 GeForce Now 和 GameStream.

总结

总的来讲,Shield TV Pro (2019) 作为一款性能和功能都是最顶级梯队的 Android 电视盒子,市面上本身也是找不到什么同类对手的。Pro 版本的售价和 Apple TV 4k 一样,199美元。非 Pro 版本售价 150美元,内存上一个 2GB 一个 3GB,储存空间上一个 8GB 一个 16GB. 如果你不在乎性价比的话,Shield TV  Pro (2019) 几乎是现在最好的 Android 电视盒子了(我为什么遇到这么多 bug 还能说出这样的话)。