开源技术 * IBM 微讲堂:Kubeflow 系列(观看回放 | 下载讲义) 了解详情

为绝地求生直播实现计算机视觉

摘要

绝地求生 Rotisserie 能识别非常受欢迎的多人视频游戏绝地求生(PUBG) 的视频直播。它对 Twitch 上的直播执行光学字符识别 (OCR),确定出哪些直播只剩下少数玩家且接近该局游戏最后时刻。在本 Code Pattern 中,您将学会一种实现计算机视觉的方法,以从视频中获取数据。

概览

在 Twitch 及其他网站上,一些职业玩家和长期玩家会直播他们的游戏。在任何给定时刻,都有数以千计的人在 Twitch 上进行直播,同时有几十万人在观看这些直播。

绝地求生是第一人称或第三人称射击游戏。一百名玩家空投跳伞到一座孤岛上,搜寻战利品并杀死其他玩家扮演的角色。不会二次投放玩家。最后只能有一个玩家或团队获胜。想象《饥饿游戏》与《战地》的结合。问题是这个游戏有一部分相对会无聊一些。

在即将分出胜负(存活人数不超过 25 人)的时候观看直播是一件非常令人激动的事情。但是,当存活人数为 90 人(甚至是 50 人)时观看直播就没有那么令人兴奋了。本 Code Pattern 演示了实现计算机视觉以从视频中获取数据的众多方法中的一种。您将学会如何在本地或容器中设置此应用程序。您还将深入研究容器编排平台 Kubernetes 中的部署。

绝地求生 Rotisserie 可监控 Twitch 上可用的所有直播,在不同直播之间进行切换,并显示最令人兴奋的直播。这可在第二台显示器或大厅/体育酒吧的电视机上显示。

使用计算机监控游戏的整个直播间是一项新功能,目前只有绝地求生 Rotisserie 能办到。使用算法(就像一个虚拟导演)在不同的直播之间进行切换也是一项创新性功能。

流程

flow

  1. 主应用程序将使用 Twitch API 来访存绝地求生直播列表。Livestreamer 是一个开源项目,用于录制所有这些直播的短视频。
  2. 使用 FFmpeg 从该短视频中提取一个帧。
  3. 然后使用 ImageMagick 裁剪该帧,使该图像只包含存活玩家数。
  4. 将最终图像推送到使用开源 OCR 引擎 Tesseract 的 OCR 服务。此服务将读取该图像上的数字。
  5. 转换后的数据为 JSON 块格式(由主应用程序接收)。该应用程序将每隔 15 秒获取另一个直播列表。
  6. 用户将观看存活人数最少的直播。前端由主 Node.js 应用程序提供服务。用户的客户端将每隔 15 秒检查一次;如果发现有存活玩家数更少的直播,将切换到该直播。

操作说明

阅读本 Code Pattern 的更多详细信息,请点击 README

本文翻译自:Implement computer vision for PlayerUnknown’s Battlegrounds live streams(2018-05-24)