Unity3D:视频播放器 (Video Player) 组件

推荐:将NSDT场景编辑器加入你的3D工具链
3D工具集:NSDT简石数字孪生

视频播放器 (Video Player) 组件

使用视频播放器组件可将视频文件附加到游戏对象,然后在运行时在游戏对象的纹理上播放。

以下截屏显示了一个连接到球形游戏对象的视频播放器组件。

默认情况下,视频播放器组件的材质属性设置为游戏对象的主纹理,这意味着当视频播放器组件附加到具有渲染器的游戏对象时,它会自动将自身分配给该渲染器上的纹理(因为这是游戏对象的主纹理)。在这里,游戏对象具有网格渲染器组件,因此视频播放器会自动将其分配给渲染器字段,这意味着视频剪辑在网格渲染器的纹理上播放。

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)
附加到球形游戏对象的视频播放器组件,在游戏对象的主纹理(在本例中为网格渲染器的纹理)上播放视频剪辑

还可设置要播放视频的特定目标,包括:

  • 摄像机平面
  • 渲染纹理
  • 材质纹理参数
  • 组件中的任何纹理字段

VideoPlayer 组件参考

视频播放器 (Video Player) 组件
视频播放器 (Video Player) 组件
属性功能
Source选择视频源类型。
Video Clip视频剪辑分配给视频编辑器。
Video Clip使用此字段来定义分配给视频播放器组件的视频剪辑。将视频文件拖放到此字段中,或单击该字段右侧的圆圈,然后从资源列表中选择文件(如果该文件位于 Project 文件夹中)。
URL从 URL(例如 http:// 或 file://)分配视频。Unity 在运行时从此 URL 读取视频。
URL输入要分配给视频播放器的视频的 URL。
Browse…单击此项可快速浏览本地文件系统并打开以 file:// 开头的 URL。
Play On Awake勾选 Play On Awake 复选框可在场景启动时播放视频。如果希望在运行时的另一个点触发视频播放,请取消勾选此复选框。此情况下可使用 Play() 命令通过脚本触发视频播放。
Wait For First Frame如果勾选 Wait For First Frame 复选框,Unity 将在游戏开始前等待源视频的第一帧准备好显示。如果取消勾选此复选框,可能会丢弃前几帧以使视频时间与游戏的其余部分保持同步。
Loop勾选 Loop 复选框可使视频播放器组件在源视频到达结尾时循环播放视频。如果未勾选此复选框,视频到达结尾时将停止播放。
Skip On Drop启用此选项时,如果视频播放器组件检测到播放位置与游戏时钟之间的漂移,则视频播放器将向前跳过。禁用此选项后,视频播放器不会尝试校正漂移,而是系统地播放所有帧。
Playback Speed此滑动条和数字字段表示播放速度的乘数,为 0 到 10 之间的值。默认情况下,该字段设置为 1(正常速度)。如果该字段设置为 2,则视频以其正常速度的两倍进行播放。
Render Mode使用下拉选单来定义视频的渲染方式。
Camera Far Plane在摄像机的远平面上渲染视频。
Camera Near Plane在摄像机的近平面上渲染视频。
Camera定义接收视频的摄像机
Alpha添加到源视频的全局透明度级别。此属性允许透过平面看到平面背后的元素。请参阅视频透明度支持文档以了解有关 Alpha 通道的更多信息。
Render Texture将视频渲染到渲染纹理中。
Target Texture定义视频播放器组件用于渲染图像的渲染纹理。
Material Override通过游戏对象渲染器的材质将视频渲染到游戏对象的选定纹理属性中。
Renderer视频播放器组件用于渲染图像的渲染器。设置为 None 时,使用与视频播放器组件位于同一游戏对象上的__渲染器。 | ||| Auto-Select Property__启用此选项时,视频播放器组件会自动选择渲染器的主纹理。禁用此选项时,可以手动设置“材料属性”选项。
Material Property接受视频播放器组件图像的材质纹理属性的名称。
API Only将视频渲染到 VideoPlayer.texture 脚本 API 属性中。必须使用脚本将纹理分配给其预期目标。
Aspect Ratio在使用相应的__渲染模式 (Render Mode)时,用于填充__摄像机近平面 (Camera Near Plane)摄像机远平面 (Camera Far Plane) 或__渲染纹理 (Render Texture)__ 的图像的宽高比。
No Scaling不使用缩放。视频在目标矩形内居中。
Fit Vertically对源进行缩放以垂直适应目标矩形,在必要时裁剪左侧和右侧或在每侧留下黑色区域。此情况下保留源宽高比。
Fit Horizontally对源进行缩放以水平适应目标矩形,在必要时裁剪顶部和底部区域或在顶部和底部留下黑色区域。此情况下保留源宽高比。
Fit Inside对源进行缩放以适合目标矩形而不必裁剪。根据需要,在左侧和右侧或上方和下方留下黑色区域。此情况下保留源宽高比。
Fit Outside对源进行缩放以适应目标矩形,而不必在左侧和右侧或上方和下方留下黑色区域,可根据需要进行裁剪。此情况下保留源宽高比。
Stretch在水平和垂直方向均进行缩放以适应目标矩形。不会保留源宽高比。
Audio Output Mode定义如何输出源的音频轨道。
None不播放音频。
Audio Source音频样本发送到选定音频源,允许应用 Unity 的音频处理。
Direct音频样本绕过 Unity 的音频处理,直接发送到音频输出硬件。
API Only (Experimental)音频样本发送到关联的 AudioSampleProvider
Controlled Tracks视频中的音频轨道数量。

仅在 Source  URL 时显示。Source  Video Clip 时,通过检查视频文件来确定轨道数。
Track Enabled勾选相关复选框进行启用后,关联的音频轨道将用于播放。必须在播放前设置此项。

复选框左侧的文本提供有关音频轨道的信息,具体而言就是音频轨道编号、语言和通道数。

例如,在以上截屏中,文本为 Track 0 [und.1 ch]。这表示它是第一个音频轨道 (Track 0),语言未定义 (und.),并且该音频轨道有一个声道 (1 ch),表示它是单声道音频轨道。

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

仅当源是具有一个或多个音频轨道的视频剪辑或源为 URL(允许您指示在播放期间预计来自 URL 的音频轨道数)时,才显示此属性。
Audio Source用于播放音频轨道的音频源。目标音频源也可以播放音频剪辑。

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

仅当 Audio Output Mode 设置为 Audio Source 时,才显示此属性。
Mute将关联的音频轨道静音。在 Audio Source 模式中,将使用音频源的控件。

仅当 Audio Output Mode 设置为 Direct 时,才显示此属性。
Volume关联音频轨道的音量。在 Audio Source 模式中,将使用音频源的音量。

仅当 Audio Output Mode 设置为 Direct 时,才显示此属性。

视频播放器脚本示例

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

// VideoPlayer 函数示例

using UnityEngine;

public class Example : MonoBehaviour
{
    void Start()
    {
        // 将一个 VideoPlayer 附加到主摄像机。
        GameObject camera = GameObject.Find("Main Camera");

        // 将 VideoPlayer 添加到摄像机对象时,
        // 它会自动瞄准摄像机背板,无需更改 videoPlayer.targetCamera。
        var videoPlayer = camera.AddComponent<UnityEngine.Video.VideoPlayer>();

        // Play on Awake 默认为 true。将它设置为 false 以避免下面设置的 URL
        // 自动开始播放,因为我们处于 Start() 状态。
        videoPlayer.playOnAwake = false;

        // 默认情况下,添加到摄像机的 VideoPlayer 将使用远平面。
        // 让我们改为瞄准近平面。
        videoPlayer.renderMode = UnityEngine.Video.VideoRenderMode.CameraNearPlane;

        // 这将使场景通过正在播放的视频可见。
        videoPlayer.targetCameraAlpha = 0.5F;

        // 设置要播放的视频。URL 支持本地绝对或相对路径。
        // 此处使用绝对路径。
        videoPlayer.url = "/Users/graham/movie.mov";

        // 跳过前 100 帧。
        videoPlayer.frame = 100;

        // 完成后从头重新开始。
        videoPlayer.isLooping = true;

        // 每次到达结尾时,我们都会将播放速度减慢 10 倍。
        videoPlayer.loopPointReached += EndReached;

        // 开始播放。这意味着 VideoPlayer 可能需要做好准备工作(预留
        // 资源、预加载几帧等)。为了更好地控制此项准备工作
        // 带来的延迟,您可以使用 videoPlayer.Prepare() 及其
        // prepareCompleted 事件。
        videoPlayer.Play();
    }

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

3D建模学习工作室整理翻译,转载请注明出处!

上一篇:Unity3D:音频设置 (mvrlink.com)

下一篇:Unity3D:从 MovieTexture 迁移到 VideoPlayer (mvrlink.com)

NSDT场景编辑器 | NSDT 数字孪生 | GLTF在线编辑器 | 3D模型在线转换 | UnrealSynth虚幻合成数据生成器 | 3D模型自动纹理化工具
2023 power by nsdt©鄂ICP备2023000829号