版本:Unity 6 (6000.0)
语言:English
视频播放器
从 MovieTexture 迁移到 VideoPlayer

视频播放器组件

使用视频播放器组件游戏对象的组成部分,一个游戏对象可以包含任意数量的组件。Unity 拥有许多内置组件,您也可以通过编写继承自 MonoBehaviour 的脚本创建自己的组件。更多信息
参见 词汇表
视频文件附加到游戏对象Unity 场景中的基本对象,可以表示角色、道具、场景、摄像机、路点等等。游戏对象的功能由附加到它的组件定义。更多信息
参见 词汇表
,并在运行时在游戏对象的纹理渲染游戏对象、精灵或 UI 元素时使用的图像。纹理通常应用于网格的表面,以使其具有视觉细节。更多信息
参见 词汇表
上播放。

下面的屏幕截图显示了一个附加到球形游戏对象的视频播放器组件。

默认情况下,视频播放器组件的材质属性设置为游戏对象的主纹理,这意味着当视频播放器组件附加到具有渲染器的游戏对象时,它会自动将其自身分配到该渲染器上的纹理(因为这是游戏对象的主纹理)。这里,游戏对象具有一个网格Unity 的主要图形基元。网格构成了 3D 世界的大部分。Unity 支持三角形或四边形多边形网格。NURBS、NURMS、细分曲面必须转换为多边形。更多信息
参见 词汇表
渲染器组件,因此视频播放器会自动将其分配到渲染器字段,这意味着视频片段将在网格渲染器一个网格组件,它从网格过滤器获取几何体并在由对象变换组件定义的位置渲染它。更多信息
参见 词汇表
的纹理上播放。

A Video Player component attached to a spherical GameObject, playing the Video Clip on the GameObject’s main Texture (in this case, the Texture of the Mesh Renderer)
一个附加到球形游戏对象的视频播放器组件,在游戏对象的主纹理(在本例中,是网格渲染器的纹理)上播放视频片段

您还可以为视频设置特定的播放目标,包括

  • 一个摄像机一个组件,它创建场景中特定视点的图像。输出要么绘制到屏幕上,要么作为纹理捕获。更多信息
    参见 词汇表
    平面

  • 一个渲染纹理一种特殊的纹理类型,在运行时创建和更新。要使用它们,首先创建一个新的渲染纹理,并指定其中一个摄像机渲染到其中。然后,您可以像使用普通纹理一样在材质中使用渲染纹理。更多信息
    参见 词汇表

  • 一个材质定义如何渲染表面的资产。更多信息
    参见 词汇表
    纹理参数

  • 组件中的任何纹理字段

视频播放器组件参考

属性 描述
选择视频的源类型。
视频片段 选择要分配给视频播放器组件的视频片段。这在 Web 平台上不受支持。
URL 输入要分配给视频播放器的视频的 URL(例如,http:// 或 file://)。
更新模式 设置视频播放器组件用来更新其时间的时钟源。
DSP 时间 使用处理音频的相同时钟源。
游戏时间 使用与游戏时钟相同的时钟源。此时钟源受时间缩放和捕获帧率设置的影响。
未缩放的游戏时间 使用与游戏时钟相同的时钟源,但不受时间缩放或捕获帧率的影响。
唤醒时播放将其设置为 true 以使音频源在唤醒时开始播放 更多信息
参见 词汇表
场景场景包含游戏环境和菜单。可以将每个唯一的场景文件视为一个唯一的关卡。在每个场景中,放置环境、障碍物和装饰,从本质上讲,将游戏分成部分进行设计和构建。更多信息
参见 词汇表
启动时播放视频。如果希望在运行时的另一个时间点触发视频播放,则取消选中。通过使用 Play() 命令进行脚本编写来触发它。
等待第一帧 在游戏开始前等待源视频的第一帧准备好显示。取消选中它以使视频时间与游戏的其余部分保持同步,这可能会导致丢弃前几帧。
循环 当源视频到达结尾时循环播放。取消选中它以在视频到达结尾时停止播放。
丢帧时跳过 启用此选项时,如果视频播放器组件检测到播放位置与游戏时钟之间存在偏差,则视频播放器将向前跳过。禁用此选项时,视频播放器不会校正偏差,并系统地播放所有帧。
播放速度 设置播放速度的乘数,值为 0 到 10 之间。默认设置为 1(正常速度)。如果该字段设置为 2,则视频以两倍于其正常速度播放。
渲染模式 选择视频的渲染方式。
摄像机远平面 在摄像机的远平面上渲染视频。
摄像机近平面 在摄像机的近平面上渲染视频。
渲染纹理 将视频渲染到渲染纹理中。
材质覆盖 通过渲染器的材质将视频渲染到游戏对象的选定纹理属性中。
仅限 API 将视频渲染到VideoPlayer.texture 脚本 API 属性中。必须使用脚本将其分配到预期的目标。
摄像机 定义接收视频的摄像机
Alpha 设置要添加到源视频的全局透明度级别。这允许平面后面的元素通过它可见。有关 Alpha 通道的更多信息,请参阅视频透明度支持
3D 布局 选择源视频中 3D 内容的布局。
视频没有任何 3D 内容。
并排 视频具有 3D 内容,其中左眼占据视频帧的左侧一半,右眼占据右侧一半。
上下 视频具有 3D 内容,其中左眼占据视频帧的上半部分,右眼占据下半部分。
目标纹理 定义视频播放器组件在其上渲染图像的渲染纹理。
纵横比图像比例尺寸的关系,例如其宽度和高度。
参见 词汇表
设置当使用相应的渲染模式时填充摄像机近平面摄像机远平面渲染纹理的图像的纵横比。
不缩放 不使用缩放。视频以居中的方式显示在目标矩形中。
垂直填充 缩放源以垂直填充目标矩形,裁剪左右两侧或在必要时在每一侧留出黑色区域。源纵横比保持不变。
水平填充 缩放源以水平填充目标矩形,裁剪顶部和底部区域或在需要时在顶部和底部留出黑色区域。源纵横比保持不变。
填充内部 缩放源以填充目标矩形,无需裁剪。根据需要在左侧和右侧或顶部和底部留出黑色区域。源纵横比保持不变。
填充外部 缩放源以填充目标矩形,在左侧和右侧或顶部和底部不留黑色区域,根据需要裁剪。源纵横比保持不变。
拉伸 水平或垂直缩放以填充目标矩形。源纵横比不会保留。
渲染器 选择视频播放器组件在其上渲染图像的渲染器。当设置为时,将使用与视频播放器组件位于同一游戏对象上的渲染器
自动选择属性 启用此选项时,视频播放器组件会自动选择渲染器的主纹理。禁用此选项时,可以手动设置材质属性选项。
材质属性 接收视频播放器组件图像的材质纹理属性的名称。
音频输出模式 定义如何输出源的音频轨道。
不播放音频。
音频源 音频样本被发送到选定的音频源一个组件,它在场景中将音频片段回放给音频监听器或通过音频混音器。更多信息
参见 词汇表
,从而应用 Unity 的音频处理。
直接 音频样本直接发送到音频输出硬件,绕过 Unity 的音频处理。
仅限 API(实验性) 音频样本被发送到关联的AudioSampleProvider
受控轨道 视频中音频轨道的数量。

仅在URL时显示。当视频片段时,轨道的数量通过检查视频文件来确定。
轨道编号 启用关联的音频轨道以供播放。必须在播放之前设置此选项。

复选框左侧的文字提供了有关音频轨的信息,具体包括轨道的编号、语言和声道数。

当源为 URL 时,此信息仅在播放期间可用。

此属性仅在您的源为包含音频轨(或多条轨)的视频剪辑,或您的源为 URL(允许您指示在播放期间从 URL 预期获得多少条轨)时出现。
音频源 通过其播放音频轨的音频源。目标音频源也可以播放音频剪辑。

音频源的播放控制(脚本 API 中的Play On AwakePlay())不适用于视频源的音频轨。

此属性仅在音频输出模式设置为音频源时出现。
静音 静音关联的音频轨。在音频源模式下,使用音频源的控制。

此属性仅在音频输出模式设置为直接时出现。
音量 关联音频轨的音量。在音频源模式下,使用音频源的音量。

此属性仅在音频输出模式设置为直接时出现。

视频播放器脚本示例

以下脚本演示了 Video Player 组件的一些功能。

// Examples of Video Player function

using UnityEngine;

public class Example : MonoBehaviour
{
    void Start()
    {
        // Will attach a Video Player to the main camera.
        GameObject camera = GameObject.Find("Main Camera");

        // VideoPlayer automatically targets the camera backplane when it is added
        // to a camera object, no need to change videoPlayer.targetCamera.
        var videoPlayer = camera.AddComponent<UnityEngine.Video.VideoPlayer>();

        // Play on awake defaults to true. Set it to false to avoid the url set
        // below to auto-start playback since we're in Start().
        videoPlayer.playOnAwake = false;

        // By default, Video Players added to a camera will use the far plane.
        // Let's target the near plane instead.
        videoPlayer.renderMode = UnityEngine.Video.VideoRenderMode.CameraNearPlane;

        // This will cause our Scene to be visible through the video being played.
        videoPlayer.targetCameraAlpha = 0.5F;

        // Set the video to play. URL supports local absolute or relative paths.
        // Here, using absolute.
        videoPlayer.url = "/Users/graham/movie.mov";

        // Skip the first 100 frames.
        videoPlayer.frame = 100;

        // Restart from beginning when done.
        videoPlayer.isLooping = true;

        // Each time we reach the end, we slow down the playback by a factor of 10.
        videoPlayer.loopPointReached += EndReached;

        // Start playback. This means the Video Player may have to prepare (reserve
        // resources, pre-load a few frames, etc.). To better control the delays
        // associated with this preparation one can use videoPlayer.Prepare() along with
        // its prepareCompleted event.
        videoPlayer.Play();
    }

    void EndReached(UnityEngine.Video.VideoPlayer vp)
    {
        vp.playbackSpeed = vp.playbackSpeed / 10.0F;
    }
}

VideoPlayer

视频播放器
从 MovieTexture 迁移到 VideoPlayer