diff --git a/BetterGenshinImpact/BetterGenshinImpact.csproj b/BetterGenshinImpact/BetterGenshinImpact.csproj index 89f7c41a..42545a91 100644 --- a/BetterGenshinImpact/BetterGenshinImpact.csproj +++ b/BetterGenshinImpact/BetterGenshinImpact.csproj @@ -10,7 +10,7 @@ true Assets\Images\logo.ico BetterGI - 10.38.2 + 10.38.3 x64 embedded diff --git a/BetterGenshinImpact/Core/Video/FfmpegRecorder.cs b/BetterGenshinImpact/Core/Video/FfmpegRecorder.cs index 7a2680ef..8d2c5b19 100644 --- a/BetterGenshinImpact/Core/Video/FfmpegRecorder.cs +++ b/BetterGenshinImpact/Core/Video/FfmpegRecorder.cs @@ -23,18 +23,19 @@ public class FfmpegRecorder : IVideoRecorder private readonly string _filePath; private string _startTime = string.Empty; + + public string FileName { get; set; } - private readonly string _fileName; public FfmpegRecorder(string fileName) { - _fileName = fileName; + FileName = fileName; if (!File.Exists(FfmpegPath)) { throw new Exception("ffmpeg.exe不存在"); } - var folderPath = Global.Absolute($@"User\KeyMouseScript\{fileName}\"); + var folderPath = Global.Absolute($@"User\KeyMouseScript\{FileName}\"); Directory.CreateDirectory(folderPath); _filePath = Path.Combine(folderPath, "%Y_%m_%d_%H_%M_%S.mp4"); var processInfo = new ProcessStartInfo @@ -117,7 +118,7 @@ public class FfmpegRecorder : IVideoRecorder // if (File.Exists(_filePath)) // { // // 重命名文件 - // var newFilePath = Global.Absolute($@"User\KeyMouseScript\{_fileName}_{_startTime}.mp4"); + // var newFilePath = Global.Absolute($@"User\KeyMouseScript\{_FileName}_{_startTime}.mp4"); // File.Move(_filePath, newFilePath); // TaskControl.Logger.LogInformation("ffmpeg录制: {Text}", $"录制完成"); // } @@ -133,6 +134,7 @@ public class FfmpegRecorder : IVideoRecorder } } + public void Dispose() { diff --git a/BetterGenshinImpact/Core/Video/IVideoRecorder.cs b/BetterGenshinImpact/Core/Video/IVideoRecorder.cs index 1ea936ad..08d6b02e 100644 --- a/BetterGenshinImpact/Core/Video/IVideoRecorder.cs +++ b/BetterGenshinImpact/Core/Video/IVideoRecorder.cs @@ -7,4 +7,6 @@ public interface IVideoRecorder : IDisposable public bool Start(); public void Stop(); + + string FileName { get; set; } } \ No newline at end of file diff --git a/BetterGenshinImpact/Core/Video/ObsRecorder.cs b/BetterGenshinImpact/Core/Video/ObsRecorder.cs index e7c30fb4..7a908bc7 100644 --- a/BetterGenshinImpact/Core/Video/ObsRecorder.cs +++ b/BetterGenshinImpact/Core/Video/ObsRecorder.cs @@ -22,11 +22,11 @@ public class ObsRecorder : IVideoRecorder private DateTime _lastRecordTime = DateTime.MinValue; - private readonly string _fileName; - public ObsRecorder(string fileName) + public string FileName { get; set; } + + public ObsRecorder() { - _fileName = fileName; // 判断 OBS 是否已经启动 if (Process.GetProcessesByName("obs64").Length == 0) { @@ -140,6 +140,7 @@ public class ObsRecorder : IVideoRecorder } } + private void MoveFile(string name) { Task.Run(() => @@ -147,7 +148,7 @@ public class ObsRecorder : IVideoRecorder try { var videoPath = Global.Absolute($@"video\{name}"); - var folderPath = Global.Absolute($@"User\KeyMouseScript\{_fileName}\"); + var folderPath = Global.Absolute($@"User\KeyMouseScript\{FileName}\"); if (File.Exists(videoPath)) { int i = 0; diff --git a/BetterGenshinImpact/Core/Video/VideoRecorderFactory.cs b/BetterGenshinImpact/Core/Video/VideoRecorderFactory.cs index 56772f29..e21da9fc 100644 --- a/BetterGenshinImpact/Core/Video/VideoRecorderFactory.cs +++ b/BetterGenshinImpact/Core/Video/VideoRecorderFactory.cs @@ -14,13 +14,15 @@ public class VideoRecorderFactory switch (recorderType) { case "ffmpeg": - return new FfmpegRecorder(fileName); + var ffmpegRecorder = new FfmpegRecorder(fileName); + return ffmpegRecorder; case "obs": if (_obsRecorder == null) { - _obsRecorder = new ObsRecorder(fileName); + _obsRecorder = new ObsRecorder(); // TaskControl.Logger.LogInformation("当前选择使用OBS录制,OBS首次启动较慢,请耐心等待..."); } + _obsRecorder.FileName = fileName; return _obsRecorder; default: throw new ArgumentException("不支持的录制工具");