private async ValueTask ConvertVideoAsync(string input, string output, bool isDelete, string args)
        {
            var task = new FFmpegTaskViewModel(args);
            await _taskList.AddTaskAsync(task, Path.GetPathRoot(output) ?? string.Empty);

            if (isDelete)
            {
                FileUtils.DeleteWithoutException(input);
            }
        }
        private async ValueTask ConvertVideoAsync(string input, string output, bool isDelete)
        {
            try
            {
                var args = string.Format(Constants.FFmpegCopyConvert, input, output);
                var task = new FFmpegTaskViewModel(args);
                await _taskList.AddTaskAsync(task, Path.GetPathRoot(output) ?? string.Empty);

                if (isDelete)
                {
                    File.Delete(input);
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, @"转封装任务时发生错误");
            }
        }
        private void CreateCutVideoTask()
        {
            try
            {
                if (string.IsNullOrWhiteSpace(CutInput) || string.IsNullOrWhiteSpace(CutOutput))
                {
                    return;
                }
                var args = string.Format(Constants.FFmpegSplitTo, CutStartTime, CutEndTime, CutInput, CutOutput);
                var task = new FFmpegTaskViewModel(args);
                _taskList.AddTaskAsync(task, Path.GetPathRoot(CutOutput) ?? string.Empty).NoWarning();

                NewOutputFile();
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, @"创建剪辑任务时发生错误");
            }
        }