Blackmagic Video输入/输出快速入门

从支持的Blackmagic媒体卡获取视频放入到虚幻引擎,并将捕获的视频输出从虚幻引擎发送到Blackmagic卡端口上的详细指南。

Choose your operating system:

Windows

macOS

Linux

blackmagic-qs-banner.png

在这个快速入门指南中,我们将介绍如何设置一个虚幻引擎项目来使用Blackmagic Design中的专业视频卡。在本指南的最后:

  • 你将在你的虚幻引擎项目内播放来自你的Blackmagic卡的视频输入。

  • 你将能够从编辑器和运行时应用程序捕获相机视点,并将它们发送到Blackmagic卡上的SDI端口。

  • 当你想进行设置以对视频输入进行更高级的调整时(比如校正镜头变形和应用色度抠像效果),你知道该怎么做。

有关展示下述许多元素付诸实践的工作示例,请参阅Epic Games启动器的学习(Learn)选项卡所提供的 虚拟工作室 展示。

先决条件:

  • 确保你拥有Blackmagic Design支持的卡,并安装了必要的驱动程序和软件。详情请参阅 Blackmagic媒体引用 页面。

  • 确保你的卡正常工作,并且你有一些视频输入传递到该卡的至少一个SDI端口。

  • 打开要与视频源集成的虚幻引擎项目。此页面显示了 第三人称 蓝图模板中的步骤,但是相同的步骤在任何项目中都同样适用。

本指南中使用的Blackmagic Design组件构建在 媒体框架 之上,我们将使用 蓝图 在运行时编写视频捕获过程的脚本。建议你对这些主题有一定的了解,但这不是必需的。

1 - 设置项目

在你从Blackmagic卡获取视频放入到虚幻引擎关卡中,并通过Blackmagic卡的某个SDI端口发送来自虚幻引擎的输出之前,你需要做一些基本设置来为项目启用Blackmagic媒体播放器插件。

如果你的虚幻引擎项目使用了 影视与实况活动 分类下的模板,可能已经启用了必要的插件。如果没有,请按以下步骤启用它们。

步骤

  1. 在虚幻编辑器中打开你想要使用Blackmagic视频输入/输出的项目。

  2. 在主菜单中选择 编辑(Edit)> 插件(Plugins)

  3. 插件(Plugins) 窗口中,查找 Blackmagic媒体播放器(Blackmagic Media Player) 插件。勾选其 启用(Enabled) 复选框。

    Enable the Blackmagic Media Player Plugin

  4. 媒体(Media) 类别下找到 媒体框架工具(Media Framework Utilities) 插件。选中其 启用(Enabled) 复选框(如果尚未选中)。

    Enable the Media Framework Utilities Plugin

  5. 单击 立即重启(Restart Now) 重新启动虚幻编辑器并重新打开项目。
    Restart Now

最终结果

你的项目现在已经准备好接受来自Blackmagic卡的视频,并将渲染的输出发送到该卡。在接下来的章节中,我们将准备好并开始播放视频。

2 - 在虚幻引擎中渲染视频输入

在这个过程中,我们将使来自Blackmagic卡的视频输入在虚幻编辑器的当前关卡中可见。此过程会用到媒体束,这是一种资源,它将媒体框架中涉及的几种不同类型的资源打包在一起,并提供对一些高级特性的控制,如镜头变形、色度抠像、颜色校正等。

步骤

  1. 在你的 内容浏览器(Content Browser) 中,展开 源(Sources) 面板(1)。右键单击并从上下文菜单(2)中选择 新建文件夹(New Folder)
    New Folder
    将你的新文件夹重命名为 Blackmagic

  2. 打开你的新文件夹,右键单击 内容浏览器(Content Browser) 并选择 媒体(Media)> 媒体束(Media Bundle)
    New Media Bundle

  3. 将在内容浏览器中自动选择新资源的名称,因此可以为其提供描述性名称:
    Name the Media Bundle 键入一个新名称,例如 BlackmagicMediaBundle ,然后按 Enter
    媒体框架资源的新文件夹将自动创建在媒体束旁边,使用后缀 _InnerAssets 命名。稍后我们将查看这些资源。

  4. 单击 内容浏览器(Content Browser) 中的 保存所有(Save All) 按钮保存新资源。
    Save All Assets

  5. 双击新媒体束以编辑其属性。媒体束能够播放来自引擎支持的任何媒体源的视频,因此你需要告诉它你想从Blackmagic卡获取视频。
    媒体源(Media Source) 属性中,从下拉列表中选择 Blackmagic媒体源(Blackmagic Media Source)
    Set the Blackmagic Media Source

  6. 一旦确定你希望媒体束处理的媒体源类型,你就可以设置该类型的源提供的任何配置属性。
    这里要为Blackmagic媒体源设置的最重要的东西是 配置(Configuration) 设置,用于确保该束设置为从正确的设备和输入端口捕获视频,并使用与实际视频源相同的分辨率和帧速率。单击箭头以打开设置子菜单,选择与你的设置匹配的选项,然后单击子菜单中的 应用(Apply)
    Blackmagic Media Source Configuration
    根据所安装的设备,你看到的选项可能有所不同。有关你可以为Blackmagic媒体源设置的所有属性的详细信息,请参阅 Blackmagic媒体引用 页面。

  7. 如果想对传入的视频应用任何补偿以解决镜头失真的问题,你可以在 镜头参数(Lens Parameters) 部分设置镜头的物理属性。
    Lens undistortion parameters
    这些镜头参数只是设置了镜头的物理属性。稍后编辑媒体束使用的材质实例时,你将实际激活镜头补偿。
    设置完媒体束的属性后,保存并关闭媒体束。

  8. 将你的 BlackmagicMediaBundle 资源从 内容浏览器(Content Browser) 拖到关卡视口中。
    Drag and drop the Media Bundle
    你将看到一个新的平面出现,显示当前在为你的媒体束配置的端口上播放的视频。使用视口(Viewport)工具栏中的变形工具来移动、旋转和调整它的大小。
    如果你的媒体束没有自动开始播放,选择它,然后单击 详细信息(Details) 面板中的 媒体束(Media Bundle)> 请求播放媒体(Request Play Media) 按钮。
    Request Play Media

  9. 现在,我们将了解如何将抠像和合成效果应用到视频流。
    回到媒体束编辑器中,单击工具栏中的 打开材质编辑器(Open Material Editor) 按钮,编辑这个媒体束用于将其传入视频源绘制到关卡中对象上的材质实例。
    Open Material Editor

    此材质实例保存在 BlackmagicMediaBundle_InnerAssets 文件夹中,该文件夹是用你的媒体束自动创建的。
    Material Instance

  10. 在材质实例编辑器中,你将看到许多公开的属性,为供你配置抠像、剪辑和颜色校正以及激活你在媒体束中设置的镜头失真校正。
    Material Instance Editor
    当你在材质实例编辑器中调整设置时,你可以看到你的更改对在主关卡视口中播放的视频源的影响。

    你可能会发现在材质实例编辑器的预览面板中查看所做更改的效果更为方便。为此,临时启用 IsValid 设置,并将其值设置为"1.0"。
    IsValid
    单击视口工具栏左上角的箭头,并在菜单中启用 实时(Realtime) 选项。
    Realtime viewport
    通过将预览网格体更改为平面或立方体,你将能够更容易地判断更改的效果。使用视口底部的控件:
    Preview mesh
    完成后,将 IsValid 设置返回到它的前一个值。

  11. 更改完材质实例属性后,单击工具栏中的 保存(Save) 按钮。

最终结果

此时,你应该正在虚幻引擎关卡内的SDI端口上播放视频,并且应该了解如何设置更高级的功能,如镜头变形和色度抠像。

如果你已经熟悉媒体框架,那么另一种将视频引入你的关卡的方法是在你的项目中创建一个新的 BlackmagicMediaSource 资源,并使用你在上述过程中在媒体束中设置的相同源属性对其进行设置。然后,创建你自己的 MediaPlayer MediaTexture 资源,以便在你的关卡上处理该源的播放。详情请参阅 媒体框架 文档。但是,我们建议使用上述媒体束,以在易用性和专业高质视频特性之间取得最佳平衡。

3 - 从虚幻编辑器输出采集

在此过程中,你将设置一个Blackmagic媒体输出对象,并使用虚幻编辑器中的 媒体采集(Media Captures) 面板将关卡中所选相机的视图输出到你的Blackmagic卡。

步骤

  1. 在内容浏览器中右键单击,选择 媒体(Media)> Blackmagic媒体输出(Blackmagic Media Output)
    New Blackmagic Media Output
    将你的新资源命名为 BlackmagicMediaOutput

  2. 双击你的新资源打开它进行编辑。就像创建Blackmagic媒体源一样,你必须设置 配置(Configuration) 属性来控制虚幻引擎发送到Blackmagic卡的视频源属性。单击箭头以打开子菜单,选择与你的视频设置匹配的选项,然后单击子菜单中的 应用(Apply)
    Blackmagic Media Output Configuration
    根据所安装的设备,你看到的选项可能有所不同。有关你可以在Blackmagic媒体输出中设置的所有属性的详细信息,请参阅 Blackmagic媒体引用 页面。
    完成后,保存并关闭你的媒体输出。

  3. 现在我们将在关卡中放置两个相机,为我们将发送到Blackmagic卡的输出提供视点。在 放置Actor(Place Actors) 面板中,打开 过场动画(Cinematic) 选项卡,并将 过场动画相机Actor(Cine Camera Actor) 的两个实例拖放到视口中。
    Drag and drop Cine Camera Actors
    将相机放置在关卡中你想要的位置,这样它们就能显示场景上的不同视点。

    导航 相机是一种完全按照你想要的方式来设置相机视点的快速而简便的方法。请参阅 在视口中导航Actor

  4. 从主菜单选择 窗口(Window)> 媒体采集(Media Capture) 。你将使用 媒体采集(Media Capture) 窗口来控制编辑器何时向你的Blackmagic设备发送输出,以及它在关卡中应该使用什么相机。
    Media Capture window

  5. 媒体视口采集(Media Viewport Capture) 区域下,找到 视口采集(Viewport Captures) 控件。单击 + 按钮将新的采集添加到此列表。
    Add a viewport capture

  6. 展开新条目。首先,我们将添加想要从中进行采集的相机。在 锁定的相机Actor(Locked Camera Actors) 控件中,单击 + 按钮添加新条目。
    Add a camera actor
    然后,使用下拉列表选择你放置在关卡中的相机之一。
    Select the camera actor
    重复相同的步骤将另一个相机添加到列表中。

  7. 现在,设置要采集这些相机的输出。将 媒体输出(Media Output) 控件设置为指向你在上面创建的新Blackmagic媒体输出资源。为此,你可以在下拉列表中选择它,或者从内容浏览器中拖动Blackmagic媒体输出资源并将其放入此槽中。
    Set the Blackmagic Media Output

  8. 在窗口顶部,单击 采集(Capture) 按钮。
    Start capturing
    你将在窗口底部看到一个新框架,该框架显示要发送到Blackmagic卡的输出预览。如果你已经将这个端口连接到另一个下游设备,你应该会开始看到输出。
    Active Media Capture

  9. 为此视口采集而添加到锁定的相机Actor(Locked Camera Actors)列表中的各个相机由视频预览上方的相应按钮表示。单击这些按钮在两个视图之间来回切换采集。

    Switch Cameras

最终结果

现在你已经设置虚幻编辑器,以将你关卡中的相机输出流送到Blackmagic卡上的端口。接下来,我们将看到如何在正在运行的虚幻引擎项目中使用蓝图脚本执行相同的操作。

4 - 在运行时输出采集

你在上一部分中使用的 媒体采集(Media Capture) 窗口是一种向Blackmagic卡发送采集的实用且简单的方法。然而,它仅可在虚幻编辑器中使用。要在将项目作为独立应用程序运行时执行相同的操作,需要使用媒体输出提供的蓝图API。在这个过程中,我们将在关卡蓝图中设置一个简单的切换开关,在玩家按下键盘上的某个键时,该开关会启动或停止采集。

Epic Games启动器的学习(Learn)选项卡所提供的 Virtual Studio 展示包含一个UMG界面控件,演示如何从屏幕上的用户界面控制采集。

步骤

  1. 从虚幻编辑器中的主工具栏中,选择 蓝图(Blueprints)> 打开关卡蓝图(Open Level Blueprint)
    Open Level Blueprint

  2. 我们需要从你创建的Blackmagic媒体输出资源开始,你将在该资源中标识要输出到的端口。在 我的蓝图(My Blueprint) 面板的 变量(Variables) 列表中,单击 + 按钮添加新变量。
    New Variable

  3. 详细信息(Details) 面板中,将 变量名(Variable Name) 设置为 BlackmagicMediaOutput ,并使用 变量类型(Variable Type) 下拉列表使其成为 Blackmagic媒体输出对象引用(Blackmagic Media Output Object Reference)
    Blackmagic Media Output Object Reference

  4. 启用 可编辑实例(Instance Editable) 设置(1),并编译蓝图。然后,在 默认值(Default Value) 部分中,将变量设置为指向你在内容浏览器(2)中创建的Blackmagic媒体输出资源。
    Set the default value

  5. Ctrl ,将 BlackmagicMediaOutput 我的蓝图(My Blueprint) 面板中的变量列表拖放到 事件图表(Event Graph) 中。
    Control+drag the BlackmagicMediaOutput

  6. 单击并从 BlackmagicMediaOutput 变量节点的输出端口拖动,选择 媒体(Media)> 输出(Output)> 创建媒体采集(Create Media Capture)
    Create Media Capture
    将你的节点连接到 事件BeginPlay(Event BeginPlay) 节点,如下所示:
    Event Begin Play
    这将从Blackmagic媒体输出创建一个新的媒体采集对象。媒体采集提供了两个主要的蓝图函数,我们将使用它们来控制采集: 采集活动场景视口(Capture Active Scene Viewport) 停止采集(Stop Capture)

  7. 首先,我们将把新媒体采集对象保存到它自己的变量中,这样我们就可以在其他地方再次访问它。单击并从 创建媒体采集(Create Media Capture) 节点的输出端口拖动,选择 提升到变量(Promote to Variable)
    Promote to variable
    我的蓝图(My Blueprint) 面板的变量列表中将新变量重命名为 MediaCapture

    务必在这里将媒体采集保存为变量。如果不这样做,虚幻引擎的垃圾回收器可能会在你用完它之前自动销毁它。

  8. Ctrl 并将 MediaCapture 变量拖动到 事件图表(Event Graph) 中。
    Control+drag the MediaCapture

  9. MediaCapture 变量节点的输出端口点击拖动,选择 媒体(Media)> 输出(Output)> 采集活动场景视口(Capture Active Scene Viewport) 。再做一次,选择 媒体(Media)> 输出(Output)> 停止采集(Stop Capture)
    Start and stop capture

  10. 右键单击 事件图表(Event Graph) ,选择 输入(Input)> 键盘事件(Keyboard Events)> P 。单击并拖动 P 节点的 已按下(Pressed) 输出,选择 流程控制(Flow Control)> FlipFlop
    FlipFlop

  11. FlipFlop 节点的 A 输出连接到 采集活动场景视口(Capture Active Scene Viewport) 节点的输入事件,将 FlipFlop 节点的 B 输出连接到 停止采集(Stop Capture) 节点的输入事件,如下图所示:
    Connect the nodes

  12. 编译并保存蓝图,并尝试运行你的项目。单击主工具栏运行(Play)按钮旁边的箭头,选择 新建编辑器窗口(在编辑器中运行)(New Editor Window (PIE)) 独立窗口运行(Standalone Game) 选项。
    Launch the Project

    只有当你在 新建编辑器窗口(在编辑器中运行)(New Editor Window (PIE)) 独立窗口运行(Standalone Game) 中运行项目时,来自编辑器的视频采集才会工作。它不能在默认的 选中的视口(Selected Viewport) 模式或 模拟(Simulate) 模式下工作。
    此外,项目的视口分辨率(即虚幻引擎生成的每个帧的渲染图像大小)必须与活动媒体配置文件中的输出分辨率集匹配,使它是输出视频源的正确大小。

    项目启动后,你应该能够按键盘上的 P 按钮来切换将输出从引擎发送到Blackmagic卡。

最终结果

至此,你应该对如何使用Blackmagic媒体源、媒体束和媒体采集系统有了基本的了解,并且应该了解所有这些元素如何协力工作,以在虚幻引擎中输入和输出专业视频。

自己动手

现在你已经了解了使用Blackmagic卡交换视频输入和输出的新项目的基本知识,你可以继续自学:

  • 在你的媒体束创建的材质实例中探索引擎内抠像解决方案。尝试将一些绿屏视频传递到卡的输入端口,并使用材质实例中的抠像控件来移除背景。

  • 浏览 Virtual Studio 展示,看看它为这个基本设置添加了什么,比如它的屏幕上的UI,此UI可以在运行时切换相机和控制视频采集。

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