Unity 视频播放 VideoPlayer Component

文档

使用 video player component 可以播放视频文件。比如过场动画,或者在3D对象上播放视频,比如场景中的电视机模型上。

支持的格式:MP4,mov,webm,wmv

例如下面的截图,在一个球形3D对象的材质贴图上播放视频的效果:

Material Property的值自动设置成了GameObject的Renderer的材质的Main Texture。视频被渲染到了该贴图上,看起来,视频被播放在球面上了。

当然,视频还可以被渲染到

  • Camera Plane(near or far)
  • Render Texture
  • Material 的某个贴图
  • 其它指定的Texture

参数

  • Source:指定视频源

    • Video Clip:播放指定的视频对象
      • Video Clip:将视频文件从Project窗口,直接拖到Video Clip属性来指定视频。
    • URL:指定视频文件地址
      • URL:输入视频文件地址
      • Browse:打开目录框,查找指定文件
  • Play On Awake:运行场景时自动播放。如果不选,则需要在代码中,适当时刻调用Play接口来播放。

  • Wait For First Frame:选中后,Unity会在视频数据准备好播放后,才开始执行(Start),否则视频可能在加载完成后跳过Start到加载完成之间的时间,来保证播放时间与Game Object生命周期相同。

  • Loop:是否循环。

  • Playback Speed:播放速度倍数,0-10,1为正常速度,2为2倍速度。

  • Render Mode:渲染模式(目标)

    • Camera Far Plane:摄像机的远平面,会被摄像机渲染的3D对象遮挡。需要指定摄像机。
    • Camera Near Plane:摄像机近平面,
      • Alpha:渲染到摄像机平面时,可以设置该透明度参数。
    • Render Texture:将视频渲染到 Render Texture。
      • Target Texture:指定Render Texture 对象。
    • Material Override:渲染到指定的Renderer的材质的贴图上。
      • Renderer:渲染到哪个渲染器上。如果不指定,则使用该GameObject身上的Renderer对象。
      • Material Property:渲染到渲染器的哪个贴图上。
    • API Only:渲染到VideoPlayer.texture上,必须在代码中将Texture赋值到该属性上来播放。
  • Aspect Ratio:当Render Mode 为Camera Far Plane,Camera Near Plane,或Render Texture时,根据目标平面或贴图尺寸,如果进行填充。

    • No Scaling:不缩放,在目标矩形区域的中心。
    • Fit Vertically:按照高度进行适配,宽度上,左右会裁剪掉,或者留黑边。保持视频宽高比。
    • Fit Horizontally:按照宽度进行适配。高度上,上下会裁剪掉,或者留黑边。保持原始比例。
    • Fit Inside:保证视频完全在区域内,上下,或左右可能会有黑边。保持视频宽高比。
    • Fit Outside:保证不留黑边,但是可能会在上下,或左右进行裁剪。保持视频宽高比。
    • Stretch:拉伸,根据目标区域,对视频进行拉伸,不保持原始比例。
  • Audio Output Mode:定义音频轨道输出目标。

    • None:不播放音频
    • Audio Source:播放到指定的Audio Source上。
    • Direct:直接播放,从声卡输出。
    • API Only:输出到设置的AudioSampleProvider上。
  • Controlled Tracks:控制的视频中的音轨数量。当Source是URL时,可以指定。如果是Video Clip,则会检测视频中的音轨数来设置。

  • Track Enabled:是否播放相关的音轨。该选项只能在播放前设置。当音轨被识别出来后,开关前面的文本会编程音轨的名字,如上图中是 Track 0[und, 1 ch],表示0号音轨,语言为und(未知),有1个声道。

    如果是URL,则这些信息只有在播放时才知道。

    • Audio Source:播放到哪个Audio Source。如果视频音轨播放到该Audio Source,则不能调用Audio Source的控制,Play On Awake以及在脚本中调用Play,都将无效。当Audio Output Mode为Audio Source时,才出现该属性。
    • Mute:静音该音轨。当Audio Output Mode为Direct时,才出现该属性。
    • Volume:音轨播放音量。当Audio Output Mode为Direct时,才出现该属性。

脚本使用VideoPlayer的例子:

using UnityEngine;
public class Example : MonoBehaviour
{
	void Start()
	{
		GameObjec camObject = GameObject.Find("Main Camera");
		VideoPlayer videoPlayer = camObject.AddComponent<Video.VideoPlayer>();
		videoPlayer.playOnAwake = false;
		videoPlayer.renderMode = Video.VideoRenderMode.CameraNearPlane;
		// 可以透过视频看到场景中的对象
		videoPlayer.targetCameraAlpha = 0.5f;
		videoPlayer.url = "/User/graham/movie.mov";
		// 跳过前100帧
		videoPlayer.frame = 100;
		// 监听播放完一遍
		videoPlayer.loopPointReached += OnReached;
		videoPlayer.Play();
	}
	
	void OnReached(VideoPlayer vp)
	{
		vp.playbackSpeed = 0.5f;
	}
}

经验:

在视频上显示UI

将视频渲染到UICamera的Far Plane上。

控制视频进度

float min = 0;
float max = (float)videoPlayer.clop.length;
videoPlayer.time = 4;// min<=4<=max
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Unity中使用VideoPlayer组件播放视频,您需要执行以下步骤: 1.将视频文件添加到Unity项目中。确保视频格式受支持,例如MP4。 2.在Unity场景中创建一个空对象并将其命名为“VideoPlayer”。 3.将VideoPlayer组件添加到该对象中。您可以在菜单中找到它:Component->Video->Video Player。 4.在VideoPlayer组件中,将“Video Source”属性设置为“Video Clip”,然后将视频文件拖动到“Video Clip”字段中。 5.您可以设置视频的其他属性,例如播放速度,是否循环播放等。 6.在代码中,您可以使用VideoPlayer组件的方法来控制视频播放。例如,您可以使用“Play”方法开始播放视频,并使用“Pause”方法暂停视频。 下面是一些示例代码,可以帮助您开始使用VideoPlayer组件: ```csharp using UnityEngine; using UnityEngine.Video; public class VideoPlayerController : MonoBehaviour { public VideoPlayer videoPlayer; private void Start() { // Play video videoPlayer.Play(); } private void Update() { // Pause video when the 'P' key is pressed if (Input.GetKeyDown(KeyCode.P)) { videoPlayer.Pause(); } // Resume video when the 'R' key is pressed if (Input.GetKeyDown(KeyCode.R)) { videoPlayer.Play(); } } } ``` 在上面的示例中,我们在代码中获取了VideoPlayer组件,并在“Start”方法中开始播放视频。然后,在“Update”方法中,我们检查用户是否按下了“P”键或“R”键,并相应地暂停或恢复视频播放

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值