本地优化

This commit is contained in:
2026-06-03 22:05:03 +08:00
parent a6509ea9ee
commit fea67869f2
18 changed files with 996 additions and 65 deletions

View File

@@ -14,7 +14,7 @@ using CameraType = Unity.XR.XREAL.CameraType;
using GalleryDataProvider = Unity.XR.XREAL.MockGalleryDataProvider;
#endif
public class XrealMixedRecorder : IVideoRecorder, IController
public class XrealMixedRecorder : IVideoRecorder, IController , IDisposable
{
public enum ResolutionLevel
{
@@ -25,7 +25,7 @@ public class XrealMixedRecorder : IVideoRecorder, IController
public ResolutionLevel resolutionLevel = ResolutionLevel.High;
public BlendMode blendMode = BlendMode.Blend;
public AudioState audioState = AudioState.MicAudio;
public AudioState audioState = AudioState.ApplicationAndMicAudio;
public CaptureSide captureside = CaptureSide.Single;
public bool useGreenBackGround = false;
@@ -82,7 +82,7 @@ public class XrealMixedRecorder : IVideoRecorder, IController
}
Debug.Log("Stop Video Capture!");
_videoCapture.StopRecordingAsync(OnStoppedRecordingVideo);
_videoCapture.StopRecordingAsync(OnStoppedVideoCaptureMode);
}
/// <summary> Executes the 'stopped recording video' action. </summary>
@@ -103,6 +103,11 @@ public class XrealMixedRecorder : IVideoRecorder, IController
/// <param name="result"> The result.</param>
private async void OnStoppedVideoCaptureMode(XREALVideoCapture.VideoCaptureResult result)
{
if (!result.success)
{
Debug.Log("Stopped Recording Video Faild!");
return;
}
Debug.Log("Stopped Video Capture Mode!");
var encoder = _videoCapture.GetContext().GetEncoder() as VideoEncoder;
@@ -114,8 +119,6 @@ public class XrealMixedRecorder : IVideoRecorder, IController
await DelayInsertVideoToGallery(path, filename, "Record");
OnStoppedRecordingVideoAction?.Invoke(path);
// Release video capture resource.
_videoCapture.Dispose();
_videoCapture = null;
}
/// <summary> 延迟将视频插入相册,确保视频文件已完全写入 </summary>
@@ -235,4 +238,19 @@ public class XrealMixedRecorder : IVideoRecorder, IController
{
return MainArchitecture.Interface;
}
public void Dispose()
{
_videoCapture.StopVideoModeAsync((result) =>
{
if (!result.success)
{
Debug.Log("Stopped Video Capture Mode faild!");
return;
}
_videoCapture?.Dispose();
_videoCapture = null;
});
}
}