虚拟演播室

虚拟演播室展示了虚幻引擎与专业级SDI卡和设备交换视频源的能力。

Choose your operating system:

Windows

macOS

Linux

虚拟演播室(Virtual Studio)展示了虚幻引擎与AJA Video Systems和Blackmagic Design的专业级质量采集卡集成的能力。如果你有受支持的采集卡,可以将该项目将虚幻引擎集成到视频制作管道中。

本示例使用真实的主持人,在虚拟音乐舞台内部的虚拟主持台背后动态合成。你可以将这个概念和布景应用至其他用例,将实时视频引入到虚幻引擎关卡,并将渲染的结果采集到输出源。

有关该示例中的视频配置设置的背景信息,请参阅 AJA Video Blackmagic Design 的快速入门指南,以及 支持多个媒体配置 页面。

视频I/O设置入门

虚拟演播室示例是使用三个不同的媒体配置设置的,每个配置由一个单独的媒体描述资产定义。

  • AJAMediaProfile_24fps_10bit 将SDI输入视频源和输出采集与AJA Video Systems的设备交换。
    默认设置为从Corvid 44采集卡的端口1和2获取输入,速度为24帧/秒,使用10位流。

  • BlackmagicMediaProfile_24fps_10bit 将SDI输入视频源和输出采集与Blackmagic Design的设备交换。
    默认设置为从DeckLink Duo 2卡的端口1和2获取输入,速度为24帧/秒,使用10位流。

  • FileMediaProfile 默认设置为从磁盘上的 .mp4 文件获取输入。
    这是你启动项目时将会激活的默认配置,因此即使你没有安装受支持的AJA或Blackmagic卡,也可以立即看到一些视频播放。
    该配置没有设置为从虚幻引擎或虚幻编辑器采集任何视频——完全没有配置媒体输出。因此,该配置处于活跃状态时,会有一些视频源进入关卡,但不会输出。

如需在不同配置之间切换,点击工具栏中当前"媒体描述"(Media Profile)旁边的向下箭头,从下拉菜单中选择 选择描述(Select Profile) ,然后选择想要激活的媒体描述。

Switch to a different Media Profile

如果你需要更改默认端口分配或媒体设置(例如每秒帧数、图像分辨率或色深)以匹配你在计算机上使用的媒体设置,可以双击任意媒体描述资产,打开并编辑其属性。你可以在 VirtualSet/MediaProfiles 文件夹下面找到媒体描述资产:

Media Profile Assets

有关媒体描述工作方式的更多信息,请参阅 支持多个媒体配置

媒体源和播放

虚拟演播室示例使用了两个媒体包来导入视频源,并让它们出现在关卡视口中。

  • 默认情况下,只会将一个设置为可见。该视频源以合成状态出现在场景中的主持台后面。
    Video feed 1

  • 第二个视频源隐藏在虚幻编辑器中,因此默认是看不到的,直到切换摄像机才能看到——在"媒体采集"(Media Capture)面板或在运行时使用屏幕上采集按钮。有关详细信息,请参阅以下 屏幕上采集控件 。如需强制第二个视频源出现在虚幻编辑器中的视口中:

    1. 世界大纲视图 中选择 VirtualSetMediaInput2 Actor。
      Select VirtualSetMediaInput2

    2. 细节(Details) 面板中,启用 平板(Plate)>在编辑器中显示平板(Show Plate in Editor) 选项。
      Show Plate in Editor

    第二个视频源也是在主持台后面合成的,但角度是从摄像机看向主持人右侧。
    Video feed 2

媒体包设置

主持台背后的两个视频输入平面都是使用媒体包设置的: VirtualSet/Media/VideoBundle_01 VirtualSet/Media/VideoBundle_02 。每个包都有对应的文件夹,以 _InnerAssets 后缀命名,保存其媒体框架资产。

Media Bundle Assets

要了解如何从头设置媒体包,请参阅 AJA媒体I/O快速入门指南 Blackmagic媒体I/O快速入门指南

关于虚拟演播室示例中的媒体包需要注意的一点是,它们不使用大多数媒体包资产使用的默认蓝图类。

通常,在将媒体包资产放入关卡中时,会自动产生新的 BP_MediaBundle_Plane_16-9 Actor,以便在关卡的3D空间中表示视频。该默认蓝图包含平面(Plane)组件。该组件自动设置为包 _InnerAssets 文件夹中创建的媒体纹理,还包含用于处理从关联媒体源播放音频的MediaSound组件。

在虚拟演播室中,媒体包资产在关卡中通过BP_MediaBundle_Plane_16-9蓝图Actor的自定义子类表示: VirtualSet/Blueprints/VirtualSetMediaInput 。该子类与其父节点一样,唯一的区别是应该在 世界大纲视图 中作为子节点为其分配一个特定的摄像机Actor。你可以注意到关卡中的两个视频平面各自有一个摄像机子节点:

Media Bundles and child cameras

该自定义 VirtualSetMediaInput 子类添加了在编辑器视口中显示和隐藏平面的功能,以及配置平面及其指定摄像机之间的距离。选择 VirtualSetMediaInput1 VirtualSetMediaInput2 Actor 时,可以在 细节(Details) 面板的 平板(Plate) 类别中设置这些选项:

Plate Distance

如需查看如何实现这些设置,可以双击蓝图类以查看其构造脚本和其他函数。

代理媒体源

关卡中的两个媒体包均配置为从不同的代理媒体源资产拾取视频源。例如,如果双击 VideoBundle_01 ,你会看到它设置为使用 MediaProxySource_01 资产作为源:

Media Bundle source proxy

同样, VideoBundle_02 设置为使用 MediaProxySource_02 资产作为源。

如果打开 项目设置(Project Settings) 面板(从主菜单选择 编辑(Edit)>项目设置( Project Settings) ),找到 插件(Plugins)>媒体描述(Media Profile) 部分,你会看到这两个代理媒体源资产也在 媒体源代理(Media Source Proxy) 列表中被引用:

该列表中的插槽顺序对应当前媒体描述中的插槽顺序。例如, BlackmagicMediaProfile_24fps_10bit 是使用两个输入媒体源设置的。插槽0从卡上的端口1读取输入源,插槽1从卡上的端口2读取输入源:

Media Profile source configuration

该配置的结果是,当Blackmagic媒体描述激活时, VideoBundle_01 通过代理从卡上的端口1抽取输入源,而 VideoBundle_02 通过另一个代理从卡上的端口2抽取输入源。当你更改媒体描述时,这些代理会自动将输入源重新映射到新媒体描述中定义的前两个输入源,立即改变你在关卡中看到的视频源。

有关媒体代理工作方式的更多信息,请参阅 支持多个媒体配置

监控与合成

媒体包放在中央主持台背后,其目的是将坐着的主持人放在虚拟3D关卡中。为了实现此类效果,你需要在输入视频流中将背景移到主持人背后。为此,通常需要主持人坐在绿幕(或蓝幕)前面进行录制,然后使用色度键控或亮度滤波来剔除背景。

类似该示例中使用的媒体包自动设置为使用特定材质实例,这种实例能够在虚幻引擎中实时执行该色度键控和亮度滤波。

要进行这项设置:

  1. 内容浏览器 中,找到并打开你想要设置的媒体包。

  2. 在媒体包编辑器的工具栏中,单击 打开材质编辑器(Open Material Editor) 按钮以便编辑媒体包用于将视频源抽取到关卡中的对象所用的材质实例。
    Open Material Editor

  3. 在材质实例编辑器的 细节(Details) 面板中,找到 键控器_00——设置(Keyer_00 - Setup) 部分,启用 启用键控器(EnableKeyer) 属性。
    Enable the Keyer

  4. 激活 启用键控器(EnableKeyer) 属性后,材质实例会在 细节(Details) 面板的 键控器(Keyer) 部分中显示新属性。你可以使用这些属性来配置想要从视频流中移除的颜色,根据像素亮度过滤流,并对流进行裁切和颜色校正。
    Keying properties

采集输出视频

如需按照这一部分中的说明从虚幻引擎采集视频,你需要有AJA Video Systems或Blackmagic Design的受支持SDI卡。

要开始从虚幻编辑器向AJA或Blackmagic卡发送视频:

  1. 在主菜单中选择 窗口(Window)>媒体采集(Media Capture) 。你可以使用该窗口中的工具来标识想要哪些媒体输出从虚幻引擎接收输出。你还可以指定关卡中的哪些摄像机或哪些渲染目标向各个输出发送视频。
    在下图中, 媒体采集(Media Capture) 窗口设置为从关卡中的两个摄像机向 MediaOutput_01 代理媒体输出资产发送广播。
    MediaCapture panel configuration
    虚拟演播室样本的项目设置设定为将发送到 MediaOutput_01 的视频重定向到活跃媒体描述中配置的第一个输出源。如果你使用 AjaMediaProfile_24fps_10bit BlackmagicMediaProfile_24fps_10bit 媒体描述,最终会将输出发送到卡上的第四个端口。

  2. 单击窗口顶部的 采集(Capture) 图标以开始采集。
    Capture

  3. 在窗口底部,你会看到预览,显示的是 锁定摄像机Actor(Locked Camera Actors) 列表中的第一个摄像机的视点。如果你的视频设备连接到卡上的第四个端口,应该会看到同一个视频发送到该端口。
    Media Capture camera preview
    媒体采集(Media Capture) 窗口在 锁定摄像机Actor(Locked Camera Actors) 列表中出现的每个摄像机预览上方放置一个按钮。使用这些按钮来切换不同视点的输出。

该示例还设置为在运行时使用屏幕上控件UI将采集发送到视频卡。你需要:

  1. 单击工具栏"播放"(Play)按钮旁边的箭头,选择 新建编辑器窗口(在编辑器中运行)(New Editor Window (PIE)) 独立游戏(Standalone Game) 选项。

    从编辑器采集视频仅在你使用 新建编辑器窗口(在编辑器中运行) 独立游戏 选项运行项目时有用。在默认的 所选视口(Selected Viewport) 模式或 模拟(Simulate) 模式下无效。
    此外,项目的视口分辨率(即虚幻引擎生成每一帧的渲染图像尺寸)必须与活跃媒体描述中设置的输出分辨率相匹配,这样才能是输出视频源的合适大小。

  2. 首先看到的是主持台的正面视图,左上角有一些按钮,关卡中的每个摄像机都有一个缩略图。

    • 要更改当前摄像机视图,可以单击任意摄像机缩略图,也可以单击 下一个摄像机(Next Camera) 按钮(1)来轮流切换摄像机。

    • 勾选 启用视频输出(Enable Video Output) 复选框(2)以开始和停止向视频采集卡发送当前视口。

屏幕上运行时采集按钮也设置为将所选摄像机源发送到 MediaOutputProxy_01 资产,然后项目设置将它转发到当前媒体描述中配置的第一个输出。有关该设置的详细信息,请参阅下文的 屏幕上采集控件 部分。

屏幕上采集控件

你可以在 Virtual Set/Blueprints 文件夹中找到屏幕上摄像机控件UI的资产:

On-screen capture control Assets

  • CameraSwitcherUI UMG 控件包含主要的屏幕上元素,包括"下一个摄像机"(Next Camera)按钮和用于切换当前视图采集的复选框。

  • 在场景背后,单击UI时发生的所有操作都由 CameraSwitcher 蓝图类处理。你可以观察其事件图表,以查看所有摄像机切换逻辑的实现。与启动和停止视频采集有关的逻辑位于两个主要部分:

    • 在事件图表中, 创建媒体采集(Create Media Capture) 节点从 VideoOutputSettings 变量中设置的 MediaOutputProxy_01 资产创建新的媒体采集对象,并将其存储在名为 媒体采集 的变量中。

    • 启用视频输出(Enable Video Output) 函数中,使用该 媒体采集 变量来启动和停止采集视口。

  • CameraSwitcher 需要使用应该由UI管理的所有 VirtualSetMediaInput 对象列表进行设置。加载关卡时, CameraSwitcherUI 自动为该列表中的每个输入创建一个新的缩略图。

系统会向关卡添加一个 CameraSwitcher 蓝图类实例。如果在视口或 世界大纲视图 中选择该Actor,你可以使用 细节(Details) 面板中的设置来控制其行为。

Camera Switcher Details

属性

描述

视频输出

默认启用输出(Enable Output by Default)

启用该设置以让CameraSwitcher在你运行项目时立即开始采集视频输出,并将它发送到 视频输出设置(Video Output Settings) 中设置的媒体输出。

视频输出设置(Video Output Settings)

设置CameraSwitcher用来创建媒体采集并将视频输出发送到SDI设备的媒体输出资产。该资产设置决定了哪个设备以及该设备上的哪个端口接收采集的视频流。默认情况下,使用项目设置中设置的 VirtualSet/Media/MediaOutputProxy_01 资产,以将其输出发送到活跃媒体描述(如果有)中定义的第一个输出端口。

摄像机

摄像机列表(Camera List)

列出CameraSwitcher在运行时可以管理的所有VirtualSetMediaInput Actor。
在运行项目时,CameraSwitcher UI会为该列表中的每个Actor创建一个摄像机缩略图,显示由该Actor管理的视频输入流。

用户界面

显示UI(Show UI)

确定运行项目时屏幕上的CameraSwitcher UI是否可见。

视频墙

主持人左侧的大视频墙不依赖于任何媒体描述中的任何输入。它主要是由媒体框架提供的基本构建块构建的。

你可以在 Virtual_Studio_Kit/Textures/Video 文件夹内找到用于该视频墙的媒体框架资产。

Video Wall Assets

  • EngineFeatures 是设置为从 .mp4 文件读取视频的文件媒体源,你可以在项目的 Movies 文件夹找到它。 WallMediaPlayer 控制该 EngineFeatures 文件源中的视频播放。当创建该WallMediaPlayer资产时,它会自动创建一个对应的媒体纹理资产 T_WallMediaPlayer ,用来接收从视频源读取的帧。
    如需获取创建此类资产以播放自己的视频文件的分步指南,请参阅 播放视频文件 页面。

  • M_WallVideoPlayer 材质从 T_WallMediaPlayer 媒体纹理采样像素,并发送到 Emissive 输出。这样在屏幕上渲染时,会给视频增加一些光亮。
    Video Wall Material Graph

  • 最后, WallPlayerSetup 蓝图的构造脚本启动视频墙并循环播放。关卡中已经放置了该类的一个实例,因此每次加载关卡并生成类时,都会在幕墙上播放视频。这样,无论你是在虚幻编辑器中还是正在运行项目,视频墙始终在后台播放。

    点击查看大图。

演播室模块化工具

虚拟演播室示例包含模块化资产库,其中包括静态网格体、材质、纹理等。你可以用此类资产创建自己的演播室布局,类似上文中描述的默认关卡内的布局。

你可以可内容浏览器的 Virtual_Studio_Kit 文件夹中找到此资产库:

地图(Maps) 文件夹中还有多个关卡,包含了预制演播室:

你可以在虚幻编辑器中打开,查看此类虚拟演播室布局示例。此类布局仅能使用工具包中的资产进行构建。

拖动滑块查看演播室布局示例

与开始使用虚拟演播室示例时打开的默认 TrackerlessStudio 关卡不同,地图(Maps)文件夹中的其他演播室关卡示例默认未设置摄像机和媒体板。如需将SDI视频源引入此类关卡示例,你需要使用新的CineCamera Actor和VirtualSetMediaInput Actor对其进行设置。你可以通读上文,了解默认关卡的设置方式并以此为模型应用至自己的关卡中。

欢迎帮助改进虚幻引擎文档!请告诉我们该如何更好地为您服务。
填写问卷调查
取消