- Home /
Recording video from webCam
Hello, I'm trying to use the script from VideoCapture, on editor mode doesn't reflect any issue but when it comes to the deployment on PC standalone, it tells me: The type or namespace name WebCam' does not exist in the namespace
UnityEngine.XR.WSA'. Are you missing an assembly reference? and I know it changed from VR to XR but I'm not missing any name space. using Unity 2017.3 Here is my code:
using UnityEngine; using System.Collections; using System.Collections.Generic; using System.Linq; using UnityEngine.XR.WSA.WebCam; using UnityEngine.SceneManagement;
public class WebCamera : MonoBehaviour {
static readonly float MaxRecordingTime = 15.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);
}
public void TheEnd() {
SceneManager.LoadScene("End");
}
}
I been having this issue for over 3 days and I search for any issue related without any luck. Thanks for the help.
Have a good one!!!!
Answer by bunkie · Feb 01, 2018 at 10:57 AM
I am having the same problem on Unity 2017.2. I am just looking for a way to record a video using the webcam, does any one have suggestions on how to do it or alternative ways?