class in UnityEngine.Windows.WebCam

Switch to Manual


Records a video from the web camera directly to disk.

The final video recording will be stored on the file system in the MP4 format.

The example below records a 5 second video to the file system.

using UnityEngine;
using System.Collections;
using System.Linq;
using UnityEngine.Windows.WebCam;

public class VideoCaptureExample : MonoBehaviour { static readonly float MaxRecordingTime = 5.0f;

VideoCapture m_VideoCapture = null; float m_stopRecordingTimer = float.MaxValue;

// Use this for initialization void Start() { StartVideoCaptureTest(); }

void Update() { if (m_VideoCapture == null || !m_VideoCapture.IsRecording) { return; }

if (Time.time > m_stopRecordingTimer) { m_VideoCapture.StopRecordingAsync(OnStoppedRecordingVideo); } }

void StartVideoCaptureTest() { Resolution cameraResolution = VideoCapture.SupportedResolutions.OrderByDescending((res) => res.width * res.height).First(); Debug.Log(cameraResolution);

float cameraFramerate = VideoCapture.GetSupportedFrameRatesForResolution(cameraResolution).OrderByDescending((fps) => fps).First(); Debug.Log(cameraFramerate);

VideoCapture.CreateAsync(false, delegate(VideoCapture videoCapture) { if (videoCapture != null) { m_VideoCapture = videoCapture; Debug.Log("Created VideoCapture Instance!");

CameraParameters cameraParameters = new CameraParameters(); cameraParameters.hologramOpacity = 0.0f; cameraParameters.frameRate = cameraFramerate; cameraParameters.cameraResolutionWidth = cameraResolution.width; cameraParameters.cameraResolutionHeight = cameraResolution.height; cameraParameters.pixelFormat = CapturePixelFormat.BGRA32;

m_VideoCapture.StartVideoModeAsync(cameraParameters, VideoCapture.AudioState.ApplicationAndMicAudio, OnStartedVideoCaptureMode); } else { Debug.LogError("Failed to create VideoCapture Instance!"); } }); }

void OnStartedVideoCaptureMode(VideoCapture.VideoCaptureResult result) { Debug.Log("Started Video Capture Mode!"); string timeStamp = Time.time.ToString().Replace(".", "").Replace(":", ""); string filename = string.Format("TestVideo_{0}.mp4", timeStamp); string filepath = System.IO.Path.Combine(Application.persistentDataPath, filename); filepath = filepath.Replace("/", @"\"); m_VideoCapture.StartRecordingAsync(filepath, OnStartedRecordingVideo); }

void OnStoppedVideoCaptureMode(VideoCapture.VideoCaptureResult result) { Debug.Log("Stopped Video Capture Mode!"); }

void OnStartedRecordingVideo(VideoCapture.VideoCaptureResult result) { Debug.Log("Started Recording Video!"); m_stopRecordingTimer = Time.time + MaxRecordingTime; }

void OnStoppedRecordingVideo(VideoCapture.VideoCaptureResult result) { Debug.Log("Stopped Recording Video!"); m_VideoCapture.StopVideoModeAsync(OnStoppedVideoCaptureMode); } }

Static Variables

SupportedResolutionsA list of all the supported device resolutions for recording videos.


IsRecordingIndicates whether or not the VideoCapture instance is currently recording video.

Public Functions

DisposeDispose must be called to shutdown the PhotoCapture instance.
GetUnsafePointerToVideoDeviceControllerProvides a COM pointer to the native IVideoDeviceController.
StartRecordingAsyncAsynchronously records a video from the web camera to the file system.
StartVideoModeAsyncAsynchronously starts video mode.
StopRecordingAsyncAsynchronously stops recording a video from the web camera to the file system.
StopVideoModeAsyncAsynchronously stops video mode.

Static Functions

CreateAsyncAsynchronously creates an instance of a VideoCapture object that can be used to record videos from the web camera to disk.
GetSupportedFrameRatesForResolutionReturns the supported frame rates at which a video can be recorded given a resolution.


OnStartedRecordingVideoCallbackCalled when the web camera begins recording the video.
OnStoppedRecordingVideoCallbackCalled when the video recording has been saved to the file system.
OnVideoCaptureResourceCreatedCallbackCalled when a VideoCapture resource has been created.
OnVideoModeStartedCallbackCalled when video mode has been started.
OnVideoModeStoppedCallbackCalled when video mode has been stopped.
Copyright © 2020 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。