diff --git a/Assets/Script/Recorder/XrealMixedRecorder.cs b/Assets/Script/Recorder/XrealMixedRecorder.cs index 7297cf8..08ecadc 100644 --- a/Assets/Script/Recorder/XrealMixedRecorder.cs +++ b/Assets/Script/Recorder/XrealMixedRecorder.cs @@ -25,7 +25,7 @@ public class XrealMixedRecorder : IVideoRecorder, IController public ResolutionLevel resolutionLevel = ResolutionLevel.High; public BlendMode blendMode = BlendMode.Blend; - public AudioState audioState = AudioState.ApplicationAndMicAudio; + public AudioState audioState = AudioState.MicAudio; public CaptureSide captureside = CaptureSide.Single; public bool useGreenBackGround = false; @@ -37,27 +37,22 @@ public class XrealMixedRecorder : IVideoRecorder, IController private GalleryDataProvider _galleryDataTool; - + /// Save the video to Application.persistentDataPath. /// The full pathname of the video save file. - private string VideoSaveExtension => Path.Combine(Application.persistentDataPath, "Recording"); - - private string VideoSavePath + public string VideoSavePath { get { - var timeStamp = Time.time.ToString().Replace(".", "").Replace(":", ""); - var filename = - $"{this.GetSystem().GetConnectionId()}{timeStamp}.mp4"; - return Path.Combine(Application.persistentDataPath, VideoSaveExtension, filename); + string timeStamp = Time.time.ToString().Replace(".", "").Replace(":", ""); + string filename = string.Format("Xreal_Record_{0}.mp4", timeStamp); + return Path.Combine(Application.persistentDataPath, filename); } } - - private string _videoSavePath; + public void StartRecording() { - _videoSavePath = VideoSavePath; if (_videoCapture == null) CreateVideoCapture(StartVideoCapture); else if (_videoCapture.IsRecording) @@ -112,9 +107,10 @@ public class XrealMixedRecorder : IVideoRecorder, IController var encoder = _videoCapture.GetContext().GetEncoder() as VideoEncoder; var path = encoder.EncodeConfig.outPutPath; + Debug.Log("Stopped Video Capture Mode!--path"+path); var filename = string.Format("Xreal_Shot_Video_{0}.mp4", DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString()); - + Debug.Log("Stopped Video Capture Mode!--path"+filename); await DelayInsertVideoToGallery(path, filename, "Record"); OnStoppedRecordingVideoAction?.Invoke(path); // Release video capture resource. @@ -221,7 +217,18 @@ public class XrealMixedRecorder : IVideoRecorder, IController Debug.Log("Started Video Capture Mode!"); - _videoCapture.StartRecordingAsync(_videoSavePath, (a) => OnStartedRecordingVideo?.Invoke()); + _videoCapture.StartRecordingAsync(VideoSavePath, (a) => + { + OnStartedRecordingVideo?.Invoke(); + if (!a.success) + { + Debug.Log("Started Recording Video Faild!"); + return; + } + + Debug.Log("Started Recording Video!"); + }); + } public IArchitecture GetArchitecture() diff --git a/Assets/Script/WebRequestSystem.cs b/Assets/Script/WebRequestSystem.cs index 18b9759..5274cdb 100644 --- a/Assets/Script/WebRequestSystem.cs +++ b/Assets/Script/WebRequestSystem.cs @@ -23,8 +23,29 @@ namespace Stary.Evo #else authorization = CustomPlayerPrefs.GetString("Authorization"); #endif + } + + private static async UniTask GetCertificateData() + { var certPath = Path.Combine(Application.streamingAssetsPath, "server.crt"); - certificateData = File.ReadAllBytes(certPath); + if (certificateData == null) + { +#if UNITY_ANDROID && !UNITY_EDITOR + // Android平台使用UnityWebRequest读取 + var webRequest = UnityWebRequest.Get(certPath); + await webRequest.SendWebRequest(); + if (webRequest.result == UnityWebRequest.Result.Success) + { + certificateData = webRequest.downloadHandler.data; + } +#else + // 其他平台使用File读取 + if (File.Exists(certPath)) + { + certificateData = File.ReadAllBytes(certPath); + } +#endif + } } public static async Task Login(string url, string username, string password) @@ -222,6 +243,7 @@ namespace Stary.Evo { try { + await GetCertificateData(); using var webRequest = UnityWebRequest.Get(url); webRequest.downloadHandler = new DownloadHandlerFile(tempPath); webRequest.certificateHandler = new SelfSignedCertHandler(certificateData); @@ -282,6 +304,7 @@ namespace Stary.Evo { try { + await GetCertificateData(); var fullUrl = url.TrimEnd('/') + "/" + path.TrimStart('/'); using var webRequest = new UnityWebRequest(fullUrl, UnityWebRequest.kHttpVerbGET); webRequest.downloadHandler = new DownloadHandlerBuffer(); @@ -517,6 +540,7 @@ namespace Stary.Evo MainPanel.UsersItem host, List participants) { + await GetCertificateData(); var bytes = File.ReadAllBytes(filePath); var fileName = Path.GetFileName(filePath); @@ -544,5 +568,6 @@ namespace Stary.Evo else Debug.Log($"上传成功: {request.downloadHandler.text}"); } + } } \ No newline at end of file diff --git a/Assets/XR/Settings/XREALSettings.asset b/Assets/XR/Settings/XREALSettings.asset index c80baa4..761cc45 100644 --- a/Assets/XR/Settings/XREALSettings.asset +++ b/Assets/XR/Settings/XREALSettings.asset @@ -21,7 +21,8 @@ MonoBehaviour: AddtionalPermissions: - CAMERA - VIBRATION - - AUDIO + - RECORD_AUDIO + - FOREGROUND_SERVICE_MEDIA_PROJECTION EnableAutoLogcat: 1 EnableNativeSessionManager: 0 SupportDevices: 0100000002000000