Описание
Записывает видео с веб-камеры прямо на диск.
Этот API поддерживается в проигрывателях Windows (автономных и универсальных платформах Windows) и в редакторе Windows. Окончательная видеозапись будет храниться в локальной файловой системе в формате MP4. Видеозахват реализован с помощью интерфейса WinRT: Windows.Media.Capture.IMediaCapture.
Дополнительные сведения см. в документации Microsoft по Windows MediaCapture.
Примечание. Для универсальной платформы Windows требуются как веб-камера, так и микрофон.
Важно! Требуется Windows 10 (версия 10.0.10240.0 или более поздняя) и не работает в Windows 7.
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;
// Используйте это для инициализации
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);
}
}
Статические Свойства
SupportedResolutions | Список всех поддерживаемых разрешений устройств для записи видео. |
Свойства
IsRecording | Указывает, записывает ли в данный момент видео экземпляр VideoCapture. |
Публичные Методы
Dispose | Вы должны вызвать Dispose, чтобы завершить работу экземпляра VideoCapture и освободить собственные объекты WinRT. |
GetUnsafePointerToVideoDeviceController | Предоставляет указатель COM на собственный IVideoDeviceController. |
StartRecordingAsync | Асинхронно записывает видео с веб-камеры в файловую систему. |
StartVideoModeAsync | Асинхронно запускает видеорежим. |
StopRecordingAsync | Асинхронно останавливает запись видео с веб-камеры в файловую систему. |
StopVideoModeAsync | Асинхронно останавливает видеорежим. |
Статические Методы
CreateAsync | Асинхронно создает экземпляр объекта VideoCapture, который можно использовать для записи видео с веб-камеры на диск. |
GetSupportedFrameRatesForResolution | Возвращает поддерживаемую частоту кадров, с которой может быть записано видео с заданным разрешением. |
Делегаты
OnStartedRecordingVideoCallback | Вызывается, когда веб-камера начинает запись видео. |
OnStoppedRecordingVideoCallback | Вызывается, когда видеозапись была сохранена в файловой системе. |
OnVideoCaptureResourceCreatedCallback | Вызывается при создании ресурса VideoCapture. |
OnVideoModeStartedCallback | Вызывается при запуске режима видео. |
OnVideoModeStoppedCallback | Вызывается, когда режим видео был остановлен. |