Unity Engine documentation Script Reference UnityEngine UnityEngine.Windows UnityEngine.Windows.WebCam VideoCapture Records a video from the web camera directly to disk.
Read time 3 minutes
Last updated 2 days ago Definition
public class VideoCapture : IDisposable
This API is supported in the Windows Players (Standalone and Universal Windows Platform) and in the Windows Editor. The final video recording will be stored on the local file system in the MP4 format. VideoCapture is implemented using the WinRT interface: Windows.Media.Capture.IMediaCapture.
Note: Universal Windows Platform requires both webcam and microphone capabilities.
Examples
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; bool m_isStoppingRecording = false; void Start() { StartVideoCaptureTest(); } void Update() { if (m_VideoCapture == null || !m_VideoCapture.IsRecording) { return; } if (!m_isStoppingRecording && Time.time > m_stopRecordingTimer) { m_isStoppingRecording = true; 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) { if (!result.success) { Debug.LogError(string.Format("Failed to start video capture mode. HRESULT: 0x{0:X8}", (uint)result.hResult)); m_VideoCapture.Dispose(); m_VideoCapture = null; return; } 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) { if (result.success) Debug.Log("Stopped Video Capture Mode!"); else Debug.LogError(string.Format("Failed to stop video capture mode. HRESULT: 0x{0:X8}", (uint)result.hResult)); m_VideoCapture.Dispose(); m_VideoCapture = null; } void OnStartedRecordingVideo(VideoCapture.VideoCaptureResult result) { if (!result.success) { Debug.LogError(string.Format("Failed to start recording video. HRESULT: 0x{0:X8}", (uint)result.hResult)); m_VideoCapture.StopVideoModeAsync(OnStoppedVideoCaptureMode); return; } Debug.Log("Started Recording Video!"); m_stopRecordingTimer = Time.time + MaxRecordingTime; } void OnStoppedRecordingVideo(VideoCapture.VideoCaptureResult result) { if (result.success) Debug.Log("Stopped Recording Video!"); else Debug.LogError(string.Format("Failed to stop recording video. HRESULT: 0x{0:X8}", (uint)result.hResult)); m_VideoCapture.StopVideoModeAsync(OnStoppedVideoCaptureMode); } }
Properties
Property Description IsRecording Indicates whether or not the VideoCapture instance is currently recording video.
Static Properties
Property Description SupportedResolutions A list of all the supported device resolutions for recording videos.
Methods
Static Methods
Method Description CreateAsync Asynchronously creates an instance of a VideoCapture object that can be used to record videos from the web camera to disk. GetSupportedFrameRatesForResolution Returns the supported frame rates at which a video can be recorded given a resolution.
Structs
Enums
Delegates