사용법
1. 빈 오브젝트 추가후 Video Capture 2 Local Example 스크립트를 Component로 준다.
2. 위 이지에서 보이듯 Previewer라는 프리팹을 생성한 엠티 오브젝트의 자식으로 만든다.
3. 아래 보이는 text는 휴대폰 어느곳에 동영상이 저장되는지 확인하기 위함이다.
아래 코드는 경로 확인을 위한 코드를 기존 코드에 추가한 내용이다.
using NRKernal.Record;
using System.IO;
using System.Linq;
using UnityEngine;
using UnityEngine.UI;
namespace NRKernal.NRExamples
{
[HelpURL("https://developer.nreal.ai/develop/unity/video-capture")]
public class VideoCapture2LocalExample : MonoBehaviour
{
public NRPreviewer Previewer;
[SerializeField]
private Text text;
// Save the video to Application.persistentDataPath
public string VideoSavePath
{
get
{
string timeStamp = Time.time.ToString().Replace(".", "").Replace(":", "");
string filename = string.Format("Nreal_Record_{0}.mp4", timeStamp);
string filepath = Path.Combine(Application.persistentDataPath, filename);
return filepath;
}
}
NRVideoCapture m_VideoCapture = null;
void Start()
{
CreateVideoCaptureTest();
}
void CreateVideoCaptureTest()
{
NRVideoCapture.CreateAsync(false, delegate (NRVideoCapture videoCapture)
{
if (videoCapture != null)
{
m_VideoCapture = videoCapture;
}
else
{
Debug.LogError("Failed to create VideoCapture Instance!");
}
});
}
public void StartVideoCapture()
{
Resolution cameraResolution = NRVideoCapture.SupportedResolutions.OrderByDescending((res) => res.width * res.height).First();
Debug.Log(cameraResolution);
int cameraFramerate = NRVideoCapture.GetSupportedFrameRatesForResolution(cameraResolution).OrderByDescending((fps) => fps).First();
Debug.Log(cameraFramerate);
if (m_VideoCapture != null)
{
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;
cameraParameters.blendMode = BlendMode.Blend;
m_VideoCapture.StartVideoModeAsync(cameraParameters, OnStartedVideoCaptureMode);
Previewer.SetData(m_VideoCapture.PreviewTexture, true);
}
}
public void StopVideoCapture()
{
if (m_VideoCapture == null)
{
return;
}
Debug.Log("Stop Video Capture!");
m_VideoCapture.StopRecordingAsync(OnStoppedRecordingVideo);
Previewer.SetData(m_VideoCapture.PreviewTexture, false);
}
void OnStartedVideoCaptureMode(NRVideoCapture.VideoCaptureResult result)
{
Debug.Log("Started Video Capture Mode!");
// 경로 확인을 위해 추가한 코드
text.text = VideoSavePath;
m_VideoCapture.StartRecordingAsync(VideoSavePath, OnStartedRecordingVideo);
}
void OnStartedRecordingVideo(NRVideoCapture.VideoCaptureResult result)
{
Debug.Log("Started Recording Video!");
}
void OnStoppedRecordingVideo(NRVideoCapture.VideoCaptureResult result)
{
Debug.Log("Stopped Recording Video!");
m_VideoCapture.StopVideoModeAsync(OnStoppedVideoCaptureMode);
}
void OnStoppedVideoCaptureMode(NRVideoCapture.VideoCaptureResult result)
{
Debug.Log("Stopped Video Capture Mode!");
}
}
}
tip)동영상 파일 경로를 찾는데 많은 시간을 사용하였기에 추가적으로 경로에 관한 이야기를 하겠다.
파일 경로는 Android 폴더에 data 폴더 안에 com.회사이름.product_name 폴더안에 파일에 동영상이 저장된다.
'NRealGlass' 카테고리의 다른 글
NrealGlass 개발환경 세팅 (0) | 2020.10.30 |
---|---|
2개의 다른 마커에 다른 가상화 객체 (0) | 2020.09.04 |
NReal 세팅 - Unity - Scritping Runtime Version중 알아야 하는 것 (0) | 2020.08.20 |